Como vincular botões do mouse a teclas?

19

Eu tenho um mouse a laser Logitech MX400 que possui 5 botões + 4 para rolagem vertical / horizontal. Gostaria que fosse configurado para que, em vez de rolagem horizontal, pressionar a direita no botão de rolagem envie Ctrl+ Tabe a esquerda envie Ctrl+ Shift+ Tab, o que me permitirá percorrer as guias dos navegadores.

Além disso, seria bom se eu pudesse remapear o botão do meio para um dos lados, pois é realmente difícil pressionar.

Outro bônus seria se eu pudesse escrever um script que me permita definir quais botões fazem e que dependem de qual janela está ativa no momento.

Eu tentei usar, xmodmapmas só consegui ver como reorganizar os botões, e não enviá-los sinais-chave.

Desde já, obrigado.


Mapa dos botões (usando xev):

Left        1
Middle      2
Right       3
ScrollUp    4
ScrollDown  5
ScrollLeft  6
ScrollRight 7
Backward    8
Forward     9
Callum Rogers
fonte

Respostas:

18

O xbindkeys e o xte podem ajudá-lo.

Por exemplo, meu arquivo .xbindkeysrc se parece com o seguinte:

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9
lukasz
fonte
Isso é fantástico e extensível, muitos muitos agradecimentos
Callum Rogers
1
Para obter o xte no Ubuntu 16.x, você precisará instalar o xautomation no apt .
1111161171159459134
Isso não funciona tão bem quanto eu gosto, porque não funciona da mesma forma se eu mantiver o botão pressionado. Meu mouse antigo tinha um botão que permite que a roda de rolagem gire livremente, o que é ótimo se eu quiser apenas começar a se mover muito rápido e percorrer um longo caminho. Mas o meu novo não tem isso, então amarrei dois botões laterais (acho que eles foram projetados como botões de voltar / avançar para navegação na Web) às teclas PgUp / PgDn. Mas preciso pressioná-los repetidamente se quiser continuar rolando; Eu não posso simplesmente segurá-los. Como faço para segurar a tecla enquanto pressiono o botão?
flarn2006
5

Obrigado a todos pela solução. Aqui está um guia mais infalível / combinado (feito no Xubuntu 18.04).

  1. Abra um terminal (como xterm / terminal / terminator), torne-se root ( sudo su -) ou use sudo na frente do comando:

    apt install xbindkeys xautomation
  2. Verifique o mapeamento de botões com xev, para isso, você não precisa de permissão root; portanto, saia da sessão raiz (com exit) ou abra outro terminal como usuário.

    xev | grep button
  3. Uma pequena janela aparecerá. Você precisa mover o mouse para essa janela e pressionar o botão que deseja remapear. Um exemplo de saída no terminal será:

    state 0x0, button 8, same_screen YES

    Este é o segundo botão lateral do mouse que eu quero usar como PAGE_DOWN.

    state 0x0, button 9, same_screen YES

    Este é o primeiro botão lateral (sim, a ordem é revertida) que eu quero usar como PAGE_UP.

  4. Quando você tiver todos os botões que deseja remapear, poderá fechar a pequena janela do xev. Abra seu editor favorito (gedit / vi / nano, por exemplo) e edite o arquivo de configuração.

    vi .xbindkeysrc
  5. Se você já possui algum conteúdo no arquivo, verifique se já existe uma ligação como essa (improvável, não por padrão) e adicione no final.

    #Pagedown press
    "xte 'keydown Next'"
    b:8
    
    #Pagedown release
    "xte 'keyup Next'"
    b:8 + Release
    
    #Pagedup press
    "xte 'keydown Prior'"
    b:9
    
    #Pageup release
    "xte 'keyup Prior'"
    b:9 + Release

    Nota: você precisa de duas entradas, uma para pressionar o botão e outra para a liberação.

  6. Os botões 8 + 9 serão mapeados para as teclas "Next" (que é PAGE_DOWN) e "Prior" (PAGE_UP). Se você deseja mapear chaves diferentes, pode encontrar o símbolo de chave com xev.

    xev | grep keysym
  7. Como antes, inicie-o em um terminal, mova o mouse para a pequena janela e pressione a tecla desejada.

    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
  8. Salve e mate xbindings.

    killall xbindkeys ; xbindkeys

Agora você pode usar os botões laterais adicionais do mouse. A configuração será carregada automaticamente na próxima reinicialização / login. Você só precisa do killall [...]comando acima se alterar as configurações.

malasa
fonte