Final projects/Keyboard layouts
For this final project option, you will need to develop additional keyboards for at least three of the following operating systems:
You will make publicly available installable keyboards (and source files, if relevant) for each OS, along with your linux keyboard from earlier in the semester.
How to make keyboards for other OSes
Keyman supports multiple platforms, but I haven't used it before and can't really vouch for its effectiveness.
The Divvun project has developed open source mobile keyboard layouts for iOS and Android. The code they use is available, but not well documented. You can browse their github organisation. You'll need the kbdgen tools, and giella-ime for Android keyboards and tasty-imitation-keyboard for iOS keyboards. You can also contact Sjur Moshagen for guidance, perhaps easiest is to find him on IRC (
In order for the iOS keyboards to be released in the app store, you either need a [paid] dev key from Apple, or arrange with Sjur to have the keyboard released by UiT (University of Tromsø).
One of the best tools for developing keyboard layouts for macOS is SIL's Ukelele. It's fairly straightforward.
Microsoft Keyboard Layout Creator is available for free from MS. I'm not sure whether it's compatible with Windows 10, but it works well for Windows 7. Instructions are available. There are also a number of other utilities out there, but they seem to be mostly commercial products.
Note: these are the requirements for putting together a final project that consists of a suite of keyboard layouts. For the requirements of the keyboard layout assignment, see making a keyboard layout.
- Publish a git repo accessible to everyone (not just Swarthmore users, e.g. use github.com).
- Name the repo something obvious, like
- Include one directory per OS, for a total of four directories (the linux keyboard you made earlier in the semester and the three new ones)
- In each OS folder, include a working installable keyboard and instructions for how to install it (in an
- For any keyboards that need to be compiled with other software, include the source file you created, and (in a
READMEfile) instructions for what software to get and how to compile it into a fresh installable keyboard.