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 v
com um macron abaixo, a sequência U0073+U0331
cria o caracter que eu quero.
Na minha definição de layout xkb, posso especificar um único ponto Unicode (aqui altgr+d
está vinculado a ḏ e altgr+shift+d
a Ḏ):
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 xim
parauim
. É 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+U0331
o resultado de um pressionamento de tecla ou de uma combinação de teclas mortas.