Everything I program these days is either C++ or Python and I'm sure that if a keyboard was designed by Python programmers it wouldn't be Qwerty. "Dvorak" they shout and I know that it works for some - but not for me. It screws me up too much whenever I use another computer.
However a few small tweaks have improved the comfort to Qwerty a lot for me. I have these mappings at Vim insert level (imap) so they only happen in one mode of one application, which works ok for me (though it is a pain when using the Python interactive console). They all consist of switching an unshifted keypress with a shifted one. (please note that I use a UK keyboard.)
- '-' ↔ '_' — __init__, function_names, need I say more? Underscore is a much more useful character to have unshifted.
- '9' ↔ '(' and '0' ↔ ')' — again, brackets are far more useful than the numbers, though I do type 0 far more often that I had realised.
- ';' ↔ ':' — when is semi-colon ever used in Python?
- The whole top row from '1' to '-' — '"', '&' and '*' esp useful to have to hand. Also shifting all the numbers doesn't mean that some digits are shifted and some aren't, as with my Python mappings.
- '`' ↔ '->' — not a key mapping as such since the result is more than one character long - but very useful.
For C++ I'm also looking at the '\'' and '#' keys and wondering if they could be put to better use.