Keyman 17 walkthrough how to publish and share a new custom keyboard?

I have a new keyman keyboard I started here. What else do I need to do to make it usable across all platforms:

  • Windows
  • macOS
  • Linux
  • Web
  • iPhone
  • iPad
  • Android phone
  • Android tablet
  • Mobile devices
  • Desktop devices
  • Tablet devices

I am looking at the newish Shavian keyboard for inspiration, but don’t know how to properly test it on my Mac, and how to know if it works on other platforms.

Please advise on these things:

  1. How to test on my Mac M3? I installed Keyman, and clicked on my tone.kmp file, which opened it in Keyman. I thought i registered my ToneEtch.otf font in the tone.kps file in that repo, but when I type in VSCode or in the browser (or in this SIL editor), I don’t get my custom font glyphs after selecting the keyboard in the Keyman menu (near the clock on MacOS).
  2. How to include the font? Where/when can you use the font on the web and native devices, how do you get that to work? It would be really cool to see my custom glyphs typed into an arbitrary input on the web or in some native app like Apple Notes. Is this possible?
  3. How to build for the rest of the platforms?

Thank you so much! Excited about the prospects of Keyman and hope to get it to work now! Thanks!

FWIW, the commands I’m running are defined in the package.json, so that is how I went from .kps to .kmp.

pnpm make:keyboard

In other words, I am new to Keyman, and keyboard building in general. I don’t ever use any native / custom keyboards, so not really sure where to begin in developing/testing that things are working and someone can download my Keyman keyboard and start using it to type in my fantasy language. Any help would be appreciated.

Some potentially helpful things to make it easier for you to offer your help:

  1. I built the .kmn file with JavaScript/TypeScript here.
  2. I built the .kps file by hand, not sure if I got that right.
  3. I used a 48x48px ICO file for the icon, but not sure where that will showup, if anywhere.
  4. A .js file was created, not sure what I can do with that.
  5. Do I need .keyman-touch-layout, .kvks, or .kpj files for any particular reason? Or the kmp.json file, can I create that?
  6. My custom font file is here, which partly maps to Latin characters, but also to diacritics and other random unicode characters (it is for a fantasy language).

Finally, after running pnpm make:keyboard, I am seeing success signals:

tone.kps - info KM05006: tone.kps built successfully.

So not sure how to test.

Hello @lancejpollard,

To allow the keyboard to support all platforms, you need to include store(&TARGETS) 'any' in the code or select ‘any’ in the .kmn file as shown below.


You can customize the keyboard font by selecting the font name in ‘Keyboard font’ and ‘Display font’ in .kps file.

Here’s the result:

However, the font style won’t appear when you type in other applications because it can’t overwrite the default font of that applications.