Showing posts with label keyremap4macbook. Show all posts
Showing posts with label keyremap4macbook. Show all posts

Monday, November 25, 2013

KeyRemap4MacBook implement XWindows auto select with Mouse Gestures.

I love the Xwindows feature that you can auto copy selected text from a cursor selection. So this is the scenario, when I select a piece of text I would like it to be stored in the buffer/clipboard with control-C after I lift my mouse button. I don't need the paste function however could easily be implemented as well.
With KeyRemap4MacBook your can rearrange your input events. Here the snippet I use for the TERMINAL application to do just so:
  <item>
   <name>Autoselect Copy</name>
   <identifier>private.autoselect_copy</identifier>
   <only>TERMINAL</only>
   <autogen>
    __PointingButtonToKey__
    PointingButton::LEFT, ModifierFlag::NONE,
    KeyCode::VK_MODIFIER_EXTRA1,

    Option::KEYTOKEY_BEFORE_KEYDOWN,
    KeyCode::VK_MOUSEKEY_LOCK_BUTTON_LEFT,
    KeyCode::VK_LOCK_EXTRA2_FORCE_ON,
    <!-- VK_LOCK_EXTRA2 is necessary for Middle Button to Command+Tab (Switch 
     Applications) -->

    Option::KEYTOKEY_AFTER_KEYUP,
    KeyCode::VK_MOUSEKEY_LOCK_BUTTON_ALL_FORCE_OFF,
    KeyCode::C, ModifierFlag::COMMAND_L,
    KeyCode::VK_LOCK_EXTRA2_FORCE_OFF
   </autogen>
  </item>

After this I can paste the text... in this example my stickies.

Tuesday, December 27, 2011

KeyRemapForMacBook and Kinesis Classic Keyboad mapping private.xml

The KeyRemapFor4MacBook tool is excellent to map any key or mouse event to your needs. I have a Kinesis Classic Ergonomic keyboard (PS1) and wanted to use it in my new office setup. Love the keyboard, love the Mac however both together the do not play nice (plus I do not want to buy a new Kinesis with Multimedia keymapping) So here we are the following details for the private.xml for Kenisis Classic Using the following translation tables: Key Mapping The first thing is to identify the make and model of the keyboard that I have. Goto the "About This Mac" and click "More Info" and a detailed summary of all the hardware and software metadata pops up.
NOTE: scroll down for version 8 syntax which has slightly changed... Its a work in progress but here the full what I have defined as the private.xml
<?xml version="1.0"?>
<root>
  <devicevendordef>
    <vendorname>Kinesis</vendorname>
    <vendorid>0x0d3d</vendorid>
  </devicevendordef>
  <deviceproductdef>
    <productname>Classic</productname>
    <productid>0x001</productid>
  </deviceproductdef>
  <appdef>
    <appname>com.apple.finder</appname>
    <equal>com.apple.finder</equal>
  </appdef>
  <appdef>
    <appname>RDC</appname>
    <equal>com.microsoft.rdc</equal>
  </appdef>
  <appdef>
    <appname>TERMINAL</appname>
    <equal>com.apple.Terminal</equal>
  </appdef>
  <item>
    <name>Kinesis Bindings</name>
    <identifier>private.deviceproductdef</identifier>
    <device_only>DeviceVendor::Kinesis, DeviceProduct::Classic
    </device_only>
    <list>
      <item>
        <name>Keys for Kinesis</name>
        <not>TERMINAL</not>
        <not>RDC</not>
        <!-- Change the Kinesis Alt, TAB / Command to TAB -->
        <autogen>--KeyToKey-- KeyCode::TAB, ModifierFlag::OPTION_R,
          KeyCode::TAB, ModifierFlag::COMMAND_R
        </autogen>
        <!-- Change the Kinesis Alt, LeftArrow / Spaces Ctrl LeftArrow -->
        <autogen>--KeyToKey-- KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_R,
          KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_R
        </autogen>
        <autogen>--KeyToKey-- KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_R,
          KeyCode::CURSOR_RIGHT, ModifierFlag::CONTROL_R
        </autogen>
        <!-- Change the Kinesis Ctrl-END / Ctrl-HOME to HOME or END -->
        <autogen>--KeyToKey-- KeyCode::HOME, ModifierFlag::COMMAND_R,
          KeyCode::HOME, ModifierFlag::FN
        </autogen>
        <autogen>--KeyToKey-- KeyCode::END, ModifierFlag::COMMAND_R,
          KeyCode::END, ModifierFlag::FN
        </autogen>
        <!-- Change the Kinesis END and HOME key to go to the begin and end of a 
          line -->
        <autogen>--KeyToKey-- KeyCode::HOME, KeyCode::CURSOR_LEFT,
          ModifierFlag::COMMAND_L
        </autogen>
        <autogen>--KeyToKey-- KeyCode::END, KeyCode::CURSOR_RIGHT,
          ModifierFlag::COMMAND_R
        </autogen>
        <!-- Change the Kinesis Alt-Left and Alt-Right key to go to forward or backwards 
          one word -->
        <autogen>--KeyToKey-- KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_R,
          KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_L
        </autogen>
        <autogen>--KeyToKey-- KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_R,
          KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_R
        </autogen>
        <!-- Change the Kinesis Ctrls to Command buttons -->
        <autogen>--KeyToKey-- KeyCode::CONTROL_L, KeyCode::COMMAND_L
        </autogen>
        <!-- Change the Kinesis Ctrls to Command buttons -->
        <autogen>--KeyToKey-- KeyCode::CONTROL_R, KeyCode::COMMAND_R
        </autogen>
      </item>
      <item>
        <name>Kinesis Command Key under Alt for Terminal only</name>
        <only>TERMINAL</only>
        <autogen>--KeyToKey-- KeyCode::OPTION_R, KeyCode::COMMAND_R</autogen>
      </item>
    </list>
  </item>
</root>

Version 8 Syntax

With the release of v8.x of the KeyRemapForMacBook also the syntax changed... thus the example above won't work... here the v8 of the same mapping for Kinesis.
<?xml version="1.0"?>
<root>
 <devicevendordef>
  <vendorname>Kinesis</vendorname>
  <vendorid>0x0d3d</vendorid>
 </devicevendordef>
 
 <deviceproductdef>
  <productname>Classic</productname>
  <productid>0x001</productid>
 </deviceproductdef>
 
 <appdef>
  <appname>com.apple.finder</appname>
  <equal>com.apple.finder</equal>
 </appdef>
 
 <appdef>
  <appname>RDC</appname>
  <equal>com.microsoft.rdc</equal>
 </appdef>
 
 <appdef>
  <appname>ECLIPSE</appname>
  <equal>org.eclipse.eclipse</equal>
 </appdef>
 
 <appdef>
  <appname>TERMINAL</appname>
  <equal>com.apple.Terminal</equal>
 </appdef>
 
 <item>
  <name>Kinesis Bindings</name>
  <device_only>DeviceVendor::Kinesis, DeviceProduct::Classic</device_only>
  <item>
   <name>Keys for Kinesis</name>
   <appendix>Keys for Kinesis Keyboard on MacOSX</appendix>
   <not>TERMINAL</not>
   <not>RDC</not>
   <identifier>kinesis.mapping.basic</identifier>
   <!-- Change the Kinesis Alt, TAB / Command to TAB -->
   <autogen>__KeyToKey__ KeyCode::TAB, ModifierFlag::OPTION_R,
    KeyCode::TAB, ModifierFlag::COMMAND_R
   </autogen>
   <!-- Change the Kinesis Alt, LeftArrow / Spaces Ctrl LeftArrow -->
   <autogen>__KeyToKey__ KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_R,
    KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_R
   </autogen>
   <autogen>__KeyToKey__ KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_R,
    KeyCode::CURSOR_RIGHT, ModifierFlag::CONTROL_R
   </autogen>
   <!-- Change the Kinesis Ctrl-END / Ctrl-HOME to HOME or END -->
   <autogen>__KeyToKey__ KeyCode::HOME, ModifierFlag::COMMAND_R,
    KeyCode::HOME, ModifierFlag::FN
   </autogen>
   <autogen>__KeyToKey__ KeyCode::END, ModifierFlag::COMMAND_R,
    KeyCode::END, ModifierFlag::FN
   </autogen>
   <!-- Change the Kinesis END and HOME key to go to the begin and end of 
    a line -->
   <autogen>__KeyToKey__ KeyCode::HOME, KeyCode::CURSOR_LEFT,
    ModifierFlag::COMMAND_L
   </autogen>
   <autogen>__KeyToKey__ KeyCode::END, KeyCode::CURSOR_RIGHT,
    ModifierFlag::COMMAND_R
   </autogen>
   <!-- Change the Kinesis Alt-Left and Alt-Right key to go to forward or 
    backwards one word -->
   <autogen>__KeyToKey__ KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_R,
    KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_L
   </autogen>
   <autogen>__KeyToKey__ KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_R,
    KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_R
   </autogen>
   <!-- Change the Kinesis Ctrls to Command buttons -->
   <autogen>__KeyToKey__ KeyCode::CONTROL_L, KeyCode::COMMAND_L
   </autogen>
   <!-- Change the Kinesis Ctrls to Command buttons -->
   <autogen>__KeyToKey__ KeyCode::CONTROL_R, KeyCode::COMMAND_R
   </autogen>
  </item>
  <item>
   <name>Kinesis Command Key under Alt for Terminal only</name>
   <only>TERMINAL</only>
   <identifier>kinesis.terminal</identifier>
   <autogen>__KeyToKey__ KeyCode::K, VK_OPTION,
    KeyCode::EQUAL, ModifierFlag::CONTROL_R</autogen>
   <!-- Change the Kinesis Ctrls to Command buttons -->
   <autogen>__KeyToKey__ KeyCode::CONTROL_R, KeyCode::COMMAND_R
   </autogen>
  </item>
  <item>
   <name>Kinesis Command Key under Alt for Eclipse only</name>
   <only>ECLIPSE</only>
   <identifier>kinesis.eclipse</identifier>
   <!-- Change the Kinesis Ctrl - Space to  buttons -->
   <autogen>__KeyToKey__ KeyCode::SPACE, VK_COMMAND,
        KeyCode::SPACE, ModifierFlag::CONTROL_L </autogen>
  </item>
  <!-- 
   org.eclipse.eclipse

   -->
 </item>
</root>