XDK

The XDK extensible deadkey input method allows for unlimited deadkeys in an easily editable format.

The add-on, a demonstration map (Lithuanian accented characters), and a template for map creation are available from the Healynet repo. (The Lithuanian map adds the extra characters that, according to Wikipedia, "are generally not written, except in dictionaries and where needed for clarity".)

Be aware that there is a bug in the input server that prevents method add-ons from displaying menus; since maps are selected via menu, that bug renders this add-on unusable. I have submitted a patch for this bug, but in the meantime, I have prepared a workaround. Download this zip file and drag the files onto the appropriate folders. After rebooting, input method add-on menus will work.

The fixed input server will report that it might be blocked on a modal panel during shutdown; just click the button. There is nothing wrong with the file, it just is not running from the proper folder. When the system shuts down, if a program won't stop, it reports that it might be blocked on a modal panel. It makes an exception for the system servers, and it identifies them by the folder they executable file is located in. But this version is not running from that folder, so it gets the warning.

If you update Haiku to a version with a fixed input server without wiping your drive first, you can use the same zip file to remove the workaround. Simply double-click the folders in the zip file, find the proper file in the linked folder, and delete it. Note: if you remove the fixed input_server file but not the packages file, the input server will not run, rendering your system unusable.

Creating maps

Maps are in a human-readable text format that is explained in the sample file included in the main package (/boot/system/data/xdk/template). Open this file and save under another name to /boot/home/config/non-packaged/data/xdk/ (you will need to create this folder). Then follow the instructions in the file. You should need nothing more than a text editor (StyledEdit or Pe or whatever), CharacterMap (to insert characters not available via the keyboard), and Terminal (to set the mime type). To test your map file, rescan for maps and select your new map.

Source code

Souce code is available here. It is released under the MIT license.

Known issues

The icons are created on the fly, and for some reason look really low-resolution. I've drawn to bitmaps in other programs and I haven't had this issue, so I'm not sure what's going on.

The icon is not updating when you change maps.

Uninstalling the add-on will crash the input server. (Presumably, so would installing a newer version over the top of an older version.) This may just be part of the nature of the input server; the add-on remains loaded in the server's memory, so removing the file causes a crash.