@iGameRam's suggestion of KeyRemap4MacBook ended up working for me. I selected KeyRemap4MacBook because I am already using it to remap keys for me system wide. To do this I had to read the reference manual.
From the reference manual I found that there is a private.xml
file that enables me to add more remapping values to KeyRemap4MacBook. By going to the KeyRemap4MacBook pref pane, going to the "Misc & Uninstall" tab and selecting "Open private.xml" I was able to open the file.
I had to add two elements to my private.xml
. The first was:
<appdef>
<appname>SPOTIFY</appname>
<equal>com.spotify.client</equal>
</appdef>
This is because KeyRemap4MacBook does not ship with an app definition for Spotify. It does ship with many others. I need the app definition so my keyboard keybindings only apply for Spotify and are not system wide.
The second element I added was:
<item>
<name>Spotify Vim Style Nav</name>
<appendix>J and K works in Spotify</appendix>
<identifier>private.spotify.vim_style_nav</identifier>
<only>SPOTIFY</only>
<autogen>--KeyToKey-- KeyCode::J, KeyCode::CURSOR_DOWN</autogen>
<autogen>--KeyToKey-- KeyCode::K, KeyCode::CURSOR_UP</autogen>
</item>
This is the actual definition of the key bindings. The <identifier>
tag is supposed to be unique for every key mapping. The manual suggests prefixing the identifier with private.
. The <only>
tag has to match an appname defined in the private.xml
or shipped with KeyRemap4MacBook.
The <autogen>
tags are supposed to contain the mappings. The manual has many examples on what kind of mappings that can be created. The two I have map the J and K keys to the Down and Up keys respectively.
Once the file has been saved, I just needed to press the "ReloadXML" button and then my mapping appeared as an option in the menu.
After selecting it everything worked as I wanted.
It is possible to do, both natively and easily. Mac OS X hints has a hint (also check Lri’s comment) on how to set up keyboard shortcuts from the command line. We can use this to create single-key shortcuts.
You’ll need to know the application’s bundle ID (unless you want to set global shortcuts, naturally). For special keys, @
is ⌘; ~
is ⌥; $
is ⇧; ^
is ctrl. You can also check other values.
I’ll use Tweetbot as an example, setting “New Tweet” to ⌥+N, and “Reply” (on the multi-shortcut example) to R.
For one-shortcut commands, you can use the form:
defaults write com.tapbots.TweetbotMac NSUserKeyEquivalents -dict-add "New Tweet" -string "~n"
For multi-shortcut commands, use the form:
defaults write com.tapbots.TweetbotMac NSUserKeyEquivalents '{
"New Tweet"="~n";
"Reply"="r";
}'
For system-wide shortcuts, use -g
, instead of a bundle ID.
Best Answer
I don't believe that macOS will let you add key sequences in System Preference -> Keyboard -> Shortcuts. However, you should be able to do it, but you will most likely have to manually add shortcuts in plist files.
I think the answer provided here, as well as this repository, will help you create custom keyboard shortcuts.
You can also check out Keyboard Maestro's FAQ on their workarounds to key sequence shortcuts.