Steve Losh's Modern Space Cadet is an inspiration. It opened my eyes to the fact that there's a more useful keyboard hidden inside the vanilla QWERTY package that most of us have tolerated for all these years. This repo represents my nascent quest to unleash that more useful keyboard.
At first, this might sound no different than the typical Emacs/Vim/<Every-Other-Editor> tweakfest. But it is. I'm not talking about honing my editor-of-choice. I'm not talking about pimping out my shell. I want a more useful keyboard everywhere. Whether I'm in my editor, in the terminal, in the browser, or in Keynote, I want a more useful keyboard.
And ideally, I want the same (more useful) keyboard in every app. Ubiquitous keyboarding. Muscle memory. Don't make me think.
How do I go to the beginning of the line in this app? The same way I go to the beginning of the line in every app! Don't make me think.
How do I go to the top of the file/screen/page in this app? The same way I... Well, you get the point.
In its current state, my more-useful keyboard is built on top of a few tools, and some custom keymappings for those tools (all of which are described below). Where possible, this repo houses the configuration files that power my more-useful keyboard. In the places where the customization requires manual steps, I describe those steps.
Below you'll find a step-by-step guide for building this more-useful keyboard from scratch.
cus·tom·ize (verb): to modify or build according to individual or personal specifications or preference [dictionary.com]
Any customization is, by definition, personal. While I find that these customizations yield a more-useful keyboard for me, they might not feel like a win for you.
These customizations currently provide a fraction of what I want from my more-useful keyboard. I find it to be a very useful fraction, but I don't consider it complete by any means.
Here's what it provides so far:
This setup is honed and tested with the following dependencies.
- OS X Yosemite, 10.10
- Seil 11.0
- Karabiner 10.6
- SizeUp 1.6 (optional)
git clone https://github.com/jasonrudolph/keyboard.git
cd keyboard
mkdir -p ~/Library/Application\ Support/Karabiner
# Prepare custom settings for Karabiner
ln -s $PWD/karabiner/private.xml \
~/Library/Application\ Support/Karabiner/private.xml
ln -s $PWD/karabiner/ext \
~/Library/Application\ Support/Karabiner/ext
- Tap caps lock for escape
- Hold caps lock for control
- Access the default caps lock behavior in those rare cases where it's helpful
- Launch Seil.
- Enable the "Change Caps Lock" option, and map caps lock to keycode 80. (80 is F19. I don't have a physical F19 key, so this setting will not conflict with any existing keys.) [screenshot]
- Launch Karabiner.
- In the "Change Key" tab, enable the "F19 to Escape/Control" option. [screenshot]
- In the "Change Key" tab, enable the "Double-tap Left Shift for CapsLock" option.
- In the "Key Repeat" tab, change the "[Key Overlaid Modifier] Timeout" to 300ms. (As recommended by Steve Losh, I find that this avoids accidentally triggering escape when you meant to trigger control.) [screenshot]
- Enable navigation (up/down/left/right) via the home row
- Enable word navigation (option+left/right) via the home row
- Enable other commonly-used actions on or near the home row
- Launch Karabiner.
- In the "Change Key" tab, enable the "(S)uper (D)uper Mode" option. [screenshot]
- Quickly arrange and resize windows in common configurations, using keyboard shortcuts that are on or near the home row
- Launch Karabiner.
- In the "Change Key" tab, enable the "SizeUp Mode" option. [screenshot]
- Perform common Markdown-formatting tasks anywhere that you're editing text (e.g. in a GitHub comment, in your editor, in your email client)
- Launch Karabiner.
- In the "Change Key" tab, enable the "Markdown Mode" option. [screenshot]
- Document usage of "Hyper" key
- Incorporate Keyboard Maestro configuration
- Add
./script/setup
command to automate the manual setup steps