Compose Key Combinations
The
jstools applications have builtin support for the use of the
Compose key to generate characters that may not appear on ASCII keyboards.
The mechanism is that you press the
Compose key, and then the next two characters you type, instead of
being inserted separately, combine to form a different character,
which is inserted. For instance, typing
Compose-/-o would insert the character `ø'. It doesn't matter what order you type the two characters
in;
Compose-o-/ works just as well.
Generally the characters you type to compose a character are as
mnemonic as possible, but sometimes they may require a stretch
of the imagination; for instance, the section symbol `§' can
be typed as
Compose-o-s. (It would have been nice to support
Compose-S-S for this character, but that's already taken for the German
`ß' character.)
Interaction with X Servers
The composekey combinations described here are interpreted by
the
jstools libraries (in particular, by the
jbindtext.tcl,
jbindentry.tcl,
jcompose.tcl and
jlatin1.tcl libraries), but you should be aware that some X displays intercept
composekey combinations and convert them to appropriate characters
before a program sees them. If you're sitting at an X terminal
that does this, then when you press
Compose and then `/', the application you're typing into won't be told that you pressed
any keys at all, and then when you type `o', the application will be told that you pressed the `ø' key, even though you may not actually have such a key on your
keyboard. So if you discover that the compose key works slightly
differently on your workstation or X terminal from what's described
below, it's probably because it's being interpreted by your X
display server, and the
jstools libraries are never seeing it. In that case, you should
consult the documentation for your X Window System server to determine
the exact composekey combinations available.
Another possible problem is that many keyboards don't actually
have a
Compose key. The
jbindtext.tcl and
jbindentry.tcl libraries use the key whose X keysym is
Multi_key; many keyboards don't have a key that corresponds to that keysym.
If your keyboard doesn't, and you want to use the composekey
combinations, you can get around this by using the
xmodmap(1) command to redefine some key on your keyboard as
Multi_key. For instance, if you decided that you could do without the
F12 key and wanted to use it as
Compose, you could issue the command
xmodmap -e "keysym F12 = Multi_key"
to redefine it. (You'd normally put this command in an X startup
file so that it would be executed for you whenever you started
X or logged in.)
Character Set
Currently, the libraries that implement compose-key combinations
are hardcoded with the assumption that you're using the Latin
1 character set, ISO standard 8859-1, which supports (among others)
the languages of Western Europe and the Americas. In the future,
I hope to support other character sets as well. (For these
characters to display properly, you'll need to be using fonts
that support ISO 8859-1. Most fonts distributed with modern
X Window System implementations are appropriate; you can use
the command `xlsfonts -fn "*-iso8859-1"' to get a list of them.)
ComposeKey Combinations for Latin 1
(nobreakspace): space+space
¡ (exclamdown): `!'+`!'
¢ (cent): `/'+`c', `c'+`|'
£ (sterling): `-'+`L', `='+`L', `L'+`L', `#'+`#'
¤ (currency): `o'+`x', `$'+`$'
¥ (yen): `='+`Y', `-'+`Y'
¦ (brokenbar): `|'+`|'
§ (section): `O'+`S', `S'+`o', `o'+`s'
¨ (diaeresis): `"'+`"'
© (copyright): `c'+`o', `O'+`c', `C'+`O'
ª (ordfeminine): `-'+`a', `_'+`a'
« (guillemotleft): `<'+`<'
¬ (notsign): `-'+`|', `,'+`-'
(hyphen): `-'+`-'
® (registered): `o'+`r', `O'+`r', `O'+`R'
¯ (macron): `-'+`^', `^'+`_', `_'+`_'
° (degree): `o'+`o', `0'+`^', `0'+`0'
± (plusminus): `+'+`-', `+'+`_'
² (twosuperior): `2'+`^', `2'+`2'
³ (threesuperior): `3'+`^', `3'+`3'
´ (acute): `''+`'', `\'+`\'
µ (mu): `/'+`u', `u'+`|', `m'+`u'
¶ (paragraph): `P'+`P'
· (periodcentered): `.'+`.', `*'+`+', `+'+`o', `*'+`.'
¸ (cedilla): `,'+`,'
¹ (onesuperior): `1'+`^', `1'+`1'
º (masculine): `-'+`o', `_'+`o'
» (guillemotright): `>'+`>'
¼ (onequarter): `1'+`4'
½ (onehalf): `1'+`2'
¾ (threequarters): `3'+`4'
¿ (questiondown): `?'+`?'
À (Agrave): `A'+``'
Á (Aacute): `''+`A'
 (Acircumflex): `A'+`^'
à (Atilde): `A'+`~'
Ä (Adiaeresis): `"'+`A'
Å (Aring): `A'+`o', `A'+`O', `*'+`A', `A'+`A'
Æ (AE): `A'+`E'
Ç (Ccedilla): `,'+`C', `C'+`C'
È (Egrave): `E'+``'
É (Eacute): `''+`E'
Ê (Ecircumflex): `E'+`^'
Ë (Ediaeresis): `"'+`E'
Ì (Igrave): `I'+``'
Í (Iacute): `''+`I'
Î (Icircumflex): `I'+`^'
Ï (Idiaeresis): `"'+`I'
Ð (ETH): `D'+`H', `D'+`D',`-'+`D',`/'+`D',`''+`D'
(1)
Ñ (Ntilde): `N'+`~', `N'+`N'
Ò (Ograve): `O'+``'
Ó (Oacute): `''+`O'
Ô (Ocircumflex): `O'+`^'
Õ (Otilde): `O'+`~'
Ö (Odiaeresis): `"'+`O'
× (multiply): `x'+`x', `*'+`*'
Ø (Ooblique): `/'+`O'
Ù (Ugrave): `U'+``'
Ú (Uacute): `''+`U'
Û (Ucircumflex): `U'+`^'
Ü (Udiaeresis): `"'+`U'
Ý (Yacute): `''+`Y'
Þ (THORN): `H'+`T', `T'+`T',`B'+`P'
(1)
ß (ssharp): `s'+`s', `S'+`S'
à (agrave): ``'+`a'
á (aacute): `''+`a'
â (acircumflex): `^'+`a'
ã (atilde): `a'+`~'
ä (adiaeresis): `"'+`a'
å (aring): `a'+`o', `*'+`a', `a'+`a'
æ (ae): `a'+`e'
ç (ccedilla): `,'+`c', `c'+`c'
è (egrave): ``'+`e'
é (eacute): `''+`e'
ê (ecircumflex): `^'+`e'
ë (ediaeresis): `"'+`e'
ì (igrave): ``'+`i'
í (iacute): `''+`i'
î (icircumflex): `^'+`i'
ï (idiaeresis): `"'+`i'
ð (eth): `d'+`h', `d'+`d', `/'+`d',
`-'+`d', `''+`d'
ñ (ntilde): `n'+`~', `n'+`n'
ò (ograve): ``'+`o'
ó (oacute): `''+`o'
ô (ocircumflex): `^'+`o'
õ (otilde): `o'+`~'
ö (odiaeresis): `"'+`o'
÷ (division): `-'+`:', `/'+`/'
ø (oslash): `/'+`o'
ù (ugrave): ``'+`u'
ú (uacute): `''+`u'
û (ucircumflex): `^'+`u'
ü (udiaeresis): `"'+`u'
ý (yacute): `''+`y'
þ (thorn): `h'+`t', `b'+`p', `t'+`t'
ÿ (ydiaeresis): `"'+`y'
Footnote
(1) Combinations of one lowercase letter and one capital letter
also work.
See Also
Mouse Bindings
Basic Bindings
Emacs Bindings
vi Bindings
If you're using
jedit, the following may also be useful:
The Characters SubMenu under
The Format Menu in
jedit