vmux
AppsvmuxPhone

Accessory Bar

The quick-action strip above the embedded keyboard with every button explained.

What it is

The accessory bar is the row of pill-shaped buttons that sits directly above the embedded keyboard. It is always horizontal, scrolls left and right when you have a narrow screen, and stays in sync with the modifier state on the keyboard itself. The bar exists because shells need keys that smartphones do not put on a normal layout — Esc, Tab, modifier toggles, arrow keys, and a small set of symbols you reach for constantly.

You see the bar on every connected session. It is part of the embedded keyboard view, so it follows the keyboard's theme and the iOS ultraThinMaterial glass background.

Button reference

The buttons appear in a fixed left-to-right order. Modifier toggles are sticky — tap once to arm, tap again to disarm. The next regular key combines with whatever is armed.

ButtonTypeWhat it sends
CtrlModifierArms the Control modifier for the next key. Highlights green while armed.
AltModifierArms the Option/Alt modifier. Sends as Meta when Option as Meta is on.
ShiftModifierArms Shift for the next key. Useful for sending Ctrl+Shift+C and similar combos.
EscKeySends the Escape character. Equivalent to pressing Esc on a hardware keyboard.
TabKeySends Tab. With Shift armed, sends Shift+Tab.
**``**Symbol
/SymbolInserts a forward slash — common in paths and find.
~SymbolInserts a tilde — handy for ~/dotfiles and similar.
-SymbolInserts a hyphen — handy for flags like -l, -rf.
UpArrowSends the up-arrow key. Hold to repeat.
DownArrowSends down-arrow.
LeftArrowSends left-arrow.
RightArrowSends right-arrow.

The arrow keys interact correctly with the remote terminal's application cursor mode. Programs like vim and htop see the same encoding they would see from a desktop keyboard.

Modifier behavior

Each modifier toggle is exclusive to itself — tapping Ctrl does not turn off Alt. You can arm any combination. The modifiers stay armed until either:

  • you tap a non-modifier key (the modifier consumes itself for that one keystroke), or
  • you tap the modifier again to disarm it explicitly.

Holding a modifier toggle does not change behavior. The bar uses tap-to-arm only.

A green tint identifies armed modifiers; gray means inactive. The same color scheme appears on the keyboard's modifier row.

Sending Ctrl+C (and similar)

  1. Tap Ctrl — it turns green.
  2. Tap C on the embedded keyboard.

vmuxPhone sends the Ctrl+C byte sequence and the modifier disarms. The same pattern works for Ctrl+D (logout), Ctrl+Z (suspend), Ctrl+L (clear), and any other Ctrl combination your shell uses.

Sending Alt-keycodes

Alt is treated as Meta when Option as Meta is on (default). With Alt armed, tapping a letter sends an ESC-prefixed byte sequence — the convention vim, bash, zsh, and emacs use for Meta combinations. Turn the option off if a remote program expects Alt to behave as the AltGr "special-character" key.

Reaching Shift+Tab and similar

  1. Tap Shift to arm it.
  2. Tap Tab.

vmuxPhone sends ESC[Z, the standard reverse-tab encoding. This is how you walk backwards through completion lists.

Why these specific buttons

The bar shipped with this set after watching how people type into a phone shell. The full reasoning, in short:

  • Ctrl, Alt, Shift — every shell needs them and the system keyboard does not have them.
  • Escvim users would otherwise be unable to leave insert mode comfortably.
  • Tab — completion is the single biggest productivity win on a phone keyboard.
  • |, /, ~, - — the four symbols people reach for the most that are buried under the symbol layer of iOS.
  • Arrows — needed for shell history, command-line editing, htop, and man paging.

There is no plan to add more buttons to the bar. Long-tail symbols are reachable through the embedded keyboard's symbol layer (the 123 key on the alphabet layer) and through the bottom row of the function keyboard (visible when Fn is armed).

Theme integration

The bar's background uses iOS ultraThinMaterial so it never clashes with the terminal theme. The button labels follow the system color — they remain legible on every theme.

When you enable camera passthrough, the entire keyboard (including the bar) drops its background, so the camera shows through. The buttons remain interactive and stay in their original positions.