The Sofle keymap, as it works here

Eyelash Sofle (sofleii firmware, rdlu/sofleii @ 982d0b3, 2026-10-29) joined to rdlu's dotfiles: niri binds.kdl and dot-tmux.conf · built 2026-10-29

QR code: https://dotfiles.dlu.one/sofle/https://dotfiles.dlu.one/sofle/

Layers

LayerHow to get there
BASEalways on
NAVhold the left thumb’s 4th key (next to Backspace)
CODEhold the right thumb’s 2nd key (next to Space)
MEDIAhold the right thumb’s outer key
SYS|NUMhold the left thumb’s outer key

Release the key and you’re back on BASE. The game layers (from SYS|NUM) are plain keys; see the sofleii printout.

Reading the grids

Each key shows what it does here, resolved from binds.kdl and dot-tmux.conf; its small top legend is the chord the keyboard sends, the bottom one what it does when held. ◆ is Super (niri’s Mod), ⌃ Ctrl, ⌥ Alt, ⇧ Shift.

niri action niri runs a command tmux types text firmware (Bluetooth, underglow, mouse) layer key spare: sent, not bound yet kernel SysRq held for this layer falls through plain key Small top legend: the chord sent · bottom: the hold · ◆ Super (niri's Mod) · ⌃ Ctrl · ⌥ Alt · ⇧ Shift

Home-row mods

S Alt · D Ctrl · F Shift and J Shift · K Ctrl · L Alt: tap for the letter, hold for the mod. On NAV, S and D hold Alt and Ctrl too.

Commands

The keys that reach niri or tmux, by layer.

BASE

joystick ↑ XF86AudioRaiseVolume
Vol + (wpctl)
joystick ↓ XF86AudioLowerVolume
Vol − (wpctl)
joystick ← XF86AudioPlay
Play / pause (playerctl)
joystick → XF86AudioNext
Next (playerctl)
encoder press XF86AudioMute
Mute (wpctl)
joystick press XF86AudioMute
Mute (wpctl)
F12 F12
tmux: toggle nested OFF mode (pass keys to an inner tmux)

NAV

` F12
tmux: toggle nested OFF mode (pass keys to an inner tmux)
Tab Super+U
Focus workspace down
Q Super+I
Focus workspace up
T Ctrl+Print
Screenshot monitor
= Print
Screenshot region
Esc Super+Shift+H
Focus monitor left
A Super+Shift+J
Focus monitor down
S Super+Shift+K
Focus monitor up
D Super+Shift+L
Focus monitor right
G Alt+Print
Screenshot window
\ Super+Ctrl+U
Move column to workspace down
Z Super+Ctrl+I
Move column to workspace up
X Super+Ctrl+Shift+H
Move column to monitor left
C Super+Ctrl+Shift+L
Move column to monitor right
B Shift+Print
Screenshot and annotate
N Super+1
Focus workspace 1
M Super+U
Focus workspace down
, Super+I
Focus workspace up
. Super+9
Focus workspace 9
/ Super+Shift+H
Focus monitor left
⏎ Super+Shift+L
Focus monitor right

MEDIA

` F14→XF86Launch5
Caffeine on/off
1 F15→XF86Launch6
Do not disturb on/off
2 F16→XF86Launch7
Bluetooth on/off
3 F17→XF86Launch8
Control center
4 F18→XF86Launch9
Emoji picker
5 F19
Clipboard history
joystick ↑ XF86AudioRaiseVolume
Vol + (wpctl)
W Super+XF86MonBrightnessUp
External monitor brightness up
E XF86MonBrightnessUp
Bright + (brightnessctl)
T F24
Menu Power
joystick ↓ XF86AudioLowerVolume
Vol − (wpctl)
S Super+XF86MonBrightnessDown
External monitor brightness down
D XF86MonBrightnessDown
Bright − (brightnessctl)
joystick ← XF86AudioPlay
Play / pause (playerctl)
H XF86AudioLowerVolume
Vol − (wpctl)
J XF86AudioRaiseVolume
Vol + (wpctl)
K XF86AudioPlay
Play / pause (playerctl)
B F21→XF86TouchpadToggle
Touchpad on/off
joystick → XF86AudioNext
Next (playerctl)
N F20→XF86AudioMicMute
Mic mute (wpctl)
M XF86AudioMute
Mute (wpctl)
, XF86AudioPrev
Prev (playerctl)
. XF86AudioNext
Next (playerctl)
joystick press XF86AudioMute
Mute (wpctl)

SYS|NUM

- XF86Calculator
Calculator
B Super+Alt+L
Lock the Screen
layer 0 · BASErdlu/sofleii @ 982d0b3
`
key
` · position 0
sends
`
zmk
&kp GRAVE
1
key
1 · position 1
sends
1
zmk
&kp N1
2
key
2 · position 2
sends
2
zmk
&kp N2
3
key
3 · position 3
sends
3
zmk
&kp N3
4
key
4 · position 4
sends
4
zmk
&kp N4
5
key
5 · position 5
sends
5
zmk
&kp N5
Vol+Vol +
key
joystick ↑ · position 6
sends
XF86AudioRaiseVolume
does
Vol + (wpctl)
bind
niri: spawn "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%+"
from
niri/dot-config/niri/binds.kdl:56
zmk
&kp C_VOL_UP
6
key
6 · position 7
sends
6
zmk
&kp N6
7
key
7 · position 8
sends
7
zmk
&kp N7
8
key
8 · position 9
sends
8
zmk
&kp N8
9
key
9 · position 10
sends
9
zmk
&kp N9
0
key
0 · position 11
sends
0
zmk
&kp N0
-
key
- · position 12
sends
-
zmk
&kp MINUS
Tab
key
Tab · position 13
sends
Tab
zmk
&kp TAB
Q
key
Q · position 14
sends
Q
zmk
&kp Q
W
key
W · position 15
sends
W
zmk
&kp W
E
key
E · position 16
sends
E
zmk
&kp E
R
key
R · position 17
sends
R
zmk
&kp R
T
key
T · position 18
sends
T
zmk
&kp T
Vol−Vol −
key
joystick ↓ · position 19
sends
XF86AudioLowerVolume
does
Vol − (wpctl)
bind
niri: spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"
from
niri/dot-config/niri/binds.kdl:57
zmk
&kp C_VOL_DN
Y
key
Y · position 20
sends
Y
zmk
&kp Y
U
key
U · position 21
sends
U
zmk
&kp U
I
key
I · position 22
sends
I
zmk
&kp I
O
key
O · position 23
sends
O
zmk
&kp O
P
key
P · position 24
sends
P
zmk
&kp P
=
key
= · position 25
sends
=
zmk
&kp EQUAL
Esc
key
Esc · position 26
sends
Escape
zmk
&kp ESC
A
key
A · position 27
sends
A
zmk
&kp A
S⌥
key
S · position 28
sends
S
hold
Alt
zmk
&hml LALT S
D⌃
key
D · position 29
sends
D
hold
Ctrl
zmk
&hml LCTRL D
F⇧
key
F · position 30
sends
F
hold
Shift
zmk
&hml_idx LSHFT F
G
key
G · position 31
sends
G
zmk
&kp G
PlayPlay / pause
key
joystick ← · position 32
sends
XF86AudioPlay
does
Play / pause (playerctl)
bind
niri: spawn-sh "playerctl play-pause"
from
niri/dot-config/niri/binds.kdl:68
zmk
&kp C_PP
H
key
H · position 33
sends
H
zmk
&kp H
J⇧
key
J · position 34
sends
J
hold
Shift
zmk
&hmr_idx RSHFT J
K⌃
key
K · position 35
sends
K
hold
Ctrl
zmk
&hmr RCTRL K
L⌥
key
L · position 36
sends
L
hold
Alt
zmk
&hmr LALT L
;
key
; · position 37
sends
;
zmk
&kp SEMI
'
key
' · position 38
sends
'
zmk
&kp APOS
\
key
\ · position 39
sends
\
zmk
&kp BSLH
Z
key
Z · position 40
sends
Z
zmk
&kp Z
X
key
X · position 41
sends
X
zmk
&kp X
C
key
C · position 42
sends
C
zmk
&kp C
V
key
V · position 43
sends
V
zmk
&kp V
B
key
B · position 44
sends
B
zmk
&kp B
NextNext
key
joystick → · position 45
sends
XF86AudioNext
does
Next (playerctl)
bind
niri: spawn-sh "playerctl next"
from
niri/dot-config/niri/binds.kdl:66
zmk
&kp C_NEXT
N
key
N · position 46
sends
N
zmk
&kp N
M
key
M · position 47
sends
M
zmk
&kp M
,
key
, · position 48
sends
,
zmk
&kp COMMA
.
key
. · position 49
sends
.
zmk
&kp DOT
/
key
/ · position 50
sends
/
zmk
&kp FSLH
⏎
key
⏎ · position 51
sends
Enter
zmk
&kp RET
MuteMute
key
encoder press · position 52
sends
XF86AudioMute
does
Mute (wpctl)
bind
niri: spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"
from
niri/dot-config/niri/binds.kdl:58
zmk
&kp C_MUTE
SYS|NUM
key
SYS|NUM · position 53
does
hold for layer 4 (SYS|NUM)
zmk
&mo 4
F11
key
F11 · position 54
sends
F11
zmk
&kp F11
◆
key
◆ · position 55
sends
Super
zmk
&kp LGUI
NAV
key
NAV · position 56
does
hold for layer 1 (NAV)
zmk
&mo 1
⌫
key
⌫ · position 57
sends
Backspace
zmk
&kp BSPC
MuteMute
key
joystick press · position 58
sends
XF86AudioMute
does
Mute (wpctl)
bind
niri: spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"
from
niri/dot-config/niri/binds.kdl:58
zmk
&kp C_MUTE
Space
key
Space · position 59
sends
Space
zmk
&kp SPACE
CODE
key
CODE · position 60
does
hold for layer 2 (CODE)
zmk
&mo 2
CapsWd
key
CapsWd · position 61
does
Caps Word: the next word in capitals
zmk
&caps_word
F12tmux OFFAltGr
key
F12 · position 62
sends
F12
does
tmux: toggle nested OFF mode (pass keys to an inner tmux)
hold
AltGr (third level: the usbr layout's ã õ ç …)
bind
tmux: bind -T root F12
from
terminal/dot-tmux.conf:11
zmk
&ralt_mt RALT F12
MEDIA
key
MEDIA · position 63
does
hold for layer 3 (MEDIA)
zmk
&mo 3
Always on. Joystick and encoder are media keys; F12 toggles tmux's nested OFF mode; hold the F12 key for AltGr.
layer 1 · NAVrdlu/sofleii @ 982d0b3
F12tmux OFF
key
` · position 0
sends
F12
does
tmux: toggle nested OFF mode (pass keys to an inner tmux)
bind
tmux: bind -T root F12
from
terminal/dot-tmux.conf:11
zmk
&kp F12
F1
key
1 · position 1
sends
F1
zmk
&kp F1
F2
key
2 · position 2
sends
F2
zmk
&kp F2
F3
key
3 · position 3
sends
F3
zmk
&kp F3
F4
key
4 · position 4
sends
F4
zmk
&kp F4
F5
key
5 · position 5
sends
F5
zmk
&kp F5
↑
key
joystick ↑ · position 6
sends
Up
zmk
&kp UP_ARROW
F6
key
6 · position 7
sends
F6
zmk
&kp F6
F7
key
7 · position 8
sends
F7
zmk
&kp F7
F8
key
8 · position 9
sends
F8
zmk
&kp F8
F9
key
9 · position 10
sends
F9
zmk
&kp F9
F10
key
0 · position 11
sends
F10
zmk
&kp F10
F11
key
- · position 12
sends
F11
zmk
&kp F11
◆UWS ↓
key
Tab · position 13
sends
Super+U
does
Focus workspace down
bind
niri: focus-workspace-down
from
niri/dot-config/niri/binds.kdl:143
zmk
&kp LG(U)
◆IWS ↑
key
Q · position 14
sends
Super+I
does
Focus workspace up
bind
niri: focus-workspace-up
from
niri/dot-config/niri/binds.kdl:144
zmk
&kp LG(I)
W
key
W · position 15
does
transparent: falls through to the layer below
zmk
&trans
E
key
E · position 16
does
transparent: falls through to the layer below
zmk
&trans
R
key
R · position 17
does
transparent: falls through to the layer below
zmk
&trans
⌃PrtScShot screen
key
T · position 18
sends
Ctrl+Print
does
Screenshot monitor
bind
niri: screenshot-screen
from
niri/dot-config/niri/binds.kdl:290
zmk
&kp LC(PSCRN)
↓
key
joystick ↓ · position 19
sends
Down
zmk
&kp DOWN_ARROW
Home
key
Y · position 20
sends
Home
zmk
&kp HOME
PgDn
key
U · position 21
sends
Page Down
zmk
&kp PG_DN
PgUp
key
I · position 22
sends
Page Up
zmk
&kp PG_UP
End
key
O · position 23
sends
End
zmk
&kp END
Ins
key
P · position 24
sends
Insert
zmk
&kp INS
PrtScShot region
key
= · position 25
sends
Print
does
Screenshot region
bind
niri: screenshot
from
niri/dot-config/niri/binds.kdl:289
zmk
&kp PRINTSCREEN
◆⇧HMon ←
key
Esc · position 26
sends
Super+Shift+H
does
Focus monitor left
bind
niri: focus-monitor-left
from
niri/dot-config/niri/binds.kdl:112
zmk
&kp LG(LS(H))
◆⇧JMon ↓
key
A · position 27
sends
Super+Shift+J
does
Focus monitor down
bind
niri: focus-monitor-down
from
niri/dot-config/niri/binds.kdl:113
zmk
&kp LG(LS(J))
◆⇧KMon ↑⌥
key
S · position 28
sends
Super+Shift+K
does
Focus monitor up
hold
Alt
bind
niri: focus-monitor-up
from
niri/dot-config/niri/binds.kdl:114
zmk
&hml LALT LG(LS(K))
◆⇧LMon →⌃
key
D · position 29
sends
Super+Shift+L
does
Focus monitor right
hold
Ctrl
bind
niri: focus-monitor-right
from
niri/dot-config/niri/binds.kdl:115
zmk
&hml LCTRL LG(LS(L))
F
key
F · position 30
does
transparent: falls through to the layer below
zmk
&trans
⌥PrtScShot window
key
G · position 31
sends
Alt+Print
does
Screenshot window
bind
niri: screenshot-window
from
niri/dot-config/niri/binds.kdl:292
zmk
&kp LA(PSCRN)
←
key
joystick ← · position 32
sends
Left
zmk
&kp LEFT_ARROW
←
key
H · position 33
sends
Left
zmk
&kp LEFT
↓
key
J · position 34
sends
Down
zmk
&kp DOWN
↑
key
K · position 35
sends
Up
zmk
&kp UP
→
key
L · position 36
sends
Right
zmk
&kp RIGHT
Del
key
; · position 37
sends
Delete
zmk
&kp DEL
Pause
key
' · position 38
sends
Pause
zmk
&kp PAUSE_BREAK
◆⌃UCol → WS ↓
key
\ · position 39
sends
Super+Ctrl+U
does
Move column to workspace down
bind
niri: move-column-to-workspace-down
from
niri/dot-config/niri/binds.kdl:147
zmk
&kp LG(LC(U))
◆⌃ICol → WS ↑
key
Z · position 40
sends
Super+Ctrl+I
does
Move column to workspace up
bind
niri: move-column-to-workspace-up
from
niri/dot-config/niri/binds.kdl:148
zmk
&kp LG(LC(I))
◆⌃⇧HCol → Mon ←
key
X · position 41
sends
Super+Ctrl+Shift+H
does
Move column to monitor left
bind
niri: move-column-to-monitor-left
from
niri/dot-config/niri/binds.kdl:121
zmk
&kp LG(LS(LC(H)))
◆⌃⇧LCol → Mon →
key
C · position 42
sends
Super+Ctrl+Shift+L
does
Move column to monitor right
bind
niri: move-column-to-monitor-right
from
niri/dot-config/niri/binds.kdl:124
zmk
&kp LG(LS(LC(L)))
V
key
V · position 43
does
transparent: falls through to the layer below
zmk
&trans
⇧PrtScShot + edit
key
B · position 44
sends
Shift+Print
does
Screenshot and annotate
bind
niri: spawn "noctalia" "msg" "screenshot-annotate"
from
niri/dot-config/niri/binds.kdl:291
zmk
&kp LS(PSCRN)
→
key
joystick → · position 45
sends
Right
zmk
&kp RIGHT_ARROW
◆1WS 1
key
N · position 46
sends
Super+1
does
Focus workspace 1
bind
niri: focus-workspace 1
from
niri/dot-config/niri/binds.kdl:199
zmk
&kp LG(N1)
◆UWS ↓
key
M · position 47
sends
Super+U
does
Focus workspace down
bind
niri: focus-workspace-down
from
niri/dot-config/niri/binds.kdl:143
zmk
&kp LG(U)
◆IWS ↑
key
, · position 48
sends
Super+I
does
Focus workspace up
bind
niri: focus-workspace-up
from
niri/dot-config/niri/binds.kdl:144
zmk
&kp LG(I)
◆9WS 9
key
. · position 49
sends
Super+9
does
Focus workspace 9
bind
niri: focus-workspace 9
from
niri/dot-config/niri/binds.kdl:207
zmk
&kp LG(N9)
◆⇧HMon ←
key
/ · position 50
sends
Super+Shift+H
does
Focus monitor left
bind
niri: focus-monitor-left
from
niri/dot-config/niri/binds.kdl:112
zmk
&kp LG(LS(H))
◆⇧LMon →
key
⏎ · position 51
sends
Super+Shift+L
does
Focus monitor right
bind
niri: focus-monitor-right
from
niri/dot-config/niri/binds.kdl:115
zmk
&kp LG(LS(L))
Mute
key
encoder press · position 52
does
transparent: falls through to the layer below (Mute (wpctl))
zmk
&trans
SYS|NUM
key
SYS|NUM · position 53
does
transparent: falls through to the layer below (hold for layer 4 (SYS|NUM))
zmk
&trans
F11
key
F11 · position 54
does
transparent: falls through to the layer below
zmk
&trans
◆
key
◆ · position 55
does
transparent: falls through to the layer below
zmk
&trans
NAV
key
NAV · position 56
does
held to be on this layer
zmk
&trans
Del
key
⌫ · position 57
sends
Delete
zmk
&kp DEL
⏎
key
joystick press · position 58
sends
Enter
zmk
&kp ENTER
Menu
key
Space · position 59
sends
Menu (context menu)
zmk
&kp K_APP
⌃
key
CODE · position 60
sends
Ctrl
zmk
&kp LCTRL
←
key
CapsWd · position 61
sends
Left
zmk
&kp LEFT
→
key
F12 · position 62
sends
Right
zmk
&kp RIGHT
MEDIA
key
MEDIA · position 63
does
transparent: falls through to the layer below (hold for layer 3 (MEDIA))
zmk
&trans
Hold the left thumb's NAV key. Left half: niri workspaces, monitors and column moves, screenshots on the inner column. Right half: arrows and paging.
layer 2 · CODErdlu/sofleii @ 982d0b3
`
key
` · position 0
does
transparent: falls through to the layer below
zmk
&trans
~s(▏)
key
1 · position 1
does
types '~s()', cursor at ▏
bind
macro M_SIGS
zmk
&M_SIGS
~w(▏)
key
2 · position 2
does
types '~w()', cursor at ▏
bind
macro M_SIGW
zmk
&M_SIGW
~r/▏/
key
3 · position 3
does
types '~r//', cursor at ▏
bind
macro M_SIGR
zmk
&M_SIGR
~D[▏]
key
4 · position 4
does
types '~D[]', cursor at ▏
bind
macro M_SIGD
zmk
&M_SIGD
<>
key
5 · position 5
does
types '<>'
bind
macro M_CONCAT
zmk
&M_CONCAT
Vol +
key
joystick ↑ · position 6
does
transparent: falls through to the layer below (Vol + (wpctl))
zmk
&trans
6
key
6 · position 7
does
transparent: falls through to the layer below
zmk
&trans
{ ▏ }
key
7 · position 8
does
types '{ }', cursor at ▏
bind
macro M_HEEXI
zmk
&M_HEEXI
<% ▏ %>
key
8 · position 9
does
types '<% %>', cursor at ▏
bind
macro M_HEEXNP
zmk
&M_HEEXNP
9
key
9 · position 10
does
transparent: falls through to the layer below
zmk
&trans
0
key
0 · position 11
does
transparent: falls through to the layer below
zmk
&trans
-
key
- · position 12
does
transparent: falls through to the layer below
zmk
&trans
Tab
key
Tab · position 13
does
transparent: falls through to the layer below
zmk
&trans
Q
key
Q · position 14
does
transparent: falls through to the layer below
zmk
&trans
<-
key
W · position 15
does
types '<-'
bind
macro M_LARROW
zmk
&M_LARROW
|>
key
E · position 16
does
types '|>'
bind
macro M_PIPE
zmk
&M_PIPE
->
key
R · position 17
does
types '->'
bind
macro M_ARROW
zmk
&M_ARROW
=>
key
T · position 18
does
types '=>'
bind
macro M_FARROW
zmk
&M_FARROW
Vol −
key
joystick ↓ · position 19
does
transparent: falls through to the layer below (Vol − (wpctl))
zmk
&trans
::
key
Y · position 20
does
types '::'
bind
macro M_DCOLON
zmk
&M_DCOLON
|_|
key
U · position 21
does
types '|_|'
bind
macro M_CLOSURE
zmk
&M_CLOSURE
dbg!(▏)
key
I · position 22
does
types 'dbg!()', cursor at ▏
bind
macro M_DBG
zmk
&M_DBG
todo!(▏)
key
O · position 23
does
types 'todo!()', cursor at ▏
bind
macro M_TODO
zmk
&M_TODO
::<▏>
key
P · position 24
does
types '::<>', cursor at ▏
bind
macro M_TFISH
zmk
&M_TFISH
=
key
= · position 25
does
transparent: falls through to the layer below
zmk
&trans
`
key
Esc · position 26
sends
`
zmk
&kp GRAVE
{
key
A · position 27
sends
{
zmk
&kp LBRC
}⌥
key
S · position 28
sends
}
hold
Alt
zmk
&mt LALT RBRC
[⌃
key
D · position 29
sends
[
hold
Ctrl
zmk
&mt LCTRL LBKT
]⇧
key
F · position 30
sends
]
hold
Shift
zmk
&mt LSHFT RBKT
+
key
G · position 31
sends
+
zmk
&kp PLUS
Play / pause
key
joystick ← · position 32
does
transparent: falls through to the layer below (Play / pause (playerctl))
zmk
&trans
(▏)
key
H · position 33
does
types '()', cursor at ▏
bind
macro M_PAREN
zmk
&M_PAREN
[▏]
key
J · position 34
does
types '[]', cursor at ▏
bind
macro M_BRKT
zmk
&M_BRKT
{▏}
key
K · position 35
does
types '{}', cursor at ▏
bind
macro M_BRACE
zmk
&M_BRACE
"▏"
key
L · position 36
does
types '""', cursor at ▏
bind
macro M_DQUO
zmk
&M_DQUO
;
key
; · position 37
does
transparent: falls through to the layer below
zmk
&trans
'
key
' · position 38
does
transparent: falls through to the layer below
zmk
&trans
\
key
\ · position 39
does
transparent: falls through to the layer below
zmk
&trans
-
key
Z · position 40
sends
-
zmk
&kp MINUS
_
key
X · position 41
sends
_
zmk
&kp UNDER
(
key
C · position 42
sends
(
zmk
&kp LPAR
)
key
V · position 43
sends
)
zmk
&kp RPAR
=
key
B · position 44
sends
=
zmk
&kp EQUAL
Next
key
joystick → · position 45
does
transparent: falls through to the layer below (Next (playerctl))
zmk
&trans
==
key
N · position 46
does
types '=='
bind
macro M_EQEQ
zmk
&M_EQEQ
!=
key
M · position 47
does
types '!='
bind
macro M_NEQ
zmk
&M_NEQ
<=
key
, · position 48
does
types '<='
bind
macro M_LEQ
zmk
&M_LEQ
>=
key
. · position 49
does
types '>='
bind
macro M_GEQ
zmk
&M_GEQ
/
key
/ · position 50
does
transparent: falls through to the layer below
zmk
&trans
⏎
key
⏎ · position 51
does
transparent: falls through to the layer below
zmk
&trans
Mute
key
encoder press · position 52
does
transparent: falls through to the layer below (Mute (wpctl))
zmk
&trans
SYS|NUM
key
SYS|NUM · position 53
does
transparent: falls through to the layer below (hold for layer 4 (SYS|NUM))
zmk
&trans
F11
key
F11 · position 54
does
transparent: falls through to the layer below
zmk
&trans
◆
key
◆ · position 55
does
transparent: falls through to the layer below
zmk
&trans
NAV
key
NAV · position 56
does
transparent: falls through to the layer below (hold for layer 1 (NAV))
zmk
&trans
Del
key
⌫ · position 57
sends
Delete
zmk
&kp DEL
Mute
key
joystick press · position 58
does
transparent: falls through to the layer below (Mute (wpctl))
zmk
&trans
Space
key
Space · position 59
does
transparent: falls through to the layer below
zmk
&trans
CODE
key
CODE · position 60
does
held to be on this layer
zmk
&trans
CapsWd
key
CapsWd · position 61
does
transparent: falls through to the layer below (Caps Word: the next word in capitals)
zmk
&trans
tmux OFF
key
F12 · position 62
does
transparent: falls through to the layer below (tmux: toggle nested OFF mode (pass keys to an inner tmux))
zmk
&trans
MEDIA
key
MEDIA · position 63
does
transparent: falls through to the layer below (hold for layer 3 (MEDIA))
zmk
&trans
Hold the right thumb's CODE key. Brackets, digraphs and snippets; ▏ is where the cursor ends up.
layer 3 · MEDIArdlu/sofleii @ 982d0b3
F14Caffeine
key
` · position 0
sends
F14→XF86Launch5
does
Caffeine on/off
bind
niri: spawn "~/.local/bin/caffeine"
from
niri/dot-config/niri/binds.kdl:318
zmk
&kp F14
F15DND
key
1 · position 1
sends
F15→XF86Launch6
does
Do not disturb on/off
bind
niri: spawn "noctalia" "msg" "notification-dnd-toggle"
from
niri/dot-config/niri/binds.kdl:319
zmk
&kp F15
F16Bluetooth
key
2 · position 2
sends
F16→XF86Launch7
does
Bluetooth on/off
bind
niri: spawn "rfkill" "toggle" "bluetooth"
from
niri/dot-config/niri/binds.kdl:320
zmk
&kp F16
F17Control center
key
3 · position 3
sends
F17→XF86Launch8
does
Control center
bind
niri: spawn "noctalia" "msg" "panel-toggle" "control-center"
from
niri/dot-config/niri/binds.kdl:321
zmk
&kp F17
F18Emoji
key
4 · position 4
sends
F18→XF86Launch9
does
Emoji picker
bind
niri: spawn "noctalia" "msg" "panel-toggle" "launcher" "/emo"
from
niri/dot-config/niri/binds.kdl:322
zmk
&kp F18
F19Clipboard
key
5 · position 5
sends
F19
does
Clipboard history
bind
niri: spawn "noctalia" "msg" "panel-toggle" "clipboard"
from
niri/dot-config/niri/binds.kdl:323
zmk
&kp F19
Vol+Vol +
key
joystick ↑ · position 6
sends
XF86AudioRaiseVolume
does
Vol + (wpctl)
bind
niri: spawn "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%+"
from
niri/dot-config/niri/binds.kdl:56
zmk
&kp C_VOL_UP
6
key
6 · position 7
does
transparent: falls through to the layer below
zmk
&trans
7
key
7 · position 8
does
transparent: falls through to the layer below
zmk
&trans
8
key
8 · position 9
does
transparent: falls through to the layer below
zmk
&trans
9
key
9 · position 10
does
transparent: falls through to the layer below
zmk
&trans
0
key
0 · position 11
does
transparent: falls through to the layer below
zmk
&trans
-
key
- · position 12
does
transparent: falls through to the layer below
zmk
&trans
Tab
key
Tab · position 13
does
transparent: falls through to the layer below
zmk
&trans
Q
key
Q · position 14
does
transparent: falls through to the layer below
zmk
&trans
◆Bri+Ext bri +
key
W · position 15
sends
Super+XF86MonBrightnessUp
does
External monitor brightness up
bind
niri: spawn "~/.local/bin/ext-brightness" "+10" · works on the lock screen
from
niri/dot-config/niri/binds.kdl:64
zmk
&kp LG(C_BRI_UP)
Bri+Bright +
key
E · position 16
sends
XF86MonBrightnessUp
does
Bright + (brightnessctl)
bind
niri: spawn "brightnessctl" "-q" "-c" "backlight" "set" "5%+"
from
niri/dot-config/niri/binds.kdl:61
zmk
&kp C_BRI_UP
R
key
R · position 17
does
transparent: falls through to the layer below
zmk
&trans
F24Power menu
key
T · position 18
sends
F24
does
Menu Power
bind
niri: spawn "~/.local/bin/rodii-power-menu"
from
niri/dot-config/niri/binds.kdl:324
zmk
&kp F24
Vol−Vol −
key
joystick ↓ · position 19
sends
XF86AudioLowerVolume
does
Vol − (wpctl)
bind
niri: spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"
from
niri/dot-config/niri/binds.kdl:57
zmk
&kp C_VOL_DN
Y
key
Y · position 20
does
transparent: falls through to the layer below
zmk
&trans
U
key
U · position 21
does
transparent: falls through to the layer below
zmk
&trans
I
key
I · position 22
does
transparent: falls through to the layer below
zmk
&trans
O
key
O · position 23
does
transparent: falls through to the layer below
zmk
&trans
P
key
P · position 24
does
transparent: falls through to the layer below
zmk
&trans
=
key
= · position 25
does
transparent: falls through to the layer below
zmk
&trans
Esc
key
Esc · position 26
does
transparent: falls through to the layer below
zmk
&trans
A
key
A · position 27
does
transparent: falls through to the layer below
zmk
&trans
◆Bri−Ext bri -
key
S · position 28
sends
Super+XF86MonBrightnessDown
does
External monitor brightness down
bind
niri: spawn "~/.local/bin/ext-brightness" "-10" · works on the lock screen
from
niri/dot-config/niri/binds.kdl:65
zmk
&kp LG(C_BRI_DN)
Bri−Bright −
key
D · position 29
sends
XF86MonBrightnessDown
does
Bright − (brightnessctl)
bind
niri: spawn "brightnessctl" "-q" "-c" "backlight" "--min-value=1%" "set" "5%-"
from
niri/dot-config/niri/binds.kdl:62
zmk
&kp C_BRI_DN
Del
key
F · position 30
sends
Delete
zmk
&kp DEL
G
key
G · position 31
does
transparent: falls through to the layer below
zmk
&trans
PlayPlay / pause
key
joystick ← · position 32
sends
XF86AudioPlay
does
Play / pause (playerctl)
bind
niri: spawn-sh "playerctl play-pause"
from
niri/dot-config/niri/binds.kdl:68
zmk
&kp C_PP
Vol−Vol −
key
H · position 33
sends
XF86AudioLowerVolume
does
Vol − (wpctl)
bind
niri: spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"
from
niri/dot-config/niri/binds.kdl:57
zmk
&kp C_VOL_DN
Vol+Vol +
key
J · position 34
sends
XF86AudioRaiseVolume
does
Vol + (wpctl)
bind
niri: spawn "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%+"
from
niri/dot-config/niri/binds.kdl:56
zmk
&kp C_VOL_UP
PlayPlay / pause
key
K · position 35
sends
XF86AudioPlay
does
Play / pause (playerctl)
bind
niri: spawn-sh "playerctl play-pause"
from
niri/dot-config/niri/binds.kdl:68
zmk
&kp C_PP
Stop
key
L · position 36
sends
XF86AudioStop
zmk
&kp C_STOP
;
key
; · position 37
does
transparent: falls through to the layer below
zmk
&trans
'
key
' · position 38
does
transparent: falls through to the layer below
zmk
&trans
\
key
\ · position 39
does
transparent: falls through to the layer below
zmk
&trans
Z
key
Z · position 40
does
transparent: falls through to the layer below
zmk
&trans
X
key
X · position 41
does
transparent: falls through to the layer below
zmk
&trans
C
key
C · position 42
does
transparent: falls through to the layer below
zmk
&trans
V
key
V · position 43
does
transparent: falls through to the layer below
zmk
&trans
F21Touchpad
key
B · position 44
sends
F21→XF86TouchpadToggle
does
Touchpad on/off
bind
niri: spawn "~/.local/bin/touchpad-toggle" · works on the lock screen
from
niri/dot-config/niri/binds.kdl:302
zmk
&kp F21
NextNext
key
joystick → · position 45
sends
XF86AudioNext
does
Next (playerctl)
bind
niri: spawn-sh "playerctl next"
from
niri/dot-config/niri/binds.kdl:66
zmk
&kp C_NEXT
F20Mic mute
key
N · position 46
sends
F20→XF86AudioMicMute
does
Mic mute (wpctl)
bind
niri: spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"
from
niri/dot-config/niri/binds.kdl:59
zmk
&kp F20
MuteMute
key
M · position 47
sends
XF86AudioMute
does
Mute (wpctl)
bind
niri: spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"
from
niri/dot-config/niri/binds.kdl:58
zmk
&kp C_MUTE
PrevPrev
key
, · position 48
sends
XF86AudioPrev
does
Prev (playerctl)
bind
niri: spawn-sh "playerctl previous"
from
niri/dot-config/niri/binds.kdl:69
zmk
&kp C_PREV
NextNext
key
. · position 49
sends
XF86AudioNext
does
Next (playerctl)
bind
niri: spawn-sh "playerctl next"
from
niri/dot-config/niri/binds.kdl:66
zmk
&kp C_NEXT
/
key
/ · position 50
does
transparent: falls through to the layer below
zmk
&trans
⏎
key
⏎ · position 51
does
transparent: falls through to the layer below
zmk
&trans
Mute
key
encoder press · position 52
does
transparent: falls through to the layer below (Mute (wpctl))
zmk
&trans
SYS|NUM
key
SYS|NUM · position 53
does
transparent: falls through to the layer below (hold for layer 4 (SYS|NUM))
zmk
&trans
F11
key
F11 · position 54
does
transparent: falls through to the layer below
zmk
&trans
◆
key
◆ · position 55
does
transparent: falls through to the layer below
zmk
&trans
NAV
key
NAV · position 56
does
transparent: falls through to the layer below (hold for layer 1 (NAV))
zmk
&trans
⌫
key
⌫ · position 57
does
transparent: falls through to the layer below
zmk
&trans
MuteMute
key
joystick press · position 58
sends
XF86AudioMute
does
Mute (wpctl)
bind
niri: spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"
from
niri/dot-config/niri/binds.kdl:58
zmk
&kp C_MUTE
Space
key
Space · position 59
does
transparent: falls through to the layer below
zmk
&trans
CODE
key
CODE · position 60
does
transparent: falls through to the layer below (hold for layer 2 (CODE))
zmk
&trans
CapsWd
key
CapsWd · position 61
does
transparent: falls through to the layer below (Caps Word: the next word in capitals)
zmk
&trans
tmux OFF
key
F12 · position 62
does
transparent: falls through to the layer below (tmux: toggle nested OFF mode (pass keys to an inner tmux))
zmk
&trans
MEDIA
key
MEDIA · position 63
does
held to be on this layer
zmk
&trans
Hold the right thumb's outer key. Volume, playback and brightness (wpctl, playerctl, brightnessctl; W/S: external monitor); F20 mic mute, B touchpad on/off; the number row and T are spare keys bound in binds.kdl.
layer 4 · SYS|NUMrdlu/sofleii @ 982d0b3
BT clr
key
` · position 0
does
forget the selected Bluetooth profile's host
zmk
&bt BT_CLR
BT 1
key
1 · position 1
does
select Bluetooth profile 1
zmk
&bt BT_SEL 0
BT 2
key
2 · position 2
does
select Bluetooth profile 2
zmk
&bt BT_SEL 1
BT 3
key
3 · position 3
does
select Bluetooth profile 3
zmk
&bt BT_SEL 2
BT 4
key
4 · position 4
does
select Bluetooth profile 4
zmk
&bt BT_SEL 3
BT 5
key
5 · position 5
does
select Bluetooth profile 5
zmk
&bt BT_SEL 4
Ptr ↑
key
joystick ↑ · position 6
does
move the mouse pointer
zmk
&mmv MOVE_UP
NumLk
key
6 · position 7
sends
Num Lock
zmk
&kp KP_NUM
7
key
7 · position 8
sends
keypad 7
zmk
&kp KP_N7
8
key
8 · position 9
sends
keypad 8
zmk
&kp KP_N8
9
key
9 · position 10
sends
keypad 9
zmk
&kp KP_N9
-
key
0 · position 11
sends
keypad -
zmk
&kp KP_MINUS
CalcCalc
key
- · position 12
sends
XF86Calculator
does
Calculator
bind
niri: spawn "gnome-calculator"
from
niri/dot-config/niri/binds.kdl:297
zmk
&kp C_AL_CALC
Bri+
key
Tab · position 13
does
brightness up (+8, max 60) (zmk-rgb-layer, not the keymap)
zmk
&none
Sat+
key
Q · position 14
does
underglow: RGB_SAI
zmk
&rgb_ug RGB_SAI
Hue+
key
W · position 15
does
underglow: RGB_HUI
zmk
&rgb_ug RGB_HUI
FX+
key
E · position 16
does
underglow: RGB_EFF
zmk
&rgb_ug RGB_EFF
Back
key
R · position 17
does
mouse button MB4
zmk
&mkp MB4
Fwd
key
T · position 18
does
mouse button MB5
zmk
&mkp MB5
Ptr ↓
key
joystick ↓ · position 19
does
move the mouse pointer
zmk
&mmv MOVE_DOWN
/
key
Y · position 20
sends
keypad /
zmk
&kp KP_SLASH
4
key
U · position 21
sends
keypad 4
zmk
&kp KP_N4
5
key
I · position 22
sends
keypad 5
zmk
&kp KP_N5
6
key
O · position 23
sends
keypad 6
zmk
&kp KP_N6
+
key
P · position 24
sends
keypad +
zmk
&kp KP_PLUS
SysRq
key
= · position 25
sends
Alt+SysRq, Alt held
does
kernel Magic SysRq: keep holding, tap a command letter; kernel.sysrq decides which work (16, the systemd default: S, sync, only)
bind
macro SYSRQ
zmk
&SYSRQ
Bri−
key
Esc · position 26
does
brightness down (−8, min 4) (zmk-rgb-layer, not the keymap)
zmk
&none
Sat−
key
A · position 27
does
underglow: RGB_SAD
zmk
&rgb_ug RGB_SAD
Hue−
key
S · position 28
does
underglow: RGB_HUD
zmk
&rgb_ug RGB_HUD
FX−
key
D · position 29
does
underglow: RGB_EFR
zmk
&rgb_ug RGB_EFR
L click
key
F · position 30
does
mouse button LCLK
zmk
&mkp LCLK
R click
key
G · position 31
does
mouse button RCLK
zmk
&mkp RCLK
Ptr ←
key
joystick ← · position 32
does
move the mouse pointer
zmk
&mmv MOVE_LEFT
*
key
H · position 33
sends
keypad *
zmk
&kp KP_ASTERISK
1
key
J · position 34
sends
keypad 1
zmk
&kp KP_N1
2
key
K · position 35
sends
keypad 2
zmk
&kp KP_N2
3
key
L · position 36
sends
keypad 3
zmk
&kp KP_N3
⏎
key
; · position 37
sends
keypad Enter
zmk
&kp KP_ENTER
'
key
' · position 38
does
transparent: falls through to the layer below
zmk
&trans
RGB ⏻
key
\ · position 39
does
underglow: RGB_TOG
zmk
&rgb_ug RGB_TOG
Dark
key
Z · position 40
does
BASE mood: underglow off (zmk-rgb-layer, not the keymap)
zmk
&none
Dim
key
X · position 41
does
BASE mood: solid dim teal (zmk-rgb-layer, not the keymap)
zmk
&none
FX
key
C · position 42
does
BASE mood: step through breathe, spectrum, swirl (zmk-rgb-layer, not the keymap)
zmk
&none
M click
key
V · position 43
does
mouse button MCLK
zmk
&mkp MCLK
◆⌥LLock
key
B · position 44
sends
Super+Alt+L
does
Lock the Screen
bind
niri: spawn "loginctl" "lock-session"
from
niri/dot-config/niri/binds.kdl:21
zmk
&kp LG(LA(L))
Ptr →
key
joystick → · position 45
does
move the mouse pointer
zmk
&mmv MOVE_RIGHT
=
key
N · position 46
sends
keypad =
zmk
&kp KP_EQUAL
0
key
M · position 47
sends
keypad 0
zmk
&kp KP_N0
,
key
, · position 48
sends
,
zmk
&kp COMMA
.
key
. · position 49
sends
keypad .
zmk
&kp KP_DOT
%
key
/ · position 50
sends
%
zmk
&kp PERCENT
⏎
key
⏎ · position 51
does
transparent: falls through to the layer below
zmk
&trans
Mute
key
encoder press · position 52
does
transparent: falls through to the layer below (Mute (wpctl))
zmk
&trans
SYS|NUM
key
SYS|NUM · position 53
does
held to be on this layer
zmk
&trans
F11
key
F11 · position 54
does
transparent: falls through to the layer below
zmk
&trans
◆
key
◆ · position 55
does
transparent: falls through to the layer below
zmk
&trans
NAV
key
NAV · position 56
does
transparent: falls through to the layer below (hold for layer 1 (NAV))
zmk
&trans
⌫
key
⌫ · position 57
does
transparent: falls through to the layer below
zmk
&trans
L click
key
joystick press · position 58
does
mouse button LCLK
zmk
&mkp LCLK
Space
key
Space · position 59
does
transparent: falls through to the layer below
zmk
&trans
CODE
key
CODE · position 60
does
transparent: falls through to the layer below (hold for layer 2 (CODE))
zmk
&trans
CapsWd
key
CapsWd · position 61
does
transparent: falls through to the layer below (Caps Word: the next word in capitals)
zmk
&trans
tmux OFF
key
F12 · position 62
does
transparent: falls through to the layer below (tmux: toggle nested OFF mode (pass keys to an inner tmux))
zmk
&trans
→ GAME?
key
MEDIA · position 63
does
switch to layer 5 (GAME?)
zmk
&to 5
Hold the left thumb's outer key. Bluetooth, underglow and the mouse on the left, a numpad on the right; lock on B, Calculator top right, SysRq under it.