NOTE: None of this works in Mac OS X Sierra, which invalidates the Karabiner and Seil softwares. I will work on porting to Karabiner Elements as soon as the software is able to implement the extend layer.
I was inspired by DreymaR's big bag of tricks, but have been unable to find something like that implemented for the Mac. So I have made an .xml file that implements the most important elements, using the software Karabiner. Read DreymaR's post for extensive descriptions of the different elements, but here is a short version:
1. The Colemak D-H curl.
This is a slight modification to the original Colemak layout, which moves D and H down from the home row to the bottom row. Both letters are very common, so having them in the middle column of the home row gives a lot of lateral movement, which is tiring. This critique of Colemak was the basis for creating the Workman layout, but using the DH curl solves the problem with a very slight modification to original Colemak.
The original D-H curl was created by stevep99, but I have used a slightly smaller modification developed by DreymaR.
2. Tarmak steps.
These are steps for transitioning from Qwerty to Colemak in a gradual fashion, by only changing 3-4 letters at a time. This makes it possible to change to Colemak without losing keyboard productivity, which is a huge advantage to those that use a keyboard in their daily work. I have implemented the transition to the D-H curl layout only, as that is my favourite version of Colemak.
3. The Angle and Wide modes.
These are minor modifications that make any keyboard layout more ergonomic. The Angle mode moves z, x, c ,v and b one step to the left, without changing the fingering. This changes the hand position of the left hand to make it symmetrical with the right, and helps keep the wrist in line with the underarm. This mode is needed to make the D-H curl work properly, and should be activated preferably before Tarmak step 3. The wide mode moves all right hand keys one step to the right, making the space between the two hands slightly larger, which some find more pleasant. On the MacBook keyboard the wide mode also places your right thumb on the Command key, making it easier to do many shortcuts (but requiring you to press Space with the left thumb).
4. DreymaR's extend layer.
I saw DreymaR had this great idea of remapping the Caps Lock key to a new modifier key that puts navigation shortcuts right under your fingers, and wanted to try it on the Mac. It does not yet have all the capabilities of the original version, but I still like it a lot! Here is an image of the current implementation based on DreymaR's original figure. There are some differences, as e.g. the Mac relies heavily on the Command key, does not have an insert key etc.
Image kindly provided by DreymaR
To install and activate:
1. Download Karabiner and Seil.
2. Go to system preferences -> Keyboard -> Modifier Keys and set Caps Lock to 'No Action'.
3. Use Seil to remap Caps Lock. If you want it to delete, use code 51; if you want the Extend layer, use code 80.
4. Paste the below xml file into an xml file in a text editor, and save it as e.g. 'Colemak_utils.xml' somewhere on your drive.
5. In Karabiner -> Preferences, go to the 'Misc and Uninstall' tab and open the location of the private.xml file. Modify this by including the Colemak_utils file, e.g.
<?xml version="1.0"?>
<root>
<include path="{{ ENV_HOME }}/Google Drive/Karabiner/Colemak_utils.xml" />
</root>
6. In Karabiner -> Preferences, reload the XML. You should now be able to click in the various options.
7. In Karabiner -> Preferences, go down to 'Change Escape key', and put a tick in 'Shift + Escape to Caps Lock', to retain capslock capabilities in the keyboard.
8. Optional: If you want to use the Compose key in the Extend layer, 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.
I will keep this post up to date with the newest version of the layer.
Colemak_utils.xml:
<?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::DELETE, ModifierFlag::EXTEND,
KeyCode::TAB, ModifierFlag::COMMAND_L</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::ESCAPE</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::RETURN, 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::BACKQUOTE, ModifierFlag::COMMAND_L</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::MINUS, ModifierFlag::EXTEND,
KeyCode::F11</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, ModifierFlag::EXTEND,
KeyCode::F12</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::BACKQUOTE, ModifierFlag::COMMAND_L</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::F12</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_8, ModifierFlag::EXTEND,
KeyCode::F7</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_9, ModifierFlag::EXTEND,
KeyCode::F8</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_0, ModifierFlag::EXTEND,
KeyCode::F9</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, ModifierFlag::EXTEND,
KeyCode::F10</autogen>
<autogen>__KeyToKey__ KeyCode::EQUAL, ModifierFlag::EXTEND,
KeyCode::F11</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>