You can define your own table for the Compose key: create a file called
.XCompose in your home directory. You'll need to define the whole table (you can't just add your definitions to the system default, you have to copy the system default into your file if you want it).
You'll find the system default table in
/usr/share/X11/locale/en_US.UTF-8/Compose on Debian and Ubuntu and in a similar location on other unices. The format should be reasonably straightforward; a typical definition looks like these:
<dead_acute> <a> : "á" aacute # a dead key: press Dead_acute then A to insert "á"
<Multi_key> <acute> <a> : "á" aacute # Press Compose, ', A to insert "á"
<Multi_key> <g> <a> : "α" U03B1 # 03B1 is the hexadecimal code of "α"
<Multi_key> <M> <A> : "∀" U2200 # 2200 is the hexadecimal code of "∀"
<Multi_key> <minus> <greater> : "→" U2192
<Multi_key> <bar> <minus> <greater> : "↦" U21A6
ASCII characters and a few others have symbolic names; you'll find these names in
/usr/include/X11/keysymdef.h. For example,
keysymdef.h contains the line
#define XK_minus 0x002d and 2d is the hexadecimal code of
You can have sequences of more than two characters, like
|-> in the example above. Note that if you define a compose sequence for
|->, you can't have another for
If you prefer AltGr+key₁ʹ, key₂ to Compose, key₁, key₂ then you can bind AltGr+key₁ʹ to a dead key with xmodmap. It's not necessarily a blessing, and note that you are limited to the dead key names listed in
For characters that you don't use often enough to remember a key sequence anyway, you can use KCharSelect (or its Gnome equivalet GUCharMap). Or do what mathematicians are used to doing, which is type in \LaTeX.