Confiável troca de chaves no teclado com defeito

3

Eu tenho um teclado no qual a tecla "P" não funciona, mas não consigo ver o ponto de jogá-lo fora por um defeito. Portanto, quero mapear uma das chaves de trabalho para "P". Isto provou ser um desafio poderoso, quase circular. Como é típico no Linux também, existem muitas soluções, todas do tipo que funcionam, mas não realmente. O ideal é que eu queira que as chaves sejam trocadas sempre que eu inicializar, seja no terminal (CLI) ou X / Desktop (GUI).

O problema "circular" é a missão certa para inserir o caractere "P" nas correções abaixo se você não tiver um personagem P

.

Qual a melhor forma de mapear uma chave de trabalho (como seção / graus) para uma chave que não funciona como "P"?

    
por Marc 05.01.2017 / 12:31

1 resposta

1

  1. Determine o "código-chave" da sua chave de trabalho (no meu caso, o § chamado de "seção" ou "silcrow"):

    showkey

Execute isso e pressione sua tecla de trabalho. Deve mostrar algo como:

keycode 41 press
keycode 41 release

Então "41" é o código-chave da minha chave de trabalho.

  1. Mapeie esse código-chave físico para sua chave ausente.

    keycode 41 = p | Sudo loadkeys

Agora, se você não conseguir digitar sua chave ausente (por exemplo, "p"), ela será ... interessante ...

A melhor solução que encontrei é echo $'\x70' em um arquivo (script bash) e, em seguida, vou lá e uso em um comando de script. Digamos que você queira adicionar o mapeamento à sua rotina de inicialização - você o adicionaria ao arquivo ~/.bashrc .

echo keycode 41 = p >> ~/.bashrc

Agora você precisa editar o .bashrc e alterar a última linha de:

echo keycode 41 = p

para

echo keycode 41 = p | sudo loadkeys

Agora, se você reiniciar, deve mapear a chave 41 (seção) para "P".

Nota 1: A seguinte solução:

xmodmap -e "keycode 49 = P"

é um bom método, mas só funciona se você inicializar o X (Desktop). É legal porque não requer o sudo, então você pode adicioná-lo à sua inicialização ~/.bashrc .

Observação 2: usando Ctrl + Shift + u e inserindo 0050 (o código ASCII para "P") não funcionou.

    
por 05.01.2017 / 12:31

Tags