I've managed to create a custom keyboard layout for my language.
Now that the keyboard is in a state that I can share it. I don't know how to make it a redistributable package.
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
To add it to the official
xkeyboard-config package, you would develop it as a patch for the
xkeyboard-config package. See their code contribution guide; contributed layouts are made by patches on their bug tracker. You can clone the upstream repository with:
git clone git://anongit.freedesktop.org/git/xkeyboard-config
From a quick glance at your layout, I think you need to add the
default keyword to the stanza definition (
default xkb_symbols "basic"), to declare that layout the default for that file. Your file itself would be put in the
In addition to your new layout file, you'll need to add it to the rules templates (
rules/base.xml.in or possibly
rules/base.extras.xml.in -- the
rules/evdev.xml file will be generated from the same template).
Doublecheck the project documentation for other specifics that I might have missed.
You could also add that patch to the Ubuntu source package apply it with the standard dpkg build tools. This would allow you to distribute your modifications to other Ubuntu users with minimal difficulty. See questions like How to create and maintain patch on Debian package? for more specifics.
You can wrap your keyboard layout as a Debian package. This will create a
.deb file which can be installed from the command line with
sudo apt install -f ./my-file.deb or just by double-clicking the file in the file explorer.
I've done this and have published the work on GitHub. That repository contains really all you need to do this, but in the interest of having a self-contained answer here, I'll give an outline of the process.
Step zero, learn how to make a keyboard layout. You basically have to modify some configuration files in
Then, learn how to make a Debian package. Our package's job is basically going to be to just modify the right files in the aforementioned
xkb directory. However, if you try to do this, you'll find as I did that
dpkg yells at you for trying to overwrite another package's files. You will need to get around this using diversions.