Hacker News new | comments | show | ask | jobs | submit login
A Real Keyboard for Programmers? (naildrivin5.com)
35 points by kasa 1543 days ago | hide | past | web | 80 comments | favorite

This is the real, modular keyboard for programmers/hackers:


(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)

Looks cool, would consider for under $200.

I have ErgoDox too. Nice keyboard stand.

It sounds like most people didn't follow the link and read about the actual keyboard. Things that directly contradict complaints in this article:

- 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.

> And what is that “Print Screen” key doing there?!

> 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 was a heavy user of all the dimension keys: u|l|d|r arrows (with ctrl/shift to step) , page u|d, home(aka start) end. Never touched the mouse. Too far, not precise enough.

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.

I don't use print screen much but I page the shit out things.

print screen takes a screenshot (windows and linux, + ALT for current window only). I have met lots of programmers who didn't know it, and bless me when they discover it.

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.

Print Screen is the Magic SysReq Key [1] on keyboards without an actual SysReq key, for *nix systems at least. Maybe the author has only ever programmed on Windows machines, but he's not describing any kind of Coder's keyboard I'd ever use.

[1]: https://en.wikipedia.org/wiki/Reisub

All the time, along with the arrow keys and numeric keypad. i hurt my shoulder once and had to type one-handed for a week. During that week the much hated caps lock key was a savior.

I use them everyday, to suggest the apple laptop keyboard is superior is blasphemous. It's an abomination before god.

Aaaaand it's dead.

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.

It sounds like the author is describing the Happy Hacking keyboard:


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 have an HHK Pro 2. The Topre keys are great, but they are considerably different than the Cherry MX keys that most mechanical keyboards use (and they're more expensive). The layout is absolutely fantastic. It led me to remap the control key to the capslock key on all of my laptops as well. If anyone is looking to buy an HHK, I would highly recommend buying it from amazon jp to avoid the high markup. Even if you use a third party shipper (like Tenso), you'll still save over the prices that elitekeyboards charges.

Microsoft has a new ergonomic keyboard coming out, with chiclet keys like the Apple Keyboards / Laptops: http://xahlee.info/kbd/Microsoft_sculpt_ergonomic_keyboard.h...

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.

> 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.

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.

> ergonomic keyboard ... with chiclet keys

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.

What's wrong with caps lock? Only when using an editor is there an easy shortcut to capitalise multiple characters at a time.

Typing a word in caps using the shift keys is uncomfortable due to alternating which hand presses shift.

I thought the same thing. I do wish it was moved though. I probably hit it on accident a few times a week when I was trying to get Tab or Shift.

I've got mine mapped to f6 right now. My capslock is an extra ctrl button, but I might make it esc pretty soon.

As someone who uses left-shift nigh exclusively, does this mean you use different shifts for different letters?

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. ;)

Yeah, I type 'properly' with every key belonging to a specific finger. I can only press a few keys belonging to my left index and middle finger while pressing shift, the others require an awkward hand position.

Best thing about the caps lock key is that I can remap it to control. Even when my caps lock key isn't remapped I'll hold down the shift or use my editor.

It is uncomfortable to hold the shift key down for long words, but it is so rare that I don't mind.

I use caps lock quite often, e.g. for constant variables or acronyms. Then again, I have to remember to turn it off or else my next few key strokes will make vim go crazy.

Things I learned from reading this blog post: There are people who use their thumbs to press Alt (or cmd on a mac). That would never have occurred to me (either to do, or that anybody had ever done so).

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).

I use my thumb to press alt, ctrl, and shift!

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!

:O What finger do you use instead? The pinky?

All the keys in the lower left corner get the pinky, unless the pinky is already holding the shift or ctrl (in which case, hey! I hit it with my thumb! Who knew...) The ones in the lower right can go their entire lives unpressed.

Fwiw I use the Windows key all the time, on Linux no less. It's either bound to a launcher (Synapse, Gnome-Do), or used in hotkey sequences like Linux control commands ([Win]-[l] = screen lock, etc).

> * There are people who use their thumbs to press Alt (or cmd on a mac). That would never have occurred to me (either to do, or that anybody had ever done so).*

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 agree with what I take as the underlying premise of this blog entry: if you're going to call something a "keyboard for programmers" it would be nice if you made concerted effort to improve matters for programmers, moreso than just tactile ergonomics.

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. :)

I stopped reading after the Page Up comment. Keyboard preferences are obviously subjective and the author of the post feels very strongly in a way that I don't agree with.

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.

Mac has remapped CMD+[arrow] to Home, End, PgUp, PgDn. I think it's much easier that way than to have them way off to the side.

I don't agree. I use a full size wired Apple keyboard now and use the PageUp/PageDown buttons. I prefer it that way. Also Home/End scroll to the top and bottom of the entire document vs the beginning and end of a line and I've had to fix that in software settings.

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.

"Very much agree that Caps Lock should be diminished in importance.... Many of my colleagues and I simply disable the key outright."

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.

[ESC] is my personal preference. I will never look back, and I never have once needed the capslock key since I switched it out.

Best of both worlds: CTRL when used as modifier, ESC when pressed alone.

- On OSX: https://pqrs.org/macosx/keyremap4macbook/

- On Linux: https://github.com/alols/xcape

That's a good point. Caps lock is where I'd like to have Control. SOLD!

I think there should be a 100% remappable keyboard. I never use any of the legacy key functions, but the switches are precious on a fixed piece of hardware. It is maddening to me that there are dead keys on my keyboards; having a completely soft layout would allow me to customize things exactly the way I want.

"I think there should be a 100% remappable keyboard."

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.

On windows I use Autohotkey [1] to remap keys (capslock to backspace, qwerty to colemak, etc...), no registry hacks required. You just have to remember to run the script on startup.

[1]: http://www.autohotkey.com/

Some time ago I used it to quickly change my layout from qwerty to colemak, and often it couldn't keep up with my speed (and I'm an average typist: ca. 65 WPM), which resulted in wrong order of characters. I tried both interpreted and compiled version - no difference. It wasn't a beefy machine, though, so with your i5s and 8 gigs it may work well ;-).

On Windows, MSKLC is what you should use: http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx

I'd like that too. Wasn't that the premise of that ultra expensive keyboard with individual OLED displays for each key [1]? I've never seen one first hand because I live in the world of mere mortals.

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.

[1] http://en.wikipedia.org/wiki/Optimus_Maximus_keyboard

The Kinesis Advantage line is fully remappable, including macros. It's also premium hardware (nice switches) and a supremely ergo layout, with most keys within reach of the home row, and the thumb region divided up into multiple frequently-used (remappable) keys:


Don't be cowed by the esoteric appearance; it's really just a tweak on the standard layout.

Yeah, I've been using a Kinesis for more than a decade. I've never gotten around to doing the full remap, however.

Kinesis is so worth the money. I have been using mine for about 4-5 years. swapped my esc and capslock ages ago.

There are class of keyboard like [1]. They are used for specific operator cases but I find fascinating the idea of implementing your own layout from scratch. Usually they have more keys then standard keyboard has. So you could arrange Greek letters in a separate raw; or split alphanumerics to the edges and place arrows in the center; or have to enter keys for both hands; etc

[1] http://www.cherrycorp.com/english/keyboards/POS/SPOS_Rows_Co...

We're all brown moties [1] Keyboards are fundamentally a personal preference, and perhaps like instruments are a function of both the 'action' (key movement) and the layout.

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.

Niven & Pournelle.

My impression is that PS/2 is desirable mostly for NKRO

Indeed! You're right. I wasn't quite remembering why gamers preferred PS/2 and took a guess it had something to do with speed. But you're right, it's because PS/2 has a higher capacity for simultaneously reporting multiple keys being held down concurrently.


I don't think USB precludes NKRO, see this:


It does. USB can't report enough keys being pressed at the same time. So keyboards that support n-key rollover internally can only support 6 key when using USB: http://www.daskeyboard.com/product/model-s-ultimate/

The standard keyboard HID descriptor has room for only 6 keys (plus the 8 modifiers). In principle the keyboard can just define a larger descriptor, but not all hosts allow this. Some 'NKRO' keyboards pretend to be a hub with multiple keyboards attached, but at least some of these don't handle modifiers properly for hosts that don't merge all keyboard input into one.

http://xahlee.info/kbd/Corsair_keyboards.html USB 20kro So it can be done.

A real keyboard for programmers is a keyboard that is programmable.

ha! no. seriously, you can change any key you want on the keyboard to suit your preference coding/language style

> It bothers me that / and \ are not side-by-side on most/all keyboards

I agree with you regarding the brackets - < >, ( ), etc. ... but / and \ have nothing to do with each other.

Point of order! \ was invented specifically to pair with /, to write the ∧ and ∨ operators as /\ and \/.

[1] http://www.bobbemer.com/BACSLASH.HTM

True. Still, I find it odd that they are not beside one another. Honestly, I don't really know why we have a \ key at all (and I'm a Windows user!). But there it is.

I've blogged a bit about what I want in a keyboard [0]. What I'm currently missing is chorded keys for symbols. (ie having them on the home row with a modifier key). I think that would actually help programmers. The problem is is that my Python specific symbols layer is going go be less than optimal for a C/Java/... programmer.


Can imagine future posts: tea better than coffee, blue better than red etc. That Apple keyboard is rubbish for devs. Arrow keys are perfect as is. Pg Up/Down are useful etc.

For a self-built, completely programmable keyboard you may feast your eyes on the GH60: http://geekhack.org/index.php?topic=41464. It's small, without function keys or numpad, and it comes with different layouts. You're expected to source your own switches and a case.

Currently the group buy doesn't accept any new orders, but if you're interested some boards should be sold peer-to-peer.

"Stupid keys" PgUp/PgDn??! I wonder how people navigate and read through their source code if not using PageUp/Down. Scrolling with mouse? When one key press can bring you exactly one page forward or backwards. Irreplacable keys for me. I can't code properly on a keyboard which doesn't have these keys under my third and middle finger (making short jumps from the set of 4 arrow keys).

Ctrl-D/U in Vim.

The site was down for me. Here is the google cache mirror:


Am I the only one who still uses Shift-Delete and Shift-Insert to cut and paste? I swear when I tell my fellow programmers, they look at me as if I'm from another planet.

I honestly had no idea that shift-delete was cut. Either way, "delete" is the key I usually rage about when I'm using a cramped laptop keyboard and can't find it. No, backspace is not an adequate substitute.

It's definitely a lot easier to use those when I mouse left-handed (as I sometimes do due to pain in my right shoulder).

Any reviews from the actual users who used this CODE keyboard. In comparision to other high end 150$ keyboards, would you recommend this one?

It is just a normal mechanical keyboard. any one who never tried a mechanical keyboard would love it.

As opposed to..?

Are you implying that someone who has wouldn't like it?

na. i personally haven't tried the build quality of WASD, but I heard it is really solid.

should be a pretty good keyboard for 150. there are others out there for the same price if it is sold out.

It is. :P

There are a couple others mentioned in the discussion, but which would you suggest?

It just launched, does anyone even have one yet?

Probably soon - I ordered one on Tuesday and it shipped yesterday. I guess they're selling quickly, I saw a tweet from Jeff Atwood last night saying anyone that wants one should order soon else they'll have to wait for the next batch.

I actually want a KBtalking pro keyboard. The only feature missing for me is the backlit keys.

most i agree, except "Stupid keys like Page Up, Scroll Lock, and Insert are gone. They have no place in modern computing."

Having the default 2 x 3 insert home pgup; delete end pgdown is my #1 requirement to any keyboard.

as for snake case's underscore, and css' dash, dvorak layout has that in a very nice place.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact