keyjawn --help
Getting started
- Download the APK from GitHub releases.
- Install via ADB or by opening the APK on your phone:
adb install keyjawn-full.apk - Go to Settings > System > Languages & input > On-screen keyboard.
- Enable KeyJawn.
- Set KeyJawn as your default keyboard.
On some devices, you can switch keyboards by long-pressing the spacebar in any text field, or by tapping the keyboard icon in the navigation bar.
Basic typing
KeyJawn has three layers you can switch between:
- Lowercase -- the default layer when you open the keyboard.
- Uppercase -- tap Shift for one capital letter, or double-tap for caps lock.
- Symbols -- tap ?123 or swipe up on the keyboard area.
To return from symbols to letters, tap abc or swipe down.
Shift and caps lock
- Single tap Shift -- types one uppercase letter, then auto-returns to lowercase.
- Double-tap Shift -- caps lock. All letters are uppercase until you tap Shift again.
Visual indicator: the Shift key changes background color to show which state you're in. Lowercase = default color. Armed (one-shot) = slightly highlighted. Caps lock = fully highlighted.
Terminal keys
The extra row above the QWERTY layout contains:
- Esc -- sends
KEYCODE_ESCAPE. Use it to exit vim insert mode, cancel Claude Code operations, dismiss prompts. - Tab -- sends
KEYCODE_TAB. Tab completion in shells, indentation in editors. - Ctrl -- toggle modifier with three states:
- Off -- default, no modifier.
- Armed -- tap once. The next keypress includes Ctrl, then it resets to Off. Use this for Ctrl+C, Ctrl+Z, etc.
- Locked -- long-press. Ctrl stays active until you tap it again. Useful for multiple Ctrl combos in a row.
- < v ^ > -- arrow keys. Hold to repeat. For navigating command lines, moving cursors in editors.
- Clipboard -- tap to open clipboard history. Long-press to paste most recent item.
- Upload -- tap to pick and SCP a photo to your configured host.
- Mic -- tap to start/stop voice input.
Each button has a distinct background color so you can find it at a glance without reading labels.
Number row
The number row sits above the QWERTY keys and is always visible. Each key shows:
- The digit (tap to type).
- A small hint label showing the shifted symbol (long-press to type).
For example, long-press 1 for !, long-press 2 for @, and so on. The hints are visible on the key so you never need to guess.
Alt characters
Long-press letter keys for accented variants and alternate characters.
- Single-alt keys -- keys with only one alternate character fire it immediately on long-press. No popup.
- Multi-alt keys -- keys with multiple alternates show a popup. Slide your finger to the character you want, then release.
Examples:
- Long-press a -- popup with accented a variants.
- Long-press n -- fires the tilde-n variant immediately.
- Long-press e -- popup with accented e variants.
Quick key
The bottom-right key on the letter layers (next to the spacebar) is a configurable quick key. It defaults to /.
- Tap -- types the configured character.
- Long-press -- opens a picker to choose a different character:
/,.,,,?,!,--,',",:,;.
Your choice is saved and persists across sessions. Set it to whatever you type most.
Voice input
Tap the mic button in the extra row to start speaking.
- A waveform animation shows your audio level while recording.
- Text appears at your cursor as the speech recognizer processes your words -- streaming partial results, not waiting for silence.
- Tap the stop button (or the mic button again) to finish.
Voice input is useful when you're talking to an AI agent -- most of what you type is natural language anyway.
Full version only. Requires the RECORD_AUDIO permission.
Clipboard history
Tap the clipboard button in the extra row to open the clipboard history panel. It shows your recent copied text entries. Tap any entry to paste it at your cursor position.
Full version only.
SCP upload
SCP upload lets you send photos from your phone to a remote server and automatically type the remote path at your cursor.
Setup
- Open KeyJawn settings (gear icon, or find it in your app drawer).
- Add a host: enter the hostname, port, username, password, and remote upload directory.
- Credentials are stored using AndroidX
EncryptedSharedPreferences(AES-256).
Usage
- Tap the upload button in the extra row.
- Pick a photo from your gallery.
- KeyJawn SCPs it to the configured server.
- The remote file path is typed at your cursor.
This is useful for sharing screenshots with Claude Code, OpenClaw, or other AI tools that accept file paths.
Full version only. Requires INTERNET and READ_MEDIA_IMAGES permissions.
Slash commands
On the symbols layer, tapping the / key opens a command picker popup instead of typing a literal slash.
- Select a command from the list to insert it at your cursor.
- Dismiss the popup (tap outside or press back) to type a literal
/instead.
The command list includes common LLM CLI patterns like /help, /clear, /compact, and others.
Full version only.
Swipe gestures
Swipe across the keyboard area for quick actions:
- Swipe left -- deletes the previous word.
- Swipe right -- inserts a space.
- Swipe up -- switches to the symbols layer.
- Swipe down -- switches to the letters layer.
Full version only.
Themes
KeyJawn includes four keyboard color themes:
- Dark -- the default. Dark grey keys on a near-black background.
- Light -- white keys on a light grey background. Better for outdoor use.
- OLED black -- true black background for AMOLED screens. Saves battery.
- Terminal -- green text on a dark green background. The classic terminal look.
Changing themes
- Open KeyJawn settings (gear icon or app drawer).
- Under the Theme section, tap a color swatch.
- The new theme applies the next time the keyboard opens.
Themes change every visible element: key backgrounds, text colors, hint labels, the extra row, number row, and accent colors for Ctrl and Shift states.
Full version only. Free users get the Dark theme.
Custom commands
In addition to the built-in slash command sets (Claude Code, OpenClaw, Gemini CLI, general), you can create your own command sets.
Creating a command set
- Open KeyJawn settings.
- Scroll to the Slash commands section.
- Tap Add command set.
- Enter a name for your set (e.g., "my-project").
Adding commands
- Find your custom set in the list.
- Tap the + button next to it.
- Type the command text. The leading
/is added automatically.
Managing sets
- Toggle any set (built-in or custom) on/off with the checkbox.
- Delete a custom set with the X button.
- Remove individual commands from custom sets by tapping the command.
Custom commands appear in the slash command popup alongside the built-in ones. Only commands from enabled sets are shown.
Full version only.
Autocorrect
Autocorrect is off by default. In terminal contexts, autocorrect does more harm than good -- it uses setComposingText which breaks web-based terminals and SSH clients.
To toggle autocorrect:
- Long-press the spacebar.
- Autocorrect toggles on or off for the current app.
- When enabled, the spacebar label changes to indicate autocorrect is active.
KeyJawn remembers the autocorrect setting per app. So you can enable it for Slack but keep it off for Termux.
Full version only.