-
Notifications
You must be signed in to change notification settings - Fork 34
Home
Ristomatti Airo edited this page Mar 24, 2025
·
13 revisions
Welcome to the keymapper wiki!
Here, you can contribute by adding your own examples, documenting unique use cases, and sharing best practices that can benefit the entire community.
Please make edits yourself or suggest additions in the discussions section if you have ideas or feedback.
Homerow Mods (source)
FakeAlt = S | L
FakeControl = D | K
FakeShift = F | J
FakeMeta = A | Semicolon
FakeMeta{Any !Any} >> Meta{Any}
FakeAlt{Any !Any} >> Alt{Any}
FakeControl{Any !Any} >> Control{Any}
FakeShift{Any !Any} >> Shift{Any}
# All combinations of 4
(FakeMeta FakeAlt FakeControl FakeShift){Any !Any} >> (Meta Alt Control Shift){Any}
# All combinations of 3
(FakeMeta FakeAlt FakeControl){Any !Any} >> (Meta Alt Control){Any}
(FakeMeta FakeAlt FakeShift){Any !Any} >> (Meta Alt Shift){Any}
(FakeMeta FakeControl FakeShift){Any !Any} >> (Meta Control Shift){Any}
(FakeAlt FakeControl FakeShift){Any !Any} >> (Alt Control Shift){Any}
# All combinations of 2
(FakeMeta FakeAlt){Any !Any} >> (Meta Alt){Any}
(FakeMeta FakeControl){Any !Any} >> (Meta Control){Any}
(FakeMeta FakeShift){Any !Any} >> (Meta Shift){Any}
(FakeAlt FakeControl){Any !Any} >> (Alt Control){Any}
(FakeAlt FakeShift){Any !Any} >> (Alt Shift){Any}
(FakeControl FakeShift){Any !Any} >> (Control Shift){Any}
Alpha = A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Symbol = Backquote | BracketLeft | BracketRight | Comma | Equal | Minus | Period | Semicolon | Slash | Quote
Character = Alpha | Digit | Symbol
Whitespace = Space | Tab | Enter
NumpadDigit = Numpad0 | Numpad1 | Numpad2 | Numpad3 | Numpad4 | Numpad5 | Numpad6 | Numpad7 | Numpad8 | Numpad9
NumpadSymbol = NumpadDivide | NumpadMultiply | NumpadSubtract | NumpadAdd | NumpadEnter | NumpadDecimal
ArrowKey = ArrowUp | ArrowDown | ArrowLeft | ArrowRight
NavigationKey = ArrowKey | Home | End | PageUp | PageDown
FunctionKey = F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12
MouseButton = ButtonLeft | ButtonRight | ButtonMiddle | ButtonBack | ButtonForward
Replace typed shorthand with a longer text or output from a shell command.
# Replace trigger string with the second argument
trigger = ? "$0" >> repeat[Backspace, sub[length["$0"], 1]] $1
# Send typed output
type = $(keymapperctl --type "$0")
# Format date
format_date = $(date +"$0")
[default]
# Email addresses
trigger[":gm", type["firstname.lastname@gmail.com"]]
trigger[":wm", type["firstname.lastname@company.com"]]
# Timestamps
trigger[":time", type[format_date["%H:%M:%S"]]]
trigger[":dts", type[format_date["%Y-%m-%d-%H-%M"]]]
trigger[":ds", type[format_date["%Y-%m-%d"]]]
# Netmasks
trigger["//24", type["255.255.255.0"]]
trigger["//16", type["255.255.0.0"]]
trigger["//8", type["255.0.0.0"]]
[class = /kitty|xterm|terminal/i]
# Hashbangs
trigger["#bash", type['#!/usr/bin/env bash\n\n']]
trigger["#zsh", type['#!/usr/bin/env zsh\n\n']]
Press both shift keys to temporarily type in SCREAMING_SNAKE_CASE. Inspired by QMK's CapsWord feature.
# See "Key group aliases" for definition of Alpha and Digit
CapsWordKey = Alpha | Digit | Minus | Backspace
CapsWord = Virtual50
[default]
? (ShiftLeft ShiftRight) >> CapsWord ^
CapsWord >> CapsLock ^ CapsLock
[modifier = "CapsWord"]
Minus >> Shift{Minus} # '_'
CapsWordKey >> CapsWordKey
Any >> CapsWord Any ^
Type shifted characters by holding the key down. Inspired by QMK's AutoShift feature.
Tip: Adjust timings to be as short as possible without accidentally triggering autoshifting when typing.
Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
AutoShifted = Backquote | BracketLeft | BracketRight | Comma | Equal | Minus | Period | Semicolon | Slash | Quote
AutoShift = Virtual51
[default]
# AutoShift toggle
Control{Shift{Tab}} >> AutoShift ^
[modifier = "!Meta !Alt !Control AutoShift"]
Shift{AutoShifted} >> (Shift AutoShifted)
Digit{140ms} !Digit >> (Shift Digit)
AutoShifted{120ms} !AutoShifted >> (Shift AutoShifted)
AutoShifted{Any} >> AutoShifted Any ^
AutoShifted >> AutoShifted
VimMode = Virtual52
VimKey = E
[default]
VimKey{200ms} >> VimMode ^ VimMode
[modifier = "VimMode"]
H >> ArrowLeft
J >> ArrowDown
K >> ArrowUp
L >> ArrowRight
Hold V
down to enable, press V
or Escape
to disable.
VimMode = Virtual52
VimKey = V
[default]
VimKey{200ms} >> VimMode ^
[modifier = "VimMode"]
H >> ArrowLeft
J >> ArrowDown
K >> ArrowUp
L >> ArrowRight
'gg' >> Control{Home}
'G' >> Control{End}
0 >> Home
'^' >> Home
'$' >> End
# Helix (https://helix-editor.com/) variants
'gh' >> Home
'gl' >> End
'ge' >> Control{End}
# Exit VimMode
VimKey >> VimMode
Escape >> VimMode