OK, I have given it a try. This is by no means a finished product, but worth sharing for testing etc. at this point I feel. I have implemented, as well as I could, the diagram you have at the beginning of this thread. To use it:
1. To remap the CapsLock key, you need the software Seil: https://pqrs.org/osx/karabiner/seil.html . Open it and follow the instructions for changing CapsLock. Change it to code 80 (this is F19, so I assume you are not using this for a different purpose).
2. In Karabiner preferences, open the private.xml and replace the contents with the file given below, or save it as an xml file and <include> it.
I have put the extend layer under the same heading as the Tarmak Curl progression, but the Extend layer is independent and will stay in place regardless of which layer of Tarmak is activated.
Some caveats and things to note:
1. I have used the image from this thread, page 1. This means that the Extend+Z etc. will be out of position from the letters when the user has transitioned to the 'angle' mod (step 1B). Not really sure what the best solution is here.
2. I have not implemented the 'wide' mod. I guess the Extend layer has to be modified with that, as the finger positions change.
3. I have not worked out how to make Extend+Esc work as Caps Lock. Caps Lock is difficult, it appears.
4. I have no idea what the symbols shown on _ and / are, and thus they are not implemented.
5. Mac has no equivalent AFAIK for Insert and Menu, so I did not implement these. I guess Menu would really give the same result as Extend+M, right?
6. Mac already uses the F row for multimedia control by default, so I did not tamper with those.
7. Any shortcuts using more than two letter keys are not implemented, as the Macbook keyboards are two-key rollover only for letter keys.
8. The AltGr layer is not in place, neither for the Extend layer, nor the Tarmak/Colemak implementation. Mac has no AltGr key - is it customary to use the right option button?
<?xml version="1.0"?>
<root>
<item>
<name>Tarmak(ETROI)-Curl(DbgHk) transitional layout</name>
<!-- https://forum.colemak.com/viewtopic.php?pid=8786#p8786 -->
<item>
<name>Angle mode (B>V>C>X>Z>`)</name>
<identifier vk_config="true">private.angle_test</identifier>
</item>
<item>
<name>Wide mode (Right hand moves one key to the right)</name>
<identifier vk_config="true">private.wide</identifier>
</item>
<item>
<name>Extend layer</name>
<appendix>Extend layer from DreymaR, see https://forum.colemak.com/viewtopic.php?id=1438</appendix>
<appendix> for description and a diagram of the keys</appendix>
<appendix>Uses the CapsLock key as a new 'Extend' modifier </appendix>
<appendix>that allows easy navigation from the keyboard </appendix>
<appendix>To activate this, you must first use the Seil software to remap CapsLock to F19 (code 80)</appendix>
<identifier>private.extend</identifier>
<modifierdef>EXTEND</modifierdef>
<autogen>__KeyToKey__ KeyCode::F19, KeyCode::VK_MODIFIER_EXTEND</autogen>
<autogen>__KeyToKey__ KeyCode::T, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_UP</autogen>
<autogen>__KeyToKey__ KeyCode::G, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_DOWN</autogen>
<autogen>__KeyToKey__ KeyCode::E, ModifierFlag::EXTEND,
KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::R, ModifierFlag::EXTEND,
KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::Q, ModifierFlag::EXTEND,
KeyCode::CONTROL_R, ModifierFlag::EXTEND</autogen>
<autogen>__KeyToKey__ KeyCode::A, ModifierFlag::EXTEND,
KeyCode::OPTION_L, ModifierFlag::EXTEND</autogen>
<autogen>__KeyToKey__ KeyCode::D, ModifierFlag::EXTEND,
KeyCode::SHIFT_L, ModifierFlag::EXTEND</autogen>
<autogen>__KeyToKey__ KeyCode::ESCAPE, ModifierFlag::EXTEND,
KeyCode::VK_LOCK_EXTEND</autogen>
<autogen>__KeyToKey__ KeyCode::F, ModifierFlag::EXTEND,
KeyCode::COMMAND_L, ModifierFlag::EXTEND</autogen>
<autogen>__KeyToKey__ KeyCode::UK_SECTION, ModifierFlag::EXTEND,
KeyCode::FORWARD_DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::W, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_SCROLL_UP</autogen>
<autogen>__KeyToKey__ KeyCode::S, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_SCROLL_DOWN</autogen>
<autogen>__KeyToKey__ KeyCode::SPACE, ModifierFlag::EXTEND,
KeyCode::ENTER</autogen>
<autogen>__KeyToKey__ KeyCode::ENTER, ModifierFlag::EXTEND,
KeyCode::KEY_4, ModifierFlag::SHIFT_L | ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_1, ModifierFlag::EXTEND,
KeyCode::F1</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_1, ModifierFlag::EXTEND,
KeyCode::F1</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_2, ModifierFlag::EXTEND,
KeyCode::F2</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_3, ModifierFlag::EXTEND,
KeyCode::F3</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_4, ModifierFlag::EXTEND,
KeyCode::F4</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_5, ModifierFlag::EXTEND,
KeyCode::F5</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_6, ModifierFlag::EXTEND,
KeyCode::F6</autogen>
<block>
<config_not>private.angle_test</config_not>
<autogen>__KeyToKey__ KeyCode::Z, ModifierFlag::EXTEND,
KeyCode::Z, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::X, ModifierFlag::EXTEND,
KeyCode::X, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::C, ModifierFlag::EXTEND,
KeyCode::C, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::V, ModifierFlag::EXTEND,
KeyCode::V, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::B, ModifierFlag::EXTEND,
PointingButton::LEFT</autogen>
</block>
<block>
<config_only>private.angle_test</config_only>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, ModifierFlag::EXTEND,
KeyCode::Z, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::Z, ModifierFlag::EXTEND,
KeyCode::X, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::X, ModifierFlag::EXTEND,
KeyCode::C, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::C, ModifierFlag::EXTEND,
KeyCode::V, ModifierFlag::COMMAND_R</autogen>
<autogen>__KeyToKey__ KeyCode::V, ModifierFlag::EXTEND,
PointingButton::LEFT</autogen>
</block>
<block>
<config_not>private.wide</config_not>
<autogen>__KeyToKey__ KeyCode::J, ModifierFlag::EXTEND,
KeyCode::CURSOR_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::K, ModifierFlag::EXTEND,
KeyCode::CURSOR_DOWN</autogen>
<autogen>__KeyToKey__ KeyCode::L, ModifierFlag::EXTEND,
KeyCode::CURSOR_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::I, ModifierFlag::EXTEND,
KeyCode::CURSOR_UP</autogen>
<autogen>__KeyToKey__ KeyCode::U, ModifierFlag::EXTEND,
KeyCode::HOME</autogen>
<autogen>__KeyToKey__ KeyCode::O, ModifierFlag::EXTEND,
KeyCode::END</autogen>
<autogen>__KeyToKey__ KeyCode::Y, ModifierFlag::EXTEND,
KeyCode::PAGEUP</autogen>
<autogen>__KeyToKey__ KeyCode::H, ModifierFlag::EXTEND,
KeyCode::PAGEDOWN</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::N, ModifierFlag::EXTEND,
PointingButton::MIDDLE</autogen>
<autogen>__KeyToKey__ KeyCode::M, ModifierFlag::EXTEND,
PointingButton::RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::P, ModifierFlag::EXTEND,
KeyCode::FORWARD_DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, ModifierFlag::EXTEND,
KeyCode::DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, ModifierFlag::EXTEND,
KeyCode::ESCAPE</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, ModifierFlag::EXTEND,
KeyCode::PC_INSERT</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, ModifierFlag::EXTEND,
KeyCode::D, ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, ModifierFlag::EXTEND,
KeyCode::F13</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, ModifierFlag::EXTEND,
KeyCode::F7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, ModifierFlag::EXTEND,
KeyCode::F8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, ModifierFlag::EXTEND,
KeyCode::F9</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, ModifierFlag::EXTEND,
KeyCode::F10</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_HIGHSPEED, ModifierFlag::EXTEND</autogen>
</block>
<block>
<config_only>private.wide</config_only>
<autogen>__KeyToKey__ KeyCode::K, ModifierFlag::EXTEND,
KeyCode::CURSOR_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::L, ModifierFlag::EXTEND,
KeyCode::CURSOR_DOWN</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, ModifierFlag::EXTEND,
KeyCode::CURSOR_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::O, ModifierFlag::EXTEND,
KeyCode::CURSOR_UP</autogen>
<autogen>__KeyToKey__ KeyCode::I, ModifierFlag::EXTEND,
KeyCode::HOME</autogen>
<autogen>__KeyToKey__ KeyCode::P, ModifierFlag::EXTEND,
KeyCode::END</autogen>
<autogen>__KeyToKey__ KeyCode::U, ModifierFlag::EXTEND,
KeyCode::PAGEUP</autogen>
<autogen>__KeyToKey__ KeyCode::J, ModifierFlag::EXTEND,
KeyCode::PAGEDOWN</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::M, ModifierFlag::EXTEND,
PointingButton::MIDDLE</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, ModifierFlag::EXTEND,
PointingButton::RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, ModifierFlag::EXTEND,
KeyCode::FORWARD_DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, ModifierFlag::EXTEND,
KeyCode::DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::Y, ModifierFlag::EXTEND,
KeyCode::ESCAPE</autogen>
<autogen>__KeyToKey__ KeyCode::H, ModifierFlag::EXTEND,
KeyCode::PC_INSERT</autogen>
<autogen>__KeyToKey__ KeyCode::B, ModifierFlag::EXTEND,
KeyCode::D, ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, ModifierFlag::EXTEND,
KeyCode::F13</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, ModifierFlag::EXTEND,
KeyCode::F7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, ModifierFlag::EXTEND,
KeyCode::F8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, ModifierFlag::EXTEND,
KeyCode::F9</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, ModifierFlag::EXTEND,
KeyCode::F10</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, ModifierFlag::EXTEND,
KeyCode::VK_MOUSEKEY_HIGHSPEED, ModifierFlag::EXTEND</autogen>
</block>
</item>
<item>
<name>Qwerty layout (for those who wish to use angle or wide mods but not change to Colemak)</name>
<identifier>private.tarmakcurl.qwerty</identifier>
<block>
<config_only>private.angle_test</config_only>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::BACKQUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::V, KeyCode::B</autogen>
<autogen>__KeyToKey__ KeyCode::C, KeyCode::V</autogen>
<autogen>__KeyToKey__ KeyCode::X, KeyCode::C</autogen>
<autogen>__KeyToKey__ KeyCode::Z, KeyCode::X</autogen>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::Z</autogen>
</block>
<block>
<config_only>private.wide</config_only>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::BRACKET_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::U, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::I, KeyCode::U</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::I</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, KeyCode::P</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, KeyCode::SLASH</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::BRACKET_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::J</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::K</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::L</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, KeyCode::SEMICOLON</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, KeyCode::QUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::BACKSLASH</autogen>
<autogen>__KeyToKey__ KeyCode::M, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, KeyCode::M</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, KeyCode::COMMA</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, KeyCode::DOT</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, KeyCode::EQUAL</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, KeyCode::KEY_7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, KeyCode::KEY_8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, KeyCode::KEY_9</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, KeyCode::KEY_0</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, KeyCode::MINUS</autogen>
</block>
</item>
<item>
<name>Tarmak1(E)-Curl(Hk) transitional layout (E>K>H>N>J)</name>
<identifier>private.tarmakcurl.tarmak_1_e</identifier>
<autogen>__KeyToKey__ KeyCode::E, KeyCode::J</autogen>
<block>
<config_only>private.wide</config_only>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::BRACKET_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::U, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::I, KeyCode::U</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::I</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, KeyCode::P</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, KeyCode::SLASH</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::L</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, KeyCode::SEMICOLON</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, KeyCode::QUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, KeyCode::M</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, KeyCode::COMMA</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, KeyCode::DOT</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::BACKSLASH</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::BRACKET_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, KeyCode::EQUAL</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, KeyCode::KEY_7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, KeyCode::KEY_8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, KeyCode::KEY_9</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, KeyCode::KEY_0</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, KeyCode::MINUS</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::M, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::K</autogen>
</block>
<block>
<config_not>private.wide</config_not>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::K</autogen>
</block>
<block>
<config_only>private.angle_test</config_only>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::BACKQUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::V, KeyCode::B</autogen>
<autogen>__KeyToKey__ KeyCode::C, KeyCode::V</autogen>
<autogen>__KeyToKey__ KeyCode::X, KeyCode::C</autogen>
<autogen>__KeyToKey__ KeyCode::Z, KeyCode::X</autogen>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::Z</autogen>
</block>
</item>
<item>
<name>Tarmak2(ET)-Curl(DbgHk) transitional layout ((B>T>F>E>K>H>N>J))</name>
<identifier>private.tarmakcurl.tarmak_2_et</identifier>
<block>
<config_only>private.angle_test</config_only>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::BACKQUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::V, KeyCode::J</autogen>
<autogen>__KeyToKey__ KeyCode::C, KeyCode::V</autogen>
<autogen>__KeyToKey__ KeyCode::X, KeyCode::C</autogen>
<autogen>__KeyToKey__ KeyCode::Z, KeyCode::X</autogen>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::Z</autogen>
</block>
<block>
<config_not>private.angle_test</config_not>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::J</autogen>
</block>
<autogen>__KeyToKey__ KeyCode::T, KeyCode::B</autogen>
<autogen>__KeyToKey__ KeyCode::F, KeyCode::T</autogen>
<autogen>__KeyToKey__ KeyCode::E, KeyCode::F</autogen>
<block>
<config_only>private.wide</config_only>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::BRACKET_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::U, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::I, KeyCode::U</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::I</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, KeyCode::P</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, KeyCode::SLASH</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::L</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, KeyCode::SEMICOLON</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, KeyCode::QUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, KeyCode::M</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, KeyCode::COMMA</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, KeyCode::DOT</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::BACKSLASH</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::BRACKET_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, KeyCode::EQUAL</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, KeyCode::KEY_7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, KeyCode::KEY_8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, KeyCode::KEY_9</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, KeyCode::KEY_0</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, KeyCode::MINUS</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::M, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::K</autogen>
</block>
<block>
<config_not>private.wide</config_not>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::K</autogen>
</block>
</item>
<item>
<name>Tarmak3(ETR)-Curl(DbgHk) transitional layout (R>S>D>B>T>F>E>K>H>N>J)</name>
<identifier>private.tarmakcurl.tarmak_3_etr</identifier>
<block>
<config_only>private.angle_test</config_only>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::BACKQUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::V, KeyCode::D</autogen>
<autogen>__KeyToKey__ KeyCode::C, KeyCode::V</autogen>
<autogen>__KeyToKey__ KeyCode::X, KeyCode::C</autogen>
<autogen>__KeyToKey__ KeyCode::Z, KeyCode::X</autogen>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::Z</autogen>
</block>
<block>
<config_not>private.angle_test</config_not>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::D</autogen>
</block>
<autogen>__KeyToKey__ KeyCode::T, KeyCode::B</autogen>
<autogen>__KeyToKey__ KeyCode::F, KeyCode::T</autogen>
<autogen>__KeyToKey__ KeyCode::E, KeyCode::F</autogen>
<autogen>__KeyToKey__ KeyCode::S, KeyCode::R</autogen>
<autogen>__KeyToKey__ KeyCode::D, KeyCode::S</autogen>
<autogen>__KeyToKey__ KeyCode::R, KeyCode::J</autogen>
<block>
<config_only>private.wide</config_only>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::BRACKET_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::U, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::I, KeyCode::U</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::I</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, KeyCode::P</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, KeyCode::SLASH</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::L</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, KeyCode::SEMICOLON</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, KeyCode::QUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, KeyCode::M</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, KeyCode::COMMA</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, KeyCode::DOT</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::BACKSLASH</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::BRACKET_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, KeyCode::EQUAL</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, KeyCode::KEY_7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, KeyCode::KEY_8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, KeyCode::KEY_9</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, KeyCode::KEY_0</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, KeyCode::MINUS</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::M, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::K</autogen>
</block>
<block>
<config_not>private.wide</config_not>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::K</autogen>
</block>
</item>
<item>
<name>Tarmak4(ETRO)-Curl(DbgHk) transitional layout (Y>O>;>P>R>S>D>B>T>F>E>K>H>N>J)</name>
<identifier>private.tarmakcurl.tarmak_4_etr</identifier>
<block>
<config_only>private.angle_test</config_only>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::BACKQUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::V, KeyCode::D</autogen>
<autogen>__KeyToKey__ KeyCode::C, KeyCode::V</autogen>
<autogen>__KeyToKey__ KeyCode::X, KeyCode::C</autogen>
<autogen>__KeyToKey__ KeyCode::Z, KeyCode::X</autogen>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::Z</autogen>
</block>
<block>
<config_not>private.angle_test</config_not>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::D</autogen>
</block>
<autogen>__KeyToKey__ KeyCode::T, KeyCode::B</autogen>
<autogen>__KeyToKey__ KeyCode::F, KeyCode::T</autogen>
<autogen>__KeyToKey__ KeyCode::E, KeyCode::F</autogen>
<autogen>__KeyToKey__ KeyCode::S, KeyCode::R</autogen>
<autogen>__KeyToKey__ KeyCode::D, KeyCode::S</autogen>
<autogen>__KeyToKey__ KeyCode::R, KeyCode::P</autogen>
<block>
<config_only>private.wide</config_only>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::BRACKET_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::I, KeyCode::U</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::I</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, KeyCode::SLASH</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::L</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, KeyCode::QUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, KeyCode::M</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, KeyCode::COMMA</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, KeyCode::DOT</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::BACKSLASH</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::BRACKET_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, KeyCode::EQUAL</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, KeyCode::KEY_7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, KeyCode::KEY_8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, KeyCode::KEY_9</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, KeyCode::KEY_0</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, KeyCode::MINUS</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::M, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::K</autogen>
<autogen>__KeyToKey__ KeyCode::U, KeyCode::J</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, KeyCode::SEMICOLON</autogen>
</block>
<block>
<config_not>private.wide</config_not>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::K</autogen>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::J</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::SEMICOLON</autogen>
</block>
</item>
<item>
<name>Colemak-Curl(DbgHk) layout (Y>O>;>P>R>S>D>B>T>F>E>K>H>N>J & L>U>I)</name>
<identifier>private.tarmakcurl.tarmak_5_etroi</identifier>
<block>
<config_only>private.angle_test</config_only>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::BACKQUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::V, KeyCode::D</autogen>
<autogen>__KeyToKey__ KeyCode::C, KeyCode::V</autogen>
<autogen>__KeyToKey__ KeyCode::X, KeyCode::C</autogen>
<autogen>__KeyToKey__ KeyCode::Z, KeyCode::X</autogen>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::Z</autogen>
</block>
<block>
<config_not>private.angle_test</config_not>
<autogen>__KeyToKey__ KeyCode::B, KeyCode::D</autogen>
</block>
<autogen>__KeyToKey__ KeyCode::T, KeyCode::B</autogen>
<autogen>__KeyToKey__ KeyCode::F, KeyCode::T</autogen>
<autogen>__KeyToKey__ KeyCode::E, KeyCode::F</autogen>
<autogen>__KeyToKey__ KeyCode::S, KeyCode::R</autogen>
<autogen>__KeyToKey__ KeyCode::D, KeyCode::S</autogen>
<autogen>__KeyToKey__ KeyCode::R, KeyCode::P</autogen>
<block>
<config_only>private.wide</config_only>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::BRACKET_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, KeyCode::SLASH</autogen>
<autogen>__KeyToKey__ KeyCode::BACKSLASH, KeyCode::QUOTE</autogen>
<autogen>__KeyToKey__ KeyCode::COMMA, KeyCode::M</autogen>
<autogen>__KeyToKey__ KeyCode::DOT, KeyCode::COMMA</autogen>
<autogen>__KeyToKey__ KeyCode::SLASH, KeyCode::DOT</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::BACKSLASH</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::BRACKET_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::M, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::K</autogen>
<autogen>__KeyToKey__ KeyCode::U, KeyCode::J</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::QUOTE, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, KeyCode::SEMICOLON</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::I</autogen>
<autogen>__KeyToKey__ KeyCode::I, KeyCode::L</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::U</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_7, KeyCode::EQUAL</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, KeyCode::KEY_7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, KeyCode::KEY_8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, KeyCode::KEY_9</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, KeyCode::KEY_0</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, KeyCode::MINUS</autogen>
</block>
<block>
<config_not>private.wide</config_not>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::E</autogen>
<autogen>__KeyToKey__ KeyCode::N, KeyCode::H</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::N</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::K</autogen>
<autogen>__KeyToKey__ KeyCode::Y, KeyCode::J</autogen>
<autogen>__KeyToKey__ KeyCode::O, KeyCode::Y</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::O</autogen>
<autogen>__KeyToKey__ KeyCode::P, KeyCode::SEMICOLON</autogen>
<autogen>__KeyToKey__ KeyCode::U, KeyCode::L</autogen>
<autogen>__KeyToKey__ KeyCode::I, KeyCode::U</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::I</autogen>
</block>
</item>
</item>
</root>
EDIT: 1. To get the Compose key to work on the Mac, you should: Create a folder at ~/Library/Keybindings , and save this file to it: https://github.com/jsarenik/Mac-Ompose/ … nding.dict (I got this file from a blog post, I am not involved with it in any way, but it seems to work). It must be saved with UTF-8 text encoding. Works after restart. 2. It can now toggle the angle mode. 3. It now has a basic version of the Extend mode (see later post). 4. It can now toggle the wide mode as well.
Oh, and with the angle mod: I have my whole life used the middle finger on 'M', ring finger on ',' etc. That is the reason I thought it was weird! I only now realized that this is wrong, and having to change this makes it a whole lot more challenging!