Skip to content

Files

xremap

Config file for xremap

Table of Contents

Information

Table

Key nameXmodmapkeycodeinput-event-codes.hused for
left shiftShift_L42KEY_LEFTSHIFTshift (xkb)
right shiftShift_R54KEY_RIGHTSHIFTshift (xkb)
left ctrlControl_L29KEY_LEFTCTRLcontrol (xkb)
right ctrlControl_R97KEY_RIGHTCTRLcontrol (xkb)
left altAlt_L56KEY_LEFTALTmod1 (xkb)
right altISO_Level3_Shift100KEY_RIGHTALTmod5 (xkb)
win/super/metaSuper_L125KEY_LEFTMETAmod4 (xkb)
???Super_R126KEY_RIGHTMETAmod4 (xkb)
???Hyper_L??????????
F13XF86Tools183KEY_F13apostrophe
F14XF86Launch5184KEY_F14microphone
F15XF86Launch6185KEY_F15volume
F16XF86Launch7186KEY_F16cut
F17XF86Launch8187KEY_F17copy
F18XF86Launch9188KEY_F18paste
F19-----189KEY_F19opacity
F20-----190KEY_F20backlit & underglow
F21-----191KEY_F21
F22-----192KEY_F22
F23-----193KEY_F23
F24-----194KEY_F24
Power buttonXF86PowerOff124KEY_POWERi3/sway mode_system

Fn keys

F13

Apostrophe - single/double quotes (xremap).

F14

Microphone (Oryx/QMK and xremap)

bindingdescription
F14mic- coarse
ctrl+F14mic+ coarse
shift+F14mic- fine
shift+ctrl+F14mic+ fine
meta+F14mic 50%
XF86AudioMicMutemic mute

F15

Volume (Oryx/QMK and xremap)

bindingdescription
F15vol- fine
ctrl+F15vol+ fine
meta+F15vol 50%

F16/F17/F18

Cut, copy, paste.

bindingdescription
F16cut
F17copy
F18paste

F19

Opacity (Oryx/QMK and xremap)

bindingdescription
F19stop IWT && opacity current dec
ctrl+F19stop IWT && opacity current inc
shift+F19stop IWT && opacity all dec
shift+ctrl+F19stop IWT && opacity all inc
meta+F19run IWT with –opacity 0.85

obs: IWT = inactive-windows-transparency.py

F20

Keyboard backlit and underglow LEDs

bindingdescription
F20keyboard backlit-
ctrl+F20keyboard backlit+
shift+F20@TBD: keyboard underglow-
shift+ctrl+F20@TBD: keyboard underglow+
meta+F20keyboard backlit on/off

F21

TBD (suggestion: monitor LED strip)

F22

TBD

F23

TBD

F24

TBD

Workspace navigation

bindingdescription
Super_L + {1,2,…,9,0}navigate to output #0
S-Super_L + {1,2,…,9,0}navigate to output #1
Super_R + {1,2,…,9,0}navigate to output #2

Move to workspace

bindingdescription
C-Super_L + {1,2,…,9,0}move to output #0
C-S-Super_L + {1,2,…,9,0}move to output #1
C-Super_R + {1,2,…,9,0}move to output #2

Keeb “misc” layer

bindingcategorydescription
Alt_R + asuperscriptª
Alt_R + osuperscriptº
Alt_R + pcurrency£
Alt_R + ecurrency
Alt_R + ycurrency
Alt_R + rcurrency
Alt_R + smacroaddress_1
Alt_R + tmacroaddress_2
Alt_R + cmacrozip_code
Alt_R + dmacrophone
Alt_R + nmacroemail_1
Alt_R + lmacroemail_2
Alt_R + umacroemail_3
Alt_R + hmacroname
Alt_R + imacroid

Modifiers

i3wm

virtual_modifiers:
  - Henkan
  - Muhenkan

Sway

virtual_modifiers:
  - F15

Shared

shared:

Terminals

terminals: &terminals
  - kitty
  - dropdown_terminal
  - dropdown_python

Scratchpads

scratchpads: &scratchpads
  - dropdown_terminal
  - dropdown_python
  - scrcpy
  - Brave-browser-beta
  - Keymapp
  - keymapp

Emacs over SSH

emacs-ssh: &emacs-ssh
  - "/.*: emacsclient --create-frame.* --alternate-editor=.*emacs.*/"
  - "/.*: emacsclient -c.* -a .*emacs.*/"
  - "/.*: ecd/"
  - "/.*: ec/"

Browsers

browsers: &browsers
  - "/brave.*/"
  - "/firefox.*/"
  - chromium

Cedilla

Obs.: Sway only

cedilla: &cedilla
  - "/brave.*/"
  - chromium

Keymap

keymap:

CPC: Copy/Paste/Cut

Terminal

- name: copy/paste/cut - terminal
  application:
    only: *terminals
  remap:
    F16: Ctrl-Shift-x
    F17: Ctrl-Shift-c
    F18: Ctrl-Shift-v

Default

- name: copy/paste/cut - general
  application:
    not: [Emacs, "/emacs.*/", libreoffice-calc]
  remap:
    F16: Ctrl-x
    F17: Ctrl-c
    F18: Ctrl-v

Emacs inhabitant

i3wm

- name: Emacs inhabitant
  exact_match: true
  application:
    not: [Emacs, "/emacs.*/"]
  remap:
    # window navigation
    Super_L-left:  { launch: ["bash", "-c", "$XDG_CONFIG_HOME/scripts/mouse-warp.sh left"] }
    Super_L-down:  { launch: ["bash", "-c", "$XDG_CONFIG_HOME/scripts/mouse-warp.sh down"] }
    Super_L-up:    { launch: ["bash", "-c", "$XDG_CONFIG_HOME/scripts/mouse-warp.sh up"] }
    Super_L-right: { launch: ["bash", "-c", "$XDG_CONFIG_HOME/scripts/mouse-warp.sh right"] }
    # fullscreen
    #Alt_L-Super_L-f:  { launch: ["bash", "-c", "i3-msg", "fullscreen", "toggle"] }
    Alt_L-Super_L-f:  { launch: ["i3-msg", "fullscreen", "toggle"] }
    # terminal
    #Alt_L-Super_L-t:  { launch: ["bash", "-c", "i3-msg", "exec", "kitty"] }
    Alt_L-Super_L-t:  { launch: ["i3-msg", "exec", "kitty"] }
    # kill window
    #Alt_L-Super_L-q:  { launch: ["bash", "-c", "i3-msg", "exec", "$XDG_CONFIG_HOME/scripts/hide-or-kill.sh"] }
    Alt_L-Super_L-q:  { launch: ["i3-msg", "exec", "$XDG_CONFIG_HOME/scripts/hide-or-kill.sh"] }

Sway

- name: Emacs inhabitant
  exact_match: true
  application:
    not: [Emacs, "/emacs.*/"]
  remap:
    # window navigation
    Super_L-left:  { launch: ["swaymsg", "focus", "left"] }
    Super_L-down:  { launch: ["swaymsg", "focus", "down"] }
    Super_L-up:    { launch: ["swaymsg", "focus", "up"] }
    Super_L-right: { launch: ["swaymsg", "focus", "right"] }
    # fullscreen
    Alt_L-Super_L-f:  { launch: ["swaymsg", "fullscreen", "toggle"] }
    # terminal
    Alt_L-Super_L-t:  { launch: ["swaymsg", "exec", "kitty"] }
    # kill window
    Alt_L-Super_L-q:  { launch: ["swaymsg", "exec", "$XDG_CONFIG_HOME/scripts/hide-or-kill.sh"] }

Emacs over SSH

Window navigation

- name: Window navigation
  exact_match: true
  application:
    only: kitty
  window:
    only: *emacs-ssh
  remap:
    Super_L-left:  [C-w, C-h]
    Super_L-down:  [C-w, C-j]
    Super_L-up:    [C-w, C-k]
    Super_L-right: [C-w, C-l]

Kitty

- name: delete next word
  application:
    only: kitty
  remap:
    Ctrl-Shift-Backspace: Ctrl-Delete

Browser

All

Previous tab

- name: Prev tab
  exact_match: true
  application:
    only: *browsers
  remap:
    Ctrl-space: Shift-Ctrl-Tab

Brave

Tab navigation with on forbidden pages (Surfingkeys)

- name: Prev/Next tab
  exact_match: true
  application:
    only: brave-browser
  window:
    only: ["better onetab - Brave", "Extensions - Brave", "chrome://newtab - Brave", "Chrome Web Store - Brave"]
  remap:
    Shift-N: Alt-Left        # go back
    Shift-E: Ctrl-Tab        # next tab
    Shift-I: Ctrl-Shift-Tab  # previous tab
    Shift-O: Alt-Right       # go forward
    Shift-X: Ctrl-Shift-T    # reopen tab

Cedilla

- name: cedilla
  application:
    only: *cedilla
  remap:
    F13:
      remap:
        c:       { launch: ["swaymsg", "exec", "sleep 0.1 && echo -n \"ç\" | wl-copy && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }
        Shift-c: { launch: ["swaymsg", "exec", "sleep 0.1 && echo -n \"Ç\" | wl-copy && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }

Dead acute

- name: forward char / dead_acute
  exact_match: true
  application:
    not: [Emacs, "/emacs.*/"]
  remap:

F13

F13:
  remap:

Apostrophe

# apostrophe
F13: [APOSTROPHE, SPACE]
space: [APOSTROPHE, SPACE]

Cedilla

# cedilla
c: [APOSTROPHE, c]
Shift-c: [APOSTROPHE, Shift-c]

Vowel lowercase

# lowercase vowels
a: [APOSTROPHE, a]
e: [APOSTROPHE, e]
i: [APOSTROPHE, i]
o: [APOSTROPHE, o]
u: [APOSTROPHE, u]

Vowel uppercase

# uppercase vowels
Shift-a: [APOSTROPHE, Shift-a]
Shift-e: [APOSTROPHE, Shift-e]
Shift-i: [APOSTROPHE, Shift-i]
Shift-o: [APOSTROPHE, Shift-o]
Shift-u: [APOSTROPHE, Shift-u]

Misc lowercase

# miscellaneous lowercase
n: [APOSTROPHE, SPACE, n]
m: [APOSTROPHE, SPACE, m]
r: [APOSTROPHE, SPACE, r]
s: [APOSTROPHE, SPACE, s]
t: [APOSTROPHE, SPACE, t]

Misc uppercase

# miscellaneous uppercase
Shift-n: [APOSTROPHE, SPACE, Shift-n]
Shift-m: [APOSTROPHE, SPACE, Shift-m]
Shift-r: [APOSTROPHE, SPACE, Shift-r]
Shift-s: [APOSTROPHE, SPACE, Shift-s]
Shift-t: [APOSTROPHE, SPACE, Shift-t]

Shift-F13

Shift-F13:
  remap:

Double quotes

# double quotes
F13: [Shift-APOSTROPHE, SPACE]
space: [Shift-APOSTROPHE, SPACE]
#Shift-F13: [Shift-APOSTROPHE, SPACE]

Tilde lowercase

# tilde lowercase
a: [Shift-GRAVE, a]
o: [Shift-GRAVE, o]
n: [Shift-GRAVE, n]

Tilde uppercase

# tilde uppercase
Shift-A: [Shift-GRAVE, Shift-A]
Shift-O: [Shift-GRAVE, Shift-O]
Shift-N: [Shift-GRAVE, Shift-N]

Tilde misc

# tilde miscellaneous
Shift-F13: [Shift-GRAVE, SPACE]
SLASH:     [Shift-GRAVE, SPACE, SLASH]
DOT:       [Shift-GRAVE, SPACE, SLASH, DOT]

Tilde paths

# tilde paths
g: [Shift-GRAVE, SPACE, SLASH, g,i,t, SLASH]
d: [Shift-GRAVE, SPACE, SLASH, g,i,t, SLASH, d,o,t,f,i,l,e,s, SLASH]
c: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH]
e: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH, e,m,a,c,s,minus,e,f,s, SLASH]
s: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH, s,c,r,i,p,t,s, SLASH]
v: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH, n,v,i,m, SLASH]
x: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH, x,r,e,m,a,p, SLASH]
w: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH, w,a,y,b,a,r, SLASH]
z: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH, z,s,h, SLASH]
i3wm/Sway
print('          i: [Shift-GRAVE, SPACE, SLASH, DOT, c,o,n,f,i,g, SLASH, ' + wm + ', SLASH]')

Emote navigation

Common

- name: navigate through emoji categories
  application:
    only: [emote, Emote]
  remap:
    Shift-N: Ctrl-Shift-Tab  # previous category
    Shift-O: Ctrl-Tab        # next category
    Shift-I: Ctrl-F          # focus search
    Ctrl-n:  left            # arrow left
    Ctrl-e:  down            # arrow down
    Ctrl-i:  up              # arrow up
    Ctrl-o:  right           # arrow right

Sway

# Enter; Ctrl+V
Enter: { launch: ["bash", "-c", "ydotool key 28:1 28:0 29:1 47:1 47:0 29:0"] }

Capslock

- name: toggle capslock status & update temp file (/tmp/capslock_status.tmp)
  remap:
    CAPSLOCK: { launch: ["swaymsg", "exec", "$XDG_CONFIG_HOME/scripts/capslock_status.sh toggle"] }

System control

Media

- name: media control
  remap:
    F15-esc:       { launch: ["bash", "-c", "amixer -q sset Master 0%"] }
    F15-space:     { launch: ["bash", "-c", "amixer -q sset Master 25%"] }
    F15-tab:       { launch: ["bash", "-c", "amixer -q sset Master 50%"] }
    F15-enter:     { launch: ["bash", "-c", "amixer -q sset Master 75%"] }
    F15-backspace: { launch: ["bash", "-c", "amixer -q sset Master 100%"] }

Scratchpad navigation

print('  - name: window navigation from scratchpads')
print('    application:')
print('      only: *scratchpads')
print('    remap:')
print('      Super-Left:  { launch: ["' + ipc_cmd + '", "focus", "output", "left"] }')
print('      Super-Right: { launch: ["' + ipc_cmd + '", "focus", "output", "right"] }')

Miscellaneous

Macros (terminal)

print('  - name: miscellaneous text - macros (terminal)')
print('    application:')
print('      only: *terminals')
print('    remap:')
print('      # macro')
print('      Alt_R-s: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/address_1)\\" | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-t: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/address_2)\\" | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-g: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/address_3)\\" | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-c: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/zip_code)\\"  | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-d: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/phone)\\"     | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-n: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/email_1)\\"   | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-l: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/email_2)\\"   | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-u: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/email_3)\\"   | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-h: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/name)\\"      | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-i: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"$(<$XDG_CONFIG_HOME/macros/id)\\"        | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')

Macros

print('  - name: miscellaneous text - macros')
print('    application:')
print('      not: *terminals')
print('    remap:')
print('      # macro')
print('      Alt_R-s: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/address_1 | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-t: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/address_2 | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-g: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/address_3 | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-c: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/zip_code  | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-d: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/phone     | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-n: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/email_1   | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-l: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/email_2   | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-u: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/email_3   | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-h: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/name      | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-i: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && cat $XDG_CONFIG_HOME/macros/id        | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')

Currency & superscript (terminal)

print('  - name: miscellaneous text - currency & superscript (terminal)')
print('    application:')
print('      only: *terminals')
print('    remap:')
print('      # currency')
print('      Alt_R-e: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"€\\"  | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-p: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\\\"  | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-y: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"¥\\" | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-r: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"₽\\"  | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      # superscript')
print('      Alt_R-a: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\\\"  | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')
print('      Alt_R-o: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\\\"  | ' + copy_cmd + ' && ydotool key 29:1 42:1 47:1 47:0 42:0 29:0"] }')

Currency & superscript

print('  - name: miscellaneous text - currency & superscript')
print('    application:')
print('      not: *terminals')
print('    remap:')
print('      # currency')
print('      Alt_R-e: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"€\\"  | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-p: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\\\"  | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-y: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"¥\\" | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-r: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\"₽\\"  | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      # superscript')
print('      Alt_R-a: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\\\"  | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')
print('      Alt_R-o: { launch: ["' + ipc_cmd + '", "exec", "sleep 0.1 && echo -n \\\\"  | ' + copy_cmd + ' && ydotool key 29:1 47:1 47:0 29:0"] }')

pdfpc

- name: presentation with pdfpc
  exact_match: true
  application:
    only: pdfpc
  remap:

Home row: RST

KEY_R: { launch: ["$XDG_CONFIG_HOME/scripts/obs-tools.py", "--scene", "camera"] }
KEY_S: KEY_1
KEY_T: { launch: ["$XDG_CONFIG_HOME/scripts/obs-tools.py", "--scene", "presentation"] }

Top row: WFP

KEY_W: { launch: ["$XDG_CONFIG_HOME/scripts/obs-tools.py", "--scene", "scene-4"] }
KEY_F: KEY_2
KEY_P: { launch: ["$XDG_CONFIG_HOME/scripts/obs-tools.py", "--scene", "scene-6"] }

Bottom row: XCD

KEY_X: { launch: ["$XDG_CONFIG_HOME/scripts/obs-tools.py", "--scene", "scene-7"] }
KEY_C: KEY_3
KEY_D: { launch: ["$XDG_CONFIG_HOME/scripts/obs-tools.py", "--scene", "scene-9"] }

Right column: BGV

KEY_B: { launch: ["$XDG_CONFIG_HOME/scripts/obs-tools.py", "--record"] }
KEY_G: KEY_MINUS
KEY_V: S-EQUAL

Right column: QAZ

KEY_Q: KEY_5
KEY_A: KEY_4
#KEY_Z:

Thumb cluster: Space, ESC, Tab

KEY_SPACE: KEY_DOWN
KEY_ESC: KEY_UP
#KEY_TAB:

LibreOffice

- name: LibreOffice custom bindings
  application:
    only: libreoffice-calc
  remap:

Navigation

Ctrl-n: left       # navigation
Ctrl-e: down       # navigation
Ctrl-i: up         # navigation
Ctrl-o: right      # navigation

Copy/paste/cut

F16: Ctrl-x        # cut
F17: Ctrl-Shift-c  # copy
F18: Ctrl-v        # paste

Tangle

i3

<<i3-modifiers>>

<<shared-common>>

<<keymap>>

<<cpc-terminal>>

<<cpc-emacs>>

<<cpc-default>>

<<i3-navigation>>

<<emacs>>

<<emacs-ssh>>

<<kitty>>

<<browsers>>

<<surfingkeys>>

<<dead-acute>>
<<dead-acute-i3sway(wm="i,\"3\"")>>

<<emote>>

<<control>>

<<scratchpad-navigation(ipc_cmd="i3-msg")>>
<<macros-terminal(ipc_cmd="i3-msg", copy_cmd="xclip -sel clip")>>
<<macros(ipc_cmd="i3-msg", copy_cmd="xclip -sel clip")>>
<<currency-superscript-terminal(ipc_cmd="i3-msg", copy_cmd="xclip -sel clip")>>
<<currency-superscript(ipc_cmd="i3-msg", copy_cmd="xclip -sel clip")>>

#<<pdfpc>>

<<libreoffice>>

Sway

<<sway-modifiers>>

<<shared-common>>
<<shared-sway>>

<<keymap>>

<<cpc-terminal>>

<<cpc-emacs>>

<<cpc-default>>

<<sway-navigation>>

<<emacs>>

<<emacs-ssh>>

<<kitty>>

<<browsers>>

<<surfingkeys>>

<<cedilla>>
<<dead-acute>>
<<dead-acute-i3sway(wm="s,w,a,y")>>

<<emote>>
<<emote-sway>>

<<capslock>>

<<control>>

<<scratchpad-navigation(ipc_cmd="swaymsg")>>
<<macros-terminal(ipc_cmd="swaymsg", copy_cmd="wl-copy")>>
<<macros(ipc_cmd="swaymsg", copy_cmd="wl-copy")>>
<<currency-superscript-terminal(ipc_cmd="swaymsg", copy_cmd="wl-copy")>>
<<currency-superscript(ipc_cmd="swaymsg", copy_cmd="wl-copy")>>

#<<pdfpc>>

<<libreoffice>>