Remapeamento complexo de teclado no Linux

Remapeamento complexo de teclado no Linux

Aqui está outra pergunta sobre o remapeamento de chaves em distribuições Linux modernas.

Fundo:

Sou usuário de Mac há seis anos e usuário de Linux há cerca de 20 anos. Isso causou dois problemas:

  • Codificar em um teclado sueco em um Mac é horrível, então fui forçado a usar um layout dos EUA durante a codificação
  • Alternando constantemente entre layouts de teclado no Linux e Mac

No Mac fiz algumas alterações no layout dos EUA para ter acesso aos caracteres suecos (å, ä, ö). Para obter esses caracteres em um teclado sueco, normalmente existem três teclas à direita do teclado. Eu remapeei aqueles com Ukelele para que normalmente funcionem como em um layout dos EUA, mas com "alt" (ou "alt+shift") pressionado eu recebo os caracteres suecos. Depois de algum tempo se acostumando com isso, funciona muito bem.

Em segundo lugar, é bastante comum que os usuários do Linux remapeem as teclas ctrl-win-alt para que a tecla win atue como uma segunda tecla ctrl. Isso faz com que a maioria dos atalhos funcione da mesma forma no Mac e no Linux. Existe uma configuração para isso no GNOME (ou GNOME Tweaks): "Ctrl é mapeado para Win e as teclas Ctrl usuais".

Mas a ordem ainda não é a mesma de um teclado Mac: o mac tem "comando de opção de controle", mas um teclado de PC tem "ctrl win alt". Existe outra opção no GNOME Tweaks: "Alt é trocado pelo Win". Infelizmente, o GNOME Tweaks permite apenas uma dessas opções.

Então aqui está o remapeamento completo que desejo (com base em um layout dos EUA):

  • Alt + "[" => å
  • Alt + Shift + "['"=>Å
  • Alt + "'" => ä
  • Alt + Shift + "'" => Ä
  • Alt + ";" => ö
  • Alt + Shift + ";" => Ó
  • Ctrl Esquerdo => Ctrl Esquerdo
  • Vitória esquerda => Alt esquerdo
  • Alt Esquerdo => Ctrl Esquerdo

Infelizmente, parece haver tantas opções de como conseguir isso, e todas elas são muito difíceis de acertar, então eu apreciaria qualquer ajuda nisso!

(No Mac, consegui fazer isso usando o Ukelele, uma ferramenta gráfica para construir um layout de teclado que é então instalado para que eu possa alternar para ele com a mesma facilidade com que você alterna entre um layout americano ou sueco. Muito bom.)

Atualizar:

Eu tenho a parte Ctrl/Alt/Win resolvida. Criei um novo arquivo (chamado "jomag" no meu caso) e coloquei-o em "/usr/share/X11/xkb/symbols/":

partial modifier_keys              
xkb_symbols "jomag" {     
        key <LALT> { [ Control_L, Control_L ] };     
        key <LWIN> { [ Alt_L, Alt_L ] };             
        modifier_map Control { <LALT>, <LWIN> };     
};                        

Também adicionei uma linha a /usr/share/X11/xkb/rules/evdev:

! option     =    symbols
jomag:jomag  =    +jomag(jomag)    <--- this one

Não tenho certeza se foi necessário.

Descobri que a melhor maneira de carregá-lo é usando setxkbmap:

setxkbmap -option jomag:jomag

Para recarregar, execute com a opção vazia:

setxkbmap -option
setxkbmap -option jomag:jomag

informação relacionada