.XCompose
Here's what I did to get a sensibly large character repertoire for my keyboard, using ubuntu 9.10.
First, read any of the fine explanations of the compose key and configure some suitable key.
Next, explain to ubuntu that you do wish to XIM:
im-switch -s default-xim
By this time, X applications will read your ~/.XCompose file when they start, so set it up. There's a large repertoire on github:
cd ~/src
git clone git://github.com/rrthomas/pointless-xcompose.git
Here's my ~/.XCompose (note the upper-case X and C). I use most of the pointless-xcompose stuff, plus some I already had, plus the X defaults. All in all maybe around 5000 characters. Some are accessible in several ways, I don't mind.
include "/usr/share/X11/locale/en_US.UTF-8/Compose"
include "/home/arnt/src/pointless-xcompose/abbrevs.xcompose"
include "/home/arnt/src/pointless-xcompose/arrows.xcompose"
include "/home/arnt/src/pointless-xcompose/bullets.xcompose"
include "/home/arnt/src/pointless-xcompose/dashes-hyphens.xcompose"
include "/home/arnt/src/pointless-xcompose/enclosed.xcompose"
# include "/home/arnt/src/pointless-xcompose/fractions.xcompose"
# include "/home/arnt/src/pointless-xcompose/historical.xcompose"
# include "/home/arnt/src/pointless-xcompose/hyphen-macron.xcompose"
include "/home/arnt/src/pointless-xcompose/invisible.xcompose"
include "/home/arnt/src/pointless-xcompose/math.xcompose"
include "/home/arnt/src/pointless-xcompose/typographic.xcompose"
<Multi_key> <colon> <parenright> : "☺" U263A # :)
<Multi_key> <less> <minus> : "←" U2190 # <-
<Multi_key> <minus> <less> : "←" U2190 # -<
<Multi_key> <minus> <greater> : "→" U2192 # ->
<Multi_key> <t> <m> : "™" U2122
<Multi_key> <T> <M> : "™" U2122
<Multi_key> <less> <3> : "♥" U2665 # <3
# more
<Multi_key> <period> <space> : "…" # ellipsis
# Signs:
<Multi_key> <bracketleft> <bracketright> <space> : "☐" U2610 # []space
<Multi_key> <bracketleft> <bracketright> <j> : "☑" U2611 # []j
<Multi_key> <bracketleft> <bracketright> <x> : "☒" U2612 # []x
<Multi_key> <p> <h> <o> <n> <e> : "☏" U260F # phone
<Multi_key> <p> <e> <a> <c> <e> : "☮" U262E # peace
# Arrows and triangles
<Multi_key> <space> <Left> : "◀" U25C0 # space left
<Multi_key> <space> <Right> : "▶" U25B6 # space right
<Multi_key> <space> <Up> : "▲" U25B2 # space up
<Multi_key> <space> <Down> : "▼" U25BC # space down
<Multi_key> <Left> <Left> : "←" U2190 # left left
<Multi_key> <Right> <Right> : "→" U2192 # right right
<Multi_key> <Up> <Up> : "↑" U2191 # up up
<Multi_key> <Down> <Down> : "↓" U2193 # down down
<Multi_key> <Left> <Right> : "↔" U2194 # left right