as an historical linguist dealing with old germanic languages, i need a convenient way to input special characters on my computer. since I want to be able to use these characters across all my applications (text editor, office suite, email-client, browser), a per-application solution is not a good idea. a better approach is to change the keyboard layout system wide. luckily, this can be achieved easily on a linux system by customizing one of the predefined X11 keyboard layouts. in my case, i came to the conclusion that it was best to modify the existing keyboard layout definition for us-english (called “us”) by adding a new “layout variant“, which i decided to call “altgr-gmc”. as you can see, every key is bound to four different characters. the characters on the right side of every key can be accessed by using AltGr (bottom right) and AltGr+SHIFT (top right) as modifiers.
the distribution of characters across the keyboard is somewhat arbitrary, though i tried to keep compatibility to “altgr-intl” if possible, and i strived to make the rest as intuitive as possible (r-sounds on the r-button, combining diacritical mark for a stroke below on the hyphen-button, since it sort of looks like a little rotated hyphen etc.).
if you want to give it a try, follow these instructions (root permissions required for all steps):
- adding the new layout variant
open the file /usr/share/X11/xkb/symbols/us and append these lines at the end of it.
- enabling it in X11
edit /usr/share/X11/xkb/rules/evdev.xml and add the following lines at a suitable position (e.g. after the entry for “altgr-intl”):
<variant> <configItem> <name>altgr-gmc</name> <description>for Old Germanic</description> <languageList><iso639Id>eng</iso639Id> <iso639Id>fra</iso639Id> <iso639Id>ger</iso639Id></languageList> </configItem> </variant>
you may also want to make a corresponding change in /usr/share/X11/xkb/rules/evdev.lst for consistency’s sake (it doesn’t seem to be required).
- setting it as system default
/etc/default/console-setupupdate: /etc/default/keyboard and set XKBVARIANT to “altgr-gmc”. make sure that the variable XKBLAYOUT points to the file that you modified in step 1 (“us”)
- restart your computer
(this was all done on a xubuntu 9.10 system. should also work on any other recent ubuntu installation.)
if you want this to take effect immediately, load it up like this: setxkbmap us -variant altgr-gmc.
a few problems remain, mostly related to the handling of combining diacritical marks. contrary to my initial plans, i ended up refraining from the use of “dead keys” in favour of using combining diacritical marks throughout. this happened for consistency’s sake. in general, i prefer to use precomposed characters (which is what the “dead keys” give you), but since precomposed characters are not available for all the desired combinations, it’s unavoidable to use combining diacritical marks in some cases, and because of that it seemed better to me to use the latter throughout. of course it would be best to have a “fall back strategy”, so that precomposed characters will be used whenever possible, and combining diacritical marks elsewhere. such a solution doesn’t seem possible currently, however, since you can only use a key either as a “dead key” (which will give you no character at all in the case that you choose an unavailable combination) or to have it produce a combining diacritical mark.
a second thing that’s been irritating me is that the handling of combining diacritical marks seems to be very inconsistent across applications and fonts. strangely, changing the font of my text editor does not only change the way the marks are displayed in the editor window (sometimes combined, sometimes simply next to each other), but it can also (in some cases) change the order in which i need to input the base letter and the modifier: depending on the current font, i sometimes have to type the diacritical mark before and sometimes after the letter i want to modify… isn’t that odd?
another issue is that stacking diacritical marks is messy. often, the marks will end up being superimposed on each other instead of being stacked. it’s basically a matter of trial and error to see what will work and what won’t :(
so here’s a sample of what you can do with “altgr-gmc”, including some fancy (but not always neatly typeset) stacked diacritical marks:
http://www.mufi.info/ Medieval Unicode Font Initiative