• You are not logged in.

For Mac users: Colemak D-H curl, Tarmak, angle/wide and extend

  • Started by mkborregaard
  • 35 Replies:
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

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.

Extend-ISO-Angle-Mac_90d.png
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&gt;V&gt;C&gt;X&gt;Z&gt;`)</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&gt;K&gt;H&gt;N&gt;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&gt;T&gt;F&gt;E&gt;K&gt;H&gt;N&gt;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&gt;S&gt;D&gt;B&gt;T&gt;F&gt;E&gt;K&gt;H&gt;N&gt;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&gt;O&gt;;&gt;P&gt;R&gt;S&gt;D&gt;B&gt;T&gt;F&gt;E&gt;K&gt;H&gt;N&gt;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&gt;O&gt;;&gt;P&gt;R&gt;S&gt;D&gt;B&gt;T&gt;F&gt;E&gt;K&gt;H&gt;N&gt;J &amp; L&gt;U&gt;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>
Last edited by mkborregaard (03-Oct-2016 15:10:16)
Offline
  • 1
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

Nice work! Thumbs way up! :-)

A tip if I may: One thing I found useful in my own topics, is the h /h tags (in [] brackets) to produce headings. The make points stand out nicely. If you want links in heading-like text however, you're stuck with standard b /b tags.

The image you made is fine, but I could probably make a version with a tad more polish. Maybe you find something you'd like to change though?

[Edit: Oh, what the hell – here you go sir! Let me know if there's anything strange with the images. The window bar icon is like the one on I have on my Lenovo ThinkPad's Fn key mapping for window/app switching. I couldn't easily show the Esc key plus it takes up room so maybe it could just be in the description? Also, I didn't mark the modifier/Tab keys as I think it's clearer that way since the Extend mappings don't do anything to them! I don't think it matters whether you have an Fn key and stuff down there either. And you don't have to comment on AltGr as that's a story for another day anyway...]

    Extend-ISO-NoWi-Mac_90d.png?dl=1
    Extend mappings for Mac. ">>" – mouse accelerator; "bar icon" – Window Switcher.
    Not shown: Esc key – Extend Lock (Ext-Shift+Esc – CapsLock). Standard Mac F# multimedia key mappings are kept.

    Extend-ISO-Angle-Mac_90d.png?dl=1
    (The same image with the Angle ergo mod; it should now also be shown in the topic post.)
    NOTE: I also use the Wide mod so the += |\ and bracket keys move to the middle, and ?/ up. This image doesn't reflect that.

Last edited by DreymaR (24-Mar-2017 11:54:39)
Offline
  • 0
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

Great, it does look better with the h /h tags. And thanks for the offer on the picture, it would be nice to have it polished once the Mac-extend has a (more) final form.

Offline
  • 0
  • Reputation: 26
  • From: UK
  • Registered: 14-Apr-2014
  • Posts: 479

Nice work, good to see support for Macs too.
The wide mod : indeed the greater hand separation does make it a little more comfortable to use - but I think the still greater benefit of that mod turns out to be the easy access to AltGr (and in your case Cmd), giving both thumbs something useful to do.

Using Colemak Mod-DH with some additional ergonomic keyboard mods.

Online
  • 0
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

Thanks, I have updated the description to reflect that.

Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

Check out the images in my post above! (You'll note that I've made some overall changes to all my Extend images. Hope you like them!)

And oh: If you do take out the left-hand Esc because you feel that the Ctrl key is also needed for the Extend shortcuts on a Mac (I wouldn't know – keep in mind that if the Ctrl key is rarely needed the physical Ctrl key should still work with Extend combos which may be good enough?), one suggestion is putting Esc on the top-left key instead. It's really quite convenient to have a quick way of escaping with one hand only, but if you feel that Ext-Tilde is too contorted then of course the real Esc key isn't far away either... You could put the CapsLock function on Ext-Tilde too, to avoid having to add Shift for a rather involved chord on the Esc key?

Last edited by DreymaR (15-May-2015 08:02:22)
Offline
  • 0
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

Thanks a lot, they look great! About the Esc key, maybe it is a good idea to just keep the original Ctrl, as you suggest. I am not quite sure what the Esc key would be for, though - I hardly ever use it myself. Am I missing out on some sweet shortcuts on the Esc key?

Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

Hmmm... did you see my mega-post on Extend shortcuts? ;-) Yes, I use it quite a lot: Navigating dialogues, or whenever I just change my mind about something. Which, as it turns out, happens.

In Windows there are some shortcuts like Ctrl+Esc to bring up the Start Menu but I confess I don't use that one as a tap on the GUI/Windows key is simple enough.

Okay, an example: I just explored some files and hit Alt+Enter[Ext-A-Spc] for Folder Properties to see how much space a folder took up. When I was done, I hit Esc[Ext-Q] to get out. It's very common.

Last edited by DreymaR (18-May-2015 15:41:31)
Offline
  • 0
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

I did see it, but I only now read it carefully. Nice stuff there! Unfortunately, most of those shortcuts do not work on the Mac :-( I should try to see how many of those can be transferred so that they are still useful on the extend layer.
But it does appear that on the Mac the Esc key is not used for keyboard shortcuts - I have put it on the top left key now to be easy to reach just as itself, though.
I have also experimentally revised the backspace shortcut so that Ext+O deletes a whole word, whereas Ext+A+O deletes a single character - it takes a bit of getting used to, but I think I like it.
Oh and the right-bracket key is not application switcher - it is window switching within the same application (the relationship between windows and applications is different on windows/linux and mac: you cannot have multiple instances of the same program running, but you can have 0-n windows open from the same program instance).

By the way, I cannot see the images in your post any more - do you know what happened?

Last edited by mkborregaard (19-May-2015 22:22:05)
Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

Yeah, I know that Macs have different tacks. If you could provide some shortcut research for the Mac that'd be great.

Indeed, if the Esc key isn't used much on the Mac then leave it out. So it isn't used for getting out of dialogues, even? How do you key your way out of a dialogue then?

I think that your way of revising deletion is a bad one since it creates something unique and special that you can't bring with you elsewhere! Why not let O delete a character and T+O a word, like it is on both Windows and Linux?

Do you feel that the window strip icon is wrong for the window switching key then? If so, how would you like it to look?

If a post with links has been updated and your cache hasn't been refreshed, you may not see it right (I think the date tags don't always work as they should). I use Ext-S/T+5 for a hard refresh, reloading the cache. ;-)

[edit: Oh, you meant the post above here! Sorry, I hadn't updated the links. Better now! You should link to the image(s) you want in your own post rather than pointing to mine, as people shouldn't have to scroll around while we're selling them this!]

Last edited by DreymaR (20-May-2015 06:38:41)
Offline
  • 0
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

Oh Esc is used for getting out of dialogs, so I have put it on the top left key. It is just not used in combinations, so it should be easy enough to reach there.

OK, I have reverted to the recommended way of implementing deletion.

I feel the window strip icon works great, I just noticed you called it application switching in the caption.

You mean you want me to link to your dropbox in my post? Fine with me, if you are OK with that.

Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

The thing is, on the top left key it's just one key jump and change from the real Esc key! And in that position it's not easily Extend-chorded either (although I can do it with the ring finger). All in all I feel that it's simpler to just hit the real Esc then! And the top left key is again free for suggestions... ;-) I eventually decided to keep it open as a customizeable key. In PKL it's simple to add something neat to it such as Win+T (Taskbar) or Ctrl+A (Select All). Something that isn't used all the time but can be handy while Extending. If you're using Extend Lock (let me know how that feels!), then that could be a good suggestion as I suspect that's something you'd want to be able to reach easily.

Feel free to link, or to copy the image and link to your copy. All I ask is that I'm given credit for the image. Eventually, images and pages will migrate to a new GitHub-based address – but we'll get to that. ;-)

Last edited by DreymaR (20-May-2015 10:14:48)
Offline
  • 0
  • Reputation: 0
  • Registered: 17-Nov-2014
  • Posts: 102

What is the "UK_Section" key? It is referenced in this line:

 <autogen>__KeyToKey__ KeyCode::UK_SECTION, ModifierFlag::EXTEND, KeyCode::ESCAPE</autogen> 

It and "BRACKET_LEFT" both are set to escape.

 <autogen>__KeyToKey__ KeyCode::BRACKET_LEFT, ModifierFlag::EXTEND, KeyCode::ESCAPE</autogen> 

I'm just asking as I am trying to edit my own extend layer. Thanks.

Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

As far as I could google, it's the § key on UK keyboards.

Offline
  • 0
  • Reputation: 0
  • Registered: 17-Nov-2014
  • Posts: 102

That's what I was seeing too, but I couldn't figure out if there was some equivalent name for US keyboards, or where this key is located. I'm thinking it may be the ~ and ` key in the upper left hand corner (at least on US keyboards).

Last edited by jonhines (09-Nov-2015 19:36:09)
Offline
  • 0
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

On my Iso keyboard, it is the key to the left of '1'. Try editing the key to show a unique letter and pressing around. Also, it would be cool if you post any improvements to the extend layout - perhaps it should be in a github repo - I did not do that as dreymar hasn't, and the design is his. But it would be cool to develop it - I generally use very few of the keys on my mac (the keys for alt, shift, arrows, enter and screenshot).

Offline
  • 0
  • Reputation: 0
  • Registered: 17-Nov-2014
  • Posts: 102

I will post them when I get it working. I'm having quite a few weird things going on in my current iteration that I need to figure out.

Thanks, that was the key I suspected.

Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

Yes, yes, there will be that github repo I promise. It's just been slow going for various reasons.

Offline
  • 0
  • Reputation: 0
  • Registered: 17-Nov-2014
  • Posts: 102

Regarding the discussion above about the "UK_Section" key: I found that on my American keyboard that key should be called "BACKTICK" and it does nothing as UK_Section. If you replace the word "UK_Section" with "BACKTICK" in the above code it should work fine for us Yanks.

Offline
  • 0
  • Reputation: 0
  • Registered: 02-Oct-2016
  • Posts: 2

I was using the Seil and Karabiner "workaround" on my Mac successfully to get the extend layer (thanks for that), but I just upgraded to OSX (apparently now called macOS) 10.12 Sierra, and it seems as if Seil was now combined into Karabiner-Elements.
Well, to make a long story short, I don't know how to go about getting back the extend layer. If anyone here could point me in the right direction, I'd be very grateful.

Offline
  • 0
  • Reputation: 3
  • Registered: 29-Apr-2015
  • Posts: 20

Yes - all of the contributions in this post are invalid after upgrading to Sierra. I was able to use Karabiner-elements to implement the colemak-dh-curl-angle mod that I have been using for the last year or so, but not yet the tarmak or the extend layer. Once Karabiner-elements gets a little further along I intend to reimplement it for that software (given that this post has >5000 views there must be some interest in it). But I don't think Karabiner-elements is yet powerful enough for this.

Offline
  • 2
  • Reputation: 0
  • Registered: 02-Oct-2016
  • Posts: 2

Thank you mkborregaard, that sounds excellent.

Offline
  • 0
  • Reputation: 0
  • Registered: 17-Oct-2016
  • Posts: 1

Hey all, registered just to post that I've found a solution on Sierra:

Here's my fork of a Karabiner Elements + Hammerspoon solution. I've modified the init.lua file to deal with some of the most useful shortcuts form DreymarR's extend layer. See here for the code.

Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978
dusk said:

Here's my fork of a Karabiner Elements + Hammerspoon solution. I've modified the init.lua file to deal with some of the most useful shortcuts form DreymarR's extend layer. See here for the code.

Good job. If that works as it should, I hope someone wants to implement Extend properly this way.

Offline
  • 0
  • Reputation: 41
  • From: Bærum, Norway
  • Registered: 13-Dec-2006
  • Posts: 3,978

Has anything happened on the Mac Sierra front since the last post? I hope everything can work again soon.

Also, since there's now a new Curl(DH) mod to rule them all and in the dorkness bind them... any takers for the Mac implementation of that? :-)

Offline
  • 0