I was trying to learn how to use the bind-key [-cnr] [-t key-table] key command [arguments] better, but was having some trouble figuring out what “valid keys” are for bind-key command.
I tried doing man tmux and Google too, but I couldn’t find anything useful.
- How can I figure out what the syntax for valid keys are?
- Is there a help command or a
manpage for this? - Maybe I don’t know the technical term for this valid keys, is there a term for these keys so that I can do a better google search?
For example, I was trying to figure out what the following remapping of commands meant:
bind-key -n M-S-Left resize-pane -L 2 bind-key -n M-S-Right resize-pane -R 2 bind-key -n M-S-Up resize-pane -U 2 bind-key -n M-S-Down resize-pane -D 4
The -n was easy to find in the man page (doesn’t need prefix). But I can’t figure out what M-S-Left key means.
I am guessing that its mapping shift and the left arrow plus whatever M means to the resize-pane -L 2 command.
- How do I figure out what
Mmeans? - What if I wanted control + whatever key I wanted. Is control =
C? - How can I figure this out without just trying random keys on my keyboard until something works?
- Also, how do I confirm, figure out if I am not mapping it to a key set that is already used?
- Is there such a thing as “show all aliases” or something?
- As an addition to the question, are these valid keys the same as the ones for
vim?
The thing is that vim seems to have a different scripting for its own language since it sometimes require and stuff.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Available Keys
Look at man tmux, search / for KEY BINDINGS:
tmux allows a command to be bound to most keys, with or without a prefix key.
When specifying keys, most represent themselves (for example ‘A’ to ‘Z’).
Ctrl keys may be prefixed with ‘C-’ or ‘^’, and Alt (meta) with ‘M-’.In addition, the following special key names are accepted:
Up, Down, Left, Right, BSpace, BTab, DC (Delete), End, Enter, Escape, F1 to F20,
Home, IC (Insert), NPage/PageDown/PgDn, PPage/PageUp/PgUp, Space, and Tab.
Note that to bind the ‘”’ or ‘’’ keys, quotation marks are necessary […]
M-S-Left should be Alt+Shift+Left for example.
List all bound keys
To list all key bindings, simply press Ctrl–b then ? while in a tmux session.
This is also documented in man tmux in section EXAMPLES:
Typing ‘C-b ?’ lists the current key bindings in the current window; up and down may be used to navigate the list or ‘q’ to exit from it.
You can also list all key-bindings via tmux list-keys. If you want to check for already set keys, you can grep it’s output to check, if it’s already set.
Research
To find more via Google, search for Section names in man tmux – just type in tmux default key bindings for example :). But often man tmux is sufficient.
This site is a very good documentation about tmux and pops up, if you search for said string in Google.
Arch wiki is always good, too.
Method 2
This is the full list of ‘extended’ key names available in tmux 2.2 (ripped from the source):
/* Function keys. */
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
IC
DC
Home
End
NPage
PageDown
PgDn
PPage
PageUp
PgUp
Tab
BTab
Space
BSpace
Enter
Escape
/* Arrow keys. */
Up
Down
Left
Right
/* Numeric keypad. */
KP/
KP*
KP-
KP7
KP8
KP9
KP+
KP4
KP5
KP6
KP1
KP2
KP3
KPEnter
KP0
KP.
/* Mouse keys. */
MouseDown1Pane
MouseDown1Status
MouseDown1Border
MouseDown2Pane
MouseDown2Status
MouseDown2Border
MouseDown3Pane
MouseDown3Status
MouseDown3Border
MouseUp1Pane
MouseUp1Status
MouseUp1Border
MouseUp2Pane
MouseUp2Status
MouseUp2Border
MouseUp3Pane
MouseUp3Status
MouseUp3Border
MouseDrag1Pane
MouseDrag1Status
MouseDrag1Border
MouseDrag2Pane
MouseDrag2Status
MouseDrag2Border
MouseDrag3Pane
MouseDrag3Status
MouseDrag3Border
MouseDragEnd1Pane
MouseDragEnd1Status
MouseDragEnd1Border
MouseDragEnd2Pane
MouseDragEnd2Status
MouseDragEnd2Border
MouseDragEnd3Pane
MouseDragEnd3Status
MouseDragEnd3Border
WheelUpPane
WheelUpStatus
WheelUpBorder
WheelDownPane
WheelDownStatus
WheelDownBorder
These can be used in addition to ASCII printable characters set and combined with M-, C-, and S- prefixes.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0