Atualização para 2020

Atualização para 2020

Estou escrevendo um novo layout de teclado personalizado para o Xorg, mas há um glifo específico que não existe no Unicode. No entanto, é fácil criá-lo usando uma letra padrão mais uma marca diacrítica combinada.

Por exemplo, se eu quiser a letra vcom um macron abaixo, a sequência U0073+U0331cria o caracter que eu quero.

Na minha definição de layout xkb, posso especificar um único ponto Unicode (aqui altgr+destá vinculado a ḏ e altgr+shift+da Ḏ):

key <AC03>  { [         d,          D,        U1E0F,        U1E0E ] }; // d with macron below

Mas não consigo especificar um glifo Unicode 'combinado' para uma única chave:

key <AB04>  { [         v,          V,  U0076+U0331,  U0056+U0331 ] }; // v with macron below

É possível criar uma definição xkb para todo o sistema como esta?

Responder1

EDITAR:

Ainda tentando...

Os testes mostram que o mapa de teclado SÓ terá uma única chave em cada posição.

MAS, se você usar um keysym raro/nunca usado na definição do mapa de teclado, então um Xmodmap global para fazer ESSE keysym gerar os vários caracteres Unicode que você precisa, isso funcionará.

No mapa de teclado:

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

Em um Xmodmap global: (talvez carregado de /etc/profile.d ?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Existem alguns keysyms não utilizados/de uso especial, escolhi o LaunchA/B como exemplo.

Responder2

Por outro lado, você pode anexar a uma determinada chave o próprio caractere unicode combinando diactíticos e, em seguida, digitá-lo após qualquer outro caractere. Na verdade, é assim que os caracteres de combinação Unicode devem funcionar.

No X11 existem chaves mortas, as chaves mortas funcionam de outra maneira: primeiro a chave morta, depois a letra base. Existe um <dead_belowmacron>, você pode anexá-lo a alguma chave.

Então você precisa editar o arquivo Compose para sua localidade (se alguém souber como anexar definições ao arquivo Compose a partir de um local definido pelo usuário, eu apreciaria) e adicionar linhas como:

# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"

o arquivo Compose a ser usado é definido pela localidade no arquivo /usr/share/X11/locale/compose.dir (o caminho pode variar).

Responder3

Atualização para 2020

Esta pergunta foi feita em 2012, com a resposta mais recente (antes desta) em 2013. Há muito tempo, a melhor resposta tem sido simplesmente mudar de ximparauim. É um substituto mais ou menos imediato criado para oferecer suporte total a Unicode e entrada multilíngue. Entre muitos outros recursos, o uim permite gerar caracteres de pontos de vários códigos, como U0073+U0331o resultado de um pressionamento de tecla ou de uma combinação de teclas mortas.

informação relacionada