||This article includes a list of references, but its sources remain unclear because it has insufficient inline citations. (May 2012)|
A compose key, available on some computer keyboards, is a special kind of modifier key designated to signal the software to interpret the following (usually two) keystrokes as a combination in order to produce a character not found directly on the keyboard. For example, striking Compose followed by ~ and then n can produce character ñ, whereas striking Compose followed by O and then C can produce the symbol ©, the copyright symbol.
The compose key is different from a typical modifier key (such as AltGr) in that, rather than being pressed and held while another key is struck, it is pressed and released before striking the keys to be modified.
Though it can be considered a type of dead key, the compose key differs in that a normal dead key produces part of the composite, typically a diacritic, to combine with a following letter. Since each different first part requires a different dead key, this limits the number of combinations. The first part of the composite from a compose key can be any key on the keyboard, vastly increasing the number of possible combinations, and allowing some easily memorized sequences such as 1,2 for ½. However it has the cost of using one more keystroke than a dead key.
Occurrence on keyboards
Microsoft Windows and OS X do not support a compose key by default, therefore the key does not exist on most keyboards designed for modern PC hardware. When software supports compose key behavior, some other key is used. Common examples are the right-hand Windows key, the AltGr key, ⇧ Shift+AltGr, or the right-hand Ctrl key.
ISO/IEC 9995-7 designed a graphical symbol for this key, in ISO/IEC 9995-7 as symbol 15 “Compose Character”, and in ISO 7000 “Graphical symbols for use on equipment” as symbol ISO-7000-2021. This symbol is encoded in Unicode as U+2384 composition symbol (⎄) since version 3.0.0 of the standard.
Compose keys are most popular on Linux and other systems using the X Window System. On modern Xorg the default setup maps first pressing ⇧ Shift and then pressing AltGr while ⇧ Shift is still depressed to the compose key, but pressing AltGr first followed by ⇧ Shift to the fourth "keyboard level" modifier (the first three levels correspond to holding no modifiers, ⇧ Shift, and AltGr respectively.) So for example the copyright symbol, © can be typed using the compose key as ⇧ Shift+AltGr, o, c, or using the level four modifier as AltGr+⇧ Shift+c. As this is rather inconvenient (especially if the keyboard does not have AltGr) it is common to select a keyboard layout making another key such as the right-hand Ctrl or ⊞ Win into the compose key.
On Microsoft Windows a few programs such as PuTTY provide compose key support. There are also a number of open source utilities (such as AllChars or Compose-Keys) and installable keyboard layouts (such as this one) available that emulate the compose key using a selectable modifier key like Control or AltGr.
Common compose combinations
The table shown below contains the current default common compositions for X.Org 7. Other compositions may work, based on the de facto Sun/DEC/Falco standard. Particularly for modern systems which support customizable compose sequences and Unicode, the table would be far from complete.
- Linux Compose Key Sequences with equivalent unicode mappings
- XFree86 Compose Key character map by XFree86
- Everything2's list of Compose Key combinations
- Sun's Compose Key combinations used under CDE
- Setting up Compose Key in the X Window System
- AllChars, an open-source utility that emulates the Compose key under MS-Windows
- FreeCompose, an open-source Compose key utility for Windows.
- JLG Extended Keyboard Layout - yet another utility based on the Compose Key mechanism under Windows
- Installable keyboard layouts for Windows with source for editing in the MSKLC keyboard editor
- Accent Composer - Compose accented characters and other symbols under Microsoft Windows. Unicode compatible
- Compose key sequences used in GNOME/GTK