This post documents how keyboard layout, and how I achieved it in a Windows 10 Environment using various tools.

Disclaimer: My layout is super weird, so I don’t expect anyone else to use this out of the box. However, I will cover some ergonomic discussion, which hopefully could evoke some new idea for the readers.

My Keyboard Layout

ZXC Shift

The physical keyboard layout is UK layout, where there’s one extra key next to the left SHIFT key. (In the standard US layout, the key next to the left SHITF is Z.) The reason for that is when I place my hands on the keyboard, there’s a natural angle formed between my arms, in a shape of an inverted V. Therefore, when I curl my fingers, they move towards bottom, and side edges on both sides; IOW, the horizontal components of the moving vector are in opposite direction. However, if you look at the alphabet area in a keyboard, you will notice it’s leaned towards left, kind of like \. Having one extra key between left SHIFT and Z remedies this problem to some extent, because we could remap extra key + ZXC to ZXCV (Yes, I have two V in my layout.)

Control the Control

I have been using Linux for around a decade, and done the swap between CAPSLOCK and CTRL almost from day 0 as instructed in blogs floating around in the community. Around two years ago, I started using Mac for mostly entertaining use, while sshing to my Linux box for programming related tasks. One thing I like the most about Mac is the cmd key, which more or less is like CTRL in Linux. Since it’s located next to space, I hit it using my thumb, which feels much more natural than hitting the corresponding key combination while performing the same tasks in Linux (e.g. closing a tab, ctrl-w vs cmd-w).

Alphabet Layout

I use colemak layout. Did the switch four years ago, and have been using it since. Was it worth it? I don’t know. Try it for yourself.

Tools

In order to achieve aforementioned, I use sharpkeys for fiddling with win key and alt keys, and autohotkey for getting colemak with ZXC shift.

My AHK script is shown below:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
; Colemak layout for AutoHotkey from UK layout

SetBatchLines, -1 ; speeds up script
#SingleInstance force
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#MaxHotkeysPerInterval 5000
#InstallKeybdHook
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetTitleMatchMode 3 ; Exact matching to avoid confusing T/B with Tab/Backspace.

;1::1
;2::2
;3::3
;4::4
;5::5
;6::6
;7::7
;8::8
;9::9
;0::0
;-::-
;=::=

;q::q
;w::w
e::f

r::p
t::g
y::j
u::l
i::u
o::y
p::;
;[::[
;]::]


;a::a
s::r
d::s
f::t
g::d
;h::h
j::n
k::e
l::i
`;::o
;'::'

; shift zxcv left by one
;\::z
;+\::Z
;~::Z
;+`::~

`::z
z::x
x::c
c::v
n::k

; change UK layout to international
+3::Send {#}
|::~
;~::|
"::@
@::"
#::\

\::`

RAlt::Capslock

RWin::Enter

<!Space::Suspend

LCtrl & Tab::AltTab