A script without a keyboard is like a beautiful song with no way to sing it. After completing the Yapiri font, the next urgent mission was clear: build an input method that feels natural, fast, and joyful to use — one that puts the full 45-character Yapiri set under the fingertips of anyone who wants to write Kokborok.
This is the story of how the official Keyman keyboard for Yapiri, the yapiri.kmp package, was built.
Why Keyman?
Keyman is the world's most widely used input system for minority and indigenous language keyboards. It runs on Windows, macOS, Linux, Android, and iOS, and its keyboard packages are open and portable — a single .kmp file installs the keyboard on any platform. For a community spread across Tripura, Assam, Mizoram, and across the Tiprasa diaspora, platform-independence was not a nice-to-have. It was essential.
Keyman also has a strong tradition of hosting community-created keyboards for exactly the kind of script Yapiri is: newly created, PUA-encoded, and serving a language that mainstream input systems will never support by default.
Why a Dedicated Keyboard Matters
Even the most elegant script remains unused if typing it is slow or frustrating. A borrowed script — Bengali or Roman — can be typed on any phone immediately. An indigenous script can only compete if its keyboard is at least as frictionless. The goal was not merely a working keyboard. It was a keyboard that makes you want to write.
"The best keyboard is one you forget you're using — because your thoughts flow directly onto the screen."
— Development note, early testing phaseThe Design Challenges
Building a keyboard for Yapiri's 49-character set brought a set of problems that standard keyboard design does not prepare you for.
The first was aspirated consonants. Kokborok distinguishes plain stops from aspirated ones — /p/ from /ph/, /t/ from /th/, /k/ from /kh/. Each pair needed its own glyph and its own key assignment, but the mapping had to feel logical rather than arbitrary. A user should be able to guess where a key lives, not memorise it.
The second was the schwa. The central vowel /ə/ is one of Kokborok's most characteristic sounds, but it has no natural home on a QWERTY keyboard. Assigning it intuitively — somewhere a user would reach for it without thinking — took multiple iterations.
The third was the high tone mark. This combining diacritic (U+F1CD1) must attach to the preceding character, which means the keyboard needs to insert it correctly without the user having to think about combining character behaviour. The solution was to assign it to a single intuitive key — typed after any vowel, it attaches automatically, producing the toned form without any manual cursor management.
The Mapping Approach
The final layout follows a phonetic Roman mapping: each Yapiri character is typed using the Roman letter that represents the same sound. The vowels sit on their expected keys. Plain stops are on their base letters. Aspirated stops use two-letter sequences — ph, th, kh — that Keyman resolves intelligently as the user types, so there is no separate "shift to aspirated" mode.
| Type | Key(s) | Glyph | Sound / Name |
|---|---|---|---|
| Vowels | |||
| Vowel | a | | /a/ |
| Vowel | e | | /e/ |
| Vowel | i | | /i/ |
| Vowel | u | | /u/ |
| Vowel | o | | /o/ |
| Vowel (schwa) | q | | /ə/ — assigned to q, no competing use |
| Stops | |||
| Stop | p | | /p/ |
| Stop | t | | /t/ |
| Stop | k | | /k/ |
| Stop | b | | /b/ |
| Stop | d | | /d/ |
| Stop | g | | /g/ |
| Stop (aspirated) | shift + p | | /pʰ/ — Keyman resolves p→ph on sequence |
| Stop (aspirated) | shift + t | | /tʰ/ |
| Stop (aspirated) | shift + k | | /kʰ/ |
| Affricates & Nasals | |||
| Affricate | c | | /tɕ/ |
| Affricate | j | | /dʒ/ |
| Nasal | m | | /m/ |
| Nasal | n | | /n/ |
| Nasal (palatal) | shift + n | | /nʹ/ — n-prime |
| Nasal (velar) | f | | /ŋ/ |
| Fricatives & Approximants | |||
| Fricative | s | | /s/ |
| Approximant | r | | /r/ |
| Approximant | l | | /l/ |
| Fricative | h | | /h/ |
| Approximant | y | | /j/ |
| Approximant | w | | /w/ |
| Secondary (loanword consonants) | |||
| Secondary | v | | /v/ — loanwords only |
| Secondary | z | | /z/ — loanwords only |
| Numerals | |||
| Numeral | 0–9 | | Yapiri digits 0 through 9 — number row maps directly |
| Punctuation | |||
| Punctuation | , | | comma |
| Punctuation | . | | full stop |
| Punctuation | ! | | exclamation |
| Punctuation | " | | quotation |
| Punctuation | ? | | question |
| Diacritic | |||
| High tone mark | x | | combining high tone — type after any vowel |
The schwa — assigned to q, a key with no competing use in Kokborok — turned out to be one of the most comfortable choices in the whole layout. Users reach for it without thinking after just a few sessions.
Keyman's Rules Engine
What makes Keyman powerful for a script like Yapiri is its rules-based transformation engine. Rather than mapping one key to one character, a Keyman keyboard can watch what the user types and respond to sequences. This is how aspirated consonants work: when the user types p followed by h, Keyman replaces the plain p glyph with the aspirated ph glyph in a single, seamless step. The user never needs to know this is happening.
The same mechanism handles the Yapiri numerals: the number row produces Yapiri digit glyphs rather than ASCII digits when the keyboard is active, matching the natural expectation that numbers belong to the script.
yapiri.kmp package bundles the keyboard rules, the Yapiri.ttf font, and the keyboard metadata into a single installable file. Installing it on Keyman automatically makes both the keyboard and the font available system-wide.
Testing with Real Text
The keyboard was not considered done until it had been tested with real Kokborok writing — not just individual characters, but flowing sentences, proper names, place names, and the reduplicated forms that are so characteristic of the language. Every stumble in the testing process revealed a mapping that needed refinement.
The most revealing test was simple: type the word kokborok itself. Eight characters, touching stops, vowels, a voiced consonant, and a liquid. If that word flowed smoothly, most of the keyboard was working. The glyph sample below is what that test looks like on screen.
The Web Keyboard
The yapiri.kmp file handles desktop and mobile native input, but not everyone wants to install software to try a script for the first time. For those people — and especially for first encounters — the web keyboard on try.html provides instant Yapiri input in a browser with no installation at all. The two tools serve different stages of the journey: the web keyboard for discovery, the Keyman package for daily use.
The Joy of First Typing
Nothing in this project has matched the moment someone types their name or a full sentence in Yapiri for the first time. There is a pause, and then a look — something between recognition and surprise — as the glyphs appear on screen in their own script rather than someone else's. That look is what the keyboard was built for.
Building the keyboard was never just a technical task. Every key assignment was a small promise: that our language belongs in the digital age, that typing Kokborok should feel as natural as speaking it.
The Heart of the Matter
The Yapiri keyboard is ready. The font is ready. The script is ready. All three are available as a single download on the Download page. If you want to try before installing, the web keyboard is a single click away.
The keyboard is finished. The writing has only begun. Come write with us.
Community Thoughts
Loading