Eu tenho um arquivo chamado ~ / .speedswapper que contém o seguinte:
! Swap caps lock and escape
remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock
... quando corro xmodmap ~/.speedswapper
, isso alterna as teclas esce Caps Lock. Eu tenho essa linha no meu perfil ~ /., Para que, sempre que eu entre, essas chaves sejam trocadas.
No entanto , se eu conectar um teclado USB externo, essa configuração parece não persistir. O teclado do meu laptop funciona perfeitamente bem, mas preciso executar o comando novamente para que o teclado externo alterne as duas teclas. Felizmente, isso não parece afetar o teclado do meu laptop - eles parecem sincronizar.
Uma solução seria encontrar uma maneira de executar esse comando xmodmap sempre que um teclado externo estiver conectado, mas eu estaria aberto a outra solução de troca de teclas, se fosse mais robusta. O sistema operacional é o Ubuntu 13.04.
Dado o comentário de justbrowsing, parece que isso pode ser alcançado escrevendo uma regra do udev - acho que tenho que usar a opção RUN e que deve ser acionada em / dev / hidraw0 ou / dev / hidraw1, que são os dispositivos que aparecem quando eu conecto o teclado ... mas ainda estou tentando entender o conceito, por isso gostaria de receber ajuda de alguém que sabe o que está fazendo com o udev.
Respostas:
Como você tem esse comando no seu computador
~/.profile
, ele será executado apenas uma vez quando você efetuar o login. Uma solução, não muito elegante, seria colocar o comando no seu,~/.bashrc
para que seja executado toda vez que você abrir um terminal.Uma solução melhor seria definir uma
udev
regra que será executadaxmodmap
quando o teclado USB for inserido (estou usando os valores retornados para o meu teclado USB, você precisará editar esta solução para se adequar à sua):Obtenha os detalhes do seu teclado USB. Execute este comando com o teclado conectado:
Para escrever
udev
regras, você precisa saber com o que elas devem corresponder. Você pode obter isso pesquisando a saída deudevadm info --export-db
para aevent6
entrada ou apenas analisando-a diretamente da seguinte forma:Isso retorna várias linhas de texto, incluindo estas que iremos usar:
udev
fica complicado ao usar programas X comoxmodmap
, eu nem conseguia fazê-lo funcionar ao exportar$DISPLAY
e$XAUTHORITY
. De qualquer forma, eu não consegui fazê-lo funcionar com seu método, então minha solução é usadakeymap
. Primeiro, você precisará descobrir os códigos-chave para Esce Caps Lock, você pode fazer isso executandoe depois pressionando as teclas relevantes. No meu sistema, isso retorna:
Crie uma nova regra de mapa de teclas contendo estas linhas:
e salve-o como
/lib/udev/keymaps/speedswap
.Defina uma nova
udev
regra. Crie um arquivo chamado/etc/udev/rules.d/95-speedswap.rules
e adicione estas linhas:Isso deve ser feito, pelo menos no meu sistema, conectar meu USB externo faz Esccom que funcione como Caps Locke vice-versa .
fonte
udevadm info --export-db
com alguns teclados e veja o que eles têm em comum. TalvezID_MODEL=USB_Keykoard
ouID_USB_DRIVER=usbhid
mas isso também possa desencadear a regra com o dispositivo errado. Você decide.