NaijaType updates – a keyboard for Nigeria

The Rowbory/Nigeria Family Blog

Created with Sketch.

NaijaType updates – a keyboard for Nigeria

NaijaType has had a little more attention recently and reached Android App version 1.9.9 and keyboard version 40.

Coworker Katharine amused me by referring to it as One keyboard to rule them all and then Dee tempted me to make an elvish script adaptation of the ring poem to celebrate it. So here we are, but light-heartedness aside, what’s this keyboard all about?

Writing and typing systems in Nigeria

Nigerian languages languages have often been written by adapting other familiar scripts — usually Latin or Arabic. I don’t know much detail of the Arabic script variants (usually called Ajamia) but at various times Latin letters have been amended with underlined letters, underdots, variant shapes, and diacritics. There’s a good deal of variation each with advantages and disadvantages.

Before computers, people had to worry about how to adapt typewriters and printing presses for printing these letters, and then when computers came new fonts and ways to type the letters needed to be crafted. Heidi Rosendall was one of Nigeria’s pioneers of different keyboards and fonts in the 1990s and 2000s, an early Keyman expert. Then Unicode burst onto the scene bringing a welcome degree of order in the chaos, so that it was possible to have one font with all the letters needed for all languages. SIL produces many of these fonts, like Andika, Charis, Doulos, Gentium and a few others. The change to Unicode required all keyboarding systems to change and a mass updating of texts to the new system (much being handled almost singlehandedly by Heidi), but it was a great move going forward. (Unfortunately in 2001 when I worked on the C’Lela dictionary, Unicode hadn’t really matured enough and been adopted by all the software we used, so we rolled our own fonts and keyboards for typing the language with C’Lela’s distinctive class-marker apostrophes and underlines. Even worse Microsoft Word had a cunning way of changing encodings of documents between Mac and Windows systems that could cause chaos and considerable confusion. I’m glad those days are long gone.)

C’Lela Translation office, Zuru, 2001

Every language has its own distinct writing system, and at least with Unicode all could use the same fonts, but figuring out how best to type each language on the standard US/UK (and occasionally exotic other) keyboards is tricky. Often people resort to elaborate solutions and create considerable mess in the process. Microsoft Word‘s Insert Symbol function has been used by many but that’s cumbersome and it’s very easy to unwittingly choose the wrong look-alike letter and cause all kinds of spell-checking, sorting and display mayhem later.

Wycliffe/SIL/SeedCo people including Heidi Rosendall and then Andy Kellogg and a few others used 3 different systems to build keyboards. Microsoft Keyboard Layout Creator (MSKLC) was a way to build special keyboards for Windows, where you would often type a ‘deadkey’ which magically transformed the next key you typed, Keyman enabled much more complex context-aware keyboards, and InKey did something similar. On Mac the Ukelele program helped craft Mac-native keyboards that anyone could install. The best keyboard systems worked with Keyman or InKey, but typically each different language had its own keyboard that translation and literacy teams would pass on by word of mouth.

By the time I returned to Nigeria in 2011, I noted the variation that there was in all the keyboards between different translation teams, and wondered if there was a way to streamline the keyboards and also make them easier for new typists to learn to use. While older keyboards had used the invisible ‘deadkey’ mechanism, Andy Kellogg realised that both Keyman and the Autohotkey-based InKey could do things a different way. He crafted a set of 3 Keyman and 3 InKey keyboards that always displayed a letter when you typed something, but which used a magic key to transform the previous letter you had typed, so that you could get a schwa by typing ‘a’ then the underused semicolon key and the a would transform into ə.

The InKey IPA keyboard was quite a revelation to me because it used the concept of rotas, where you could rotate through a list of different symbol variations by just pressing the same transforming key. This saved having to memorise (or look up, or use trial and error) lots of individual possible deadkeys or special keystrokes to get all of IPA’s many characters. So, inspired by this, we thought that using one key to rotate through all the likely accent diacritics may be easier for people than having about 4 different possible key combinations.

These 3 keyboards – open shape, underdot and underline – were used by many teams on their laptops for many years. From time to time I wondered whether it would be beneficial to combine them into one, though for most single languages people would only need one. All keyboards shared the same hooked consonants like ɓ ɗ ƙ ŋ ƴ etc; it was just the vowels that differed. The Seed Company was running many workshops with many different languages in Nigeria and so that provided a great test-bed to make sure all the necessary characters were available in the keyboards, and we also took care to choose the correct Latin letters from among all the similar characters Unicode offers.

This was all limited to Windows, so I created some Mac keyboards which used the more Mac-style option key combination (opt-e for ɛ) to type special letters. It wasn’t clear how if at all people would be able to type their language writing on mobile handsets, and some coworkers discussed whether alternative writing systems needed to be used. Nigerians were very creative in finding similar symbols to use (3 for ɛ etc), but it wasn’t terribly satisfactory.

Mobile/Touch and One Keyboard To Rule Them All

By 2016/7 Android handsets had become popular enough that it became clear that there was great potential to change touch keyboards to show whatever letters you might want… but for obvious security reasons Google and Apple were slow to allow developers to tinker with such a vital part of the system. I wondered about web-based typing assistants for typing online, but didn’t have time to develop anything much. Eventually Google and Apple began opening up and Keyman developers seized the opportunity to bring Keyman into the world of Touch keyboards.

At the same time translators and students I worked with began asking me how they could type their language on their handsets. They persisted for long enough that I eventually looked into it and around 2019 started trying to see how we could build touch keyboards for Nigeria. Keyman moved onto Android, iOS and Mac (and even Linux) so then there was the opportunity to make one keyboard that could work in an optimal way across all devices. Ngunified and then the catchier NaijaType emerged from this and I made efforts to squeeze everything into one keyboard, but without trying to cram too many keys onto the screen at once. (My fingers are quite thick.)

The basic idea is the popup key where you hold down a key (indicated with a green dot) to see variations, so to get a schwa ə you hold down on the a key, to get open ɔ you hold down on the o key. Many common diacritic options are given but other diacritics can be added from the q key, to reduce

Quickly I began to notice how reliant I was on autocorrection when typing on my phone. Fortunately Keyman even provided exciting ways to craft your own autocorrect or at least auto-suggestion options, so I embraced that for English, Hausa and a few languages I had access to. It was a bit complicated to get people to download the Keyman App and then download the NaijaType keyboard, but people who had been struggling to know how to write their language properly loved it when they saw how they could now reach the letters they wanted. Some bumps in the road came in 2020 with some performance bugs in Keyman on touch (it would slow down tremendously after a line of text), but the team eventually dealt with the bugs.

Then Keyboard App Builder improved things again, giving a way to build a specialised Keyboard App for Android (based on Keyman) that avoids you needing to install Keyman first then download the right keyboard separately. For quite a while I wasn’t sure why the auto-suggestion wasn’t working, but I think getting the BCP47 codes synchronised helped. Again we hit a bunch of bugs that got in the way in 2021 and August 2022, and it seems that it’s only certain older versions of Keyman work on some older or more limited phones, but at last my translator and literacy worker friends were happy to be able to type their languages correctly on their phones. And it’s free for all. And you can type the ₦aira symbol! (Different people get excited about different things.)


All the Unicode codes produced have been carefully checked to be appropriate and standard. Look at the source and check for yourself if you’re unclear.

And on desktop again? Why NaijaType and Keyman?

There are many ways to type Nigerian languages, but I humbly suggest that NaijaType may well be worth embracing together with the free and wonderful Keyman program. InKey was a great solution for many — and may continue to be, as it doesn’t require any admin privileges to use/install it — but Keyman is being actively developed and seems likely to keep working longer. I haven’t made a NaijaType for InKey. Some have asked me. I could do it, but will only do that if there’s a very pressing reason.

What if people already have a keyboard they use?

If translators are happily using an existing keyboard there’s no reason to change. But new typists will probably find the type-then-transform approach easier to get their head round than the invisible deadkey approach. Some older keyboard produce unhelpful codepoints and if that’s the case then it’s worth switching over to NaijaType and converting older documents. But really it’s only when spellchecking or doing find/replace or sorting that you’ll see problems from lookalike characters with different codepoints. Paratext can expose many of those issues from the Character Inventory though it’s hard to be sure where strange characters have come from. Often translators struggling without a working keyboard assistant try ‘creative’ approaches such as copying from Word documents or the Insert Symbol function and this can lead to unusual characters getting added.

Why not to use an IPA keyboard

I’ve seen people using IPA keyboards (MSKLC, Keyman or InKey) but please don’t do that for anything other than phonetic write-ups. IPA doesn’t have capital letter versions of ɛ ɔ ŋ etc which you really need to use for Practical literacy materials, and some of the codepoints used are explicitly IPA characters rather than practical orthography Latin variant characters.

Guilty confessions

The thing is, I’m a translation consultant/linguistics advisor/program facilitator, it wasn’t really my job to make this keyboard, and there were always lots of other things I should have been doing, like writing newsletters, writing consultant reports, helping my team with linguistic analysis and write-ups… but this was a practical thing with real benefits that people really wanted and were struggling to manage without. So, due to that constant nagging of people wanting or needing some way to keep going with practical literacy and writing, it seemed important enough to do. The code is all open source and available on Github so, anyone can pick up from where I leave off, if there are glaring bugs or missing characters.

So, how do I use it?

See more details on the NaijaType page. There are some videos there too.


Type double == to toggle a kind of ‘small caps’ mode (Q doesn’t work) which uses Unicode Latin small caps letters in programs (like Paratext, Excel, Notepad) that are Unicode compliant but don’t allow small caps styling.

Double ‘ (apostrophe) for a Saltillo. (Hold shift for the caps version.)

Thus the one key mantra above has been undermined. I hope these are useful and not troublesome adaptations but let me know if they cause trouble or don’t work for you.

Letters/Codepoints produced


These can get an underline (U+0331) or underdot (U+0323): aeiouhnsAEIOUHNS

Diacritics are Unicode combining characters:

U+0301Combining acute accentóU+0302Combining circumflex accent
U+0300Combining grave accentòU+030CCombining caron accent
U+0304Combining macronU+0303Combining tildeõ

The combining tone marks U+0340 and U+0341 could have been used but Nigerian orthographies don’t always use this to indicate a high or low tone, so it seems inadvisable to use these codepoints.

Saltillo (straight apostrophe, word-forming) is U+A78B, U+A78C (uppercase and lowercase, respectively).


No Comments

Add your comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.