What is Ukelele?
The macOS supports an XML-based format for keyboard layouts (.keylayout files). However, modifying keyboard layouts—let alone creating entirely new keyboard layouts, such as for a new script—by directly editing the XML text is tedious and error-prone.
Ukelele aims to simplify keyboard layout editing by providing a graphical interface to .keylayout files, where the desired characters can simply be dragged onto keys as needed. (The Character Viewer or Character Palette, available in the Input menu if it has been enabled in System Preferences, and shown with Show Emoji & Symbols, is a great place to find the characters.)
In addition to simple assignment of single character codes to keys, Ukelele can assign multiple-character strings and can create “dead keys”, where a keystroke sets a new state that modifies the output of the following keystroke.
A more flexible, cross-plaform keyboard utility for macOS 10.7 (Lion) and later is Keyman. However, Keyman does not use the same .keylayout files as Ukelele and requires additional software to use.
Ukelele is written by John Brownie of SIL and is copyright ©2003-2021. This software is currently provided under a freeware license, but future versions will be released under an open source license.