I'm hoping the split spacebar that Microsoft introduced[1] starts catching on with mechanical keyboard makers. The left side of the spacebar currently wastes valuable real estate. Putting another backspace key would move the most typed key into easy reach instead of forcing the right pinky to leap on every error.
On the topic of keyboard ergonomics, I also believe that all keyboards should be tenkeyless. It's another case of prioritizing an infrequent action (typing on the numpad) over a frequent action (moving the right hand to the mouse). Users who need a numpad can always get a standalone usb unit.
Definitely. I'd just be happy if you could get a mechanical keyboard that uses the layout that MS uses for its ergonomic keyboards, with the split keys and the height gently swelling in the center where the split is. (Look at the Natural Keyboard 4000 to see what I'm talking about: http://www.microsoft.com/hardware/en-us/p/natural-ergonomic-...)
Once you get used to typing on a keyboard that uses this layout, going back to a standard flat and un-split layout feels slow and painful. I love mechanical switches, but not enough to give up the much better layout of the Natural keyboards to get them.
The Natural 4000 is a bit hit or miss. I've had 3; two were excellent, but one is merely acceptable. The action of the keys isn't as smooth, and the space bar initially required a slightly firmer press. The space bar seems to have loosened up over time, though, and I got used to the key feel quicker than I was expecting - but typos ARE much more frequent on that keyboard.
The inconsistency is a shame, because as a keyboard I really rate it. Good shape, comfy palm rests, standard layout, unintrusive media keys, and the stupid (but seemingly inevitable) F-Lock feature starts out disabled.
The action is not quite as nice as the previous Natural Pro model, but it's a lot quieter...
EDIT: I may have misinterpreted you; the split spacebar I'm talking about is split between the two halves of the keyboard and can move completely independently of the other half.
I'd say a far better layout than HHKB is the KBC Poker.
By holding the Fn key, it changes WASD into the arrow keys; a much more familiar layout to anyone who has ever played a game on a computer. There's also a hotkey to switch right shift, right alt, right menu, and right ctrl into up/left/down/right respectively. This again, I think makes perfect sense for the few situations you might want to be able to single press arrow keys. It also supports this sort of toggle for switching escape and tilde, which is very friendly for anyone who hits escape more often than tilde (probably almost everyone.) It also has things like volume control media keys via the Fn key that I don't believe any HHKB has.
I have the happy hacking keyboard professional 2. It's fantastic. The reason the [fn] key is positioned off, and it's hard to get at the arrow keys, is because the HHKB was specifically designed to make it hard to use the arrow keys, as they are a curse. (stay on Home Row). There are alternatives, hjkl for vim and or CONTROL-... for emacs dudes and dudettes.
Yup, the HHKB is a sparkling gem in a landscape littered with garbage.
And for those of you without lots of money, the low-priced HHKB-lite models are also very nice (they have the same great layout and design, but more pedestrian components).
[I have two HHKB-lites, one from the '90s, another bought a few years ago (the former still working flawlessly).
In the landscape of computing, where most things seem obsolete overnight, it's also rather amazing that the HHKB has managed to stay in production for so long ... although it's clearly a bit of a niche product, it's been around in mostly the same form factor since the mid-90s! They're clearly doing something right!]
There's at least one shortcut that uses control, option, shift, and command, ⌃⌥⇧⌘., which saves a sysdiagnose report to /var/tmp/.
The reason why key combinations like ⌥← don't work with Unicode Hex Input is probably because they aren't assigned to control characters. I got ⌥← to work after adding this to keymap 3 in the Unicode Hex Input.keylayout that comes with Ukelele:
I'm almost ashamed of how excited I was while reading this. Default layouts of keyboards are incredibly ineffective for programming, and I find customization of layouts to be very important.
The best thing I ever did was adopting something I found on some dvorak layouts; using AltGr to make any special symbols. Now, AltGr+qwerasdfzxcv makes ()[]^${};/&! for me, which covers 90% of the special characters I write. Not leaving the alphabetical keys for any of these does wonders; It's the little things, really.
I'll also try to implement the shift-key training through xmodmap. I'll post the results if I manage!
I've got the unicomp 122 that I use at work, and the HHKB Pro Silence∂ that I use at home.
I only got the 122 because they were out of stock of of all the Classic and Space Saver when I was ordering, and truth be told I can't think of any intrinsic advantages that the 122 brings. I do love the layout of the arrow keys (with Home in their middle), but the singe best feature of the board is the BS switches.
Back when I bought mine there were a few more configuration options for the 122, one where the additional F keys (13 - 14) would send a "normal" F13 signal, and one where it sends shift + the F key below it. For example, F13 would send Shift-F1. Seeing how unicomp does not give you options any more, you might want to check what the default is.
Also, if you like the Natural, you might be in to ergo boards? You might like the Truly Ergonimic[1] with MX browns. Watch out of the placement of the important programming keys though, since they are a bit off (~ [ ] { } ; : / \ etc.)
Microsoft would win the game and take the princess home if they just sawed off the damn numpad off either the Natural 4000 or even better the black Natural Elite.
I suspect it depends how the keys feel for you. My advice would be go for the sun, they feel a lot nicer, so much lighter and less effort to type anyone. But I'm speaking as someone who loathes and detests the Model M that so many adore.
I'm not sure I would like the caps lock doing double duty as both control and escape, since it seems like it would be easy to accidentally use it wrong. I always remap the caps lock to control, but long ago I trained myself to use control-] in place of escape so I never have to reach for that dreaded key when using vi, and I can also use emacs happily.
Probably everybody reading Steve's post had a "eureka" moment on different sections. For me, it was the dual-duty caps lock key idea. I've always used "ii" remapped to ESC in vim insert mode--that changes today.
It is a shame most of the really good keyboards require so much power that it precludes Bluetooth or mobile usage. I'd love to have a HHKB if it worked wirelessly with both my laptop and tablet.
Oddly enough the ctrl key in the home row is a Unix thing (I think it's a Sun invention, but I don't recall). On the original space cadet keyboard (and all the Symbolics keyboards), Rub Out is located where modern day Caps Lock is found (see: http://en.wikipedia.org/wiki/Space-cadet_keyboard). Ctrl is still located on the bottom row.
Has anyone tried remapping a delete key to where the Caps Lock key is found? Is there anyone with a real space cadet keyboard or symbolics keyboard that can comment on using it with vim or emacs?
CTRL next to A was, I believe, its original location. That's where it was on the Teletype Model 33, which dates back to 1963, and I'm not aware of an earlier keyboard that had a CTRL key.
In the 1970s, most terminals continued with this placement. I believe the modern practice of putting Caps Lock there came in with the first IBM PC -- copied, of course, from their typewriter keyboards.
Being a longtime Lisp Machine user, I had that key mapped to Backspace on my Unix workstations into the late 1990s, but I couldn't do that remapping on my PowerBook, so I gave up -- it was too confusing to have Backspace in different places on different machines. (I think the remapping is actually possible with OS X, but I've never bothered. It's certainly possible with Linux.)
I didn't know that about the ASR-33 (haven't actually seen one), all my experience has been with unix and PC keyboards (plus some WYSE terminals).
I agree with it being confusing to have the same key jump around while you type, which is why I gave up re-mapping altogether (at my last job I was using 5 different systems that each would have required a remap, and I wasn't able to remap on each system). To much dissonance when trying to figure out why a key is not doing what you think it should be doing.
I've been playing with KR4MB and set Control_L to Control_L (+ When you type Control_L only, send Delete) + [KeyRepeat]
This is causing some angst, as I've discovered I sometimes tend to hold down the CapsLock key
before hitting another key. It's long enough for multiple deletes to be sent to an application (eg using Vrome in Chrome).
It doesn't work with the Colemak input method that comes with OS X though. I don't think there's any way to change caps lock to delete in a keylayout file, but you can always use PCKeyboardHack.
I really wish I could take part in all this keyboard fun. Unfortunately, there's a 20 degree upward curve in the middle of my right forearm (due to an old injury). This limits my options to the Kinesis Freestyle [1] and maybe the Goldtouch. The Freestyle is okay, but I miss the switches of more substantial keyboards.
Can anyone recommend a more hacker-friendly split-in-two keyboard along the lines of those discussed in the article?
This is an excellent compilation of info and tricks and I look forward to using some of it myself on the software side.
On the hardware side, I don't think I've ever seen anything surpassing http://mykeyboard.co.uk/microswitch/ in sheer dedication to the goal of a truly efficient and comfortable/safe keyboard. I wish I had the space, money and time to attempt something similar (also not a laptop as a primary machine, but that's another matter entirely)
Edit:
Looking at it again, some of the programming related symbol keys are in slightly strange positions and would require some relearning. Plus the right shift is tiny.
Does anyone know how to setup a keyboard to pass absolutely all keys to a VM?
I like OSX for power management and driver compatability, but I sorely miss having a tiling window manager. I would like total pass through of keystrokes to a VM. Dropping out of the VM could be accomplished by running a program on the host machine via ssh from the VM.
Yes, you can do it with AutoHotKey. I tried it a few years ago but didn't really get on with it. I think it might have caused problems with some keyboard shortcuts I use - a lot of my emacs shortcuts are designed for activation with one hand pressing modifier keys and the letter key.
Anyway, just use the < and > modifiers to indicate left or right Shift specifically. For example, assuming QWERTY:
No, sorry - the bit from the article that was in my mind as I replied was forcing one to use the opposite Shift, because I'd tried that myself. I didn't think about the use of Shift as a key on its own (I really wouldn't get on with that myself as I tap the meta keys a lot while I'm thinking).
I wore one out a year ago. It was going through an AT to PS/2 adapter then a PS/2 to USB adapter. The "S" key started only working on about 9/10 keystrokes :(
So X will translate keycodes from the keyboard press/release events that contain keysyms + modifiers + more (look up X keypress event) that get sent to your terminal emulator. Your terminal emulator will translate those into ascii chars or sequences in order to send them to your editor. (Note that, without translating some of these X keyboard events into escape sequences, you can't express the full range of possible keys and chords in ASCII.)
You can define custom translations keysym for some terminal emulators. I've done this in urxvt in order to free up C-j and C-S-[letter] combinations for my own use.
urxvt will allow you to translate the Shift_L keycode into "(" or "()" or "i_love_hacker_news_<3". And it still does it's job as a modifier too. The only problem is that "i_love_hacker_news<3" will be output as soon as the press event is received, so you'll output "(" even when you press shift as part of a chord.
You can write perl scripts in urxvt that can capture X keyboard events, and maybe your script could only output "(" if it detects that no intermediate X event was detected between the press and the release of "(".
I'm not totally sure that you get THAT much info from urxvt, but it's the best approach that I know of. As an alternative, maybe you could write a program to intercept X events before they reach the terminal (and/or any other program).
That's about as far as I care to go right now.
Let me know if you get something working, I'd be interested in using it too.
You mean pressing shift to get parens? I doubt it's possible withing Vim. Certainly not within a terminal Vim (the terminal emulator almost certainly wouldn't pass a bare shift through to Vim at all). I'm pretty sure you have to do it at the OS level like this.
I played around with implementing something like this on linux (with xmodmap specifically) and didn't find anything conditional. I did figure out how to make holding right shift and tapping left produce a left parenthesis, and vice versa produce a right.
This is from memory, so bear with me if its not perfect, but I setup xmodmap with
Xmodmap allows you to define multiple symbols for a key. The first symbol is what you get with no modifiers; the second is with shift; the third is with Mode_switch (or AltGr, depending) and the fourth is with Shift and AltGr. There's sometimes although a 5-8, but that varies by platform and I haven't done enough experiments to really nail down what those are for linux these days, OR if those are tied to mod1/mod2/etc. instead of shift/altgr/mode_switch or specific modifiers like that.
Anyway, all the keysyms always defined the first three anyway (no modifiers, shift, and Mode_switch) and some defined the fourth. I don't have or use a Mode_switch key (yet) but I may try that out as a 'Greek' key or such, but since 90% of the time I'm programming I'm not sure if I'd ever use it.
My lines above defines parenleft as the symbol to send if key 50 (the left shift key) is pressed while the shift modifier is active. So, I can use the right shift to turn on the shift modifier, and then left shift turns into a left parenthesis key. Similarily, I can use the left shift key to turn the right shift into a right parenthesis.
So, to type a pair of parenthesis back to back "()" I press right shift, press left shift, release right shift, and tap right shift. It's certainly more awkward than what Steve was able to setup, but hey, its where I've got so far.
On the topic of keyboard ergonomics, I also believe that all keyboards should be tenkeyless. It's another case of prioritizing an infrequent action (typing on the numpad) over a frequent action (moving the right hand to the mouse). Users who need a numpad can always get a standalone usb unit.
[1] http://reviews.cnet.com/keyboards/microsoft-sculpt-comfort-k...