I finally gave up on Colemak, but in the process I found a very neat autohotkey script that allows you to set a colemak layout for typing, but use the normal shortcut keys. Whenever a modifier key is pressed, it reverts the rest of the keyboard back to Qwerty so that normal hotkeys are used. I find this rather essential, since hotkeys become very awkward with alternate layouts.
Menu, Tray, Icon, main.cpl, 8
; Use Scroll Lock to control keyboard ("on" is Colemak)
; and do not let Control, Alt, or Win modifiers act on Colemak
Loop {
If GetKeyState("ScrollLock", "T")
and !GetKeyState("Control")
and !GetKeyState("Alt")
and !GetKeyState("LWin")
and !GetKeyState("RWin") {
Suspend, Off
} else {
Suspend, On
}
Sleep, 50
}
; QWERTY to Colemak mapping
;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
;'::'
;z::z
;x::x
;c::c
;v::v
;b::b
n::k
;m::m
;,::,
;.::.
;/::/
;Backspace and Caps lock swap
;backspace::Capslock
;Capslock::backspace
Works for Dvorak too:
Menu, Tray, Icon, main.cpl, 8
; Use Scroll Lock to control keyboard ("on" is Dvorak)
; and do not let Control, Alt, or Win modifiers act on Dvorak
Loop {
If GetKeyState("ScrollLock", "T")
and !GetKeyState("Control")
and !GetKeyState("Alt")
and !GetKeyState("LWin")
and !GetKeyState("RWin") {
Suspend, Off
} else {
Suspend, On
}
Sleep, 50
}
; QWERTY to Dvorak mapping
-::[
=::]
q::'
w::,
e::.
r::p
t::y
y::f
u::g
i::c
o::r
p::l
[::/
]::=
;a::a
s::o
d::e
f::u
g::i
h::d
j::h
k::t
l::n
`;::s
'::-
z::`;
x::q
c::j
v::k
b::x
n::b
;m::m
,::w
.::v
/::z