Show HN: Crackle – keyboard layout for programmers
medium.com
medium.com
1. Change the layout of modifier keys from Control-Windows-Alt-Spacebar-Alt-Menu-Control to Windows-Alt-Control-Spacebar-Control-Alt-Windows (bind the outermost modifier keys to Super and Hyper if you use Emacs). This will let you do keyboard chording easily with either hand and eliminate "Emacs pinky": https://retrocomputing.stackexchange.com/questions/495/what-...
2. Change Caps Lock to Backspace (RUB OUT on Lisp Machine keyboards)
3. Swap parentheses () for square brackets []
[1] Not on OS X though. Apple does not provide a way to do these remappings on OS X, and breaks the keyboard internals and consequently third party tools like PCKeyboardHack/Karabiner with every OS X release. I tried early this year with Sierra and Karabiner-Elements and this did not work. Install Linux or OpenBSD.
Also, as much as I love Linux, it's not really feasible for anyone doing professional development to just up and bail on an operating system. There's IT infrastructure built around using OSX at some jobs.
Not for Caps Lock. I think it only lets you set it to Control.
> There's IT infrastructure built around using OSX at some jobs.
That is a really terrible idea, unless the only thing you do is develop OS X and iOS native applications. Do they really run OS X on their servers? Or is it develop-on-Mac-deploy-on-Linux? It isn't just OS X keyboard internals that are flaky and change with every release. The only reliable development environments I have seen on OS X were in fact done by "bailing on an operating system" by using virtualization.
At least in Sierra, all 4 modifiers can be mapped to any of each other or to escape. The fn key cannot be remapped with the built in preferences.
It looks like you will be able to starting in High Sierra
F5 | Up | F2
Left | Down | Right
Tab | Delete| Backspace
Enter | Space | ESC
How many times an hour do you have to reach over to the keyboard, press an arrow or Enter, then have to reach over and find your mouse again? All those seconds add up! Do your eyes leave the screen to find your mouse? This configuration lets you maintain your state of flow, because your hand almost never leaves your mouse, except for actual typing.You'd be surpised how many tasks can be performed with just the mouse (and the left hand for CTRL+C,CTRL+V). This is the most efficient layout I've found. I've used this for about 5 years now, for massive performance gains in many administration and development roles.
But you're right about F2, and I honestly never use it. But I haven't thought of another button to replace it with - maybe Ctrl-V, and F5 with Ctrl-C? Hmm...I'll have to test this out!
Unfortunately this does not carry over to laptops with pointing sticks or touchpads, which is largely why I switched to a tiling UI with almost exclusive keyboard navigation. After I discontinued mouse use I stopped having wrist pain in my mouse hand, and after I started using the Lisp Machine keyboard layout I stopped having Emacs pinky, so now I no longer have any RSI symptoms from computer use. Another important consideration.
Maybe a foot pedal is what we need?
Symbols are kept on a separate layer of keys alongside a numpad, so that they can be grouped by how I use them. Parens, brackets, braces, are all in the two leftmost alpha columns. I keep $, @, and % in a column because I use Perl fairly often. I also keep # and ! together for fun.
Now, I'm not saying it's particularly common, but I have a friend with a similarly exotic setup and we use them on a daily basis.
- Software can be required to run, needs admin to install. Sometimes the mouse can "remember" its key mappings, but often it resets to default on new PCs (1234567890-=).
- Internet sign-in required, cloud storage of mouse config is required. But there is an "offline" mode, so you could install the software to a single workstation and just save the profile locally.
- Mouse is not cheap and some people don't like the company.
It's an urban myth that Dvorak is any better than qwerty.
For english language Dvorak does increase center row usage vs. top and bottom row. And for programming there is programmers dvorak.
The absolute worst keyboard layout i've seen for programming is the german layout. Using modeswitch/altgr(yeah i know it's not quite the same) is absolutely terrible.
It's hard to explain, but it feels satisfying to type. When I think about a word I'll sometimes think about what motions it takes to type it (on dvorak) and it just feels comfortable in my head. No regrets about the loss in typing speed.
The worst part about using dvorak is that no software is (or ever will be) designed for dvorak. Vim and emacs still work great, most shortcuts are phonetic and jk are where cv are, so I don't really mind.
I have been waiting for someone to sit down and redesign the keyboard layout for programming, and maybe this is it.
I've been typing on Programmer Dvorak[0] for 3 over years.
[0] https://www.kaufmann.no/roland/dvorak/ it comes with most (all?) Linux systems `setxkbmap -layout us -variant dvp`
I feel it's important to mention that much of my love for Dvorak comes from the grid layout keyboard I've been using for all these years (wore one out though but bought a couple more to replace it), and which remains my primary keyboard both at home and at work.
My error rate is now tiny, backspace is for bad writing rather than bad typing. It is really comfortable to type on Dvorak in all manner of postures. I can type with my hands coming at the keyboard sideways, way above, way below, or while dancing or walking with the keyboard on a moving dolly; I've had no strain issues on any keyboard from doing this sort of thing regularly, or from sustained typing while sitting in crappy office chairs behind desks at the wrong height.
I think it might have something to do with the complete effectiveness of the home row. Because the home row reigns supreme in Dvorak, changes in posture aren't compounded by changes is hand positioning on the keyboard to hit certain motions.
The feeling is consistent, when I do a lot of typing during the day with QWERTY my hands ache, with Dvorak they don't. So as you say, as long as the typing speed is ok, there's a huge win in how comfortable it is. For me the best way of separating between the two is how the motions are as well, with QWERTY everything is clustered and with Dvorak each key is on each hand, so much more of a hand dance, which in itself is quite nice.
I do remember the first time I introduced myself to it though. Removed all the caps on the keyboard and placed them accordingly, found myself unable to find the correct letters even though I searched the keyboard. Turns out every letter was under the hand that still rested on the keyboard ;) Took ages just to write common sentences, while the brain went crazy. Worth it now though!
The software support is better nowadays, used to be horrible with VNC and the likes. With NoVNC catching wind all those problems are gone though, even on things like IPMI with HTML5 consoles! RDP still blows my mind by changing the keyboard layout to whatever is running on the target machine.
I've used all of Qwerty, Dvorak, Programer Dvorak, and Colemak. I think Colemak is the clear winner in terms of comfort. I also don't care much about speed, I just want to not have my hands ache by the end of the day.
http://patorjk.com/keyboard-layout-analyzer/#/main
Xah Lee has a heat map:
I think you're wrong. The Carpal X keyboard layout optimizer consistently ranks Dvorak as better than QWERTY for "effort" (which takes into account things like finger travel distance and how good we are at using certain fingers).
You can see the findings here: http://mkweb.bcgsc.ca/carpalx/?typing_effort
Their conclusion was to determine which layout is the best - their own layout, which I use, called QGMLWB was determined to be the one which requires the least typing effort. I'd recommend people try it.
>First, Dvorak is very good at keeping fingers on home row - 71% of keystrokes land there (compare this with 34% for QWERTY). This alone is worth the price of admission. Dvorak bottom row usage is very low at 9% (15% for QWERTY). Dvorak favours the right hand by 14% (QWERTY favours left by 15%). Dvorak has more uniform finger usage and makes greater use of the pinky (18% vs QWERTY's 10%).
Does that mean Dvorak is better for right handed people? Any left handers with experience here?
I have no idea if Dvorak is better or not, but this data point isn't convincing.
That depends greatly on what your goal is. I would appreciate it if max (or something close to it) was the most common for comparing frame rendering latency (inverse of frame rate) measurements. The large number of fast QWERTY typists could be due to the greater number of overall QWERTY typists, who knows.
150 wpm for 50 min (37,500 key strokes) and attained a speed of 170 wpm using the Dvorak Simplified Keyboard (DSK) system. Her top speed was recorded at 212 wpm.
No. http://seanwrona.com/typing.php
50 minute typing in English - 174 wpm (870 cpm) - 1st all time (this unofficially breaks Barbara Blackburn's Guinness world record of 150 wpm (750 cpm) over 50 minutes, but is perhaps less impressive because she used a typewriter while I used a computer keyboard).
Caveat aside, his peak speed is over 250WPM.
If you look at typeracer.com's scores, there are plenty of typists in the 150+ range. I'd also consider myself a fast typist, averaging 150-160 for general English text and have peaked at ~240wpm in short bursts. I use QWERTY exclusively, but on an extremely low-force keyboard.
And, you rarely hear of Dvorak typists that will say they switched for speed and stayed for the speed. It’s almost always that they switch for the myth of speed and claims of comfort, but stayed for the comfort.
I noticed on US keyboard layout you only have single key modifier and only have two characters per key instead of three, which I then bought a laptop with and it is an amazing difference after typing for 8 hours especially because you do less weird postures with your hand in order to make a single character.
Never gone back to the danish keyboard layout, I now only keyboards with the US keyboard layout and it is actually possible to use hotkeys in most software now as well yay!
In fact Spanish keyboards are physically like UK keyboards, so slightly different from US keyboards, so the layout I've now gotten most used to is nonexistent.
Note the different shape of the Enter key, and the additional key on the bottom left:
https://d25rq8gxcq0p71.cloudfront.net/language-guide/758/es-...
https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/KB...
For umlauts, I use the US-intl keyboard, which works great. The only thing that bothers me a bit is that I can't configure vanilla Windows to use capslock to switch between US and US-intl (which works on my private Linux machine).
On another note: I find it really strange that most keyboard locales actually change very little except for screwing up programming symbols...
Here's my qwerty based ergodox layout; its still not great, but its miles better than normal symbol layouts on a std keyboard for me. I really only use layers 0 and 1. I need to add a layer 2 shift key and put arrow keys under the ikjl key positions, I just haven't done it yet. https://www.massdrop.com/configurator/ergodox?referer=MSCE5S.... I'm an osx user for the most part, hence the easy thumb access to the command/windows key for the left thumb.
I purchased an ergodox ez, and while I love the feel of the mechanical keys, the default layout, and any layout I can up with, was too radically different from normal qwerty.
So I purchased a matias ergo pro, which is great, and can do negative tilt which the ergodox can't seem to do natively.
Here's a screenshot: http://imgur.com/a/JU0kb
Btw. I'm not using Vim, except for some small edits from the terminal. But there is a vi plugin for the most important tools that I use: (JetBrains:ideavim, Firefox:Vimperator, ZSH:vi-mode, Emacs:evil-mode, Atom:vim-mode)
I think a lot of what the author tries to solve could be solved by switching to vi-style editing. He introduces two new modifier keys to increase the number of actions you may bind to a key, Vi uses modes (normal-mode, insert-mode,..) to achieve the same thing.
But I really like what the author does with the brackets! Putting the opening brackets on one hand and mirror the closing brackets onto the other makes a lot of sense to me. I think I'll try out something similar by switching ! with {, + with }, @ with [, _ with ] , etc.
I am only half joking. I've yet to see a keyboard layout that puts the numbers in a different order.
In fact Dvorak originally had the numbers in a different order https://en.m.wikipedia.org/wiki/Dvorak_Simplified_Keyboard
It's also targeting "special" keys rather than letters. The difference is not using modality, but utilizing the right cmd (or the right alt on linux) to activate a layer with all special characters. Conflicts with qwerty are minimal, so you can install it on top of qwerty.
These days I mostly use keyboards with fully programmable firmware (QMK, when possible) and remap things as needed. Things that stay pretty consistent are swapping caps lock and control (the way dog intended it), adding pipe as layer1-~ (shift-\ is terrible to type with one's right hand, and somehow I haven't trained myself to do that two-handed), and mapping parens to later1-o and -p.
Never played with a Dvorak or Colemak.
When I have to use Apple products I tend to use Karabiner Elements to swap place between Right ALT and Caps Lock, to ease with all the combinations. Seems to do the trick to avoid pain.
Also there is a nice implementation called Svorak A5[0] of this (although based on the Swedish Dvorak layout), that I learned and find productive.
0: http://aoeu.info/s/dvorak/svorak
Edit: It's Right ALT and not CMD that's switched.
I think you under appreciated the luck you have using a qwerty keyboard compared to all the international silliness.
Si vous décidez de changer, je recommande le français canadian clavier. C'est le qwerty clavier avec quelque modifications mineures. Je pense que c'est un bon conpromis.
CMD with my thumbs, and Shift, are the only modifiers I can comfortably type. RSI pain in my pinkies really limits Option and Ctrl.
It would be interesting to have a chording setup with keys on the home row. Hold "D" + type a key with your Right hand, and vice versa for "K" and the Left hand.
Also smaller keyboards(think 13,3" laptop) are to me plain bad, because everything is so crammed.
Common User Access [1] tried to fix the chaotic mess that was DOS... But by then it was too late, so we ended up with a few really stupid shortcuts. My least favorite is Alt+F4 / Ctrl+F4. On macOS you close documents or windows with Cmd+W, or you close the whole application with Cmd+Q. Having to reach up to the F-row is awkward.
[0] https://developer.apple.com/macos/human-interface-guidelines...
(Let's say lower case is your first layer, upper case is your second layer, snap is your third layer, and pop is your fourth layer.)
I've worked on a similar design, and I've replaced Caps Lock with a "level 2 shift", which gets me to third layer. (Perhaps in your case, "Snap") The fourth layer is then Level 2 Shift and normal Shift, together.
If your snap & pop keys are shifts, combined with normal shift, you have a total of eight layers, potentially.
(I was inspired by the Neo Layout[1], but it's for German.)
(Also, since programmers often use - and _ for word separators, I put those on the space (which is a word separator) bar; they're level3+space and level3+shift+space, though I don't remember which was which. This made sense to me, but keyboard layouts are a personal thing, I think.)
As an aside, I developed my "snap" layout using a genetic algorithm run over the corpus of my programming career, then shifted around for aesthetic taste. It's served me well for more than ten years.
EDIT:
^{}\ 1+[]
@*:/" 0=();
~|&# _-<>I have used QWERTY, Dvorak and Colemak for multiple years and Colemak is the clearly the best of the there for me.
[1]: https://colemak.com/
[2]:https://colemak.com/FAQ#What.27s_wrong_with_the_Dvorak_layou...
They are: * f - forward char * b - back char * h - backspace * d - delete * e - end of line * a - start of line * w - delete word left * u - delete line left
The next board I'll be building will be a 40% board (Hopefully the minivan [0) though I don't think I will use it for coding. My main use for it will be just typing tests and recreational use.
[0]: https://f3a98a5aca88d28ed629-2f664c0697d743fb9a738111ab4002b...