Shell Keyboard
The terminal keyboard for iOS that never reads what you type.
A custom keyboard extension giving you esc, ctrl, alt, tab, arrows, and function keys directly on your iOS device. Use ssh, vim, and tmux on your phone without fighting the stock keyboard.
Features
Terminal layer
esc top-left where vim expects it, ctrl, alt, tab, a full arrow cluster, home / end, pgup / pgdn, ins, del, and the twelve punctuation characters a shell actually needs — ~ / | \ < > [ ] { } ( ). All on one screen, no layer switching.
Function keys
Tap fn and the top row becomes F1–F12. Everything else stays exactly where it was, so nothing under your thumbs moves.
Modifiers that latch
Tap ctrl to arm it for the next key, or double-tap to lock it. Ctrl+C is two taps, deliberately — never one.
Arrow keys that match your app
Normal mode for shells that expect ^[[A. Application mode for full-screen apps (vim, tmux, less, htop). A third mode moves the text cursor instead, for ordinary text fields.
Return or Enter
Long-press Return to switch between carriage return (CR) and line feed (LF).
Letters and symbols without leaving
An abc layer for hostnames, paths and commit messages, and a symbols layer carrying every printable ASCII punctuation character exactly once.
Built-in reference
Searchable cheat sheet of every ANSI escape sequence the keyboard sends, with the hex bytes, inside the app.
Privacy by design
Never asks for Full Access. Shell Keyboard collects nothing and reads nothing. Read the privacy policy.
Gallery
iPad
What it does NOT do
Please read this before buying:
- Works in native terminal apps — Blink Shell, Termius, Prompt, a-Shell, iSH — and in ordinary text fields.
- Does not work with a terminal or editor running inside a web browser (code-server, Jupyter, ttyd, Wetty). A web page listening for keydown events will see nothing — an iOS keyboard extension can only insert text. No third-party iOS keyboard can do this — it's an iOS limitation, not a missing feature.
- In "move the cursor" mode, arrows move left and right only. Moving by a line would require reading the text around your cursor, which this keyboard deliberately never does.
