"compor" no console permite digitar dois caracteres, mas gerar um terceiro.
o problema é que as definições de composição usam bytes , tanto como as duas entradas (ou seja, você não pode definir composição em termos de chaves digitadas, mas apenas em termos de símbolos digitados) e na saída.
para fazê-lo funcionar em UTF-8, que é multibyte (1 a 4 bytes, pelo menos) exigiria grandes mudanças na maneira como a entrada do console é manipulada e substitui a matriz de caracteres simples atualmente usada por algo mais complexo. Parece que não há planos para fazê-lo (o consenso entre os devlopers do kernel é que o console deve permanecer um console, algo simples, usado apenas para o último recurso; se você realmente precisar de unicode, provavelmente também precisará de bidi, shaping etc.); é melhor executar um terminal gráfico (um xterm em tela cheia no X11; mas existem outras possibilidades).
Portanto, na verdade, ele não funciona e não funciona com caracteres multibyte no console. MAS, ainda funcionará se você restringir as definições de composição ao ASCII simples.
E também descobri que também funciona se a saída estiver em iso-8859-1 (que corresponde a valores unicode até 0x00ff); para isso você pode colocar em algum script de início uma linha:
loadkeys / somepath / somefile
e coloque nesse arquivo as definições de composição que você deseja (tenha o cuidado de salvar o arquivo na codificação ISO-8859-1; e use caracteres maiores que 0x7f como saída) a sintaxe de um arquivo desse tipo é muito simples, linhas como esta:
compor 'somechar' 'somotherchar' para 'desejado resultado'
por exemplo:
compor 'a' 'a' para 'å'
compor 'a' 'e' para 'æ'
o apóstrofo tem que ser escapado.
o efeito de chaves diacríticas mortas também é definido nesse arquivo; para dead_acute + a, você define uma linha como:
compor '\' '' a 'a' á '
dead_grave usa backtick (`), dead_diaeresis usa aspas duplas ("), dead_circumflex usa circumflex (^) e dead_tilde usa til (~).