Troque condicionalmente as teclas de um teclado (Debian, X11, KDE Plasma)

Troque condicionalmente as teclas de um teclado (Debian, X11, KDE Plasma)

Eu tenho esse layout de teclado no meu Dell Latitude

Layout do teclado

Realmente é difícil para mim que as chaves Homee sejam mapeadas para a chave Endcomposta . FnEntão consegui trocar PageUpcom Homee PageDownadicionando Endisso /usr/share/X11/xkb/symbols/de(na verdade, é uma variante alemã)

xkb_symbols "basic" {
  ...
  key <HOME> {    [  Prior        ]   };
  key <PGUP> {    [  Home         ]   };
  key  <END> {    [  Next         ]   };
  key <PGDN> {    [  End          ]   };
  ...
}

Está funcionando conforme o esperado. No entanto, frequentemente alterno entre meu laptop como está e minha mesa de trabalho usando uma docking station e um teclado completo, onde esse hack é irritante.

As manipulações desses arquivos de símbolos xkb requerem uma reinicialização (ou pelo menos uma reinicialização do ambiente de desktop). Existe alguma possibilidade de mudar o comportamento em tempo de execução? Talvez até automatizado, como um gancho do udev vendo o dock USB-C?

Responder1

Você pode alternar entre layouts com setxkbmap. Por exemplo, eu uso o layout Dvorak, apliquei suas alterações no meu local /usr/share/X11/xkb/symbols/dee mudei para o layout alemão:

setxkbmap de

Verifiquei se o PGUP funciona como Home, funciona. Então voltei para dvorak:

setxkbmap dvorak

Se você quiser alternar entre um layout original e seu layout personalizado, acho que a melhor maneira é remover as 4 linhas que você mostrou na sua pergunta de um dearquivo de layout original e criar um novo arquivo de layout personalizado, digamos /usr/share/X11/ xkb/symbols/de-modified com as modificações adicionadas. Não haverá reinicialização nem reinicialização do X necessária para alternar entre os 2 layouts:

setxkbmap de # PGUP wouldn't work as home
setxkbmap de-modified # PGUP would work as home

informação relacionada