For creating key-binding name-spaces (key-spaces), modifier keys, key-chords (single and dual key) and Hydras each have unique strengths. For my use case, I wanted a bigger modifier key-space so I started there with Super.
Although Super is supposed to be reserved non-native packages, it is already getting scarfed up because the native key-spaces are painfully overcrowded. To top it off, when you run Emacs on Windows, Windows intercepts a bunch of key-presses for itself and never sends them to Emacs. Yea you can disable some, but not all and it is irritating. For my configuration, this is a showstopper issue and all of workaround are too painful. I enjoy using modifier keys, so I turned to Hyper.
Initially I thought it would be simple as buying a keyboard with Hyper
on it. Wrong. Wrong. Compared to the painful workarounds out there to reproduce Hyper on a keyboard without it, building a keyboard with Hyper on it seemed like walk in the park in comparison. Although I’ve battled the urge to design and assemble a keyboard for years because I know that someone else has done it better, this weekend I finally broke-down and indulged myself with some mock-ups.
They key top legend is busy if not simple and its laid out like this
- Left Side
- Top: Press the key with
Shift
- Bottom: Press the key without any modifier
- Top: Press the key with
- Right Size
- Top: Press the key with
Fn
andShift
- Bottom: Press the key with
Fn
- Top: Press the key with
This 8th mock-up feels perfectly suited for me.
The thing that I like about is that:
- It has a familiar QWERTY layout
- No typewriter slowdown junk
- Power keys are all operated with the power fingers
- Mostly symmetrical
- Shift and Function handle everything that I want
- Greek alphabet in order, so simple
- No need to program and reprogram, super simple
- Key-chord has taught me the power of the power-finger two-button press, so Function and Option do fine as single keys, combining with nearby keys for common actions
- No finger-killing put every modifier key in one row
- It is an ANSI 104 without: ScrollLock, BreakPause and duplicate keys
- For my VI friends, Escape is an easy-to-reach two-finger press using Fn
- Someone has surely laid it out this way already, so I can buy it from them
If you want to see this is in the editor, paste it into the awesome keyboard layout editor.
[{x:2.5},"!\n1\nF11\nF1","@\n2\nF12\nF2","#\n3\nF13\nF03","$\n4\nF14\nF04","%\n5\nF15\nF05",{x:0.25,w:2},"Caps Lock\nTab\n\nEsc",{x:0.25},"^\n6\nF16\nF06","&\n7\nF17\nF07","*\n8\nF18\nF08","(\n9\nF19\nF09",")\n0\nF20\nF10"], [{x:2.5},"Q\nq\nΑ\nα","W\nw\nΒ\nβ","E\ne\nΓ\nγ","R\nr\nΔ\nδ","T\nt\nΕ\nε",{x:0.25,a:7},"⌘","⌥",{x:0.25,a:4},"Y\ny\nΖ\nζ","U\nu\nΗ\nη","I\ni\nΘ\nθ","O\no\nΙ\nι","P\np\nΚ\nκ"], [{x:2.5},"A\na\nΛ\nλ","S\ns\nΜ\nμ","D\nd\nΝ\nν","F\nf\nΞ\nξ","G\nv\nΟ\nο",{x:0.25,a:7},"Fn",{a:4},"BkSp\nDel",{x:0.25},"H\nh\nΠ\nπ","J\nj\nΡ\nρ","K\nk\nΣ\nσ","L\nl\nΤ\nτ",":\n;\nΥ\nυ"], [{x:2.5},"Z\nz\nΦ\nφ","X\nx\nΧ\nχ","C\nc\nΨ\nψ","V\nv\nΩ\nω","B\nb",{x:0.25,a:7,w:2},"Shift",{x:0.25,a:4},"N\nn","M\nm","<\n,\n{\n[",">\n.\n}\n]","?\n/\n|\n\\"], [{y:0.25,x:2.5},"~\n`","PgUp\n↑","PrSc\nIns",{a:7},"Meta","Control",{x:0.25,w:2},"Space",{x:0.25},"Control","Meta",{a:4},"_\n-","PgUp\n↑","+\n="], [{x:2.5},"Home\n←","PgDn\n↓","End\n→",{a:7},"Hyper","Super",{x:0.25,w:2},"Enter",{x:0.25},"Super","Hyper",{a:4},"Home\n←","PgDn\n↓","End\n→"]
This didn’t take too much time, but I probably spent a little too long on it :).
Addendum:
Re-published because I broke my RSS feed syndicated for Planet Emacsen and @hober fixed it. Thank you @hober.
I prefer vi myself.
I felt like the Esc position was an improvement; it still requires the Fn key to hit Esc (thinking index finger on Fn and middle finger on Esc). Do you have any strong preferences or ideas about Esc key placement?
See the Happy Hacking keyboard.
Ng Boo Jiun liked this on Facebook.
Ortho-Linear #Emacs & #VI Keyboard Design 8 https://t.co/GRixyVmwMD
Ortho-Linear #Emacs & #VI Keyboard Design 8 https://t.co/Ab3pWwOACI