Does there exist a modified Colemak keyboard layout designed specifically for programming?
I went cold-turkey on the Colemak keyboard layout a few days ago and I really like it for normal typing, but I have some issues for frequent programming characters like the ; (semicolon) key. A modified layout that has direct mappings for braces and parentheses would be nice.
Obviously I could remap these keys myself via trial-and-error, but I'm hoping someone has done some testing to determine an optimal layout for common language characters.
Background. Programmer Colemak is a keyboard layout to make typing – especially coding – ergonomic and enjoyable. It allows you to type the most common programming symbols from the home row (where your fingers naturally rest).
The Programmer Dvorak keyboard layout is the most comfortable and efficient layout for programmers. While the traditional Dvorak layout inherits awkward symbol locations from QWERTY, Programmer Dvorak makes the symbol row more intuitive.
Unfortunately, because QWERTY is so widely used and the sample size for Dvorak and Colemak typists is so small, there is not yet any definitive evidence that supports the notion that one layout is intrinsically faster than another.
The ergonomics of Colemak are certainly better than QWERTY. My hands move much less than they did when I typed with QWERTY, and my fingers rarely have to stretch uncomfortably. Overall, my fingers are traveling less, and my hands and fingers are no longer sore at the end of the day.
I am obsessed with efficient workflows, and the results from my experiments are very compelling and I guarantee it is very much worth the endeavour. This is also my third major edit, and I have more or less settled upon the layout I use today.
I will be try to be brief and to the point.
Your fingers rest on the highlight
Wide Angle Mod: Right hand has shifted one column. Benefits:
8 layer layout requires 3 modifiers:
include "level3(lalt_switch)" // Left Alt
include "level5(ralt_switch)" // Right Alt
level5
is very obscure and extremely useful to know about, if you wish to expand. For example, on my layout, it would allow for around 200 extra characters to be added.Layer:
1230
, constitute the most common numbers, and hence are found on the home row.-+.,#%$*/\;:=
, the most relevant mathematical operators.1234567890
layout. I find this much easier and more intuitive to use.The least common alternative characters were delegated to Level3 and Level5 modifiers. They were mapped with the following reasoning:
V
ertical pipe"M
odulus"H
ash"Generally the most common programming characters that you will type exist here:
();
and works best in this orientation.'s
bigram./*
bigram and are common vim commands.\t
\n
\r
m_
and s_
bigrams. It also is not a letter because that makes shifting it a painful exercise.Shift + [A-Z]
Accessible by either modifier.
Backspace is on the left pinky, to be intuitive with the direction you are deleting.
Delete is on D, and is intuitive with the direction you are deleting.
Escape for some reason, feels best on the Ring Finger, rather than the pinky.
End and Home are inspired by a colemak Vim configuration:
S
ert, which will go to the beginning of the line before editting.T
, which goes the opposite direction.Backspace is used 10× more ( Meaning that I will use the Home Row position 10× more, rather than its default position. ).
Delete is used about 20× more.
Escape is used about 15× more.
Home and End is used about 200× more often and utilized far more often, being especially useful in editting documents outside a vim environment.
If you are up for the challenge, there are some useful ideas I have played around with, however was not able to formally add to the layout simply due to the difficulty of doing so.
In short, you could theoretically map characters or functions to the modifier keys, that only execute upon a key release. For example,
And that's that.
sudo vim /usr/share/X11/xkb/symbols/us
.vimrc
: https://paste.ubuntu.com/p/JSKMwrPMPY/
~/.config/sc-im/scimrc
: https://paste.ubuntu.com/p/Vx64STMtHC/
.config/qutebrowser/config.py
: https://paste.ubuntu.com/p/mcymX92tBF/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With