bambouville
guide

Escape, Ctrl and everything else the iPad keyboard is missing

The Magic Keyboard has no Escape key and no Ctrl in the right place. Here is what actually works in a terminal — including remapping, and Shift-Enter for coding agents.

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:

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:

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.

on the app store
Tessera — SSH Terminal
free, every feature included · $9.99 once unlocks unlimited hosts · open source (GPL-3.0)
Download on the App Store