A Real Keyboard for Programmers?
naildrivin5.com
naildrivin5.com
However, I have mixed feelings with several of the author's specific points.
1. In general, I think a keyboard should retain all legacy keys, including Scroll Lock and Printscreen because they have acquired specific meaning through their many years. If a new keyboard were paired with a new operating system, then I'd be comfortable--even happy--with disposing of legacy. As it is though, Printscreen is the easiest way to grab a screen-capture or window-capture.
2. The CODE keyboard may be marketed as designed for programmers, but it seems to also carry over a certain "gamer programmer" target. Hence, the PS/2 adapter (I believe some harder-core gamers profess to PS/2 being faster).
3. Space is indeed very important. I am not sure if the author is just pointing that out matter-of-factly or intends it as criticism. I assume the prior.
4. Very much agree that Caps Lock should be diminished in importance. It should be located on some fringe alongside Scroll Lock. Many of my colleagues and I simply disable the key outright.
5. Also agree that backslash should be diminished in importance. However, I personally would like a "programmers keyboard" that made all variations of brackets < > ( ) [ ] { } / \ available (a) without modifier keys of any sort and (b) in side-by-side pairings. It bothers me that / and \ are not side-by-side on most/all keyboards.
6. Strongly disagree that Page Up (and presumably Page Down, although it's not cited by name) is a dumb key. I press Page Up, Page Down, Home, and End hundreds of times per day.
7. I don't actually like that function keys are often trimmed to half-height even on desktop keyboards. That is fine for a laptop. But on my desktop, I have the room for an additional row of full-height keys, thank you. In general, desktop keyboards that are built to laptop aesthetics are dubious to me.
8. Strongly disagree that arrow keys lack importance. I smell a vimmer. Oh, sure enough, he mentions the ADM3A. Please, I beg of you, vimmers: don't pretend to speak for all programmers.
9. Strongly agree with the premise that a programmer's keyboard should avoid use of modifier keys for symbols. I have often ranted that programming language designers should avoid arrow operators -> and => in their syntax because of the shift transition required to type an arrow on most keyboards.
I like the premise of this blog entry a great deal! Please, let's see some actual innovation in programmer's keyboards. But apparently, we should have one style for vimmers and one for other programmers. :)
Hard to conceive of spending that much and having to continue typing after all. If I had that kind of money, I'd have a keyboard chauffeur.
http://www.kinesis-ergo.com/advantage.htm
Don't be cowed by the esoteric appearance; it's really just a tweak on the standard layout.
You have one. It's the one you typed that post on. A keyboard just emits numbers, it's up to the computer OS to determine what to do with it.
Exactly how to customize your keyboard is OS-specific, but it can be done in all the major ones, as far as I know. (Can't commit to Windows 8. Windows 7 did require some unpleasant registry hacking for changing caps lock.)
If you want control over what your keyboard does, take it.
Incidentally, the big key to trying things out is that if you remap a new function onto Caps Lock and you want to see if it works for you, be sure to demap the other copy of the key. If you make Caps Lock a new Backspace, you'll never use it. If you make Caps Lock a new Backspace, and then demap the current one, you'll literally be adjusted in a matter of minutes, and if you decide you don't like it, returning is also a matter of minutes.
Once you work out what you need to do for your OS, keyboard layout experimentation is far more rapid than people realize, I think.
[1] http://www.cherrycorp.com/english/keyboards/POS/SPOS_Rows_Co...
I used the wireless Apple keyboard for a while but I missed Home/End/Page Up/Page Down. Also had a lot of trouble swapping it back and forth between my OSX and Windows machines.
At least the CODE keyboard will add more variety. At the end of the day that's what people really need.
That said, everyone has their preferences. I think someone else in the comments mentioned how it would be nice to have a fully 100% customizable keyboard. I agree with that idea.
ha! no. seriously, you can change any key you want on the keyboard to suit your preference coding/language style
I abhor the location of capslock/control because when I was first learning to program I only used terminals where control was the key where caps lock is. When I was forced to used keyboards that had control down at the lower left I went from using EMACS to using vi because of the annoyance.
That said, folks can adapt and much of what you do is muscle memory anyway. On your brackets idea I actually like that brackets are matched both unshifted and shifted on my keyboard. so {} and [] are both easy to type. Since I rarely type ctrl-] or ctrl-[ having those keys map to ( and ) might be useful but I don't look at my keyboard when I type so I really can't say.
For me it is all about reliably hitting the key I mean to hit. If I can do that I can adapt to most things.
[1] See "The Mote in God's Eye" by Pournelle.
Augh! Don't do that! Remap it to something useful! CTRL is popular, but I'm loving backspace, personally. It's a key that never comes up if you just count keys based on taking text file samples, but I for one like having it available where it does not rip my fingers off the home row. (Since I use Dvorak, the home row is actually meaningful to me, since it is useful, unlike the standard QWERTY homerow.) But I don't really care what you remap it to, just don't leave such valuable space sitting there!
Backspace (the original one) I remapped to switch active windows. I've really been eyeing that Tab key, too; it is not unused (many emacs programming modes use it as "reindent this line to the proper level"), but I've wondered if it couldn't be a bit more effective. Not sure what to reassign it to yet, though.
- On OSX: https://pqrs.org/macosx/keyremap4macbook/
- On Linux: https://github.com/alols/xcape
I agree with you regarding the brackets - < >, ( ), etc. ... but / and \ have nothing to do with each other.
http://acidfire.ca/keyboard/BDY14295.jpg
(It's a modular kit, the image above is just one of the configurations, the center part is an addon).
You can also have multiple layers, so you could create a dedicated programming layer. All firmware will be open source.
It's going to go up on kickstarter soon (when Canada launches in september).
More info here: http://geekhack.org/index.php?topic=44940.0
Some more images (the thread is pretty lengthy):
http://acidfire.ca/keyboard/BDY14209.jpg http://acidfire.ca/keyboard/BDY14230.jpg http://acidfire.ca/keyboard/BDY14300.jpg
Over the top: http://acidfire.ca/keyboard/BDY14284.jpg
Later on more modules will be sold, such as a trackball module that you could place in the center and so on.
There's also going to be a portable version:
http://acidfire.ca/keyboard/BDY14438.jpg http://acidfire.ca/keyboard/BDY14440.jpg (variation)
- There is a hardware switch to remap caps lock to CTRL - There is a hardware switch to remap scroll lock to windows lock (temporarily disable the windows key) - The weird context menu button can be hardware-remapped to a Fn key that turns the pageup/dn set of 6 keys into media keys (and Pause into what appears to be Mute)
Other neat things: - Hardware switches to swap between QWERTY, Dvorak, and Colemak, as well as to switch the alt/ctrl keys (supposedly useful when used on a mac?) - Backlit - 6-key rollover (n-key over PS/2)
Also: a PS/2 keyboard is required to get into BIOS on many (even modern) motherboards. USB usually doesn't register until too late. I'm not really sure why a PS/2 keyboard (or adapter, at least) isn't considered a hard requirement for a hacker's keyboard.
The bigger issue is that there's a steep learning curve to moving any of they keys that someone uses. You can't just arbitrarily move things and assume that it'll work for more than a couple dozen people.
> Stupid keys like Page Up, Scroll Lock, and Insert are gone.
Surely I'm not the only person regularly using the "page" and "print screen" buttons?
I am on the edge of getting RSA and have replaced all my keyboards with ergonomic ones. This CODE keyboard is of no use to me.
One of the first thing you read while learning emacs/vim starts is leaving the arrows. The idea is that static~ wrists => more speed and less fatigue.[1] Then you'll wanna stop using anything more than 2 steps from the home row, meaning the other keys are also about to go away in your mind. I understand that this would cause a complete reshake of OS keyboard interfaces to adopt home-focused keybindings, but they aren't really necessary.
[1] ironically this was the reason I dropped using the mouse for anything else than analogical input (say drawing) in the first place.
The only features I want in a "programming" keyboard that make it different from a normal, vanilla, cheap commodity keyboard:
1) An underscore key in between the space bar and right "ALT".
2) Add the numbers A through F above the numpad.
3) Move the caps-lock key the heck away from its current prime real-estate above the shift-key.
If you wanted to be really fancy, a built-in macro recording/playback facility could be handy if I'm working with something exceptionally primitive and need to automate something.
http://elitekeyboards.com/products.php?pid=pdkb400b
Control where the caps lock key is, escape moved down, and elimination of all unnecessary (and some debatably necessary) keys. It actually looks very close in layout to the diagram in the article of the keyboard that vi was developed on.
I think I'm going to order one of these once they come out. It looks gorgeous, and I'm coding so much these days, I think it would be wise to buy one of these.
It also has a detachable number block, which I find great. I need these for Blender 3D work, but apart from that never use them. So I can just stow them away.
It also seems to have two space keys. I wonder if it is possible to detect which one is the left or right one. Or remap them. Then I could remap one of them as ESC for vim, for example. That'd be rad.
The detachable number block is amazing for ergonomics, it moves your mouse closer to your keyboard, reducing how far out your arm stretches.
The keyboard itself is chiclet, which I disprove of. :( I love my key presses to be deep and satisfying!
> It also seems to have two space keys. I wonder if it is possible to detect which one is the left or right one. Or remap them. Then I could remap one of them as ESC for vim, for example. That'd be rad.
I beta tested the keyboard (woot! I got in because a designer on it heard me complaining about keyboards to a friend!), and funny enough internally the keyboard does know that there is a difference, and from what I understand talking to someone on the team, they originally allowed for some limited remapping abilities of it. From what I gathered the feature confused people and got cut at least in the version of firmware I was handed for it. I am not sure what the situations will be like on release of course!
As far as the computer is concerned though, it isn't like with shift where keymaps defined for two of them (AFAIK at least), to make "space" work properly I imagine the keyboard has to report either key as the scancode for "space".
IIRC they allowed remapping one of the keys to delete or backspace or something like that, it was actually pretty useful for coding. ESC would also be nice. :)
> I think I'm going to order one of these once they come out. It looks gorgeous, and I'm coding so much these days, I think it would be wise to buy one of these.
It does look awesome, and it is amazingly comfortable.
Is this not a contradiction in terms? Those chiclet-style keyboards are awful. It's 2013, not 1983, and I'm not using a PCjr.
Typing a word in caps using the shift keys is uncomfortable due to alternating which hand presses shift.
In general, for typing in ALL CAPS for me, I just rest my little finger on the shift key and then type as normal (at normal speed), but I've never had proper typing form. ;)
It is uncomfortable to hold the shift key down for long words, but it is so rare that I don't mind.
I imagine that explains why keyboard manufacturers are so happy to put garbage keys I don't care about right next to my Shift, Ctrl and Alt keys. Personally, my ideal keyboard would have those expanded and the windows and fn keys removed off to the right side of the spacebar (or to the underside of the computer for the amount of use they actually get).
What finger do you use for your left alt key? The thumb has always felt very natural to me, since the use of any other finger would require a significantly longer (and more awkward) travel distance, given the other 4 fingers are somewhere near the home row.
I have a big thumb. :)
Also those "garbage keys" are very useful. The Menu key on the right side of your keyboard is, in Windows, a right click button. If I want to spell check something that is marked erroneous (such as "erroneous" when I tried to just spell it!) I can arrow over to it and use my Menu button to pop up a context menu that lets me select the correct word.
The Windows keys are also awesome, there are a ton of useful shortcuts bound to them already, and you can always feel free to bind even more! Especially if you are in unix land, where binding keys is easier than on Windows. On Windows, the Windows key is reserved for system commands such as Window management. Win-arrow for docking, win-d to minimize everything, etc. Heck Win-# switches between applications in the order they are open on my task bar!
Except for a few misbehaving apps (and the bloody web!), those extra keyboard keys mean the Windows UI is pretty much keyboard driven. I find it funny that people come over to Windows land from *nix and complain about how mouse driven things are! Of course you take take your favorite X windows manager and do all of the remapping yourself to get similar functionality. If you are using one of the keyboard based window managers already, think of it as a way to avoid the need for double bucky key-bindings.
The FN key on laptops does suck, but for a lot of smaller laptops with reduced keyboards, there is no other way to access a lot of functionality. Things like back-light controls, external monitor settings, and so forth, are all vital and accessed through fn key combinations. They aren't /often/ used, but they are used often enough!
0-http://hairysun.com/blog/2013/04/02/oh-ergonomic-keyboard/
Currently the group buy doesn't accept any new orders, but if you're interested some boards should be sold peer-to-peer.
http://webcache.googleusercontent.com/search?q=cache:http://...
Are you implying that someone who has wouldn't like it?
should be a pretty good keyboard for 150. there are others out there for the same price if it is sold out.
There are a couple others mentioned in the discussion, but which would you suggest?
Having the default 2 x 3 insert home pgup; delete end pgdown is my #1 requirement to any keyboard.