Como personalizar mapeamentos de teclado com Wayland

20

Uso o Linux em um Macbook com um teclado do Reino Unido / GB e personalizo o mapa de teclas para resolver alguns problemas que o layout estranho do teclado da Apple causa. Eu costumo xmodmapfazer isso. Eu gostaria de experimentar o Wayland, mas xmodmapnão funciona nisso. Como posso obter um resultado semelhante no Wayland? O .Xmodmaparquivo que eu uso contém o seguinte:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

Linha 1: nos teclados do Reino Unido Shift- 3é £, então # normalmente tem sua própria chave próxima Return. Mas no Mac # é obtido com Altgr- 3. Como programador, eu uso # muito mais que £, então essa linha os troca. A seleção do layout dos EUA também consegue isso, mas fazer isso no Linux também troca algumas outras chaves comumente usadas, enquanto no OS X essas outras chaves não são afetadas pelos EUA / Reino Unido.

Linhas 2-5: Faça com que a Cmdtecla direita atue como Direita- Ctrl, porque este teclado não possui a Ctrltecla direita física .

Linha 6: CapsLockSó funciona se você pressionar Shift. Não específico do Mac, essa deve ser uma opção padrão para todos os SOs e teclados.

realh
fonte
Estou no meio do caminho: aparentemente, Wayland usa xkb, e o xmodmap é preterido no X de qualquer maneira. Infelizmente, o xkb é consideravelmente mais complicado, e o GNOME nunca considerou que os usuários precisassem personalizá-lo, então eu levantei uma segunda pergunta .
realh 6/07/2016

Respostas:

11

Infelizmente, modificar o banco de dados XKB do sistema /usr/share/X11/xkbé a única maneira; da sua outra pergunta , parece que você conseguiu essa parte trabalhando.

A limitação se deve principalmente à imaturidade de Wayland e a uma supervisão de projeto no XKB.

  • Ferramentas como setxkbmape xkbcompfornecem uma -Iopção para adicionar um banco de dados definido pelo usuário à pesquisa (por exemplo , ~/.xkbou ~/.config/xkb, com arquivos e subdiretórios definidos como o banco de dados do sistema). Essas ferramentas interagem com o servidor X, portanto, podem ser úteis para configurar a Xwaylandcamada de compatibilidade para a execução de aplicativos X no Wayland. Mas atualmente eles não falam os protocolos de Wayland.

  • Os protocolos de Wayland ainda estão amadurecendo. Atualmente, parece que os protocolos input-methode text-inputsão mais relevantes e ambos são instáveis. Nem mencione nada sobre como alterar um mapa de teclas definido; esses detalhes são deixados para o compositor.

  • O GNOME e o KDE fornecem daemons de configurações de manipulação de teclado que devem lidar com as opções XKB do sistema, incluindo alterações em tempo real. Que eu saiba, não há como dizer sobre personalizações de usuários. Até onde eu sei, Weston e outros compositores dependem de arquivos de configuração ou variáveis ​​de ambiente para definir opções XKB na inicialização e não fornecem outra maneira de alterá-las além de sair e reiniciar.

  • Mesmo no próprio XKB, isso não é totalmente suportado. Seu arquivo de símbolos personalizados pode includeoutros arquivos de símbolos do sistema. Mas, atualmente, não há includefuncionalidade para os arquivos de regras XKB, portanto, mesmo se você tivesse uma ferramenta que falaria com o compositor de Wayland e procuraria suas personalizações pessoais, teria que incluir manualmente todas as regras que deseja usar (por exemplo, copiar rules/evdev*do sistema XKB e modifique-o). libxkbcommontem um problema em aberto sobre este tópico e um bug relacionado .

quixotesco
fonte
11
Eu deveria ter deixado mais claro que resolvi isso agora. Eu disse isso na outra pergunta, mas a informação é um pouco desconexa. Pretendo documentar isso com mais clareza quando adicionar um blog ao meu site, então terei que me lembrar de vincular aqui.
realh 02/04/19
claro, mas ainda era uma pergunta sem resposta, então tentei abordar o .Xmodmapaspecto equivalente de Wayland .
Quixotic
3
Agora eu documentei isso em detalhes em uma postagem no blog .
realh
5

Eu tenho usado as Ferramentas de Interceptação para Linux com sucesso e também sei de pessoas que produzem outros plugins para seus mapeamentos personalizados . O caps2esc é um primeiro plug-in de prova de conceito que uso todos os dias e funciona tanto no X quanto no Wayland. A ferramenta possui um nível um pouco mais baixo que o software de mapeamento usual, mas bastante flexível, e meu plano para um próximo plug-in é uma ferramenta de mapeamento de frases generalizada.

Disclaimer: Eu sou o autor.

pepper_chico
fonte
As ferramentas de interceptação parecem realmente interessantes! Obrigado pelo seu trabalho!
balu
11
Não tenho certeza de como me sinto em executar todas as minhas entradas de teclado por meio de um script python
Ace.C
4

Para aqueles que vêm aqui em 2018 (Ubuntu 17.10), a parte mais crítica disso pode ser realizada usando a ferramenta GNOME Tweak.

Ferramenta Gnome Tweak> Teclado e Mouse> Opções adicionais de layout> Ctrl é mapeado para as teclas Win (e as teclas Ctrl usuais).

Bardi Harborow
fonte
2
O uso da "Gnome Tweak Tool" (o que quer que seja) define os novos mapeamentos para outros gerenciadores de janelas / ambientes / shells gráficos também?
Mali Remorker
A Ferramenta Gnome Tweak não pode remapear o Caps Lock.
andyn
@andyn my gnome-tweaks-3.34.0-1.fc31.noarchpode remapear Caps Lock - por exemplo, 'Caps Lock também é um Ctrl', 'Tornar caps Lock um Esc adicional', 'Caps Lock como Ctrl' e muito mais.
maxschlepzig 23/11
2

Esta resposta tem a mesma idéia que a resposta do quickotic, mas apenas com um exemplo mais detalhado:

Os ajustes do Gnome têm uma lista de 20 ou 30 ajustes do teclado que você pode fazer via xkb. Às vezes, você pode encontrar o ajuste que procura por padrão. No meu caso, eu queria trocar a tecla da tela de impressão pelo Menu.

A única opção para modificar a chave printscr disponível via xkb era substituí-la pelo Win_R. Gunnar Hjalmarsson neste tópico sugeriu que eu modificasse as modificações do xkb para que o printscr / win_r fizesse o printscr / menu. Nós elaboramos uma solução juntos e vou retransmiti-la aqui:

No terminal, digite:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

Na parte inferior do arquivo, você encontrará:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

Exclua esta seção e substitua-a por esta:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

Para excluir no nano, use a tecla Backspace (destacar e excluir não funciona). Para colar, use shift-ctrl-v. Para sair e salvar, pressione ctrl-x, selecione sim para substituir e pressione enter.

Reinicie. No Gnome / Ubuntu, vá para gnome-tweak-tools. Na seção de ferramentas, vá para a seção Teclado e mouse, pressione o botão Opções adicionais de layout e expanda o comportamento das teclas Alt / Win. Selecionando a opção na parte inferior: O Win é mapeado para printscr (lembre-se de que modificamos apenas esse comportamento para trocar print e Menu em vez de print e Win). (Tenho certeza de que existe uma maneira de ativar a opção xkb modificada no KDE, mas eu não a uso, por isso não posso fornecer o procedimento exato).

thebunnyrules
fonte