At my new job we use a lot of Macs, so I have been reacquainting myself with OS X. To help me feel more at home I've been using Karabiner to remap keystrokes in ways that help Linux/Windows users like myself be more comfortable.
After moving to a MacBook I find I still need the occasional windows application to be productive so I use Codeweavers CrossOver. Not surprisingly, Karabiner doesn't care what application is running and performs its remapping regardless of the application being run.
I needed my Home/End keys to work correctly both inside and outside the Crossover environment so I reconfigured Karabiner to allow for this.
- Codeweavers Crossover [codeweavers.com]
- Karabiner (formerly KeyRemap4MacBook) [pqrs.org]
- How to disable Karabiner for a specific app? [groups.google.com]
- Example private.xml to enable app specific settings [github.com/tekezo]
- How to add your own private.xml to Karabiner [pqrs.org]
- Pass-through setting for specified apps [pqrs.org]
Steps to my solution:
- Open the Karabiner event viewer and find out the window information for the application you want to provide specific settings for
- Open the Karabiner application
- Click on the Misc & Uninstall tab
- Click on Open private.xml
- Open the private.xml file in your text editor
- The References at the top of the article describe how to get a configuration that works for a specific app
- After creating and saving your private.xml, go back to the Karabiner application
- Click on the Change Key tab
- Click on the Reload XML button
Here's my complete private.xml file that works for crossover (Formatting may be funny, you'll probably have to remove spaces in XML tags due to the cms that this site currently uses):
< ?xml version="1.0"?> < root> < appdef> < appname>UNKNOWN< /appname> < !-- Please modify bundle identifier for your environment. You can confirm it by EventViewer. https://pqrs.org/osx/karabiner/xml.html.en#appdef-steps -- > < equal>com.codeweavers.CrossOverHelper.< /equal> < /appdef> < item> < name>Disable all settings while you are using Cross Over applications< /name> < identifier>private.ignore_crossover< /identifier> < only>UNKNOWN< /only> < autogen>__PassThrough__< /autogen> < /item> < /root>
This file worked for me, hope it works for you too!