Switching languages
Four ways to switch: spacebar swipe, hold-drag picker, globe key, system switcher.
Once more than one layout is enabled, WM Keyboard gives you four independent ways to move between them: swipe the spacebar, hold the spacebar and drag through a list, use a dedicated key, or reach for Android’s own input-method switcher. All four end up calling the same underlying switch, so which one you use is purely a matter of habit; nothing about what a switch does changes.
Swiping the spacebar
Section titled “Swiping the spacebar”The spacebar has two independent swipe slots, each set under WM KeyboardTypingGestures:
- Quick swipe on spacebar — a swipe that starts moving right away. Defaults to Language.
- Hold + swipe on spacebar — hold briefly, then swipe. Defaults to Cursor.
Each slot can be set to Nothing, Language, Cursor, or Numpad. Which slot fires isn’t decided by how far you drag; it’s decided by when the drag starts relative to the long-press delay (300ms by default): a swipe that crosses the touch-slop threshold before that delay elapses uses the quick-swipe slot; one that starts after uses the hold + swipe slot. Once the language preview or the picker list has appeared, though, any further drag switches language regardless of which slot is configured for it. At that point you’re looking at a language chooser, so the drag should do what it looks like it does.
With exactly two layouts enabled, a swipe simply toggles to the other one: dragging further in the same direction doesn’t toggle again, you have to reverse direction to switch back. With three or more, each 44dp of horizontal drag steps to the next layout in your switch order; reaching either end of the list resists wrapping around (it costs 2.5× as much travel to wrap as to take a normal step), so the boundary layout “parks” before a deliberate extra pull cycles you back to the start. (Two layouts of the same language still toggle rather than cycle; the count that matters here is enabled layouts, not distinct languages.)
While a language swipe is in progress, a preview pops up above the spacebar showing every enabled layout as a row of chips: the current selection bold and highlighted, the rest dimmed. With more than five layouts enabled it shows a five-chip window centered on your selection instead of the whole list. Release to commit the highlighted layout; a tap with no movement always just types a space.
The resting spacebar label follows Spacebar shows (also under Typing → Gestures): Language (the default), Layout, or Both, and automatically falls back to showing the layout name alongside the language whenever two enabled layouts share a language, so you can tell them apart. The ◀▶ hint arrows only appear when Arrows on spacebar is on (default) and one of the two swipe slots is actually set to Language and more than one layout is enabled.
Holding to drag through the list
Section titled “Holding to drag through the list”Press and hold the spacebar (with more than one layout enabled) and, shortly before the long-press delay would fire (250ms, or your long-press delay if it’s shorter), one of two things opens:
- The inline preview from the section above, if you have four or fewer layouts enabled and the quick-swipe slot is set to Language. This is what a fresh install shows: seeding never turns on more than four layouts, and quick swipe already defaults to Language.
- A scrollable picker list, once you have more than four layouts enabled, or if you’ve reassigned the quick-swipe slot to something other than Language.
Once the list is open, dragging vertically walks it one row at a time; the very first bit of finger movement after the list appears is absorbed as calibration and doesn’t count as a step, so drift from before the hold fired never accidentally selects a neighbor. Lift your finger after moving and the highlighted row is selected; lift without ever moving and the list simply stays open so you can tap the row you want directly.
Using the globe key
Section titled “Using the globe key”Turn this toggle off in WM KeyboardLayout & sizeBottom-row keys to get the language key back. With it off, the bottom-row key behaves as a dedicated language switcher:
- Tap cycles to the next enabled layout (not language) in your switch order, wrapping from the last back to the first. Three layouts of the same language still count as three separate stops.
- Long-press opens the same picker list used by the spacebar hold-drag, regardless of how many languages you have enabled.
Reordering and trimming the ring
Section titled “Reordering and trimming the ring”Every key and gesture above cycles through the same ordered list: your enabled layouts, in switch order. A fresh install seeds that list from your phone’s own language settings: one layout per language it recognises, up to four, always including QWERTY. A phone set to Bangla and English starts with Avro and QWERTY; a phone set to English alone starts with QWERTY on its own, and has nothing to cycle to yet. Everything else in the catalogue sits inactive until you add it. See Languages overview for how the full catalogue works and what’s in it.
On the Languages screen:
- Your languages lists each enabled language once; tap one to enable or disable its individual layouts, or to remove the language entirely (only available once you have more than one language enabled, so you can never empty the list).
- Add language searches the whole catalogue and enables an unadded language’s first layout immediately.
- Switch order appears once you have more than one layout enabled and lets you drag to reorder the raw layout list, so two English layouts (say QWERTY and AZERTY) keep independent slots in the ring even though they’re both “English.”
There’s no separate “recent languages” or “maximum visible” setting: the size of the ring is entirely a function of how many layouts you’ve enabled, and reordering or removing is the only way to shorten it. The four-layout threshold that switches the hold-drag gesture from an inline preview to a full list (see above) is the main place that ring length changes behavior on its own.
Switching from Android’s system menu
Section titled “Switching from Android’s system menu”The System language switcher group on the Languages screen connects your switch ring to Android itself:
- List languages in the Android switcher (off by default) registers every enabled layout as an Android input-method subtype, so the system’s “Choose input method” sheet lists each one and can switch to it directly. An explicit switch made inside the keyboard is mirrored out to Android, and a switch made from the system sheet is followed back into the keyboard; the two stay in sync either way. It ships off because the sheet prints a subtype’s label where it would otherwise print the keyboard’s name, so one language name in that row reads as if the keyboard were called that. Left off, switching stays entirely inside the keyboard and Android sees no subtypes at all.
- Show app name first (off by default, shown only while the toggle above is on) puts “WM Keyboard” ahead of the language in the switcher’s label instead of after it. Android still controls which part of the label is bold or greyed; this only changes the text order.
- Select languages in the system settings (also shown only while the first toggle is on) opens Android’s own list of this keyboard’s languages, where each one can be ticked or unticked. See the callout below for when you actually need it.
A separate, unrelated toggle (Remember language per app, under Per-app language, off by default) has the keyboard remember whichever layout you last explicitly switched to in a given app and restore it the next time you type there. Apps you haven’t switched languages in yet just follow whatever you last used globally, and a field that demands Latin input or advertises its own language still overrides the memory either way.
Options
Section titled “Options”| Setting | Where | Default |
|---|---|---|
| Quick swipe on spacebar | Typing → Gestures | Language |
| Hold + swipe on spacebar | Typing → Gestures | Cursor |
| Arrows on spacebar | Typing → Gestures | On |
| Spacebar shows | Typing → Gestures | Language |
| Spacebar text | Typing → Gestures | Blank (live name) |
| Emoji key instead of 🌐 | Layout & size → Bottom-row keys | On |
| Comma key opens emoji | Layout & size → Bottom-row keys | Off |
| Your languages / Switch order | Languages | Seeded from your phone’s language list, plus QWERTY (max 4 layouts) |
| Remember language per app | Languages → Per-app language | Off |
| List languages in the Android switcher | Languages → System language switcher | Off |
| Show app name first | Languages → System language switcher | Off |
Details & edge cases
Section titled “Details & edge cases”- A fresh install shows an emoji key where you might expect the globe. This is the single most common point of confusion with switching; see the callout above. Language switching itself is never disabled by this; only the dedicated key’s icon and behavior change.
- The globe key’s tap cycles layouts, not languages. If a language has three enabled layouts, tapping the key visits all three as separate stops rather than skipping straight to the next language.
- With exactly two layouts enabled, swiping doesn’t wrap-cycle: it toggles. Piling on more drag distance in the same direction won’t toggle a second time; you have to reverse direction, which starts a fresh toggle. (The count that matters is enabled layouts, not distinct languages; two layouts of the same language toggle too.)
- A held-but-unmoved spacebar or globe-key long-press leaves the picker list open for a direct tap rather than dismissing it; there’s no need to drag precisely if you’d rather just tap the language you want.
- Reordering affects layouts, not languages. If you’ve added a second layout for the same language (AZERTY alongside QWERTY, say), Switch order treats them as independent stops; moving one doesn’t move the other.
- A subtype that Android hasn’t enabled stays invisible. Registering is ours to do, enabling is Android’s, and before Android 14 only the user could bridge the gap. If the system sheet lists one language on an older phone, nothing is broken; the languages just haven’t been ticked in system settings yet.
- The Android system switcher and per-app memory are independent settings. You can have Android list every layout as a subtype while per-app memory stays off, or the reverse; turning one off doesn’t touch the other.
