Ubuntu – Compose “dead_greek” with compose key

compose-keydead keyskeyboard-layoutunicode

The config file for my compose key /usr/share/X11/locale/en_US.UTF-8/Compose lists all the key sequences for composing Greek letters; all of them require the pressure of a special dead_greek key. This is not a physical key of course, so, how can I assign an arbitrary key sequence to my compose key which produces this virtual dead_greek?

Also, I'd be interested to know if you have found a comfortable keyboard configuration regarding the compose key in general, and Greek letters in particular.

Best Answer

To help anyone who stumbles here,

You need to configure ~/.XCompose (see full file below) and restart X session.

To type Greek letters on Latin keyboard:

  1. Hold compose key — usually it is right Alt (look for "Compose key location" in "Keyboard" sections in "System Settings"). <Multi_key> in the list below.
  2. Type g for small letters or G for CAPITAL letters. G stands for "Greek". Different capitalization for convenience
  3. Type the Latin alphabet equivalent.
  4. Release compose key.

You can see the list of compose sequences configured system-wide in file /usr/share/X11/locale/$LANG/Compose, where $LANG is environment variable for current locale (for US English, it is equal to en_US.UTF-8):

$ cd /usr/share/X11/locale/$LANG/
$ less Compose

To enable compose for Greek alphabet add to your ~/.XCompose file:

~/.XCompose
# GREEK CAPITAL LETTERS
<Multi_key> <G> <A> : "Α"    U0391    # GREEK CAPITAL LETTER ALPHA
<Multi_key> <G> <B> : "Β"    U0392    # GREEK CAPITAL LETTER BETA
<Multi_key> <G> <G> : "Γ"    U0393    # GREEK CAPITAL LETTER GAMMA
<Multi_key> <G> <D> : "Δ"    U0394    # GREEK CAPITAL LETTER DELTA
<Multi_key> <G> <E> : "Ε"    U0395    # GREEK CAPITAL LETTER EPSILON
<Multi_key> <G> <Z> : "Ζ"    U0396    # GREEK CAPITAL LETTER ZETA
<Multi_key> <G> <H> : "Η"    U0397    # GREEK CAPITAL LETTER ETA
<Multi_key> <G> <I> : "Ι"    U0399    # GREEK CAPITAL LETTER IOTA
<Multi_key> <G> <K> : "Κ"    U039A    # GREEK CAPITAL LETTER KAPPA
<Multi_key> <G> <L> : "Λ"    U039B    # GREEK CAPITAL LETTER LAMDA
<Multi_key> <G> <M> : "Μ"    U039C    # GREEK CAPITAL LETTER MU
<Multi_key> <G> <N> : "Ν"    U039D    # GREEK CAPITAL LETTER NU
<Multi_key> <G> <P> : "Π"    U03A0    # GREEK CAPITAL LETTER PI
<Multi_key> <G> <R> : "Ρ"    U03A1    # GREEK CAPITAL LETTER RHO
<Multi_key> <G> <S> : "Σ"    U03A3    # GREEK CAPITAL LETTER SIGMA
<Multi_key> <G> <T> : "Τ"    U03A4    # GREEK CAPITAL LETTER TAU
<Multi_key> <G> <U> : "Υ"    U03A5    # GREEK CAPITAL LETTER UPSILON
<Multi_key> <G> <F> : "Φ"    U03A6    # GREEK CAPITAL LETTER PHI
<Multi_key> <G> <X> : "Χ"    U03A7    # GREEK CAPITAL LETTER CHI
<Multi_key> <G> <O> : "Ω"    U03A9    # GREEK CAPITAL LETTER OMEGA

# DOUBLES (additional stroke <Q>)
<Multi_key> <G> <Q> <T> : "Θ"    U0398    # GREEK CAPITAL LETTER THETA
<Multi_key> <G> <Q> <O> : "Ο"    U039F    # GREEK CAPITAL LETTER OMICRON
<Multi_key> <G> <Q> <X> : "Ξ"    U039E    # GREEK CAPITAL LETTER XI
<Multi_key> <G> <Q> <P> : "Ψ"    U03A8    # GREEK CAPITAL LETTER PSI

# greek small letters
<Multi_key> <g> <a> : "α"    U03B1    # GREEK SMALL LETTER ALPHA
<Multi_key> <g> <b> : "β"    U03B2    # GREEK SMALL LETTER BETA
<Multi_key> <g> <g> : "γ"    U03B3    # GREEK SMALL LETTER GAMMA
<Multi_key> <g> <d> : "δ"    U03B4    # GREEK SMALL LETTER DELTA
<Multi_key> <g> <e> : "ε"    U03B5    # GREEK SMALL LETTER EPSILON
<Multi_key> <g> <z> : "ζ"    U03B6    # GREEK SMALL LETTER ZETA
<Multi_key> <g> <h> : "η"    U03B7    # GREEK SMALL LETTER ETA
<Multi_key> <g> <i> : "ι"    U03B9    # GREEK SMALL LETTER IOTA
<Multi_key> <g> <k> : "κ"    U03BA    # GREEK SMALL LETTER KAPPA
<Multi_key> <g> <l> : "λ"    U03BB    # GREEK SMALL LETTER LAMDA
<Multi_key> <g> <m> : "μ"    U03BC    # GREEK SMALL LETTER MU
<Multi_key> <g> <n> : "ν"    U03BD    # GREEK SMALL LETTER NU
<Multi_key> <g> <p> : "π"    U03C0    # GREEK SMALL LETTER PI
<Multi_key> <g> <r> : "ρ"    U03C1    # GREEK SMALL LETTER RHO
<Multi_key> <g> <s> : "σ"    U03C3    # GREEK SMALL LETTER SIGMA
<Multi_key> <g> <t> : "τ"    U03C4    # GREEK SMALL LETTER TAU
<Multi_key> <g> <u> : "υ"    U03C5    # GREEK SMALL LETTER UPSILON
<Multi_key> <g> <f> : "φ"    U03C6    # GREEK SMALL LETTER PHI
<Multi_key> <g> <x> : "χ"    U03C7    # GREEK SMALL LETTER CHI
<Multi_key> <g> <o> : "ω"    U03C9    # GREEK SMALL LETTER OMEGA

# doubles (additional stroke <q>)
<Multi_key> <g> <q> <t> : "θ"    U03B8    # GREEK SMALL LETTER THETA
<Multi_key> <g> <q> <o> : "ο"    U03BF    # GREEK SMALL LETTER OMICRON
<Multi_key> <g> <q> <p> : "ψ"    U03C8    # GREEK SMALL LETTER PSI
<Multi_key> <g> <q> <s> : "ς"    U03C2    # GREEK SMALL LETTER FINAL SIGMA
<Multi_key> <g> <q> <x> : "ξ"    U03BE    # GREEK SMALL LETTER XI

See also:

Most used letters can also be set up with separate compose key combinations. For example, π:

<Multi_key> <p> <i> : "π"    U03C0    # GREEK SMALL LETTER PI

You can also save this list in a file called GreekCompose and use include command in ~/.XCompose:

include "%L"
include "/path/to/GreekCompose"

The list above was created by manually adjusting output of small Python script: https://github.com/rybak/scripts/blob/master/extra/gen_x_compose.py

Related Question