How do I add a keyboard model to Ubuntu and give back that model to the community?

Hey I have new Lenovo z570 laptop recently. It has a unique keyboard. I am able to use it but not to its full capabilities. I am unable to map some of the 'extra' keys to their respective functions. There is no separate keyboard model for lenovo z570. I would like to configure this keyboard properly and give back to the ubuntu repos for storage so that later someone else using the same laptop can use my configuration that I have set.

How do I do that?


Creating a Modified Keymap and Submitting it to the Ubuntu Project

It's great that you are thinking about helping other users of your computer. Here are some steps you can take.

I'll try to give you an outline of the steps needed. The details will depend upon what your computer needs.

Creating a Modified Keymap

The detailed directions for defining a custom keyboard for Ubuntu are here. I would suggest copying your existing keyboard file to a new name and then modifying that file to add and modify what is needed. You can do this with gksudo gedit /usr/share/X11/xkb/symbols/old-name, and make the changes in your editor. Then save them under a new name. If you forget you can reinstall the xkb-data package.

Activating and Testing the Modified Keymap

Go to System Settings and Select the Keyboard control panel. At the bottom select Layout Settings. Then you can click on the + icon on the lower left to add your new file to the menu, select it, and test it.

Contributing to Ubuntu

If you don't have one, you should get a Launchpad account. Go to launchpad and click at the top right corner to create one. Otherwise please log in.

The next step is to go here and make sure someone hasn't already filed a report. Assuming that's not the case, report the problem that the default keyboard is not adequate for the Lenovo z570 and mention why.

Please attach the file you have created to the bug.

I'd suggest coming back here and providing the link to the bug report. That way others who recognize your question here as their problem can go to the bug report and click on the link that says that the bug affects them.

Helping Even More People

You can go farther than this by checking out this link to the launchpad page for the upstream of this package. Clicking on the Bugs tag shows problems in the upstream package Launchpad knows about. It also shows that Freedesktop keeps a bug reporting system for upstream.

Most distributions of Linux probably use this upstream package, so your contribution can go farther once it has been contributed there. Ubuntu doesn't just serve as a way to help its own users, it contributes back to upstream developers such as those at Debian and Freedesktop to help non-Ubuntu users.

You can click on the link Bugs are tracked in freedesktop.org Bugzilla. at the top to go to the Freedesktop bug reporting system and send them your bug report and new keymap file. Once you do that you should go back to your Launchpad bug report and add that the bug affects the upstream package and put a link to your upstream bug report there. That way Ubuntu developers will know that they don't have to do this themselves.

I can see that the Ubuntu X team is busy at work preparing Quantal, so this is probably a good time to make a contribution. Their mailing list is at [email protected] and I'm sure they hang out on IRC as well.


I suppose you create a new layout for your keyboard using xkb configuration files. To do this go to:

/usr/share/X11/xkb/symbols

Here, you can see keyboard layouts configurations by country abbreviations. For instance, layouts for English US are in "us" file. In this file, you can define what should happen if a key is pressed in different situations.

I suggest you look at the us file and try to play with keys until you get the hang of it, and then create your own custom mapping.

You can see a more complete how-to in: http://www.dotkam.com/2007/06/25/custom-keyboard-layout-in-ubuntu-or-just-linux-2/


You could try asking an established Launchpad user to add them, or if you can code, access the Bazaar branch corresponding to this code, and propose a change there. You may need to join the respective group first, but you may be able to suggest the code without a group membership. Somebody will need to commit it for you, though.