Layout xkb personalizado no qual uma chave cria dois pontos de código unicode

14

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+U0331criará o caractere que eu quero.

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

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

Mas não parece capaz de 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 de xkb para todo o sistema como esta?

SigueSigueBen
fonte

Respostas:

11

EDITAR:

Ainda tentando ...

O teste mostra que o mapa de teclas APENAS terá uma única tecla em cada posição.

MAS, se você usar um keyym raro / nunca usado na definição de keymap, um Xmodmap global para fazer com que o keyym produza os vários caracteres unicode necessários, isso funcionará.

No mapa de teclas:

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

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

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Existem algumas academias de teclas não utilizadas / de uso especial, escolhi o LaunchA / B como exemplo.

lornix
fonte
Obrigado pela resposta. Uma desvantagem é que essa seria uma configuração por uso, certo? Fazer isso com o xkb tornaria o sistema amplo e significa que ele pode ser distribuído em um único arquivo. Claro, essas condições estavam na minha pergunta original!
SigueSigueBen
2
Pesquisei o código-fonte, parece não haver suporte para incluir várias pressionamentos de tecla nas definições de chave do mapa de teclas. Claro, você pode reescrevê-lo para implementar essa capacidade!
Lornix
Não é a resposta que eu queria, mas essa é a resposta, no entanto. Vou dar uma olhada no código-fonte e examinar as opções que você sugeriu. Obrigado.
SigueSigueBen
4

Por outro lado, você pode anexar a uma determinada chave o próprio caractere de diactidade combinando o unicode e, em seguida, digitá-lo após qualquer outro caractere. De fato, é assim que os caracteres combinados 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.

Em seguida, você precisa editar o arquivo Compose para o seu código de idioma (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 de composição a ser usado é definido pelo código de idioma no arquivo /usr/share/X11/locale/compose.dir (o caminho pode variar).

Pablo Saratxaga
fonte