Vim wants Escape. Your shell wants Ctrl-C. Claude Code wants Shift-Enter for a
newline and Shift-Tab to change mode. The iPad's keyboards were not designed with
any of that in mind, and the workarounds people pass around are a mix of good
advice and folklore.
Here is what actually works, and what a terminal app can do about it.
Escape
On a Magic Keyboard or Smart Keyboard Folio, there is no Escape key. Three things work:
Ctrl-[— not a trick, this is Escape. ASCII 27 is whatCtrl-[has always sent. If you learn one thing here, learn this: it works in every terminal, on every platform, forever.- The
escchip on the accessory bar. Tessera putsescfirst on the bar by default, on both iPad and iPhone. - Remap a key you don't use. iPadOS itself will remap Caps Lock system-wide, in Settings → General → Keyboard → Hardware Keyboard → Modifier Keys. Caps Lock to Escape is the classic vim setup.
On a keyboard that has an Escape key, it just works. The fn+square trick some
guides mention applies to a subset of third-party keyboards and is not general.
Ctrl
The physical Ctrl is present on Magic Keyboards, in the bottom-left corner, and
works normally — Ctrl-C, Ctrl-D, Ctrl-Z, Ctrl-R all behave.
The complaint is usually about reach, not absence. Two fixes:
- Swap Caps Lock and Ctrl in iPadOS's Modifier Keys settings, the same place as the Escape remap. This is the Emacs-and-vim standard and costs nothing.
- Use the accessory bar's
⌃chip when you're on the software keyboard. Tessera lets you choose how modifier chips behave: one-shot (tap once, applies to the next key, clears itself) or sticky (tap to lock, tap to release).
Shift-Enter, Shift-Tab, and coding agents
This one is new, and it catches people out.
Claude Code uses Shift-Enter for a newline without submitting, and Shift-Tab to
cycle modes. Codex and other TUI agents have their own chords. Many terminal apps
send a plain carriage return for both, so the agent sees "submit" when you meant
"newline" — a genuinely maddening failure, because the app looks like it's working.
In Tessera every built-in chord can be remapped, and you can create your own shortcut that sends an exact byte sequence. A custom shortcut has a name, the text it sends — literal, spaces included — and a trigger, which can be a recorded hardware chord, a chip on the accessory bar, or both. That is enough to bind whatever sequence your agent expects, and to put it under your thumb as a chip if you're on glass.
It all lives in settings → keyboard & input → shortcuts.
Word and line movement
If you're used to a Mac, the editing chords you already know can work in the shell. With natural text editing on:
| chord | what it does |
|---|---|
⌥← / ⌥→ |
move by word |
⌘← / ⌘→ |
line start / end |
⌥⌫ |
delete word |
⌘⌫ |
delete to line start |
Working without a hardware keyboard
The accessory bar above the software keyboard carries the keys glass lacks — on
iPad the defaults are esc ⌃ ⌥ ⇥ ← ↓ ↑ → | ~, and on iPhone esc ⌃ ⇥ ← → ↓ ↑ ⌥ ⌃C ⌃J. You can drag chips to reorder them and pull more from a palette: F1–F12,
symbols like / \ $ { } [ ] < >, and any shortcut you've made yourself.
One chip is worth knowing about: the ⌘ chip arms Tessera's own shortcuts rather than sending anything to the remote host, so app chords like the quick-switch palette work with no hardware keyboard attached at all.
Questions
How do I press Escape on an iPad keyboard?
Press Ctrl-[ — that is what Escape has always sent, and it works in any terminal.
You can also remap Caps Lock to Escape in Settings → General → Keyboard → Hardware
Keyboard → Modifier Keys, or tap the esc key on your terminal app's accessory bar.
Tessera includes esc on that bar by default.
Where is Ctrl on the iPad Magic Keyboard?
Bottom-left, and it works normally in a terminal. If it's awkward to reach, swap it
with Caps Lock in iPadOS's Modifier Keys settings. On the software keyboard, use the
⌃ chip on the accessory bar, which can be set to one-shot or sticky.
How do I send Shift-Enter to Claude Code from an iPad?
You need a terminal that distinguishes it rather than sending a plain return. In Tessera you can remap any built-in chord or create a custom shortcut that sends an exact sequence, triggered by a hardware chord, an accessory-bar chip, or both, under settings → keyboard & input → shortcuts.
Can I remap keys in an iOS terminal?
In Tessera, yes — every built-in chord is remappable and you can add your own shortcuts that type arbitrary text, optionally pressing return afterwards. iPadOS separately handles system-level modifier remapping (Caps Lock, Ctrl, Command) for every app at once.
Why do arrow keys or Escape not work in vim on my iPad?
Usually the app is sending the wrong sequence, or a modifier chip is stuck. Try
Ctrl-[ for Escape to rule out the keyboard, and check whether your accessory bar's
modifier behaviour is set to sticky — a locked ⌃ will change what every subsequent
key does until you release it.