WM Keyboard
com.wasimaster.wmkeyboard
Zapstore _@zapstore.dev A private, offline keyboard: 955 languages, smart typing, themes, and tools.
Republished from GitHub / F-Droid by the Zapstore main account.
WM Keyboard is an Android keyboard that keeps its intelligence on your phone. Prediction, autocorrect, glide typing, transliteration, emoji search and learning are all local computation over files in the app's own storage. There is no analytics SDK, no advertising, no account and no server of ours for the app to phone home to. This edition is built with no Google library on its compile classpath at all. 955 LANGUAGES, 2,000 LAYOUTS Native scripts, InScript variants, romanized entries, CJK and constructed languages, all from one data-driven registry. A fresh install starts in the languages your phone is already set to and suggests more from your system language list. BENGALI THE WAY YOU ACTUALLY TYPE IT Avro-compatible phonetic typing, so "ami valo achi" becomes আমি ভালো আছি. The phonetic index is lenient: "asi", "achi" and "achhi" all reach the right word. Probhat is there too, with aspirates on shift, plus conjunct-aware backspace. TYPING THAT LEARNS, LOCALLY A trie-lattice beam decoder shared by tapping and glide, n-gram context ranking, autocorrect gated by a likelihood ratio rather than a blunt threshold, and on-device learning of your words, bigrams and trigrams. One tap clears all of it. A REAL TOOLBOX Clipboard with history, pinning and search. Snippets and text expansion. Calculator, unit and currency conversion, calendars, translate, dictionary lookup, web search, camera, media controls, an app launcher and more, most of them fully offline. EMOJI, GIFS AND STICKERS The Emoji 17.0 catalog with semantic search in 125 languages, per-person skin tones, kaomoji, custom sticker packs, and long-press to send animated emoji. MAKE IT YOURS A full theme editor: palettes, fonts, key shapes, textures, decals, particles and photo backgrounds, plus Material You and AMOLED. Resize the keyboard, split it, float it, or run it one-handed. Themes and layouts export and import as files, and an addon repository can serve you more. VOICE AND AI Speech recognition with a continuous mode, through Android's own recognizer or entirely on the phone: Whisper on whisper.cpp, and Asr4All, Parakeet and Moonshine on ExecuTorch, each model a download you ask for. Harper checks grammar offline. AI writing tools are optional, with your own API key or your own server. Nothing is enabled behind your back. PRIVACY Every network feature is a tool you choose to open, and each one is documented. This edition downloads nothing unasked: automatic language data is off by default, so a language's n-gram pack and emoji dictionary arrive only when you accept the prompt or press the button. One connection is not a tool, and it is worth naming: a script with no font of its own is drawn in Noto, fetched through Android's downloadable-fonts provider — Google Play Services where that is installed, and nothing where it is not. Typing on its own never reaches the network: a weather or currency chip waits for your tap before it fetches anything, and exchange rates come from currency-api and Frankfurter, both free software with open data, unless you pick another source. Every service the keyboard uses can also be pointed at another server, including one you run yourself. The update check asks F-Droid only when you press the button for it. Password and secure fields turn off learning, suggestions and clipboard capture on their own, and incognito mode does the same on demand. Backups are written where you point them, and a passphrase encrypts them. This is the F-Droid build. It leaves out handwriting, text and QR scanning, the Whistle dictation engine and the on-device AI chat models, because they are built on Google libraries or code without published source, and it carries neither. Offline voice libraries come from outside F-Droid, once you allow it. Its privacy policy is its own: https://wmkeyboard.pages.dev/privacy/policy-fdroid/ The full documentation, including exactly what touches the network and when, is at https://wmkeyboard.pages.dev
First release: Sep 14, 2026, 11 total releases.
Most recent release: Oct 31, 2026.
Appears in 0 app stacks.
0 sats / 0 zaps received in the past year.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Oct 31, 2026 0.6.4
- Oct 25, 2026 0.6.2
- Oct 16, 2026 0.6.0
- Oct 16, 2026 0.6.1<details open> <summary><h2>What's new in 0.6.1</h2></summary> Typing is lighter: a typed letter no longer redraws the whole keyboard, and the suggestion strip and key bubbles reuse their text instead of measuring it again. A gallery tool, a floating AI button, and a WM Keyboard for the computer that syncs with the phone over KDE Connect. Under the hood, the transliteration engines (Avro, Khipro, Bijoy, Hindi, Urdu, the Indic languages, Persian and Arabic) now run on one Rust engine. ### Faster typing - A typed letter redraws only the strip and the word it changes, not every key. The strip scrolls lazily and asks the app less on each keystroke, and the caps mode after a finished word is worked out without asking the app. - Updates from GitHub install with the app's baseline profile, so the first launches after an update are as quick as the ones after it. - Hindi, Urdu, the Indic languages, Persian, Arabic, Bangla and Assamese load a prebuilt phonetic index instead of building one in memory at every start. Tamil alone used to take 94 MB ([#716](https://github.com/wasi-master/wmkeyboard/issues/716)).
More…
- Glide reaches long words on big word lists ([#714](https://github.com/wasi-master/wmkeyboard/issues/714)). ### Tools - **Gallery**: send photos and videos from inside the keyboard, with a quick edit and the location data cleared before they go ([#708](https://github.com/wasi-master/wmkeyboard/issues/708)). - **Floating AI button** and an Ask AI sheet that can read the screen ([#697](https://github.com/wasi-master/wmkeyboard/issues/697)). The AI can use the keyboard's own tools, from the calendar and notes to the clock and KDE Connect, each one asking first unless you allow it ([#698](https://github.com/wasi-master/wmkeyboard/issues/698)). The keyboard's AI chat takes pictures. - **KDE Connect**: sync with a paired computer, pair by scanning its code, send one-time codes to it, pick the computer when sharing to several ([#703](https://github.com/wasi-master/wmkeyboard/issues/703)), and clear passwords received from it ([#704](https://github.com/wasi-master/wmkeyboard/issues/704)). - The toolbox has folders, and a search that opens over the whole keyboard from a button beside the toolbar's back button ([#709](https://github.com/wasi-master/wmkeyboard/issues/709), [#687](https://github.com/wasi-master/wmkeyboard/issues/687)). - Switch language as a toolbar tool ([#667](https://github.com/wasi-master/wmkeyboard/issues/667)); countdown, planner and date open the clock ([#686](https://github.com/wasi-master/wmkeyboard/issues/686)); translate shows three lines of what you type ([#713](https://github.com/wasi-master/wmkeyboard/issues/713)) and works with the phone sideways ([#695](https://github.com/wasi-master/wmkeyboard/issues/695)). - Handwriting models import from files ([#666](https://github.com/wasi-master/wmkeyboard/issues/666)). - One system spell checker instead of two with the same name: the word lists for spelling, Harper for English grammar on top. ### Typing and gestures - Two-thumb typing: thumbs can take turns, since lifting them all waits a moment ([#674](https://github.com/wasi-master/wmkeyboard/issues/674), [#676](https://github.com/wasi-master/wmkeyboard/issues/676)); previews follow the word ([#678](https://github.com/wasi-master/wmkeyboard/issues/678)), an open alternates popup is left alone ([#671](https://github.com/wasi-master/wmkeyboard/issues/671)), and the docs say which glide features it turns off ([#675](https://github.com/wasi-master/wmkeyboard/issues/675)). - Multi-finger swipes work on the keys under a tool's own box ([#712](https://github.com/wasi-master/wmkeyboard/issues/712)). - Pick mode and F-keys for physical keyboards ([#701](https://github.com/wasi-master/wmkeyboard/issues/701)). - Elisions and compounds no longer count against a layout in glide ([#707](https://github.com/wasi-master/wmkeyboard/issues/707)). - Re-casing keeps ß ([#715](https://github.com/wasi-master/wmkeyboard/issues/715)); the touchpad swipe no longer jumps a line ([#682](https://github.com/wasi-master/wmkeyboard/issues/682)). - A switch takes the accents out of every letter's popup ([#677](https://github.com/wasi-master/wmkeyboard/issues/677)). ### Layouts and languages - Chinese 联想 stays past the commit and backspace re-picks a conversion ([#710](https://github.com/wasi-master/wmkeyboard/issues/710), [#711](https://github.com/wasi-master/wmkeyboard/issues/711)); a conversion pack that loaded empty is read again ([#691](https://github.com/wasi-master/wmkeyboard/issues/691)). - Korean: double-tap on Danmoeum, and y-vowels from Naratgeul's double key ([#685](https://github.com/wasi-master/wmkeyboard/issues/685)). - Bangla: ZWNJ and ZWJ on the hasant and full stop holds ([#668](https://github.com/wasi-master/wmkeyboard/issues/668)). - Bracket keys draw the glyph that right-to-left text shows ([#689](https://github.com/wasi-master/wmkeyboard/issues/689)), and symbols on shift appear only while shift is held ([#673](https://github.com/wasi-master/wmkeyboard/issues/673)). - System default font keeps the phone's own Latin on a script board ([#670](https://github.com/wasi-master/wmkeyboard/issues/670)). ### Fixes - The keys take the space of a hidden system keyboard bar ([#681](https://github.com/wasi-master/wmkeyboard/issues/681)), and a held window height no longer outlives its showing ([#669](https://github.com/wasi-master/wmkeyboard/issues/669)). - Find stays on its match, Select all stays selected ([#679](https://github.com/wasi-master/wmkeyboard/issues/679)), and the find panel keeps room for its toggles ([#688](https://github.com/wasi-master/wmkeyboard/issues/688)). - Chip undo, even tool heights and the incognito badge on the right field ([#665](https://github.com/wasi-master/wmkeyboard/issues/665)). - Backups leave out only the largest heavy sections ([#692](https://github.com/wasi-master/wmkeyboard/issues/692)). - About can hide the launcher icon. </details> ## Download There are two choices to make, and the second one is easy. **full or lite?** **full** is the whole keyboard. **lite** leaves out ML Kit, LiteRT and the engines built on them (handwriting, OCR, document scanning, Whistle dictation and the local LLM) for a far smaller download. It keeps the grammar checker and offline dictation through whisper.cpp, Asr4All, Parakeet and Moonshine. **Which languages?** This is about the words the app *shows* you, on its settings screens and its panels. **all** has them in 48 languages besides English. **English** has English alone and is around 41 MB smaller. What you can *type* is identical: every layout and every dictionary is in both. You can swap one for the other later without uninstalling or losing a setting. Almost every phone sold since 2017 takes an **arm64-v8a** build, so start here: | arm64-v8a | all languages | English only | |:---|:---|:---| | **⭐ full** | **[153 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-intl-arm64-v8a.apk)** | **[93 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-en-arm64-v8a.apk)** | | **lite** | [83 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-intl-arm64-v8a.apk) | [24 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-arm64-v8a.apk) | <details> <summary><b>Other architectures</b> (older 32-bit phones, emulators, ChromeOS, or if the above refuses to install)</summary> | Architecture | full · all | full · English | lite · all | lite · English | |:---|:---|:---|:---|:---| | armeabi-v7a<br><sub>Older 32-bit phones and watches</sub> | [114 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-intl-armeabi-v7a.apk) | [54 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-en-armeabi-v7a.apk) | [80 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-intl-armeabi-v7a.apk) | [20 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-armeabi-v7a.apk) | | x86_64<br><sub>Emulators, ChromeOS, x86 tablets</sub> | [163 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-intl-x86_64.apk) | [103 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-en-x86_64.apk) | [84 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-intl-x86_64.apk) | [25 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-x86_64.apk) | | universal<br><sub>All three in one file. Only if the others refuse to install</sub> | [323 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-intl-universal.apk) | [264 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-en-universal.apk) | [101 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-intl-universal.apk) | [42 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-universal.apk) | </details> <details> <summary><b>No internet permission</b> (a keyboard that cannot reach the network at all)</summary> The regular builds with `android.permission.INTERNET` taken out of the manifest, so Android refuses every connection the app tries to make. Typing, prediction, gesture typing and the clipboard work as usual, and on full so do grammar checking, the scanners and a local AI model imported from a file. Anything that downloads (dictionary packs, voice and handwriting models, translation languages, GIFs, cloud backups) fails as it would with the phone offline, and the app cannot check for its own updates, so come back here for new versions. Language packs, voice models, OCR data and offline GIF packs fetched on another device can be imported instead ([how](https://wmkeyboard.pages.dev/privacy/offline/)). Each is signed with the same key as the builds above and installs over them, and back, without losing a setting. | | arm64-v8a | universal | |:---|:---|:---| | **full · all languages** | [153 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-intl-nointernet-arm64-v8a.apk) | [323 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-intl-nointernet-universal.apk) | | **lite · English** | [24 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-nointernet-arm64-v8a.apk) | [42 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-nointernet-universal.apk) | </details> <details> <summary><b>Checksums, R8 mappings and native symbols</b></summary> For verifying a download, and for reading a crash report from these APKs. | File | Size | What it is | |:---|:---|:---| | [`SHA256SUMS.txt`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/SHA256SUMS.txt) | 4 KB | Checksums for everything above | | [`wmkeyboard-0.6.1-vc34-fdroid.apk`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-fdroid.apk) | 101 MB | The F-Droid build, **lite · all languages**. F-Droid rebuilds it from source and publishes it only if the two match, so it is the same APK F-Droid serves, byte for byte. Installs over an F-Droid install from 0.5.10 on | | [`wmkeyboard-0.6.1-vc34-full-intl-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-intl-mapping.txt.gz) | 18 MB | R8 mapping, **full · all languages**. Retraces a stack trace | | [`wmkeyboard-0.6.1-vc34-full-en-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-full-en-mapping.txt.gz) | 18 MB | R8 mapping, **full · English** | | [`wmkeyboard-0.6.1-vc34-lite-intl-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-intl-mapping.txt.gz) | 15 MB | R8 mapping, **lite · all languages** | | [`wmkeyboard-0.6.1-vc34-lite-en-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-mapping.txt.gz) | 15 MB | R8 mapping, **lite · English** | | [`wmkeyboard-0.6.1-vc34-lite-en-nointernet-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-lite-en-nointernet-mapping.txt.gz) | 15 MB | R8 mapping, **lite · English, no internet permission**. Only attached when it differs from lite · English | | [`wmkeyboard-0.6.1-vc34-play-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.6.1/wmkeyboard-0.6.1-vc34-play-mapping.txt.gz) | 17 MB | R8 mapping, **Play build**. The Play channel flags change what R8 renames, so this is the only one that reads a crash from a Play install | Verify a download before installing it: ```sh sha256sum -c SHA256SUMS.txt --ignore-missing ``` Retrace a crash with the mapping from the same build and version. The flavour has to match on both axes, because R8 renames the two language builds independently: ```sh gunzip -k wmkeyboard-0.6.1-vc34-full-intl-mapping.txt.gz retrace wmkeyboard-0.6.1-vc34-full-intl-mapping.txt stacktrace.txt ``` A crash from the Play build takes `wmkeyboard-0.6.1-vc34-play-mapping.txt.gz` instead: that build is compiled with different flags, so R8 renames it differently and none of the four above fit it. Or paste the crash into a bug report and let the [retrace workflow](https://github.com/wasi-master/wmkeyboard/blob/main/.github/workflows/retrace.yml) do all of this for you — it reads the `version:` line, fetches the matching mapping from this release, and comments the retraced trace on the issue. </details> 100 commits since [0.6.0](https://github.com/wasi-master/wmkeyboard/releases/tag/v0.6.0). [See every one](https://github.com/wasi-master/wmkeyboard/compare/v0.6.0...v0.6.1). - Sep 30, 2026 0.5.13<details open> <summary><h2>What's new in 0.5.13</h2></summary> Emoji, GIFs and stickers share one panel, the clipboard grows taller and reads text off images, typing statistics arrive with levels and a heatmap, and new layouts reach Korean, Bengali, Arabic, Marathi and Hebrew. Voice, AI and Translate can fall back to the models on the phone when the connection is gone. ### Panels, clipboard and stickers
More…
- **Switch between the emoji, GIF and sticker panels** from a row in any of them ([#366](https://github.com/wasi-master/wmkeyboard/issues/366)). - **Import WhatsApp sticker packs** ([#368](https://github.com/wasi-master/wmkeyboard/issues/368)), and hold a suggested sticker to see it bigger ([#404](https://github.com/wasi-master/wmkeyboard/issues/404)). - **The clipboard reads text off images, opens and views clips**, with tabs, clear and outlines ([#371](https://github.com/wasi-master/wmkeyboard/issues/371)). The panel can be dragged taller, shows a clip's full text, takes optional buttons on each card and keeps as many clips as you like ([#414](https://github.com/wasi-master/wmkeyboard/issues/414)). - **Deleting a clip clears it from the system clipboard too** ([#442](https://github.com/wasi-master/wmkeyboard/issues/442)), and in incognito the keyboard's own copies stay off it ([#392](https://github.com/wasi-master/wmkeyboard/issues/392)). ### Typing - **Hold shift with one finger and type capitals with another** ([#367](https://github.com/wasi-master/wmkeyboard/issues/367)). - **An arrow keys row** under the keyboard ([#369](https://github.com/wasi-master/wmkeyboard/issues/369)). - **Long spacebar cursor swipes speed up** ([#385](https://github.com/wasi-master/wmkeyboard/issues/385)), and ?123 can go back to the letters after a space ([#359](https://github.com/wasi-master/wmkeyboard/issues/359)). - **Leave the word before Enter as typed**: a switch so a search sent with Enter is not corrected on the way ([#457](https://github.com/wasi-master/wmkeyboard/issues/457)). - **Backspace after a glide can delete one letter** instead of the whole word ([#455](https://github.com/wasi-master/wmkeyboard/issues/455)). - **Swipe in from the keyboard's edge to go back**, for phones that keep the system's back gesture off the keyboard ([#437](https://github.com/wasi-master/wmkeyboard/issues/437)). - Glide: crossing the spacebar only splits a word once the stroke reaches the bar's middle ([#428](https://github.com/wasi-master/wmkeyboard/issues/428)). - Autocorrect: backspace undoes a repaired apostrophe or capital I ([#402](https://github.com/wasi-master/wmkeyboard/issues/402)), "ill" offers I'll ([#384](https://github.com/wasi-master/wmkeyboard/issues/384)), German "im" stays "im" ([#425](https://github.com/wasi-master/wmkeyboard/issues/425)), and English verb forms the word list lacks are left alone ([#395](https://github.com/wasi-master/wmkeyboard/issues/395)). - **Dutch "wel", "nog" and "ging" are suggested again**: another language's offensive-word list no longer hides them ([#465](https://github.com/wasi-master/wmkeyboard/issues/465)). - Tap a slider's value to type it exactly ([#415](https://github.com/wasi-master/wmkeyboard/issues/415)), and the spacebar's language echo can be tuned or turned off ([#376](https://github.com/wasi-master/wmkeyboard/issues/376)). ### Layouts and languages - **Korean 천지인 (Cheonjiin) keypad**, and Hangul now builds syllables in the keyboard's own search boxes too ([#454](https://github.com/wasi-master/wmkeyboard/issues/454)). - **Bengali Khipro layout** ([#400](https://github.com/wasi-master/wmkeyboard/issues/400)) and ANSI (Bijoy) output; Avro conjuncts and ঙ্গ follow desktop Avro. - **Arabic with every letter on a key** and no shift key ([#427](https://github.com/wasi-master/wmkeyboard/issues/427)), Marathi shifted letters on hold, Hebrew SI-1452, QWERTZ for English ([#422](https://github.com/wasi-master/wmkeyboard/issues/422)), and layouts to match HeliBoard, FlorisBoard and FUTO. - **Jianpin** (abbreviated pinyin) ([#405](https://github.com/wasi-master/wmkeyboard/issues/405)). - Persian suggests words with their half-space and puts the harakat on shift ([#406](https://github.com/wasi-master/wmkeyboard/issues/406), [#407](https://github.com/wasi-master/wmkeyboard/issues/407), [#393](https://github.com/wasi-master/wmkeyboard/issues/393)); Polish puts diacritics first on hold ([#362](https://github.com/wasi-master/wmkeyboard/issues/362)); every grid has the question mark one hold away ([#408](https://github.com/wasi-master/wmkeyboard/issues/408)); a split keyboard can keep the spacebar whole ([#399](https://github.com/wasi-master/wmkeyboard/issues/399)). - The number pad's space key shows ␣ ([#459](https://github.com/wasi-master/wmkeyboard/issues/459)), and the layout editor draws the bottom row the keyboard draws ([#420](https://github.com/wasi-master/wmkeyboard/issues/420)). ### Voice, Translate, AI and search - **Use on-device models offline**: with no connection, or a server that does not answer, voice typing, AI actions and Translate use the model on the phone ([#452](https://github.com/wasi-master/wmkeyboard/issues/452)). - **Your own translation server**, OpenAI-compatible ([#435](https://github.com/wasi-master/wmkeyboard/issues/435)), and Translate opens on the selection with a chip beside AI ([#434](https://github.com/wasi-master/wmkeyboard/issues/434)). - **Brave Answers as an AI provider** ([#438](https://github.com/wasi-master/wmkeyboard/issues/438)) and **Tavily** for web and image search ([#439](https://github.com/wasi-master/wmkeyboard/issues/439)). - A transcription server per language, with its own endpoint path ([#388](https://github.com/wasi-master/wmkeyboard/issues/388), [#389](https://github.com/wasi-master/wmkeyboard/issues/389)). ### Statistics, themes and settings - **Typing statistics with levels, achievements, a tap heatmap** and a Statistics tool ([#390](https://github.com/wasi-master/wmkeyboard/issues/390)); synced statistics add up per device ([#447](https://github.com/wasi-master/wmkeyboard/issues/447)). - Image sizes and templates for theme designers ([#397](https://github.com/wasi-master/wmkeyboard/issues/397)). - Install language packs and offline GIF packs from a file. ### Fixes - The bottom padding survives switching to another keyboard and back ([#463](https://github.com/wasi-master/wmkeyboard/issues/463)). - Landscape keeps its bottom row, fills the cutout side and fits its tools ([#370](https://github.com/wasi-master/wmkeyboard/issues/370)). - The language picker's highlight stays inside the menu ([#363](https://github.com/wasi-master/wmkeyboard/issues/363)), and Translate's typing box grows with the system font size ([#378](https://github.com/wasi-master/wmkeyboard/issues/378)). - WebDAV backups upload to Nextcloud again ([#411](https://github.com/wasi-master/wmkeyboard/issues/411)). </details> ## Download There are two choices to make, and the second one is easy. **full or lite?** **full** is the whole keyboard. **lite** leaves out ML Kit and the on-device models (handwriting, OCR, document scanning, Whisper voice input and the local LLM) for a far smaller download. **Which languages?** This is about the words the app *shows* you, on its settings screens and its panels. **all** has them in 48 languages besides English. **English** has English alone and is around 41 MB smaller. What you can *type* is identical: every layout and every dictionary is in both. You can swap one for the other later without uninstalling or losing a setting. Almost every phone sold since 2017 takes an **arm64-v8a** build, so start here: | arm64-v8a | all languages | English only | |:---|:---|:---| | **⭐ full** | **[133 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-arm64-v8a.apk)** | **[86 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-en-arm64-v8a.apk)** | | **lite** | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-intl-arm64-v8a.apk) | [12 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-en-arm64-v8a.apk) | <details> <summary><b>Other architectures</b> (older 32-bit phones, emulators, ChromeOS, or if the above refuses to install)</summary> | Architecture | full · all | full · English | lite · all | lite · English | |:---|:---|:---|:---|:---| | armeabi-v7a<br><sub>Older 32-bit phones and watches</sub> | [97 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-armeabi-v7a.apk) | [51 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-en-armeabi-v7a.apk) | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-intl-armeabi-v7a.apk) | [12 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-en-armeabi-v7a.apk) | | x86_64<br><sub>Emulators, ChromeOS, x86 tablets</sub> | [143 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-x86_64.apk) | [97 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-en-x86_64.apk) | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-intl-x86_64.apk) | [12 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-en-x86_64.apk) | | universal<br><sub>All three in one file. Only if the others refuse to install</sub> | [296 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-universal.apk) | [250 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-en-universal.apk) | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-intl-universal.apk) | [13 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-en-universal.apk) | </details> <details> <summary><b>No internet permission</b> (a keyboard that cannot reach the network at all)</summary> **full · all languages**, with `android.permission.INTERNET` taken out of the manifest, so Android refuses every connection the app tries to make. Typing, prediction, gesture typing, the clipboard, grammar checking and the scanners work as usual, and so does a local AI model imported from a file. Anything that downloads (dictionary packs, voice and handwriting models, translation languages, GIFs, cloud backups) fails as it would with the phone offline, and the app cannot check for its own updates, so come back here for new versions. Language packs, voice models, OCR data and offline GIF packs fetched on another device can be imported instead ([how](https://wmkeyboard.pages.dev/privacy/offline/)). It is signed with the same key as the builds above and installs over them, and back, without losing a setting. | arm64-v8a | universal | |:---|:---| | [133 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-nointernet-arm64-v8a.apk) | [296 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-nointernet-universal.apk) | </details> <details> <summary><b>Checksums, R8 mappings and native symbols</b></summary> For verifying a download, and for reading a crash report from these APKs. | File | Size | What it is | |:---|:---|:---| | [`SHA256SUMS.txt`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/SHA256SUMS.txt) | 3 KB | Checksums for everything above | | [`wmkeyboard-0.5.13-vc28-fdroid.apk`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-fdroid.apk) | 58 MB | The F-Droid build, **lite · all languages**. F-Droid rebuilds it from source and publishes it only if the two match, so it is the same APK F-Droid serves, byte for byte. Installs over an F-Droid install from 0.5.10 on | | [`wmkeyboard-0.5.13-vc28-full-intl-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-mapping.txt.gz) | 15 MB | R8 mapping, **full · all languages**. Retraces a stack trace | | [`wmkeyboard-0.5.13-vc28-full-en-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-en-mapping.txt.gz) | 15 MB | R8 mapping, **full · English** | | [`wmkeyboard-0.5.13-vc28-lite-intl-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-intl-mapping.txt.gz) | 12 MB | R8 mapping, **lite · all languages** | | [`wmkeyboard-0.5.13-vc28-lite-en-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-lite-en-mapping.txt.gz) | 12 MB | R8 mapping, **lite · English** | | [`wmkeyboard-0.5.13-vc28-play-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-play-mapping.txt.gz) | 15 MB | R8 mapping, **Play build**. The Play channel flags change what R8 renames, so this is the only one that reads a crash from a Play install | | [`wmkeyboard-0.5.13-vc28-full-intl-native-symbols.zip`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-intl-native-symbols.zip) | 18 KB | Native debug symbols, **full · all languages** | | [`wmkeyboard-0.5.13-vc28-full-en-native-symbols.zip`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.13/wmkeyboard-0.5.13-vc28-full-en-native-symbols.zip) | 18 KB | Native debug symbols, **full · English** | Verify a download before installing it: ```sh sha256sum -c SHA256SUMS.txt --ignore-missing ``` Retrace a crash with the mapping from the same build and version. The flavour has to match on both axes, because R8 renames the two language builds independently: ```sh gunzip -k wmkeyboard-0.5.13-vc28-full-intl-mapping.txt.gz retrace wmkeyboard-0.5.13-vc28-full-intl-mapping.txt stacktrace.txt ``` A crash from the Play build takes `wmkeyboard-0.5.13-vc28-play-mapping.txt.gz` instead: that build is compiled with different flags, so R8 renames it differently and none of the four above fit it. Or paste the crash into a bug report and let the [retrace workflow](https://github.com/wasi-master/wmkeyboard/blob/main/.github/workflows/retrace.yml) do all of this for you — it reads the `version:` line, fetches the matching mapping from this release, and comments the retraced trace on the issue. </details> 111 commits since [0.5.12](https://github.com/wasi-master/wmkeyboard/releases/tag/v0.5.12). [See every one](https://github.com/wasi-master/wmkeyboard/compare/v0.5.12...v0.5.13). - Sep 25, 2026 0.5.12<details open> <summary><h2>What's new in 0.5.12</h2></summary> Backups go to any number of places and keep your devices in sync, the keyboard is quicker under your fingers, T9 keypads reach over 300 languages, and the voice, translate, clipboard and sticker tools each pick up a feature people asked for. ### Backup and sync - **Back up to any number of locations at once**: a folder, WebDAV, S3, FTP,
More…
SFTP, SMB, a Git repository, an IMAP mailbox, Google Drive (hidden app data or a folder you can see), Dropbox and OneDrive, with presets for Nextcloud, ownCloud and the common S3 hosts. Each location has its own sign-in, a connection test and its status on its card. - **Restore straight from a location**: pick any automatic backup there, from this device or another. - **Sync settings between devices** through those locations, or over Tailscale, and keep the toolbar or the layouts different on each device ([#308](https://github.com/wasi-master/wmkeyboard/issues/308)). - An offline run no longer asks you to sign in again, OneDrive stays signed in past 90 days, and big backups upload to Drive and OneDrive in pieces. ### Speed - **Typing does less work per key.** A keystroke no longer lays out the whole keyboard window, every key draws on a layer of its own, the long-press popup is built before the hold fires, and suggestions run one pass at a time instead of one per core ([#313](https://github.com/wasi-master/wmkeyboard/issues/313)). - **Less memory**: layouts load when used and the big word indexes are packed ([#296](https://github.com/wasi-master/wmkeyboard/issues/296)). - **Less on the main thread while you type**: autocorrect works out a word's correction as it is typed instead of on the space, Chinese and Japanese conversion candidates decode in the background, and the clipboard history and the learned words save off the main thread. The typing-path code is also kept small enough for Android to compile ahead of time, and the keyboard starts without waking the download scheduler. - **Settings respond faster**: a change redraws only its own row, not the whole screen. - **Accessibility › Settings app › Screen transitions** turns off the flying row-to-heading animation, which is what makes settings lag on a slower phone. ### Voice - **Dictation listens for your own words**: names and jargon the keyboard has learned come back spelled your way ([#305](https://github.com/wasi-master/wmkeyboard/issues/305)). - **Dictate into the keyboard's own fields**: the AI chat, the searches, Find and replace, the clip editor and the rest carry a mic on their strip ([#353](https://github.com/wasi-master/wmkeyboard/issues/353)). - The mic stops looking open the moment it stops hearing, so no words are lost talking into a finished recording ([#315](https://github.com/wasi-master/wmkeyboard/issues/315)). ### Translate, AI and look-ups - **DeepL Translate and DeepL Write** with your own API key or a proxy ([#331](https://github.com/wasi-master/wmkeyboard/issues/331)). - **On-device language menus list what you downloaded first**, and keep the list short ([#324](https://github.com/wasi-master/wmkeyboard/issues/324)). On Google Play, translation is on the device by default. - **Ask the AI about a passage**: Wikipedia, Dictionary, Vocabulary and Grammar check hand selected text to the AI chat, with Explain simply, Summarise and Hard words to start from ([#348](https://github.com/wasi-master/wmkeyboard/issues/348), [#352](https://github.com/wasi-master/wmkeyboard/issues/352)). - **Synonyms from the held-word menu** on the suggestion strip ([#321](https://github.com/wasi-master/wmkeyboard/issues/321)). The Dictionary tool asks a chain of sources, installed vocabulary packs and Wiktionary among them, instead of one that was often down. - **Search by photo** from the camera tool or the image search panel, with Lens, a search site, or the share sheet ([#349](https://github.com/wasi-master/wmkeyboard/issues/349)). Web and image search keep their results until you start a new search ([#347](https://github.com/wasi-master/wmkeyboard/issues/347)). - **The text scanner reads Bengali, Arabic, Cyrillic, CJK and more** with Tesseract, in the full build ([#306](https://github.com/wasi-master/wmkeyboard/issues/306)). ### Layouts and languages - **T9 keypads for over 300 languages**, laid out the way the phone standard has them, Indic, Southeast Asian and tone-marked scripts included, so switching language keeps you on a keypad ([#332](https://github.com/wasi-master/wmkeyboard/issues/332)). Four languages that downloaded a word list in the wrong script get the right one. - **Layouts are picked from cards that preview the real keyboard** in your theme. - **The 🌐 key sits in the same place on every layout** ([#310](https://github.com/wasi-master/wmkeyboard/issues/310)), and can go back to the last language like Alt+Tab ([#311](https://github.com/wasi-master/wmkeyboard/issues/311)). - **Hold a number-row digit for the other numeral system**, 0-9 on an Arabic keyboard and the other way round ([#309](https://github.com/wasi-master/wmkeyboard/issues/309)). - **Japanese**: edit a key's flick directions, a key that doubles as 小゛゜ while composing, and a full-width space ([#339](https://github.com/wasi-master/wmkeyboard/issues/339), [#340](https://github.com/wasi-master/wmkeyboard/issues/340), [#341](https://github.com/wasi-master/wmkeyboard/issues/341)). - **Keyman keyboards type what their rules say**, keep every layer they define, and fall back to a checked copy of the rules when keyman.com does not answer. - A key map for Avro and Hindi phonetic on the language screen. - **Bangla**: the downloaded word list is kept whole instead of stopping at ব, so "sorasori" gives সরাসরি again, and a new "Correct to dictionary words" switch stops space turning a typed reading into a sound-alike word. Avro's q types ক, and 145 romanized spellings that read worse than Avro's own were dropped or fixed ([#77](https://github.com/wasi-master/wmkeyboard/discussions/77)). - A spacebar flick moves one language at a time, and the language name lingers for less time after it. - An Arabic or Hebrew phone language no longer mirrors the keyboard ([#336](https://github.com/wasi-master/wmkeyboard/issues/336)), and an English auto-shift no longer carries onto Arabic. ### Typing - **Brackets can close themselves** ([#319](https://github.com/wasi-master/wmkeyboard/issues/319)), and a closing bracket wraps a selection too ([#338](https://github.com/wasi-master/wmkeyboard/issues/338)). - **Hyphenated words compose whole**: "well-pai" completes to "well-paid". - **Glide**: a loop is the one way to draw a doubled letter, while a pause or a wiggle marks a letter you mean, so write, wire and wrote come apart ([#337](https://github.com/wasi-master/wmkeyboard/issues/337)). A word drawn in full beats a guess ([#317](https://github.com/wasi-master/wmkeyboard/issues/317)), leaving Automatic resets what it had learned ([#316](https://github.com/wasi-master/wmkeyboard/issues/316)), word-list stutters like "n-no" stay off the strip ([#304](https://github.com/wasi-master/wmkeyboard/issues/304)), and the number of shapes kept per word is a setting ([#326](https://github.com/wasi-master/wmkeyboard/issues/326)). - **Up-flick for a capital, a 🌐 typing guard and 🌐-drag shortcuts**, all off by default. Dragging from shift shows the capitals and lights the key ([#345](https://github.com/wasi-master/wmkeyboard/issues/345)). - **Trackpad magnifier**: a bubble over the caret while the trackpad or the spacebar moves it ([#303](https://github.com/wasi-master/wmkeyboard/discussions/303)). - Holding a shifted Enter offers the field's Send or Search action. - **Hold enter for emoji**, for a bottom row with no emoji key, and a key action that switches straight to another keyboard app ([#354](https://github.com/wasi-master/wmkeyboard/issues/354)). - No automatic space after the dot inside an email address, and URL fields keep the comma key. ### Clipboard and stickers - **Undo after deleting a clip** ([#327](https://github.com/wasi-master/wmkeyboard/issues/327)), and a switch to turn off swipe-to-delete ([#344](https://github.com/wasi-master/wmkeyboard/issues/344)). - Clip card options, a per-clip length limit, and rounded keyboard corners. - **Your own stickers are offered as you type** a title, keyword or emoji, on a sticker row of their own ([#329](https://github.com/wasi-master/wmkeyboard/issues/329)). ### Tools - **The app launcher opens apps floating or in split screen**, and pairs two apps side by side, in ColorOS's floating window too. - **Hide a tool from the toolbox** without turning it off. - The symbol row: hold an entry for a menu ([#323](https://github.com/wasi-master/wmkeyboard/issues/323)). - An ask-first chip on the strip shows its whole question, and holding it opens the setting ([#312](https://github.com/wasi-master/wmkeyboard/issues/312)). - A held Trackpad tool no longer hides the toolbox while you customize it ([#320](https://github.com/wasi-master/wmkeyboard/issues/320)). ### Themes and settings - **Any theme can follow the wallpaper colours.** An imported FlorisBoard theme moves with the wallpaper the way FlorisBoard draws it, and any other theme can switch it on, keeping each colour's lightness so it stays legible. - **Import Gboard themes and Rboard packs** from a ZIP, or browse Rboard's collection in the GitHub and F-Droid builds. - **Pick the app's own language** in About ([#322](https://github.com/wasi-master/wmkeyboard/issues/322)). - An icon on every setting row, and an Icons in settings switch for plain rows. - Motion across the keyboard and the settings app: panels fade in, layer changes ease in, and the emoji tabs switch in one smooth step. ### Automation and privacy - **Let Tasker, adb and other apps control the keyboard**: switch layout or language, back up and more, behind a master switch and one switch per action, all off by default. Typing text is left out of the Play build. - **Builds without the internet permission**: every network feature steps aside cleanly ([#292](https://github.com/wasi-master/wmkeyboard/issues/292)). - One-time camera and mic grants work, instead of sending you to Settings ([#351](https://github.com/wasi-master/wmkeyboard/issues/351)). ### Fixes - **Bottom padding**: no empty band above three-button navigation on Android 15, gesture navigation keeps its padding on ColorOS 15, and a reset returns it to automatic ([#343](https://github.com/wasi-master/wmkeyboard/issues/343)). - A floating keyboard stays put after a drag and while resizing ([#342](https://github.com/wasi-master/wmkeyboard/issues/342)). - Tool panels can grow the keyboard again, so the AI chat and Translate are not squeezed. - Landscape: tool panels give way to the keys, and space swipes stay swipes ([#333](https://github.com/wasi-master/wmkeyboard/issues/333)). - No full-screen editor on tablets and unfolded foldables. - On a TV the keyboard is a floating card, like Gboard's. - KDE Connect says when the computer cannot do something, and an unpair always reaches the other device. </details> ## Download There are two choices to make, and the second one is easy. **full or lite?** **full** is the whole keyboard. **lite** leaves out ML Kit and the on-device models (handwriting, OCR, document scanning, Whisper voice input and the local LLM) for a far smaller download. **Which languages?** This is about the words the app *shows* you, on its settings screens and its panels. **all** has them in 48 languages besides English. **English** has English alone and is around 41 MB smaller. What you can *type* is identical: every layout and every dictionary is in both. You can swap one for the other later without uninstalling or losing a setting. Almost every phone sold since 2017 takes an **arm64-v8a** build, so start here: | arm64-v8a | all languages | English only | |:---|:---|:---| | **⭐ full** | **[132 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-intl-arm64-v8a.apk)** | **[86 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-en-arm64-v8a.apk)** | | **lite** | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-intl-arm64-v8a.apk) | [12 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-en-arm64-v8a.apk) | <details> <summary><b>Other architectures</b> (older 32-bit phones, emulators, ChromeOS, or if the above refuses to install)</summary> | Architecture | full · all | full · English | lite · all | lite · English | |:---|:---|:---|:---|:---| | armeabi-v7a<br><sub>Older 32-bit phones and watches</sub> | [96 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-intl-armeabi-v7a.apk) | [50 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-en-armeabi-v7a.apk) | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-intl-armeabi-v7a.apk) | [12 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-en-armeabi-v7a.apk) | | x86_64<br><sub>Emulators, ChromeOS, x86 tablets</sub> | [143 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-intl-x86_64.apk) | [96 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-en-x86_64.apk) | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-intl-x86_64.apk) | [12 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-en-x86_64.apk) | | universal<br><sub>All three in one file. Only if the others refuse to install</sub> | [296 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-intl-universal.apk) | [249 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-en-universal.apk) | [58 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-intl-universal.apk) | [12 MB](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-en-universal.apk) | </details> <details> <summary><b>Checksums, R8 mappings and native symbols</b></summary> For verifying a download, and for reading a crash report from these APKs. | File | Size | What it is | |:---|:---|:---| | [`SHA256SUMS.txt`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/SHA256SUMS.txt) | 3 KB | Checksums for everything above | | [`wmkeyboard-0.5.12-vc25-fdroid.apk`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-fdroid.apk) | 57 MB | The F-Droid build, **lite · all languages**. F-Droid rebuilds it from source and publishes it only if the two match, so it is the same APK F-Droid serves, byte for byte. Installs over an F-Droid install from 0.5.10 on | | [`wmkeyboard-0.5.12-vc25-full-intl-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-intl-mapping.txt.gz) | 15 MB | R8 mapping, **full · all languages**. Retraces a stack trace | | [`wmkeyboard-0.5.12-vc25-full-en-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-en-mapping.txt.gz) | 15 MB | R8 mapping, **full · English** | | [`wmkeyboard-0.5.12-vc25-lite-intl-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-intl-mapping.txt.gz) | 12 MB | R8 mapping, **lite · all languages** | | [`wmkeyboard-0.5.12-vc25-lite-en-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-lite-en-mapping.txt.gz) | 12 MB | R8 mapping, **lite · English** | | [`wmkeyboard-0.5.12-vc25-play-mapping.txt.gz`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-play-mapping.txt.gz) | 15 MB | R8 mapping, **Play build**. The Play channel flags change what R8 renames, so this is the only one that reads a crash from a Play install | | [`wmkeyboard-0.5.12-vc25-full-intl-native-symbols.zip`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-intl-native-symbols.zip) | 18 KB | Native debug symbols, **full · all languages** | | [`wmkeyboard-0.5.12-vc25-full-en-native-symbols.zip`](https://github.com/wasi-master/wmkeyboard/releases/download/v0.5.12/wmkeyboard-0.5.12-vc25-full-en-native-symbols.zip) | 18 KB | Native debug symbols, **full · English** | Verify a download before installing it: ```sh sha256sum -c SHA256SUMS.txt --ignore-missing ``` Retrace a crash with the mapping from the same build and version. The flavour has to match on both axes, because R8 renames the two language builds independently: ```sh gunzip -k wmkeyboard-0.5.12-vc25-full-intl-mapping.txt.gz retrace wmkeyboard-0.5.12-vc25-full-intl-mapping.txt stacktrace.txt ``` A crash from the Play build takes `wmkeyboard-0.5.12-vc25-play-mapping.txt.gz` instead: that build is compiled with different flags, so R8 renames it differently and none of the four above fit it. Or paste the crash into a bug report and let the [retrace workflow](https://github.com/wasi-master/wmkeyboard/blob/main/.github/workflows/retrace.yml) do all of this for you — it reads the `version:` line, fetches the matching mapping from this release, and comments the retraced trace on the issue. </details> 177 commits since [0.5.11](https://github.com/wasi-master/wmkeyboard/releases/tag/v0.5.11). [See every one](https://github.com/wasi-master/wmkeyboard/compare/v0.5.11...v0.5.12). - Sep 23, 2026 0.5.11
- Sep 22, 2026 0.5.10
- Sep 19, 2026 0.5.9
- Sep 16, 2026 0.5.8
- Sep 14, 2026 0.5.7