I wish I could design a keyboard layout of my own (specifying symbols for each the key to be entered in case it is pressed alone, with Shift or with AltGr) and set it up among all the other layouts in my XUbuntu 11.04 system. How to do this?
2 Answers
Ubuntu 10.10
I use a local keyboard with US and Thai layout.
The us layout is ok for me, but I like to have some
additional german characters like äöü ÄÖÜ
This can easy be implemented with xmodmap, but if
you switch to the second layout, you will observe
some strange results.
I found a good solution: create and use your custom keyboard!
/usr/share/X11/xkb/symbols/choose your nearest preference, in my caseusand save it with a new name:us-dedelete anything, which you don't need, and change, what ever you like. My file for
us-de:default xkb_symbols "basic" { name[Group1]= "ASCII with german"; // Alphanumeric section key <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, at, twosuperior ] }; key <AE03> { [ 3, numbersign, threesuperior ] }; key <AE04> { [ 4, dollar, onequarter ] }; key <AE05> { [ 5, percent, onehalf ] }; key <AE06> { [ 6, asciicircum, threequarters ] }; key <AE07> { [ 7, ampersand ] }; key <AE08> { [ 8, asterisk, oneeighth ] }; key <AE09> { [ 9, parenleft ] }; key <AE10> { [ 0, parenright, degree ] }; key <AE11> { [ minus, underscore ] }; key <AE12> { [ equal, plus ] }; key <AD01> { [ q, Q ] }; key <AD02> { [ w, W ] }; key <AD03> { [ e, E, EuroSign, cent ] }; key <AD04> { [ r, R ] }; key <AD05> { [ t, T ] }; key <AD06> { [ y, Y ] }; key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; key <AD08> { [ i, I ] }; key <AD09> { [ o, O, odiaeresis, Odiaeresis ] }; key <AD10> { [ p, P ] }; key <AD11> { [ bracketleft, braceleft ] }; key <AD12> { [ bracketright, braceright ] }; key <AC01> { [ a, A, adiaeresis, Adiaeresis ] }; key <AC02> { [ s, S ] }; key <AC03> { [ d, D ] }; key <AC04> { [ f, F ] }; key <AC05> { [ g, G ] }; key <AC06> { [ h, H ] }; key <AC07> { [ j, J ] }; key <AC08> { [ k, K ] }; key <AC09> { [ l, L ] }; key <AC10> { [ semicolon, colon ] }; key <AC11> { [ apostrophe, quotedbl ] }; key <AB01> { [ z, Z ] }; key <AB02> { [ x, X ] }; key <AB03> { [ c, C ] }; key <AB04> { [ v, V ] }; key <AB05> { [ b, B ] }; key <AB06> { [ n, N ] }; key <AB07> { [ m, M, mu ] }; key <AB08> { [ comma, less ] }; key <AB09> { [ period, greater ] }; key <AB10> { [ slash, question ] }; key <BKSL> { [ backslash, bar ] }; key <CAPS> { [ VoidSymbol ] }; // End alphanumeric section include "level3(ralt_switch)" };/usr/share/X11/xkb/rules/evdev.xmlModifyevdev.xmlso your custom keyboard will be recognised: search for</layoutList>and add the following just before</layoutList>:<layout> <configItem> <name>us-de</name> <!-- a) --> <shortDescription>US-DE</shortDescription> <!-- b) --> <description>ASCII with german</description> <!-- c) --> <languageList><iso639Id>eng</iso639Id></languageList> <!-- d) --> </configItem> </layout>- a)
us-deis the filename of the new keyboard layout inX11/xkb/symbols - b)
US-DEthis will appear eg. in the indicator applet - c)
ASCII with germanmust coincide with the text at the begin of your file:
name[Group1]= "ASCII with german"; This text will also appear as comment under "Layouts" - d) if you choose "eng" your layout will be shown in System->Preferences->Keyboard->tab Layouts->Add->By Language->English under "Variants"
- a)
log out and log in again, and check System->Preferences->Keyboard->tab Layouts->Add->By Language->English if you can find your custom layout, happy! You are ready to go! Select your first and second layou here. Add a keyboard switcher applet here under "options" you can also disable the CapsLock key.
the default keyboard will annoy you and sometime reappear... If you like to get rid of this, edit
/var/cache/gdm/$USER/dmrcand place anything existing as your new default:Layout=us-dethen reboot.
Based on a post on UbuntuForums.com by Andy Meier at December 28th, 2010.
- 13,295
- 843
Unicode hex values work well for doing this.
While changing my italian keyboard to add ə, I have had some troubles, using this fix but found a solution in a while.
This was because if you want to change for instance key <AE03> { [ 3, numbersign, threesuperior ] };, you should replace the character - for instance numbersign - with the unicode hex value, that in my case is U0259. So the final entry will be: key <AE03> { [ 3, U0259, threesuperior ] }; Now I can type ə just clicking Shift+3
Oblviously, this only worked for adding the Latin Small Letter Schwa (lowercase).
- 183