5 ms·
A lot of keyboards optimize the wrong things at least as far as programming is concerned. All the optimizations seem to focus on letters but most of the time an
by shirro 6y ago
A lot of keyboards optimize the wrong things at least as far as programming is concerned. All the optimizations seem to focus on letters but most of the time an editor or shell can auto complete keywords or identifiers. A ridiculous number of symbols seem to be a very long way from the home keys on weak fingers with modifiers required to access them. If I had to write huge amounts of plain prose and had RSI I think I would just dictate it rather than try and optimize the alpha layout.
I have been tempted to get a large ortho (lots of modifiers suck) and setup a split qwerty with a heap of symbols in the center columns between them. I type '"[]{}().=<> all day so I don't get why they should be marginalized. It is like expecting an accountant to use the 1-0 row instead of a numpad.
- leotaku 6y agoMy country uses the QWERTZ layout which has dedicated keys for German umlauts. I mostly type in English however, so I've bound "([{" to "öäü". I now type umlauts using "AltGr+oau". It's definitely not a perfect solution, but it has worked well for me so far.
- vladvasiliu 6y agoAZERTY (French) here with numbers accessed through shift and brackets through AltGR. This is a horrendous layout. Bonus points for it being slightly different on Mac and PC. I have absolutely no idea how people can use this layout for programming without going crazy. I don't program full time, I mostly do sysadmin work, and even if I don't think that typing speed is a limiting factor for how much code I can write, I do find it extremely annoying to type certain characters which are used quite often. Regarding language I type equally English and French so I absolutely love the Mac OS international layout: QWERTY so everything is where you expect it but with ALT I can get pretty much every French character I want, easily. This could probably work for German, too: ALT U + U = Ü. ALT + S = ß. I'm not sure about other nordic languages, though. I love this so much that I configured my linux and windows pcs to use the same layout. Some characters take somewhat longer to type (three different key strokes for ù instead of one) but I guess that for someone not writing exclusively french prose the tradeoff is completely worth it.
- elric 6y agoI use AZERTY for programming. It's easy. ,();: can be accessed without any modifiers. []{} require a modifier. If you're typing numbers frequently and don't have a numpad, then it seems like that would be a worth while investment. I find the physical shape of the keyboard to be a much more important factor than the layout. Tilted splits are where it's at for me.
- mcv 6y agoDutch uses standard QWERTY, but does accents and tremas automatically if you type a letter that can have an accent/trema after you type a single or double quote, or a tilde. It's extremely annoying when programming. US International keyboard layout does this to in Windows. It seems the only type of keyboard that doesn't do it is the standard US keyboard, but that one doesn't have a Euro sign. I'd like to have a board with a Euro sign, but without messing up my quotes. What would be ideal for me is if I could type alt+quote to make it an accent over the next letter. Or even better, the latex way: \'e. I would love to know how to customise this in various OSs. I suppose it should be possible.
- thequux 6y agoI grew up in the US, and learned on standard US qwerty. After I moved to Europe, I found myself needing to type French, German, and Romanian words enough that I set up XCompose and I've been very happy with it. You just pick one key to be your compose key (AltGr is the classic choice, but menu, right windows, and caps lock are also good choices), and then you can hit Compose, accent, letter in sequence to type one of the "special" characters. As a bonus, you can actually configure your own sequences for letters that you need often. For example, I have Compose ,s,h bound to ¯\\_(ツ)_/¯, Compose,g,<any letter> bound to produce Greek characters, and Compose,t,q bound to my username. XCompose is available on Linux using `setxkbmap -option compose:ralt`, on Windows using WinCompose, and there's probably a way to do it on OSX but I refuse to support that particular company on moral grounds so you're on your own.
- nhumrich 6y agoI have an ergodox and all the "middle" button are brackets, [],{},(). Its amazing. You can also set shift to type a letter (such as a bracket) on stroke, but be shift on hold.
- SNosTrAnDbLe 6y agoTotally agree. I am mostly typing the symbols @#()[]-+=<> for a great part of my day. Also, why do we need to restrict the keyboard to a specific size or a specific number of rows. Why not have more than 4 rows ?
- hakanderyal 6y agoCheck out Programmer's Dvorak[0]. Especially with the help of the editor auto closing parens, it's much more natural for me to write code in. [0]: https://www.kaufmann.no/roland/dvorak/ https://www.kaufmann.no/roland/dvorak/
- throwwwaway 6y agoI second this. I had to stop programming full time due to right pinky strain. Programmer dvorak let me resume full time keyboard use with no pain.
- toyg 6y agoI totally agree, Colemak didn't help me there, my rate of mistakes for special characters is still way too high. There are keyboards that move special characters to their own layer, basically using a meta key for all of them. I'm tempted to try something like that, but stealing meta-combinations is always painful (probably the best candidate would be CapsLock, which I tend to remap to Cmd/Ctrl but never actually got in the habit of using as such) and as far as I know there isn't anything remotely standard, which would make it awkward in the long run.
- lawn 6y agoWith a QMK programmable keyboard you can turn any key into a modifier if held, while operating as a regular key when tapped. Another way is to get another keyboard with more thumb modifiers.
- toyg 6y agoMy Kinesis Freestyle at home has all sorts of programmable stuff, wouldn't be a problem there - the problem is that I have to share my time with a (Windows) laptop at work, so I try to find standard crossplatform solutions. I installed autohotkey and a bunch of other things but they look a bit complicated. I'm tempted to just get a second keyboard.
- deleted 6y ago[deleted]
- lawn 6y agoI don't recommend it. I too tried this with an Ergodox, but the keys you want to have your symbols on are just so far away anyway. The center columns for example are quite far. Instead I think it's better to use layers (holding down a key to change what other keys do) and place symbols close to your home row. You can even have a numpad right under your fingertips. This is why ergonomic keyboard users are generally moving towards boards with fewer keys, not more. Look for QMK programmable keyboards where you can do this and much more.
- yuribro 6y agoI have the same experience. I started with using all the extra keys on the Ergodox, but it was difficult reaching them, including most of the keys in the thumb area. I have since changed the layout to mimic the altreus layout (with most of the extra keys empty), which works much better. And am waiting for my altreus from keyboard.io to arrive as the extra keys on the ergo actually cause me to miss with the pinky and hit the "empty" keys sometimes.
- jon-wood 6y agoAs an example of how this works, here's my current keyboard layout (it tends to change every few weeks as I find something else I want sitting on a layer): https://configure.ergodox-ez.com/ergodox-ez/layouts/xbLyp/latest/0 https://configure.ergodox-ez.com/ergodox-ez/layouts/xbLyp/la... Holding the key labelled "OSL1" will switch the layout to the "Symbols" tab. The blue keys are dual-function, tapping them will enter the character on top, holding will turn it into the modifier key below. Finally the Gaming layer, toggled by the bottom right key on the keyboard, turns off all the special mappings and turns it into a standard QWERTY keyboard, because my muscle memory for game controls is too deeply entrenched to deal with in the middle of a fight :)
- clarry 6y agoWhy do modifiers suck? I find that they make me stretch and move my fingers around less while allowing me to use a smaller and more comfortable keyboard. Having more modifiers helps! The problem with standard keyboards is that they're too big (keys become hard to reach) and they don't have enough modifiers.
- scns 6y agoThe Neo2 layout optimizes for this. Ebene (Layer) 3 has <>(){}[] directly under the strongest fingers. On layer 4 you can type arrows, del, backspace, enter, pgup/down, tab, esc and insert without moving your hand. Using it for several years now and every time i have to use qwertz i realise how far the keys i have to press in sequence are distanced from each other. This layout is optimized for typing 70% of german and english words from the home row. https://git.neo-layout.org/neo/neo-layout/wiki/Grafiken https://git.neo-layout.org/neo/neo-layout/wiki/Grafiken It is included in a lot of linux distributions. It was useable on Windows 7/10, but last time i tried on 10 (long ago) it didn't work since Microsoft changed something. Could be working, i rarely boot into Windows so i did not bother trying. https://git.neo-layout.org/neo/neo-layout/wiki/Neo-unter-Windows-einrichten https://git.neo-layout.org/neo/neo-layout/wiki/Neo-unter-Win... Should be useable on OSX with: https://karabiner-elements.pqrs.org/ https://karabiner-elements.pqrs.org/ https://git.neo-layout.org/neo/neo-layout/wiki/Neo-auf-dem-Apple-Macintosh-einrichten https://git.neo-layout.org/neo/neo-layout/wiki/Neo-auf-dem-A... There is a graphic for users of the kinetic advantage too: https://git.neo-layout.org/neo/neo-layout/wiki/raw/neo_advantage.PNG https://git.neo-layout.org/neo/neo-layout/wiki/raw/neo_advan... A review: https://geekoverdose.wordpress.com/2016/12/27/how-i-taught-myself-the-neo2-keyboard-layout-a-review-after-typing-neo2-for-1-5-years/ https://geekoverdose.wordpress.com/2016/12/27/how-i-taught-m... (edit: added links, review and useage sentence)
- Timpy 6y agoI've been experimenting with Xmodmap on Linux for this reason. I remapped my capslock key to a symbol modifier, and then put all of my symbols in different places based on ergonomics and easy to remember mnemonics. Here's a small sample: <caps-p> plus sign <caps-t> tilde <caps-a> at symbol <caps-d> delete <caps-x> exclamation mark <caps-hjkl> vim movement After filling out the keyboard with mnemonics I found the few remaining gaps in the layer with two empty keys next to each other and put my brackets braces and parenthesis there. The final move in training yourself to use your new symbols is to remove them from their original keybinding. I recommend trying it out, I've found the process enjoyable.
- toyg 6y agoThis comment spurred me to do something similar with AutoHotkey on Windows. I had mapped capslock to ctrl but never actually got in the habit of using it, but as a fresh meta key is actually very useful. I focused on the keys I find most annoying, because I have a short pinky. Result: https://imgur.com/a/2XvKVa3 https://imgur.com/a/2XvKVa3 Script: https://pastebin.com/tJVw2nxg https://pastebin.com/tJVw2nxg I'll probably add some more as I get used to it, it would be cool to be able to avoid the awkward shift+num-row-key altogether. Guess there is a blog post to write later...
- toyg 6y agoForgot to say - those combinations are for Colemak. If you are using qwerty, replace the <x> letters in "CapsLock & <x>::" lines with what you have on qwerty.
- tomlu 6y agoI mapped all the programming keys to the alphabetic keys accessible via a third shift state. That buys me 24 symbol keys. Been using it for more than 10 years, works a treat.
- jerf 6y agoI think this is an example of exceptions looming large in our mind, precisely because they are exceptions, and taking an outsized proportion of our attention. Before you go crazy remapping your keyboard to make symbols easy, take a scan of your real code. I fired a script to count the incidence of all symbols across a couple codebases large enough to be fairly representative here: Perl Java Go 1 . spc - %26.40 spc - %17.98 spc - %10.43 2 . e - %6.15 e - %7.93 e - %8.92 3 . a - %4.41 t - %6.76 r - %6.83 4 . t - %4.34 r - %5.68 t - %6.72 5 . r - %3.85 s - %5.34 s - %4.99 6 . s - %3.84 a - %5.19 i - %4.83 7 . i - %3.34 i - %4.96 n - %4.67 8 . o - %3.03 o - %3.95 o - %4.57 9 . \n - %2.99 n - %3.79 a - %4.41 10. n - %2.97 p - %3.37 \t - %3.60 11. l - %2.67 u - %2.91 \n - %3.44 12. d - %2.32 c - %2.79 c - %3.05 13. c - %2.25 d - %2.55 l - %2.73 14. u - %2.07 l - %2.50 u - %2.55 15. _ - %2.02 \n - %2.44 d - %2.32 16. $ - %1.70 . - %1.99 p - %2.08 17. m - %1.70 m - %1.94 g - %1.98 18. p - %1.55 g - %1.62 . - %1.81 19. f - %1.41 ) - %1.29 m - %1.65 20. h - %1.31 ( - %1.28 b - %1.62 scp is space. Even Perl, a notoriously symbol-heavy language, has its first "symbol" show up only slot 15. This codebase prefers separation_by_underscores, so if you have camelCase you might not even get that. Java's first shows up as the period in 16, go's slots in at 18. (Go programmers typically aren't using the TAB key that much, it's autoformatted into existence with gofmt.) I'm not saying there's no room for a bit of optimization, but I suspect a lot of programmers would mentally place symbols way higher than they actually belong in the precedence scale. The other problem that emerges if you get too serious with this is that the languages are different enough that if you do swap out some symbols for some more privileged spaces on your keyboard, they aren't the same ones across languages. In Perl, $ shows up in slot 16 at 1.7%. In Java, it's slot 66 at .01%. Java favors the period first in slot 16 at 2%, in Perl that's slot 40 at .37%. I once did a reasonable attempt at a multi-language survey with roughly equal amounts of each language and what I found was if you're multilingual you have only marginal improvements available with the symbols. Whether it's worth it is up to you, but the fruit here is much less low-hanging than you might think. (I don't have a J/K codebase here to check.)
- thomastjeffery 6y agoI think the general fear of modifiers is that the traditional keyboard puts them in a terrible place. I've been using a keyboardio model01 for about a year now. Having modifiers under my thumb had made them much more appealing.