Open Launchpad (or open " Applications" folder from Finder).
Then, click Karabiner.
Note If you're using KeyRemap4MacBook 7.8.0 or earlier, Preferences is in System Preferences.
An alert about accessibility features will be shown. Click "Open System Preferences".
Then, select Karabiner_AXNotifier.
Activate your favorite settings from prepared settings.
Karabiner uses the key repeat parameters in "System Preferences > Keyboard" in default.
Therefore, please adjust key repeat rate in "System Preferences > Keyboard".
If you want to use more rapid key repeat rate, you can overwrite the system key repeat rate in Karabiner.
Enable "Overwrite the key repeat values of system" and then adjust parameters.
Quit from menu bar.
Press the "launch uninstaller" button from "Misc & Uninstall" tab.
You can check for updates from "Misc & Uninstall" tab.
If you want to use the latest beta version, use "Check for beta updates" button.
AXNotifier observes these events and notifies Karabiner:
That allows you to make following settings:
AXNotifier requires using accessibility features in order to observe window title (window name) and ui element role.
If you do not need to observe these items, you can deny the request.
Please turn on "Do not show this message again".
You can examine keyboard and mouse events by using EventViewer.
Launch EventViewer from a menu.
You can add your own settings by "private.xml".
You can turn off prepared settings if you don't need all prepared settings.
Turn off the "Use prepared settings" checkbox.
You can also import prepared settings into your private.xml by using <include>.
Please copy lines of checkbox.xml which you want to import.
For example, this private.xml imports "Launcher Mode v2" and "Mouse Keys Mode".
<?xml version="1.0"?>
<root>
<include once="true" path="{{ ENV_Karabiner_Resources }}/include/checkbox/launcher_mode.xml" />
<include once="true" path="{{ ENV_Karabiner_Resources }}/include/checkbox/mouse_keys.xml" />
</root>
Karabiner modifies following behavior automatically without any configurations:
When you are using multiple keyboards, modifier keys are shared with all keyboards.
For example, pressing "shift key on keyboard1" and "space key on keyboard2" sends shift-space.
Karabiner adds fn-key combinations:
| Key combination | Result |
|---|---|
| Fn-Up Arrow | PageUp |
| Fn-Down Arrow | PageDown |
| Fn-Left Arrow | Home |
| Fn-Right Arrow | End |
| Key combination | Result |
|---|---|
| Fn-Return | Enter |
| Fn-Delete | Forward Delete |
There are several ways to modify input events:
System Preferences > Keyboard > Modifier Keys...
Input events will be changed by each manipulators by the following order:
If the following modification is specified:
command key -> option key
option key -> shift key
shift key -> control key
The physical command key will be changed to control key.
Generic keys are changed by Seil and Karabiner.
escape key -> tab key
tab key -> delete key
The physical escape key will be changed to delete key by Seil and Karabiner.
The physical tab key will also be changed to delete key by Karabiner.
Karabiner does not allow you to recursive event modification.
If one setting is applied, other settings are ignored.
escape key -> delete key
delete key -> space key
escape key will be changed to delete key. (not space key)
An application named "multi-touch extension" is attached.
You can use this application with multi-touch devices such as MacBook, Magic Mouse and Magic Trackpad.
This application activates specific setting while fingers touch the multi-touch device.
For example, you can activate Complete Vi Mode while two fingers touch the device.
ThumbSense is one of the function which multi-touch extension supplies.
You can switch activated settings from menu bar.
Choose the profile from menu bar.
You can find a setting which switches profile by fn+1,fn+2,fn+3, and fn+4 by searching "switch profile" on Preference.
If you want to assign your own shortcut, this is an example of private.xml.
<?xml version="1.0"?>
<root>
<item>
<name>Switch Profile</name>
<identifier>private.switch_profile</identifier>
<autogen>__KeyToKey__ KeyCode::KEY_1, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile0</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_2, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile1</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_3, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile2</autogen>
<autogen>__KeyToKey__ KeyCode::KEY_4, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile3</autogen>
</item>
</root> Karabiner provides a command line interface. (karabiner command)
Execute the karabiner command with no argument.
$ /Applications/Karabiner.app/Contents/Library/bin/karabiner
Usage:
Profile operations:
$ karabiner list
$ karabiner select INDEX (INDEX starts at 0)
$ karabiner select_by_name NAME
$ karabiner selected
$ karabiner append NAME
$ karabiner rename INDEX NEWNAME (INDEX starts at 0)
$ karabiner delete INDEX (INDEX starts at 0)
Settings:
$ karabiner set IDENTIFIER VALUE
$ karabiner enable IDENTIFIER (alias of set IDENTIFIER 1)
$ karabiner disable IDENTIFIER (alias of set IDENTIFIER 0)
$ karabiner toggle IDENTIFIER
$ karabiner changed
Others:
$ karabiner export
$ karabiner reloadxml
$ karabiner relaunch
$ karabiner be_careful_to_use__clear_all_values_by_name PROFILE_NAME
Examples:
$ karabiner list
$ karabiner select 1
$ karabiner select_by_name NewItem
$ karabiner selected
$ karabiner append "For external keyboard"
$ karabiner rename 1 "Empty Setting"
$ karabiner delete 1
$ karabiner set repeat.wait 30
$ karabiner enable remap.shiftL2commandL
$ karabiner disable remap.shiftL2commandL
$ karabiner toggle remap.shiftL2commandL
$ karabiner changed
$ karabiner export
$ karabiner reloadxml
$ karabiner relaunch
$ karabiner be_careful_to_use__clear_all_values_by_name NewItem
You can choose a profile from multiple profiles.
$ /Applications/Karabiner.app/Contents/Library/bin/karabiner list 0: Default 1: Don't Remap 2: Empty 3: Test
$ /Applications/Karabiner.app/Contents/Library/bin/karabiner select 1
$ /Applications/Karabiner.app/Contents/Library/bin/karabiner export > ~/Desktop/karabiner-import.sh
$ sh ~/Desktop/karabiner-import.sh ...........................................
The karabiner-import.sh do not reset your configuration.
If you have enabled settings before import, the enabled settings will not be disabled in the import.
If you want to reset the configuration before import, please use be_careful_to_use__clear_all_values_by_name before running karabiner-import.sh.
$ /Applications/Karabiner.app/Contents/Library/bin/karabiner \
be_careful_to_use__clear_all_values_by_name \
YOUR_PROFILE_NAME
$ sh ~/Desktop/karabiner-import.sh
Karabiner's settings are stored in the following location.
Home > Library > Preferences > org.pqrs.Karabiner.plist
You can investigate a normal key code by EventViewer.
However, you cannot investigate key events which will be processed on the system side,
such as Command + Tab, Mission Control key.
You have to enable debug mode in order to show these system key events.
Press the "Toggle Debug Mode" button in Karabiner Preferences > Misc & Uninstall tab.
Then, enter password.
You can confirm the debug log by Console.app.
Launch Console app from the "Launch Console.app" button.
Then, the debug log will be appended when you press keys.
You can select logs and copy them.
Paste to text editor and confirm the log.
Mar 21 22:19:52 rapeseed kernel[0]: org.pqrs.Karabiner --Debug-- KeyboardEventCallback [ caught]: eventType 12, flags 0x80100008, key 0x0037, kbdType 43, repeat = 0 Mar 21 22:19:52 rapeseed kernel[0]: org.pqrs.Karabiner --Debug-- KeyboardEventCallback [sending]: eventType 12, flags 0x00040001, key 0x003b, kbdType 43, repeat = 0
Disable the debug mode by the "Toggle Debug Mode" button.
You don't need to enter password to disable the debug mode.
You can convert a raw key code (for example, "key 0x0037") to "KeyCode::COMMAND_L" by using KeyCode.data.
Or use KeyCode::RawValue::0x0037 in private.xml.