Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I find it extremely frustation to have to reach out for the shift key about 5000 times a day - I'm a programmer. There are hundreds of different types of hammers, but only a few keyboard designs.

And.. more interestingly - what would a programmer specific keyboard look like ?

share|improve this question
17  
If you think this is bad - try German or worse French keyboard. You'll be traumatized. – user8685 Dec 17 '10 at 10:41
18  
If it's only shift that's bothering you, maybe you could get a foot pedal for it?? – Alison Dec 17 '10 at 12:37
3  
so what do you propose yourself instead of pressing shift? – stijn Dec 17 '10 at 12:52
show 19 more comments

closed as not constructive by Yannis Rizos Mar 21 '12 at 3:52

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

24 Answers

I can tell you my story of when I tried Svorak (a Swedish version of Dvorak).

I'd heard that Dvorak is suppose to improve your typing accuracy and speed, so I decided to try it out. It took me a few months to learn and reach the same speed as I had with Qwerty. I must say that while I didn't necessarily type faster, I did type fewer mistakes. And the typing just felt more natural as I used both hands equally as much (try typing "stewardess" on Qwerty).

However, after a year I decided to swith back to Qwerty? Why?

  1. Whenever I had to switch and sit by someone else's computer, I would be completely handicapped as it wasn't Dvorak anymore. And Dvorak had replaced Svorak in my muscle memory so I just couldn't type it anymore. I had to resort to hunt-and-peck.

  2. No shortkeys any longer made sense. Just a simple copy-and-paste was difficult to do since the keys C and V don't lie on locations which make sense for such a combination.

So while the experience was interesting, I don't think using job-specific keyboards is a good idea, for the same reason as why I don't use Svorak. The keyboard layout itself was excellent, and it would probably make perfect sense if you were that lone guy in Office Space who was relocated to the basement. But when you're the only one who uses it and you have to interact with others and sometimes sit by their computers, you're screwed.

share|improve this answer
5  
Point 2 is very interesting! – Alison Dec 17 '10 at 12:31
3  
Stewardess: nice. Try "Jimmy Carter" on Qwerty. – Dan Ray Dec 17 '10 at 13:06
2  
I'm a Dvorak user and while it's great for prose, it's OK for programming. (Qwerty is OK, too.) Try tying ls, rm, and mv in Dvorak. I'd like to learn Colemak, which retains the positions of Z, X, C, and V and some of the symbols. Personally, I found switching between Dvorak and Qwerty a non-issue. I subconsciously associate a computer with a keyboard layout. When I'm at my own computers, I type Dvorak without thinking about it. When I'm using someone else's computer or a non-Dovark computer of mine, I mentally go into Qwerty mode. – Barry Brown Dec 17 '10 at 18:07
show 3 more comments

Because you will get used to them and do not want to work with a normal keyboard anymore? It's like customizing your development environment.... at some point you will get really uncomfortable when you don't have you ideally setup totally customized setup. Working on a different setup will soon lead to frustration and make you loose motivation really quick.

share|improve this answer
15  
I don't think this is a good reason. Someone could say "so let's not buy a good computer at home, because we will get used to it, and will not want to work with a normal one", what's not true. For instance, I have a huge monitor at my home's computer, and I still have no problem to work with the 17" monitor of my work. – Tom Brito Dec 17 '10 at 11:28
show 5 more comments

Touch typist tip: Remap caps lock to be an additional control key (like the old sgi/solaris/etc keyboards).

It keeps you closer to the home row and goes great with vim.

When I think "programmer specific keyboard" I immediately think kinesis ergo. Like vim, the initial (time) investment has more than payed itself off.

http://www.kinesis-ergo.com/contoured.htm

share|improve this answer
show 3 more comments

Truth be told, there have been some programmer specific keyboards over the years. The examples that spring to mind right away are the Symbolics keyboard for Lisp as well as the keyboards that were released for working with APL. I'm sure there are some more examples out there, but generally the idea is that they were fairly specific to a given machine where as most developers these days work on generalist computers and have a fairly generic keyboard.


alt text

Symbolics keyboard for Lisp

share|improve this answer
2  
All home desktop computers should be shipped out with one of these with one minor change... So that NEXT TIME SOMEONE WANTS TO TYPE IN ALL CAPS they just end up rebooting their computer =] – Workman Dec 17 '10 at 19:24
2  
What the hell are those geometric symbols on top used for?? =D – gablin Dec 17 '10 at 21:58
show 1 more comment

why not remap your keyboard? I have a Das Keyboard so I can remap without it getting confusing (and I have done, but only on a couple of outlying symbol keys).

However, it's the same reason that everyone in the British Army, regardless of where they are going, or what rank they are, gets given the same pair of boots. Sure, you can buy some Gucchi pair to make your life easier, but when you've been in the jungle 6 months and they para-drop you a new pair, they're going to be standard issue, so you'd better get used to them.

You can't every guarantee you're always going to have your favourite keyboard or mapping to hand when you need to work, so sticking to the standard layout will mean you're always on top-form, wherever you are.

share|improve this answer
show 2 more comments

There are a few programmer layouts out there. The best one I found is Programmer Dvorak. It's a Dvorak layout that addresses the issues you mention: shift isn't needed to type most symbols. The most common symbols used in programming (brackets, plus and equals sign, asterisk) are moved to the number row. Numbers require shift (and are alternated - odd numbers on the left half, even numbers on the right). I thought this was crazy at first, but don't mind it now.

It also has great multilingual support, I can type in English, Spanish and Catalan really easily with this one layout. There is a deadkey which combines the two following key presses. I.e deadkey then ' then e gives é.

The reason I switched was that I started getting sore wrists from typing and wanted to try Dvorak out after having read the layout keeps most-common letters close together. I then found this programmer version somewhere (I think it was SO) and decided to give it a go. It took me about a month to learn the Dvorak layout, and after 3 months I was comfortable with the strange number row layout (edit: by comfortable I mean I can touch-type numbers now - I never managed to do that with Qwerty).

After having used it for a year, I love it. Every time I use Qwerty now I'm amazed by how uncomfortable it is (especially the European Spanish layout).

As for the issues some people mention, I haven't had much trouble using other people's computers - I can still type Qwerty quite well. And when other people need to use my computer I just press left ctrl + shift and the layout is switched to Qwerty. One annoyance is keyboard shortcuts: I've got used to them, but it's a pain needing two hands for ctrl+c/ctrl+v.

While I was learning the layout I realised I was going to need keycaps or I'd give up. I took the layout from Programmer Dvorak's homepage, inverted the colours, added the Qwerty for each key (for when other people needed to use the computer), printed it on label paper and laminated it. Here is a crappy photo of the result on my old laptop:

Custom ghetto key caps

share|improve this answer

Such keyboard has already been made, see Optimus Maximus.

All keys have small LED displays and are customizable in both appearance and function.

alt text

Price? A real bargain at $2,400.

share|improve this answer
show 1 more comment

It would look like this!

alt text

share|improve this answer
5  
Ah the memories! But not even 1k of them! – Dan Ray Dec 17 '10 at 13:09
3  
Sinclair ZX-81 I believe - I think they managed to strip down the BASIC interpreter by generating the keyword tokens directly from the keyboard. That was back in the days when I was moving people around Europe in a 16 tonne truck. I moved one of the ZX-81 designers, Richard Altwasser to Belgium (he had gone on to design the short-lived Jupiter CanTab Forth computer), and I remember him being very annoyed when I told him I was thinking of using a ZX-81 as an add-on processor for my BBC Microcomputer! – geekbrit Dec 17 '10 at 14:27
show 2 more comments

Your question could be rephrased, "Why don't we use keyboards that are extraordinarily well designed for programming?" But that makes me ask, "For what task are current keyboards well designed?" The answer is none. Certainly not touch typing.

End users are oblivious to the issue as are many technical users. The small fraction who notice see it as a minor problem with no clean solutions. Combine them with the small fraction who prize standardization as the primary design concern and the set of willing voices on the topic amounts to a chorus of improvement-nay-sayers. Not only do they want the status quo for themselves, they would like you to stick with it too.

At the top, < 2% use alternate keyboard layouts. These are the people who see a problem and try to choose the best available solution even when it means lots of hard work. Ironically, when external forces banish some of these people back to the land of querty, they become the most ardent standardization evangelists.

But DVORAK offers no help for the left hand key staggering that goes against your hand. And COLEMAK is powerless to save you from the home key bumps that brute force your finger tips off center so that your little finger has one-column reaches on the left and three-column reaches on the right.

The same programmers who understand the rationale for normalization in a database and the DRY principle in software mostly see nothing wrong with a keyboard where every modifier key is duplicated.

And then there is the < 1% who actually go out and try to improve the situation. Kinesis Contoured, Data Hand, TypeMatrix, a dozen others. All of which are improvement in some regard, but all of which have other design problems that make them unworthy of unflinching advocacy.

Bottom line, the vast majority of us care nothing for keyboard innovation so if you want something better you'll have to make it yourself, but don't expect kudos.

share|improve this answer
1  
the same programmer who truly understand normalization also knows when to denormalize when the need for performance outweighs the convenience of normalized data. Shift keys, in particular, are duplicated on both sides since touch typists crosses their types when typing capitals. "For what task are current keyboards well designed?" QWERTY was actually designed to slow typing down since old typewriters jams a lot. – Lie Ryan Dec 17 '10 at 16:35
show 1 more comment

Because you'd get abominations like this: alt text
Note for the perplexed: this is an APL keyboard.

share|improve this answer
1  
@Sparr, I picked on APL because that was a language that had to use a special keyboard (or at least stickers for the chord combinations). There aren't enough letters in the roman and greek alphabets for the language, so there are also symbols and overstrikes (for the perplexed, think of a key combination that uses backspace to pile symbols on symbols). Imagine the hate if you had to have a special keyboard for each language. You'd have (good, in my opinion) days where you can't find your PERL keyboard so you can't write any PERL code. Your boss might hate it. – Tangurena Dec 18 '10 at 7:21
show 1 more comment

Maybe we will start seeing job-specific keyboards being heavily used in the future with the rise of virtual keyboards - e.g. iPad.

share|improve this answer
show 1 more comment

Shift and Alt-Gr cause me the most grief (on Swedish keyboards { and } are Alt-Gr-7 and Alt-Gr-0). Perhaps some kind of pedal contraption would help?

http://www.xkeys.com/xkeys/xkfoot.php

share|improve this answer
3  
In Windows, you can simulate ALT-GR by pressing ALT+CTRL. That way you can type { on a Swedish keyboard without having to resort to moving your right thumb in awkward position. Has really helped me when I want to type {, [, ], } or \. – gablin Dec 17 '10 at 11:16
1  
On a tech support call: Now press CTRL-LeftFoot-DELETE – Workman Dec 17 '10 at 19:30
show 3 more comments

A programmer's keyboard may feature a special-char-lock, maybe? It would work like a caps lock, but only shift the row of numbers.

Once the constants are set, I don't write many numbers... I'm also tired of shifting for parenthesis.

share|improve this answer

Check out a Kinesis keyboard: http://www.kinesis-ergo.com/

You can get a foot switch for their keyboards which can be customized to be Shift, Enter, etc.

Here is a link to one of their foot switches: http://www.kinesis-ergo.com/fs-savant-elite.htm

share|improve this answer

I have made a keyboard layout for windows geared toward c#, but it may apply to other languages, Microsoft has a nice little tool you can download and import your current keyboard and then modify. the changes I've made are:

switch {} for [] so the shift relates to the [] and the standards keys are {}

switch the 90 for (), the amount of times I type a 9 or a 0 is not enough to not justify the switch.

the Microsoft app I used generates a standalone installer. once installed, you have to play around with the "languages and regions" in the control panel to add the new keyboard layout, then you use the language bar to switch between the standard layout and the custom one. in the layout's properties, you can change it's icon, so you can tell which layout you're working with. it's one click to switch back and forth!

here's the link if anyone is interested... http://dl.dropbox.com/u/84233/c%23layout.zip

share|improve this answer

Having keyboard for each action will probably increase dramatically the time it will take you to search for each key. By the way, you may want to post your question here - http://ui.stackexchange.com/

share|improve this answer
2  
He's not talking about a keyboard for each action. He's talking about a keyboard for our everyday actions. I pass about 6hs of my day programming, I think a keyboard for this specific task is something really useful for many of us. – Tom Brito Dec 17 '10 at 11:31

A god IDE like IntellJ will let you map any key to any function or any other key for that matter.

share|improve this answer

I've always been interested in attaching a second keyboard that is mapped for specific uses. For if my normal keyboard doesnt have any extra keys for fuctions or I want to assign and label hotkeys for when I don't want to memorize the shortcuts. Or even a keyboard sized touchscreen that can be used opposed to hunting for wherever I left the mouse (for those buttons you have to press when you dont remember the keyboard shortcut.).

share|improve this answer

Say you have 100 different hammers. At first sight they are indistinguishable but they do a very different job. You need almost all of them frequently.

How will your organize them? Will you use the same organisation technique everyone else use or will you shuffle them arround?

share|improve this answer

The control key in emacs was a mountain to get over. So many nights with a sore pinky, but so, so worth it!

share|improve this answer
show 1 more comment

this is a bit unusual (to be answering my own question), but its probably the best way to gauge the reaction to this idea.

Actually Tom's response got me thinking that a combination of the Das Keyboard, with the facility to download my keyboard settings from the net would probably be the best way. similar to the way my customized gmail inbox always goes where ever i do, so should my keyboard layout and mappings.

Das keyboard is usually completely blank with no key displays. The displays themselves could also be downloaded from the cloud.

We could have the best of both worlds.

And this probably has a larger applicability for non-english keyboards layouts.

share|improve this answer

Use something like Logitech G-19. Extra, programmable/macro'able keys. Similar to the Optimus Maximus listed above, but $200 instead of $2400. (And if you can find a G-15 with 18 keys... discontinued and rare now tho)

alt text G19 - $200 alt text G110 - $100 alt text G13

Multiple buttons on the left are programmable. Hell... you can map any key you want to something. You can setup multiple setups, automatically activate based on active program. These key's activate when WoW.exe is open... those when VS2010 is open... etc.

G13 is a programmable setup as well that could be used to augment the keyboard with shorcuts and macros just like the extra keys on the keyboards.

Other companies make similar offerings if you don't like Logitech.

share|improve this answer

One example of a job specific keyboard (not programming) is the Stenotype. This is used where a high WPM is critical, like court transcriptions for instance. It works like playing chords on a piano, so it's probably worse for shift key haters.

http://en.wikipedia.org/wiki/Stenotype

share|improve this answer

I wish someone would make an ergonomic keyboard with Cr48's layout. I love the large control and alt.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.