-
Notifications
You must be signed in to change notification settings - Fork 4
Keyman layouts
862 of the layouts in WM Keyboard started life as Keyman keyboards. That's where most of the language catalogue's long tail comes from: Adyghe, Hatran, Osage, Cypro-Minoan, and several hundred more that no other Android keyboard ships a layout for.
They behave like any other layout once enabled. Each appears under its language in Languages & layouts, is editable in the layout editor, and exports as a file like any other. Before that, most sit behind a More layouts row on the language's own screen, since Amharic or Arabic alone can have hundreds.
That's Khmer Angkor, rendered from the same layout data the app ships.
Keyman is an SIL Global project. Its repository holds around 930 keyboards, most of them for minority and historical languages, and the release-quality ones are MIT licensed. Every keyboard used here is credited by name and copyright holder in About / Open-source licences / Keyman keyboard layouts.
WM Keyboard isn't affiliated with SIL Global or the Keyman project. We converted the key grids with our own code; these aren't the upstream files.
A Keyman keyboard is two things: the visual key grid, and a set of rules that decide what each keypress actually types. Only the grid is converted. The rules are downloaded separately, which the next section covers.
What comes across:
- The key grid itself, including every layer the keyboard defines
- Long-press alternates
- Flicks, for the four directions WM Keyboard supports
- The shift layer, folded into per-key shift labels where the two grids line up
What doesn't:
- Multi-tap keys. WM Keyboard has no equivalent gesture, so those alternates are dropped.
- Diagonal flicks. Keyman has eight flick directions and WM Keyboard has four. A flick aimed north-east isn't quietly remapped onto the north key, because typing the wrong character is worse than the gesture doing nothing.
- Fonts. Keyman packages ship their own. WM Keyboard uses its own font system instead, which already covers these scripts.
This is the part worth understanding before you enable one of these layouts.
On a positional keyboard, each key types the character printed on it. Those work correctly with nothing extra, and that's most of the 862.
On a mnemonic keyboard, the printed key caps and the typed output are deliberately different. A mnemonic Khmer keyboard has you press the key where k sits on a US layout to get ក, and a set of rules performs that mapping. Those rules aren't in the app.
The grids ship with WM Keyboard; the rules are downloaded per keyboard, from keyman.com, when you ask for them.
Languages & layouts / (a language)
When you switch a layout on, the app asks. If that layout needs rules and doesn't have them yet, a prompt offers to fetch them there and then, which is the moment you're deciding to type in the language rather than the moment you notice the output looks wrong. Choose Not now and nothing is lost: the row is still there.
Each layout has its own Typing rules for (layout name) row directly beneath it. The name is in the row on purpose, because a language can offer several Keyman keyboards and their rows stack one after another. Press it to download; press it again later to remove them. Nothing is fetched until you ask.
Until you do, the layout types its key caps. The grid is still right, the long-press alternates are still there, and nothing damages your text. It just isn't doing the character mapping its author wrote. If you enable one of these and the output doesn't match the caps, that's this.
Rules are only fetched for keyboards whose upstream licence permits it, and the downloaded file has to parse as a keyboard before it's kept.
Five keyboards in the upstream repository declare no language at all. Rather than invent one, WM Keyboard skips them unless the script by itself identifies the language, which is how one of the IPA keyboards gets in. You can still add any of the five by importing its file, and you pick the language yourself when you do.
Layout & size / Key layouts / Import from another keyboard
Pick a .keyman-touch-layout file. The app reads the grid, then shows you what the conversion did and asks which language the layout belongs to. See Importing from other keyboards for how that dialog works.
A touch layout file holds no rules, so a layout imported that way types its key caps.
You can also open a .kmp keyboard package straight from a file manager. A package carries both the grid and the rules, so it's the one route that gives you a working keyboard in a single step, and it's how you'd install a keyboard that isn't in the bundled set at all. The app reads the grid out of the compiled keyboard inside the package, installs the rules alongside it, and tells you which of the two it found.
A package built for desktop computers only has no on-screen keyboard in it, so there's nothing to add. The app says so rather than adding an empty layout.
These were converted in bulk, and nobody on the project reads most of these languages. If a grid is wrong, a key is in the wrong place, or a character is missing, open an issue and say which layout. Upstream fixes flow back in when the conversion is re-run.
- Home
- Getting started
- Typing
- Languages
- Suggestions & correction
- Emoji & expression
-
Tools
- Clipboard manager
- Voice typing
- Offline voice (Whisper)
- Handwriting
- Scanner (OCR, QR, documents)
- Camera tool
- Translate
- Search, Wikipedia & dictionary
- Media controls
- AI chat
- AI tools
- Utility tools
- Snippets & text expansion
- Text editing & cursor tools
- Instruments
- Trackpad
- Calendar
- App launcher
- Learn from text
- Vocabulary
- Resize the keyboard
- The toolbar
- Themes & appearance
- Addons
- Plugins
- Privacy & security
- Accessibility
-
Reference
- Gesture cheat sheet
- Typing
- Hardware shortcuts
- Deep links & launcher shortcuts
- Key press
- File formats
- Dictionaries & words
- Importing from other keyboards
- Languages
- Importing from Espanso
- Appearance
- Keyboard themes
- Troubleshooting
- Glossary
- Keyboard font
- Easter eggs
- Icons
- Layout & size
- Key layouts
- Rows & bars
- Keyboard modes
- Emoji
- Phone number formats
- Tools
- Addons & plugins
- Reference - Accessibility
- Fingerprint lock
- Reference - Data saver
- Reference - Permissions
- Privacy
- Reference - Selection actions
- Servers
- Reference - Backup & restore
- About & diagnostics
- Statistics
- Settings A–Z
- Development