Zhuang Characters would free versions of keyman support?

Zhuang character input methods need to support about 10k characters. Is this possible to produce a keyman input that people could use for free and if so what platforms would it work on?

Keyman will work on all platforms.

It is possible to have significantly more characters than 10K (see this keyboard: Simplified Chinese keyboard), but I think one of the developers may need to give you more input on what is needed. The source for that keyboard isn’t publicly available and when I look in the package I see it includes a .dll and an .exe for working with the IMX.

Here is some documentation, but it may be outdated:

Keyman is available for multiple platforms, but the IMX capability is currently limited to Windows.

Dear Lorna,

thank you for a quick and positive reply.

Yes,I have seen that there is a Simplified Chinese Keyboard, but unsure
if this works now with the free version of Keyman or still only with the
professional version.


That is good to know. Windows would be useful as that is one of the
harder platforms to support, does it support Windows 10/11? Linux is
covered by ibus-table, and Mac’s has native support for .cin files. Our
current Android version works but there is room for improvement.

Windows 10 and 11 should be supported.

In addition, I think that Keyman web supports IMX as well.

Thank you. Noted. In 2006-7 a developer produced a Zhuang character
keyman keyboard that worked on Windows in the professional version of
keyman, if I can get a copy of that should it still work on present day

Keyman is now completely free and open source (since 2017), so are no longer multiple editions of Keyman Desktop – it’s been renamed to ‘Keyman for Windows’. As @lorna and @drowe have noted, Keyman’s IMX functionality is currently Windows and web only – we would like to extend that for other platforms.

If the Zhuang keyboard used Keyman’s IMX functionality, then a version produced in 2006-7 probably does not support 64-bit platforms. The IMX component of the keyboard would need to be recompiled to support 64-bit as documented in https://help.keyman.com/developer/current-version/guides/develop/imx/:

Full x64 support for IMX DLLs was introduced in Keyman Desktop 8.0.333.0. An x64 version of the DLL may be included simply by giving it the file extension .x64.dll, with the same base name as the x86 DLL. Keyman will call the appropriate DLL.

Note: Keyman Desktop 8 was released in 2010.

Dear Marc,

thank you for a clear and informative reply. I asked as the current
keyman documentation has not been undated and so still mentions a 5k
limit regarding IMX.

I think that the 2006-7 version did use IMX. Do not know as yet clear if
I can get a copy of that version. If do will certainly have to update
anyway, as over 3 thousand of the characters have gone into ISO 10646,
aka Uniicode, not to mention 64-bit support. Is the source for
Simplified Chinese available? It would probably to be straight forward
to adapt that. Is the 4 corner input for Chinese still supported? Is the
source available?

Zhuang is the name of the meta-language, there are at least 16 Zhuang
languages. Some other langues in the area also use the Han script to
write their language. End users expect a choice between phonetic and
shape based input, as well as a choice between traditional and
simplified characters. In short eventually dozens of input methods not
just one on Windows alone, so it would be worthwhile if support could be
extended to other platforms as well as web. As things stand development
of better support for for Zhuang character inputs on phones is a long
term priority.

Warm regards

I have ideas on how to repurpose our predictive-text setup (currently, for mobile phones) for use as a IMX-style picker for scenarios like this. Some of my thoughts can be found in the first comment on the following:

That predictive-text setup is actually baked into our Web engine, so extension there would be included if we took this approach for IMX support on mobile devices. It’d need to be based in JavaScript or TypeScript, though, rather than something like a DLL… or perhaps WASM may be possible if we put in the work for that.

Note - this is all speculation at this point, as our IMX support has pretty much been “on life support” as of late. I can’t make guarantees that this will happen in the near future, but it is something “on our radar.”

Dear Joshua,

Read your ideas. Yes, there is certainly some merit in this idea with
the way phones work, as they say TIMTOWTDI, there are some close
parallels, and definite advantages if IMX support is based on functions
used by other keyboards rather than an extra. With predictive text even
English phones have indeed got closer in this respect.

Am I correct in understanding that the desktop cs_pinyin and web
cmn-hans used different keymaps?

I think your first point is key “Whatever form the IMX solution takes,
it should be supported by all end-user Keyman platforms”. as it
underlines what is usually one of the strengths of Keyman, cross
platform support.

Warm regards

Just quickly responding to your questions:

The source is available but not really supported – see the following, very stale, draft pull request: [cs_pinyin] CS-Pinyin keyboard initial public version by mcdurdin · Pull Request #64 · keymanapp/keyboards · GitHub

More background: a review of Keyman’s IMX support is much needed; we are currently very focused on implementing the LDML Keyboard spec, but once that lands we will be in a good place to do a solid redesign of a proper cross-platform, extensible IMX solution.

I am not sure if it will be based on the existing predictive text module, but it is likely to borrow some of the concepts.

Whatever solution we land on, it will need to support the existing IMX feature set:

  • C API and bindings: so you can build with basically any compilable programming language
  • UI extensibility: currently, imxlib does provide some focus and window management but that’s Windows-only, so we’d need this to work cross-platform

Also for consideration:

  • database connectivity? (with external libraries)
  • network connectivity? (with external or OS libraries)

But I want to emphasize that the IMX redesign is completely open at this point, so much too early to make any decisions based on it. Existing IMX would certainly need to be rewritten to work with it – but then would benefit from being cross-platform. (We’d try to keep the existing interfaces working on Windows, perhaps on Web, for legacy keyboards.)

Dear Marc,

thank you for a clear and informative reply.

Hope the LDML implementation goes well.

Provisionally we would be interest in seeing if we could make a positive
contribution to the IMX support discussions and perhaps help in some way
with the development process.

Warm regards

@vunzdoj, look forward to engaging with you as we explore this topic further!

Thank you, the specific question posed here has been answered. So I
think it might be best if I start a new thread on IME, aka IMX, support
which would extend the discussion to those interested in other languages
that either need or would benefit from keyman having increased IME