Estou executando o servidor Ubuntu 16.04. Não tenho certeza se isso é importante, mas estou encaminhando a tela para um navegador usando o XPRA .
Tudo funciona razoavelmente bem, exceto por algumas combinações de teclas irritantes. Eu estou usando um teclado GB, onde entre as teclas SHIFT e Z existe uma chave com backslash
e bar
(pipe), vamos chamar isso de 'tecla de barra'. No canto superior esquerdo do teclado há uma chave com um grave
e notsign
, vamos chamar isso de 'grave key'.
Essas chaves funcionam bem no sistema operacional do cliente, bem como ao usar o SSH no servidor. No entanto, no momento em que usá-los em qualquer um dos aplicativos encaminhados, por exemplo xterm, eles exibem caracteres incorretos.
A tecla 'bar' exibe '\' (correto) e '¬' (incorreto, isso deve ser '|').
A 'tecla grave' exibe a sepultura '' '(correta) e o não sinal' ¬ '(correta)
Então eu tentei o usual xev
& xmodmap
combinação para descobrir os códigos de teclas e mapeá-los.
Quando eu executo o xev eu recebo a seguinte saída para a 'tecla da barra'
backslash (\): keycode 94
bar (|): keycode 49
e o seguinte para a 'chave grave'
grave ('): keycode 49
notsign (¬): keycode 49
Parece que há muita coisa acontecendo no código-chave 49, ele está mapeado para várias chaves físicas.
Para verificar em que posição as coisas mapeiam, executei o seguinte
xmodmap -e "keycode 49 = 1 2 3 4 5 6"
quando eu digito as várias teclas que recebo
\ = is still \ because we didn't remap 94
| = 2
' = 1
¬ = 2 (also 2 ... brilliant)
Então, como eu posso remapear este mapa se 2 caracteres para a mesma combinação de código de tecla / posição? (Eu tenho um par de outros para remapear, por exemplo, a tecla @ produz Q, mas vamos primeiro o primeiro)
Não tenho certeza se isso ajuda, mas aqui estão algumas informações de diagnóstico adicionais
~$ setxkbmap -query
rules: evdev
mode: pc105
layout: gb
~$ localectl status
System Locale: LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
VC Keymap: n/a
X11 Layout: gb
X11 Model: pc101
Eu passei dois dias nisso e estou perdendo a vontade de viver. Espero que isso faça sentido.