# version 3.3, 2025-12-12


if-shell '[ #{client_height} -ge 35 ]' {
	bind-key Space { set -g status-left "${STATUS_LEFT}" ; display-menu -T 'command collection' \
		'Detach tmux client' d 'detach-client' \
		"Go (back) to the last active window (prefix: #{prefix})"  '' 'previous-window' \
		'Go one window to the left'  p 'previous-window' \
		'Go one window to the right'  n 'next-window' \
		'Create additional window'  c 'new-window' \
		'Rename window *'  A 'command-prompt "rename-window {%%}"' \
		'Change our escape / leader key / prefix'  '' { command-prompt -I 'C-' -p 'New escape / leader key / prefix:' -T search { set -g prefix %% ; display-message 'The new escape / leader key is: %%' ; bind-key C-%% last-window } } \
		"Change inner tmux's escape / leader key / prefix *"  'i' { command-prompt -I 'C-' -p 'New escape / leader key / prefix:' -T search { TMUXTMPVAR=%1 ; send-prefix ; send-keys : ; run-shell 'sleep 0.5' ; send-keys "set -g prefix ${TMUXTMPVAR} ; bind-key ${TMUXTMPVAR} last-window" enter ; set-environment -u TMUXTMPVAR } } \
		'Send prefix (enter the escape / leader key literally)'  'a' 'send-prefix' \
		'List windows (this session only; with ID and pane count)' '' 'list-windows' \
		'Move current window to the left'  Left  'swap-window -d -t -1' \
		'Move current window to the right' Right 'swap-window -d -t +1' \
		'Set window size to smallest client *' 's' 'resize-window -a' \
		'Set window size to largest client *' 'l' 'resize-window -A' \
		'Set window size to safe for serial console (79×24) *' 'v' 'resize-window -x 79 -y 24' \
		'Switch to copy mode and go back (PageUp)'  'PageUp' 'copy-mode' \
		'Popup window with shell (exit with <Esc>) *'  'M-w' 'display-popup' \
		'Start inner tmux (input shell code without execution)' '' 'send-keys env Space TMUX= Space TMUX_PANE= Space tmux Space -L Space inner-tmux Space new-session Space \\\; Space set Space -g Space prefix Space C - a' \
		'' \
		'Session menu *' C-s 'display-message "Must be opened directly with: #{prefix} C-s"' \
		'Pane menu *' C-p 'display-message "Must be opened directly with: #{prefix} C-p"' \
		'Copy mode & buffer menu *' C-y 'display-message "Must be opened directly with: #{prefix} C-y"' \
		'Control character menu (Enter)' '' 'display-message "Must be opened directly with: #{prefix} Enter"' \
		'Escape sequence menu (Backspace)' '' 'display-message "Must be opened directly with: #{prefix} Backspace"' \
		'Unicode input / wrong keyboard layout: U Enter (two keys)' '' 'display-message "Must be opened directly with: #{prefix} U Enter"' \
		'' \
		'Kill pane' x 'confirm-before -p "kill-pane #P? (y/n)" kill-pane' \
		'Kill window' & 'confirm-before -p "kill-window #W? (y/n)" kill-window' \
		'Kill session' '' 'confirm-before -p "kill-session #S? (y/n)" kill-session' \
		'Kill server' '' 'confirm-before -p "kill-server? (y/n)" kill-server' \
		'Lock client' '' 'lock-client' \
		'Reload config file *' 'r' "source-file ~/.tmux.conf ; attach-session -t #{session_name}" \
		'Command prompt' : 'command-prompt'
	}
} {
	bind-key Space { set -g status-left "${STATUS_LEFT}" ; display-menu -T 'command collection' \
		'Detach tmux client' d 'detach-client' \
		'Go one window to the left'  p 'previous-window' \
		'Go one window to the right'  n 'next-window' \
		'Create additional window'  c 'new-window' \
		'Change the escape / leader key / prefix'  '' { command-prompt -I 'C-' -p 'New escape / leader key / prefix:' -T search { set -g prefix %% ; display-message 'The new escape / leader key is: %%' ; bind-key C-%% last-window } } \
		'Send prefix (enter escape / leader key literally)'  '' 'send-prefix' \
		'Set window size to smallest client' '' 'resize-window -a' \
		'Set window size to largest client' '' 'resize-window -A' \
		'Set window size to safe for serial console (79×24)' '' 'resize-window -x 79 -y 24' \
		'' \
		'Kill server' '' 'confirm-before -p "kill-server? (y/n)" kill-server' \
		'Reload config file' '' "source-file ~/.tmux.conf ; attach-session -t #{session_name}" \
		'Command prompt' : 'command-prompt'
   	}
}

if-shell '[ #{client_height} -ge 30 ]' {
	bind-key C-p display-menu -T 'Pane commands' \
		' ----- Change pane status ----- ' '' '' \
		'Zoom pane in/out' z 'resize-pane -Z' \
		'(Un)Mark the current pane' m 'select-pane -m' \
		'Enable/disable input *' e 'select-pane -#{?pane_input_off,e,d}' \
		'Enable/disable synced input *' s 'set-option -p synchronize-panes #{?pane_synchronized,off,on}' \
		'Enable synced input for all panes *' a \
'select-pane -t .0 ; set -p synchronize-panes on ; '\
'select-pane -t .1 ; set -p synchronize-panes on ; '\
'select-pane -t .2 ; set -p synchronize-panes on ; '\
'select-pane -t .3 ; set -p synchronize-panes on ; '\
'select-pane -t .4 ; set -p synchronize-panes on ; '\
'select-pane -t .5 ; set -p synchronize-panes on ; '\
'select-pane -t .6 ; set -p synchronize-panes on ; '\
'select-pane -t .7 ; set -p synchronize-panes on ; '\
'select-pane -t .8 ; set -p synchronize-panes on ; '\
'select-pane -t .9 ; set -p synchronize-panes on' \
		'Disable synced input for all panes *' n \
'select-pane -t .0 ; set -p synchronize-panes off ; '\
'select-pane -t .1 ; set -p synchronize-panes off ; '\
'select-pane -t .2 ; set -p synchronize-panes off ; '\
'select-pane -t .3 ; set -p synchronize-panes off ; '\
'select-pane -t .4 ; set -p synchronize-panes off ; '\
'select-pane -t .5 ; set -p synchronize-panes off ; '\
'select-pane -t .6 ; set -p synchronize-panes off ; '\
'select-pane -t .7 ; set -p synchronize-panes off ; '\
'select-pane -t .8 ; set -p synchronize-panes off ; '\
'select-pane -t .9 ; set -p synchronize-panes off' \
		' ----- Add/remove panes ----- ' '' '' \
		'Add pane to the right' \% 'split-window -h' \
		'Add pane below' \" 'split-window' \
		'Go to neighbour pane (arrow left/up/right/down)' '' 'display-message "Must be run directly with: #{prefix} <arrow key>"' \
		'Go to next pane' '' 'select-pane -t "{next}"' \
		'Kill pane' x 'confirm-before -p "kill-pane #P? (y/n)" kill-pane' \
		'join marked pane to the right *' j 'join-pane -h' \
		'join marked pane below' '' 'join-pane -v' \
		'Move pane to new window' ! 'break-pane' \
		' ----- Change pane position / layout ----- ' '' '' \
		'Swap pane with the marked one' '' 'swap-pane' \
		'Rotate panes' C-o 'rotate-window' \
		'Layout even-horizontal' M-1 'select-layout even-horizontal' \
		'Layout even-vertical'   M-2 'select-layout even-vertical' \
		'Layout main-horizontal' M-3 'select-layout main-horizontal' \
		'Layout main-vertical'   M-4 'select-layout main-vertical' \
		'Layout tiled'           M-5 'select-layout tiled' \
		'' \
		'List panes (in all sessions, with ID and TTY)' '' {
			list-panes -a -F "##{p-10:session_name}:##{window_index}.##{pane_index}  pane ID: ##{p3:pane_id}  TTY: ##{p11:pane_tty}##{?pane_active, (active), (inactive)}"
			} \
		'Find pane with a certain tty'   '' "command-prompt -I /dev/ -p 'Show pane with this terminal device: '   'list-panes -a -f \"##{==:##{pane_tty},%%}\" -F \"##{p-10:session_name}:##{window_index}.##{pane_index}  pane ID: ##{p3:pane_id}  TTY: ##{p11:pane_tty}##{?pane_active, (active), (inactive)}\"'" \
		'Display pane indexes (not the IDs!)' q 'display-panes'
} {
	bind-key C-p display-menu -T 'Pane commands (short version)' \
		' ----- Change pane status ----- ' '' '' \
		'Zoom pane in/out' z 'resize-pane -Z' \
		'(Un)Mark the current pane' m 'select-pane -m' \
		'Enable/disable synced input *' s 'set-option -p synchronize-panes #{?pane_synchronized,off,on}' \
		' ----- Add/remove panes ----- ' '' '' \
		'Add pane to the right (below: ")' \% 'split-window -h' \
		'Go to next pane' '' 'select-pane -t "{next}"' \
		'Kill pane' x 'confirm-before -p "kill-pane #P? (y/n)" kill-pane' \
		'join marked pane to the right *' j 'join-pane -h' \
		'Move pane to new window' ! 'break-pane' \
		' ----- Change pane position / layout ----- ' '' '' \
		'Swap pane with the marked one' '' 'swap-pane' \
		'Rotate panes' C-o 'rotate-window' \
		'List panes (in all sessions, with ID and TTY)' '' {
			list-panes -a -F "##{p-10:session_name}:##{window_index}.##{pane_index}  pane ID: ##{p3:pane_id}  TTY: ##{p11:pane_tty}##{?pane_active, (active), (inactive)}"
			}
}

bind-key C-s display-menu -T 'Session commands' \
	'List sessions *'  l 'list-sessions' \
	'Show session tree' w 'choose-tree -Zw' \
	'New session' '' 'command-prompt { new-session -s "%%" }' \
	'Rename session' & 'command-prompt -I "#S" { rename-session "%%" }' \
	'Kill session' '' 'confirm-before -p "kill-session #S? (y/n)" kill-session' \
	'' '' '' \
	'     Switch to another session' '' '' \
	'Switch to previous session' ( 'switch-client -p' \
	'Switch to next session' ) 'switch-client -n' \
	'Switch to next session *' C-s 'switch-client -n' \
	'Switch to other session' '' 'command-prompt -T target { switch-client -t "%%" }' \
	'' '' '' \
	'Convert current session to group (for independent sharing)' '' "new-session -A -s #{session_name}2 -t #{session_name} " \
	'Link the current window to another session' '' 'command-prompt -T target { link-window -t "%%" }' \
	'Unlink window from this session *' C-u 'unlink-window'


bind-key C-y display-menu -T 'Copy & Paste' \
	'Switch to copy mode'  '[' 'copy-mode' \
	'Switch to copy mode and go back (PageUp)'  'PageUp' 'copy-mode' \
	'Choose buffer'  '=' 'choose-buffer -Z' \
	'Rename buffer'  r { command-prompt -I buffer,'' -T search -p 'old buffer name:','old buffer name:' { set-buffer -b "%%" -n "%2" } } \
	'Show current buffer name'  c 'display-message "current buffer: #{buffer_name}"' \
	'Paste current buffer'  v 'paste-buffer -p' \
	' ----- mark / copy (vi mode keys) ----- ' '' '' \
	'Begin selection'  Space 'display-message "This command works in copy mode only (part of the menu for showing the key binding only)"' \
	'Copy selection and exit copy mode (Enter)' '' 'display-message "This command works in copy mode only (part of the menu for showing the key binding only)"' \
	'Copy selection and stay in copy mode *'  y 'display-message "This command works in copy mode only (part of the menu for showing the key binding only)"' \
	'Exit copy mode (q / Esc)'  q 'cancel'

bind-key -T copy-mode-vi C-y display-menu -T 'Copy mode keys (vi mode)' \
	'Begin selection'  Space 'send-keys -X begin-selection' \
	'Copy selection and exit copy mode (Enter)'  '' 'send-keys -X copy-selection-and-cancel' \
	'Copy selection and stay in copy mode *'  y 'send-keys -X copy-selection' \
	'Clear selection'  Escape 'send-keys -X copy-selection' \
	'Exit copy mode'  q 'cancel'

bind-key -T copy-mode-vi y 'send-keys -X copy-selection'

if-shell '[ #{client_height} -ge 40 ]' {
	bind-key Enter display-menu -T 'inserting control characters' \
		'exit virsh console / telnet (^])' ] 'send-keys ^]' \
		'exit qm terminal (^O)' o 'send-keys ^O' \
		'abort SSH connection (\n ~ .)' \~ 'send-keys ^J \~ .' \
		'detach docker (^P ^Q)' '' 'send-keys ^P ^Q' \
		'exit picocom (^A ^X)' '' 'send-keys ^A ^X' \
		'' \
		'tab: (^I)' i 'send-keys ^I' \
		'backspace: (^H)' h 'send-keys ^H' \
		'linefeed / newline: \n (^J)' j 'send-keys ^J' \
		'carriage return: \r (^M)' m 'send-keys ^M' \
		'' \
		'SIGINT: (^C)' c 'send-keys ^C' \
		"SIGQUIT: (^\\)" "\\" "send-keys -H 0x1c" \
		'suspend foreground process(es): (^Z)' z 'send-keys ^Z' \
		'end of file: (^D)' d 'send-keys ^D' \
		'flow control XOFF: (^S)' s 'send-keys ^S' \
		'flow control XON: (^Q)' q 'send-keys ^Q' \
		'input next character literally: (^V)' v 'send-keys ^V' \
		'' \
		'record separator: (^^)' ^ 'send-keys ^^' \
		'unit separator: (^_)' _ 'send-keys ^_' \
		"file separator: (^\\)" "\\" "send-keys -H 0x1c" \
		'NUL: (^@)' @ 'send-keys ^@' \
		'Escape: (\e / ^[)' [ 'send-keys Escape' \
		'' \
		'Ctrl-a: (^A)' a 'send-keys ^A' \
		'Ctrl-b: (^B)' b 'send-keys ^B' \
		'Ctrl-e: (^E)' e 'send-keys ^E' \
		'Ctrl-f: (^F)' f 'send-keys ^F' \
		'Ctrl-g: (^G)' g 'send-keys ^G' \
		'Ctrl-k: (^K)' k 'send-keys ^K' \
		'Ctrl-l: (^L)' l 'send-keys ^L' \
		'Ctrl-n: (^N)' n 'send-keys ^N' \
		'Ctrl-p: (^P)' p 'send-keys ^P' \
		'Ctrl-r: (^R)' r 'send-keys ^R' \
		'Ctrl-t: (^T)' t 'send-keys ^T' \
		'Ctrl-u: (^U)' u 'send-keys ^U' \
		'Ctrl-w: (^W)' w 'send-keys ^W' \
		'Ctrl-x: (^X)' x 'send-keys ^X' \
		'Ctrl-y: (^Y)' y 'send-keys ^Y'
} {
	bind-key Enter display-menu -T 'inserting control characters (short version)' \
		'exit virsh console / telnet (^])' ] 'send-keys ^]' \
		'exit qm terminal (^O)' o 'send-keys ^O' \
		'abort SSH connection (\n ~ .)' \~ 'send-keys ^J \~ .' \
		'detach docker (^P ^Q)' '' 'send-keys ^P ^Q' \
		'exit picocom (^A ^X)' '' 'send-keys ^A ^X' \
		'' \
		'tab: (^I)' i 'send-keys ^I' \
		'backspace: (^H)' h 'send-keys ^H' \
		'linefeed / newline: \n (^J)' j 'send-keys ^J' \
		'carriage return: \r (^M)' m 'send-keys ^M' \
		'' \
		'SIGINT: (^C)' c 'send-keys ^C' \
		"SIGQUIT: (^\\)" "\\" "send-keys -H 0x1c" \
		'suspend foreground process(es): (^Z)' z 'send-keys ^Z' \
		'end of file: (^D)' d 'send-keys ^D' \
		'flow control XOFF: (^S)' s 'send-keys ^S' \
		'flow control XON: (^Q)' q 'send-keys ^Q' \
		'input next character literally: (^V)' v 'send-keys ^V' \
		'' \
		'record separator: (^^)' ^ 'send-keys ^^' \
		'unit separator: (^_)' _ 'send-keys ^_' \
		"file separator: (^\\)" "\\" "send-keys -H 0x1c" \
		'NUL: (^@)' @ 'send-keys ^@' \
		'Escape: (\e / ^[)' [ 'send-keys Escape'
}

bind-key BSpace display-menu -T 'inserting escape sequence' \
	'F1:  (\eOP)'   1  'send-keys Escape O P' \
	'F2:  (\eOQ)'   2  'send-keys Escape O Q' \
	'F3:  (\eOR)'   3  'send-keys Escape O R' \
	'F4:  (\eOS)'   4  'send-keys Escape O S' \
	'F5:  (\e[15~)' 5  'send-keys Escape [ 1 5 ~' \
	'F6:  (\e[17~)' 6  'send-keys Escape [ 1 7 ~' \
	'F7:  (\e[18~)' 7  'send-keys Escape [ 1 8 ~' \
	'F8:  (\e[19~)' 8  'send-keys Escape [ 1 9 ~' \
	'F9:  (\e[20~)' 9  'send-keys Escape [ 2 0 ~' \
	'F10: (\e[21~)' 0  'send-keys Escape [ 2 1 ~' \
	'F11: (\e[23~)' '' 'send-keys Escape [ 2 3 ~' \
	'F12: (\e[24~)' '' 'send-keys Escape [ 2 4 ~'

bind-key X display-menu -T 'inserting keys (with wrong keyboard layout): shell' \
	' / : paths: ls -l /var/log' '' 'send-keys /' \
	' - : options: ls -l' '' 'send-keys -' \
	' * : dynamic globbing: ls -l *.txt' '' 'send-keys *' \
	' ? : 1-char globbing: ls -l app.log.?' '' 'send-keys ?' \
	' [ : character list globbing: ls -l *[^~]' '' 'send-keys [' \
	' ] : character list globbing: ls -l /proc/[1-9]*/exe' '' 'send-keys ]' \
	" ' : quoting without expansion: echo '\$HOME'" '' "send-keys '" \
	' " : quoting without expansion: echo "5  +  3 = $((5+3))"' '' 'send-keys "' \
	' $ : parameter expansion / command substitution' '' 'send-keys $' \
	' | : pipeline / OR list: echo foo | grep oo  /  echo foo || echo bar' '' 'send-keys |' \
	' & : background execution / AND list: cmd &  /  echo foo && echo bar' '' 'send-keys &' \
	' = : variable assignment: text=foo' '' 'send-keys =' \
	' \ : escaping shell characters: echo foo \; bar "foo \$HOME bar"' '' 'send-keys \' \
	' < : input redirection: cat < /path/to/file' '' 'send-keys <' \
	' > : output redirection: echo foo | grep oo >results.txt' '' 'send-keys >' \
	' ; : end a command: echo foo; echo bar' '' 'send-keys -H 0x3b' \
	' ( : subshell: ( echo execute in separate environment )' '' 'send-keys (' \
	' ) : command substitution / arithmetic evaluation: $()  /  $((1+1))' '' 'send-keys )' \
	' { : command grouping (start): { echo foo; echo bar; } >output.txt' '' 'send-keys {' \
	' } : command grouping (end): testfunc () { echo foo; }' '' 'send-keys }' \
	' # : start comment: chmod 700 "$HOME" # fix permissions' '' 'send-keys \#'

bind-key V display-menu -T 'inserting non-shell ASCII special characters' \
	' ^' '' 'send-keys ^' \
	' °' '' 'send-keys °' \
	' !' '' 'send-keys !' \
	' §' '' 'send-keys §' \
	' %' '' 'send-keys %' \
	' @' '' 'send-keys @' \
	' €' '' 'send-keys €' \
	' ,' '' 'send-keys ,' \
	' :' '' 'send-keys :' \
	' .' '' 'send-keys .' \
	' _' '' 'send-keys _' \
	' @' '' 'send-keys @' \
	' €' '' 'send-keys €' \
	' µ' '' 'send-keys µ' \
	' `' '' 'send-keys `' \
	' ´' '' 'send-keys ´' \
	' ²' '' 'send-keys ²' \
	' ³' '' 'send-keys ³'

bind U switch-client -T multikey_unicode

bind-key -T multikey_unicode Enter display-menu -T 'character input menu overview' \
	'Control character menu (Enter)' '' 'display-message "Must be opened directly with: #{prefix} Enter"' \
	'Escape sequence menu (Backspace)' '' 'display-message "Must be opened directly with: #{prefix} Backspace"' \
	'(for wrong keyboard layout) shell characters: X' '' 'display-message "Must be opened directly with: #{prefix} X"' \
	'(for wrong keyboard layout) non-shell ASCII special characters: V' '' 'display-message "Must be opened directly with: #{prefix} W"' \
	' ----- The Unicode menus are activated via two keys: U + menu index' '' '' \
	'space, hyphen, superscripts, subscripts: U 1' '' 'display-message "Must be opened directly with: #{prefix} U 1"' \
	'quotes, arrows, math symbols: U 2' '' 'display-message "Must be opened directly with: #{prefix} U 2"' \
	'ASCII alphabet lowercase: U 5' '' 'display-message "Must be opened directly with: #{prefix} U 5"' \
	'ASCII alphabet uppercase: U 6' '' 'display-message "Must be opened directly with: #{prefix} U 6"' \
	'language-specific characters - de/German: U 7' '' 'display-message "Must be opened directly with: #{prefix} U 7"'

bind-key -T multikey_unicode 1 display-menu -T 'inserting unicode characters (1)' \
	' Byte Order Mark little endian (U+FEFF) (BOM):' '' 'send-keys -H 0xfe 0xff' \
	' non-breaking space (U+202F)' '' 'send-keys  ' \
	' zero-width space (U+200B)' '' 'send-keys ​' \
	' - ASCII hyphen-minus (U+002D)' '' 'send-keys -' \
	' ‐ hyphen (U+2010)' '' 'send-keys ‐' \
	' ‑ non-breaking hyphen (U+2011)' '' 'send-keys ‑' \
	'   soft hyphen (U+00AD) (line break only)' '' 'send-keys ­' \
	' – en dash (U+2013) (range; spaced sentence break)' '' 'send-keys –' \
	' — em dash (U+2014) (unspaced sentence break)' '' 'send-keys —' \
	' ― horizontal bar (U+2015)' '' 'send-keys ―' \
	' ‒ figure dash (U+2012) (digit seperator)' '' 'send-keys ‒' \
	' − minus sign (U+2212)' '' 'send-keys −' \
	' ⁻ superscript minus (U+207B)' '' 'send-keys ⁻' \
	' ₋ subscript minus (U+208B)' '' 'send-keys ₋' \
	' ⁰ (U+2070)' '' 'send-keys ⁰' \
	' ¹ (U+00B9)' '' 'send-keys ¹' \
	' ² (U+00B2)' '' 'send-keys ²' \
	' ³ (U+00B3)' '' 'send-keys ³' \
	' ⁴ (U+2074)' '' 'send-keys ⁴' \
	' ⁵ (U+2075)' '' 'send-keys ⁵' \
	' ⁶ (U+2076)' '' 'send-keys ⁶' \
	' ⁷ (U+2077)' '' 'send-keys ⁷' \
	' ⁸ (U+2078)' '' 'send-keys ⁸' \
	' ⁹ (U+2079)' '' 'send-keys ⁹' \
	' ₀ (U+2080)' '' 'send-keys ₀' \
	' ₁ (U+2081)' '' 'send-keys ₁' \
	' ₂ (U+2082)' '' 'send-keys ₂' \
	' ₃ (U+2083)' '' 'send-keys ₃' \
	' ₄ (U+2084)' '' 'send-keys ₄' \
	' ₅ (U+2085)' '' 'send-keys ₅' \
	' ₆ (U+2086)' '' 'send-keys ₆' \
	' ₇ (U+2087)' '' 'send-keys ₇' \
	' ₈ (U+2088)' '' 'send-keys ₈' \
	' ₉ (U+2089)' '' 'send-keys ₉'

bind-key -T multikey_unicode 2 display-menu -T 'inserting unicode characters (2)' \
	' ‚ (U+201A)' '' 'send-keys ‚' \
	' ‛ (U+201B)' '' 'send-keys ‛' \
	' „ (U+201E)' '' 'send-keys „' \
	' ‟ (U+201F)' '' 'send-keys ‟' \
	' ʼ (U+02BC) (apostrophe)' '' 'send-keys ʼ' \
	' « (U+00AB)' '' 'send-keys «' \
	' » (U+00BB)' '' 'send-keys »' \
	' ‹ (U+2039)' '' 'send-keys ‹' \
	' › (U+203A)' '' 'send-keys ›' \
	' • (U+2022)' '' 'send-keys •' \
	' → (U+2192)' '' 'send-keys →' \
	' ← (U+2190)' '' 'send-keys ←' \
	' ↓ (U+2193)' '' 'send-keys ↓' \
	' ↑ (U+2191)' '' 'send-keys ↑' \
	' ↔ (U+2194)' '' 'send-keys ↔' \
	' ± (U+00B1)' '' 'send-keys ±' \
	' + (U+002B)' '' 'send-keys +' \
	' − (U+2212)' '' 'send-keys −' \
	' × (U+00D7)' '' 'send-keys ×' \
	' ÷ (U+00D7)' '' 'send-keys ÷' \
	' ≠ (U+2260)' '' 'send-keys ≠' \
	' ‰ (U+2030)' '' 'send-keys ‰' \
	' ☺ (U+263A)' '' 'send-keys ☺' \
	' ☐ (U+2610)' '' 'send-keys ☐' \
	' … (U+2026)' '' 'send-keys …'

bind-key -T multikey_unicode 5 display-menu -T 'inserting characters: ASCII alphabet lowercase' \
	' a' '' 'send-keys a' \
	' b' '' 'send-keys b' \
	' c' '' 'send-keys c' \
	' d' '' 'send-keys d' \
	' e' '' 'send-keys e' \
	' f' '' 'send-keys f' \
	' g' '' 'send-keys g' \
	' h' '' 'send-keys h' \
	' i' '' 'send-keys i' \
	' j' '' 'send-keys j' \
	' k' '' 'send-keys k' \
	' l' '' 'send-keys l' \
	' m' '' 'send-keys m' \
	' n' '' 'send-keys n' \
	' o' '' 'send-keys o' \
	' p' '' 'send-keys p' \
	' q' '' 'send-keys q' \
	' r' '' 'send-keys r' \
	' s' '' 'send-keys s' \
	' t' '' 'send-keys t' \
	' u' '' 'send-keys u' \
	' v' '' 'send-keys v' \
	' w' '' 'send-keys w' \
	' x' '' 'send-keys x' \
	' y' '' 'send-keys y' \
	' z' '' 'send-keys z'

bind-key -T multikey_unicode 6 display-menu -T 'inserting characters: ASCII alphabet uppercase' \
	' A' '' 'send-keys A' \
	' B' '' 'send-keys B' \
	' C' '' 'send-keys C' \
	' D' '' 'send-keys D' \
	' E' '' 'send-keys E' \
	' F' '' 'send-keys F' \
	' G' '' 'send-keys G' \
	' H' '' 'send-keys H' \
	' I' '' 'send-keys I' \
	' J' '' 'send-keys J' \
	' K' '' 'send-keys K' \
	' L' '' 'send-keys L' \
	' M' '' 'send-keys M' \
	' N' '' 'send-keys N' \
	' O' '' 'send-keys O' \
	' P' '' 'send-keys P' \
	' Q' '' 'send-keys Q' \
	' R' '' 'send-keys R' \
	' S' '' 'send-keys S' \
	' T' '' 'send-keys T' \
	' U' '' 'send-keys U' \
	' V' '' 'send-keys V' \
	' W' '' 'send-keys W' \
	' X' '' 'send-keys X' \
	' Y' '' 'send-keys Y' \
	' Z' '' 'send-keys Z'

bind-key -T multikey_unicode 7 display-menu -T 'inserting unicode characters: de/German' \
	' ä' '' 'send-keys ä' \
	' Ä' '' 'send-keys Ä' \
	' ö' '' 'send-keys ö' \
	' Ö' '' 'send-keys Ö' \
	' ü' '' 'send-keys ü' \
	' Ü' '' 'send-keys Ü' \
	' ß' '' 'send-keys ß'

if-shell '[ -f ~/.tmux.menus.conf ]' {
	source-file ~/.tmux.menus.conf
}
