Keyboard and shortcuts
Toolbar controls, hardware keyboard shortcuts, Option-as-Meta, custom shortcuts, advanced multi-step bindings, and the D-pad.
Moshi has three input layers: the terminal toolbar, custom shortcuts, and hardware keyboard support.
Terminal toolbar
The toolbar provides terminal actions that are tedious on a phone keyboard:
- Enter and Backspace.
- Paste.
- Keyboard show/hide.
- Shortcut panel.
- Command or transcription history.
- D-pad movement controls.
Open Settings -> Input to choose which toolbar items are visible and reorder them.
Custom shortcuts
Shortcuts can send common terminal sequences or text snippets. Use them for commands, tmux prefixes, editor chords, shell fragments, and agent prompts you reuse often.
Open the shortcut builder from a category under Settings → Shortcuts, from a long-press on a panel button, or when binding a gesture or D-pad slot. Most people only need the simple path: pick Ctrl / Opt / Shift, pick a key (or custom text), save.
Key sequences (simple builder)
With a modifier selected, a multi-character custom key applies the modifier to the first character and sends the rest literally — Ctrl + b1 sends Ctrl+B then 1, a tmux chord. To apply the modifier to every key, separate them with commas: Ctrl + a,b sends Ctrl+A then Ctrl+B. Double the comma (,,) to send a literal comma. Without a modifier, the text is sent verbatim, commas included.
That model covers common chords, but it cannot express different modifiers on different steps — for example tmux prefix then Shift+T, or a Herdr prefix on F12 then h. For those, use Advanced bindings.
Keep shortcuts small. A command like git status or a tmux prefix is easier to trust from a phone than a long destructive shell pipeline.
Advanced bindings
For multi-step chords that the simple builder cannot express, open the shortcut builder and tap Advanced binding…. You write a short binding string; Moshi parses it into keystrokes and sends each step with a small delay between them (the same idea as the multiplexer prefix delay).
Grammar
| Token | Meaning |
|---|---|
C- / Ctrl+ | Control |
M- / Opt+ / Alt+ | Meta / Option / Alt |
S- / Shift+ | Shift |
F1–F12 | Function keys |
| Named keys | Tab, Enter, Esc, Space, BSpace, arrows, Home, End, PageUp, PageDown |
dash / plus | Literal - and + (because - separates modifiers) |
| Comma or space | Next keystroke |
text:… | Whole binding is literal text (optional auto-Enter) |
Short and long modifier names both work: C-b and Ctrl+b are the same. Case on a bare letter is preserved — T is capital T.
Examples
| Binding | What it sends |
|---|---|
C-c | Ctrl+C |
C-b, T | tmux/Herdr-style prefix, then capital T |
C-b, S-t | Prefix, then Shift+t (same bytes as capital T for letters) |
F12, h | Function key F12, then h (custom Herdr / multiplexer prefixes) |
S-Tab | Shift+Tab (back-tab) |
C-dash | Ctrl+- |
text:/clear | Types /clear as text (use when you want a slash command, not a chord) |
When to use advanced vs simple
- Simple — one keystroke with modifiers (
Ctrl+C), or a same-modifier sequence (Ctrl+a,b), or plain text / slash commands via Custom Key / Text. - Advanced — per-step modifiers (
C-b, S-t), function-key prefixes (F12, h), or anything you would write as a chord list in tmux/Emacs notation.
Multiplexer default panels still use the prefix configured under Settings → Shortcuts → tmux or Herdr. Advanced bindings are for your extra chords; they are not rewritten when you change the category prefix.
Tips
- Mistyped modifiers (
Contrl-b) and out-of-range keys (F13) are rejected instead of being sent as literal text. - Multi-step advanced shortcuts show their full label (e.g.
Ctrl+b, Shift+t) in the panel; re-edit opens Advanced with the original string. - Free-tier custom shortcut limits still apply — advanced bindings count as one shortcut each.
D-pad controls
The D-pad gives you arrow keys, plus two configurable corner slots in the top-left and top-right. It is useful for shells, editors, REPLs, and agent UIs where arrow keys and cursor movement are frequent. The corner slots and every other touch gesture in the terminal are configured in Gestures.
Hardware keyboard shortcuts
When a hardware keyboard is connected, Moshi supports common app shortcuts:
Option as Meta
Enable Option as Meta in keyboard settings if your terminal tools expect Meta/Alt key chords. This is mostly useful with hardware keyboards and terminal editors.
Auto-hide toolbar
The toolbar can hide automatically when a hardware keyboard is connected. Turn this off if you still want touch controls available while using an external keyboard.