Using with vmuxPhone
When to use vmuxKeyboardExtension versus vmuxPhone's built-in keyboard, and how they interact with the accessory bar.
Two different keyboards in the same app
vmuxPhone ships with its own embedded keyboard view. It is a custom UIView, not a system keyboard, so it is always available inside the app without anything to install — and it sits under the terminal in portrait, beside it in landscape. The vmuxPhone keyboard manual covers it in detail.
vmuxKeyboardExtension is a separate, system-wide keyboard. After you install it once, it shows up in the iOS keyboard picker for every text-entry surface across the OS — Mail, Messages, Notes, Slack, the GitHub app, every other SSH client, and yes, also vmuxPhone.
Both can technically be active at different moments inside vmuxPhone. The difference is who decides which one shows up:
- The embedded keyboard is what vmuxPhone draws by default. It is always there in portrait or landscape, with no globe key needed.
- The system extension only shows up when you tap into a system text field. vmuxPhone does not use a system text field for terminal input — it uses its own custom view — so the system keyboard (and therefore your installed third-party keyboards) does not appear over the terminal in normal use.
When to use which
Most of the time, when you are inside vmuxPhone and using its terminal, stick with the embedded keyboard. It is faster to load, perfectly tuned for the terminal display, supports voice dictation that the extension does not, and integrates with the accessory bar without any handoff.
Switch to vmuxKeyboardExtension when:
- You want the same layout outside vmuxPhone. Composing a multi-line shell command in Notes, replying to a GitHub issue with code blocks, pasting a tmux config snippet into Slack — the extension gives you Esc, Tab, brackets, pipe, slash, tilde, and the F-row everywhere.
- You are using a third-party SSH client (Termius, Blink, Prompt 3, ish) that does not have its own custom terminal keyboard. The extension turns those clients into something usable.
- You want a single muscle-memory layout across every app on your phone, including web forms, code editors like Working Copy, and IDE-like tools.
You probably do not need it inside vmuxPhone unless you have a specific reason — the embedded keyboard already has all of these features and more.
Three keyboards, one accessory bar
vmuxPhone has a strip across the top of the keyboard area called the accessory bar. It is not a keyboard — it is a separate UIKit input accessory view that sits above whatever keyboard is active. It contains:
- One-shot Ctrl, Alt, Shift, and CapsLock toggles.
- An Esc key, a Tab key, four arrows, and the common shell symbols (
|,/,~,-). - A button for the command palette and one for the menu.
The accessory bar appears regardless of which keyboard sits below it:
| Below the accessory bar | Source |
|---|---|
| The vmuxPhone embedded keyboard | Default. |
| vmuxKeyboardExtension | If you used the globe key or have it set as your default keyboard. |
| iOS system keyboard | If you switched away from vmux on purpose. |
| Hardware keyboard | If something is plugged in over USB / Bluetooth — the on-screen layer disappears and only the accessory bar remains. |
The accessory bar does not duplicate the extension's modifiers. If you have vmuxKeyboardExtension active and you tap Ctrl on the accessory bar, then tap c on the extension, the result is Ctrl+C — the modifier state is shared at the input-handling layer.
Comparison
| Capability | Embedded keyboard | vmuxKeyboardExtension |
|---|---|---|
| Available inside vmuxPhone terminal | Yes (default) | Yes if you switch to it |
| Available in other apps (Mail, Slack, third-party SSH) | No | Yes |
| Esc, Tab, F-row, arrows, brackets, pipe, tilde | Yes | Yes |
| Sticky one-shot modifiers | Yes | Yes |
| Theme follows vmux terminal theme | Yes | Yes |
| Voice dictation (Cmd / Prose modes) | Yes | No |
| Swipe to type | Yes | Yes |
| Trackpad mode on spacebar | Yes | Yes |
| Layout switches in landscape (left half / right half) | Yes (lives on both rails) | No (single keyboard, full width) |
| Liquid Glass background (iOS 26+) | Yes | No |
Works without Allow Full Access | N/A — it is part of the app | Yes |
Making vmuxKeyboardExtension your phone-wide default
If you want the extension to be your main keyboard everywhere on iOS:
- Install it (see Installing the keyboard).
- Open
Settings -> General -> Keyboard -> Keyboards. - Tap Edit, drag vmux Keyboard to the top of the list.
- Remove English (US) and any other system keyboards you do not need. (Optional — but if you want zero globe-key cycling, this is the way.)
iOS will use vmux Keyboard for every fresh text field. Inside vmuxPhone, the embedded keyboard still shows because vmuxPhone owns its terminal input view directly — system keyboard preference is irrelevant there.
When to switch back to the embedded keyboard
If you set vmuxKeyboardExtension as your default and then want voice dictation in vmuxPhone, you do not need to change keyboards — you are already on the embedded one when you are inside the terminal. The microphone button on the embedded keyboard kicks off iOS speech recognition the same as it always does. See Keyboard and input for the dictation modes.
If for some reason you want to use the iOS system keyboard inside vmuxPhone (we cannot think of a good reason, but iOS allows it through accessibility settings), you would have to switch in the system keyboard picker, and even then vmuxPhone draws its own input view by default.
See also
- Layout and keys — what each key sends.
- vmuxPhone keyboard and input — the embedded keyboard, voice, hardware keyboards, and touch gestures.
- Accessory bar — the strip that sits above whichever keyboard is active.
- Troubleshooting — keyboard not appearing where expected.