Layout and keys
Reference for every key on vmuxKeyboardExtension and the byte sequence it sends to the active field or remote shell.
Layout at a glance
The keyboard is laid out as seven rows that mirror a 2021 MacBook Pro US ANSI keyboard:
Row 1 (function) esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
Row 2 (number) ` 1 2 3 4 5 6 7 8 9 0 - = <-
Row 3 (qwerty) tab q w e r t y u i o p [ ] \
Row 4 (home) caps a s d f g h j k l ; ' return
Row 5 (shift) shift z x c v b n m , . / up shift
Row 6 (bottom) globe fn ctrl opt cmd ----space---- cmd opt left dn rightThe number row, function row, and arrow keys are always visible. There is no Fn-toggle layer hiding the F-keys, and there is no 123 layer hiding the symbols. Brackets, pipe, tilde, slash, dash, and backtick are all primary keys.
In landscape on iPhone, the keyboard automatically shrinks its row height (about 268 pt instead of 372 pt) so it does not eat half your screen.
Modifiers and how they combine
Five modifiers live on the keyboard, plus CapsLock:
| Modifier | Key | Behavior |
|---|---|---|
| Shift | shift (left and right) | Sticky one-shot. Next character is shifted, then disarms. |
| CapsLock | caps | Persistent toggle. Stays on until you tap it again. Affects letter case only. |
| Ctrl | ctrl | Sticky one-shot. Next letter is sent as the corresponding control byte (Ctrl+A = 0x01, Ctrl+C = 0x03, etc). |
| Option / Alt | opt (left and right) | Sticky one-shot. Next character is prefixed with ESC, the standard Meta convention. |
| Cmd | cmd (left and right) | Sticky one-shot. Used for app-level shortcuts in apps that recognize them. |
| Fn | fn | Sticky one-shot. Reserved for future layered keys; currently informational. |
A modifier turns visibly armed when you tap it and disarms after the next non-modifier keypress. CapsLock is the exception — it stays armed across multiple keys until tapped again. You can combine multiple modifiers (Ctrl + Shift, Ctrl + Alt + a letter, and so on) by tapping each one before the regular key.
Shift respects letter case. If CapsLock is on and you tap Shift, the result is lower case for that one keystroke — the same XOR rule a hardware keyboard uses.
What each key sends
Plain typing keys send the obvious character — q sends q, Shift + 1 sends !. The terminal-relevant special keys send the standard xterm-compatible escape sequences below. You should not need to memorize these; they are the same sequences your shell, vim, tmux, and ssh already understand.
Function row
| Key | Default | With Ctrl, Alt, or Shift |
|---|---|---|
| Esc | ESC (0x1B) | Alt+Esc sends ESC ESC |
| F1 | ESC O P | xterm CSI form: ESC [ 1 ; mod P |
| F2 | ESC O Q | ESC [ 1 ; mod Q |
| F3 | ESC O R | ESC [ 1 ; mod R |
| F4 | ESC O S | ESC [ 1 ; mod S |
| F5 | ESC [ 15 ~ | ESC [ 15 ; mod ~ |
| F6 | ESC [ 17 ~ | ESC [ 17 ; mod ~ |
| F7 | ESC [ 18 ~ | ESC [ 18 ; mod ~ |
| F8 | ESC [ 19 ~ | ESC [ 19 ; mod ~ |
| F9 | ESC [ 20 ~ | ESC [ 20 ; mod ~ |
| F10 | ESC [ 21 ~ | ESC [ 21 ; mod ~ |
| F11 | ESC [ 23 ~ | ESC [ 23 ; mod ~ |
| F12 | ESC [ 24 ~ | ESC [ 24 ; mod ~ |
The xterm mod value is 1 for plain, 2 for Shift, 3 for Alt, 5 for Ctrl, and additive for combinations.
Editing keys
| Key | Default | Notable variants |
|---|---|---|
| Tab | TAB (0x09) | Shift+Tab sends ESC [ Z (back-tab) |
| Return | CR (0x0D) | Shift+Return sends LF (0x0A); Ctrl+Return preserves CR |
| Backspace | DEL (0x7F) | Ctrl+Backspace sends BS (0x08); Alt+Backspace sends ESC DEL |
| CapsLock | (no output) | Toggles letter shift state |
Arrow cluster
| Key | Default | Application cursor mode |
|---|---|---|
| Up | ESC [ A | ESC O A |
| Down | ESC [ B | ESC O B |
| Right | ESC [ C | ESC O C |
| Left | ESC [ D | ESC O D |
Plain Alt + Left sends ESC b (backward word) and Alt + Right sends ESC f (forward word) — the readline word-jump shortcuts.
Modified arrows use the xterm CSI-with-modifier form, e.g. Shift + Up = ESC [ 1 ; 2 A, Ctrl + Up = ESC [ 1 ; 5 A, etc. This is the same encoding modern terminals expect, so vim, less, and tmux all see the modifier.
Punctuation and symbols (US ANSI)
| Key | Plain | Shifted |
|---|---|---|
` | grave (`) | tilde (~) |
1–0 | digits | ! @ # $ % ^ & * ( ) |
- | hyphen | underscore |
= | equals | plus |
[ ] | brackets | { } |
\ | backslash | pipe |
; | semicolon | colon |
' | apostrophe | double quote |
, . / | comma, period, slash | < > ? |
All of these are primary keys — no 123 symbol layer.
Bottom row
| Key | What it does |
|---|---|
| Globe (next keyboard) | Single tap cycles to the next keyboard. Long-press shows the picker. The globe key only appears if you have more than one keyboard installed; iOS hides it otherwise. |
| Fn | Sticky modifier (currently informational). |
| Ctrl | Sticky modifier — see Ctrl + letter table below. |
| Option | Sticky Meta. |
| Cmd | Sticky modifier for app shortcuts. |
| Spacebar | Inserts a single space on tap. Long-press and drag to enter trackpad mode. |
Ctrl + letter quick reference
These are the most-used control bytes and what they map to on a typical Unix shell:
| Chord | Byte | Common meaning |
|---|---|---|
| Ctrl + A | 0x01 | Beginning of line (readline) |
| Ctrl + C | 0x03 | Interrupt (SIGINT) |
| Ctrl + D | 0x04 | EOF / logout |
| Ctrl + E | 0x05 | End of line (readline) |
| Ctrl + K | 0x0B | Kill to end of line |
| Ctrl + L | 0x0C | Clear screen |
| Ctrl + R | 0x12 | Reverse search history |
| Ctrl + U | 0x15 | Kill to start of line |
| Ctrl + W | 0x17 | Kill word |
| Ctrl + Z | 0x1A | Suspend (SIGTSTP) |
| Ctrl + \ | 0x1C | Quit (SIGQUIT) |
| Ctrl + Space | 0x00 | NUL |
Any letter A–Z plus Space and certain punctuation (@, [, \, ], ^, _) accept Ctrl. The general rule is the ASCII code with bits 0x60 cleared.
Layout legends
Each key shows two legends: the primary character (centered) and the shifted variant (smaller, top-right corner). The legends update live as you arm and disarm Shift or CapsLock — Shift on with no CapsLock shows uppercase letters and the shifted symbols, CapsLock on shows uppercase letters but unchanged symbol legends.
The keys use JetBrains Mono Nerd Font for the labels, so glyphs match the typeface most vmux themes ship with.
See also
- Swipe gestures — gliding across letter keys, the candidate bar, and the spacebar trackpad.
- Keyboard and shortcuts — hardware keyboard mappings used everywhere else in vmux.
- Accessory bar on vmuxPhone — the in-app strip that sits above whatever keyboard you have active.