Desativando o botão do meio do mouse

17

Então, tentei examinar as várias outras perguntas, mas elas se concentram principalmente em desativar a pasta do meio do mouse.

Basicamente, o botão do meio do mouse no meu Logitech G500s está quebrado e continua "clicando" aleatoriamente, aumentando a chance de fazer o trabalho.

Existe alguma maneira de desativá-lo? Ou mapeá-lo para nada?

Obrigado e desculpe se esta é uma duplicata.

xinput list resultado:

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜   ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜   ↳ Turtle Beach Turtle Beach PX3 (XBOX) id=8 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=9 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=10 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=12 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
    ↳ Power Button id=6 [slave keyboard (3)]
    ↳ Power Button id=7 [slave keyboard (3)]
    ↳ Razer Razer DeathStalker id=11 [slave keyboard (3)]
Tom Hamilton Stubber
fonte
Execute este comando xinput list | grep 'id='e publique a saída.
Helio
Para este mouse, existem dois IDs de dispositivo para esse mouse. Depois de executar o teste 9 do xinput, o ID do botão do meio do mouse é 2 #
Tom Hamilton Stubber 15/03

Respostas:

24

Execute esses comandos:

xinput set-button-map 9 1 0 3
xinput set-button-map 10 1 0 3

Explicação (gentilmente doada por @Yehosef ):

O primeiro número é o ID do ponteiro (geralmente você só terá um, nesse caso, havia dois, 9 e 10).

Os próximos números são o que você faz com o primeiro, o segundo e o terceiro (ou seja, esquerdo, médio, direito) botões do mouse. O "1 0 3" indica que o botão esquerdo deve fazer um clique esquerdo (ação 1), o botão do meio não deve fazer nada e o botão direito deve fazer um clique com o botão direito (ação 3). Se você quiser fazer o botão do meio também clicar duas vezes, você pode usar "1 1 3". Se você deseja alternar as ações direita e esquerda, pode usar "3 0 1". Veja https://wiki.ubuntu.com/X/Config/Input para mais informações.

Helio
fonte
Muito obrigado, tentar procurar isso estava ficando muito frustrante.
Tom Hamilton Stubber
11
Obrigado! Para aqueles que se perguntam - os 9/10 são o ID de entrada do mouse e os 1 0 3 são os mapeamentos para os primeiro, segundo e terceiro botões do mouse. Se você queria que todos os botões para fazer a mesma coisa que você poderia usar 1 1 1 ou se você quiser mudar os botões direito e esquerdo você poderia usar 3 0 1
Yehosef
@Yehosef: Obrigado! Não expliquei o que está acontecendo quando o OP executou os comandos. Por favor, crie uma nova resposta detalhada, faça ping e eu votarei. Esta é uma explicação interessante.
Helio
@ Helio Não tenho uma resposta diferente - apenas mais explicações para os interessados. Talvez você queira editar sua resposta para incluir essas informações. Eu estava pensando sobre como editar a sua resposta - mas eu geralmente não gosto quando as pessoas adicionar detalhes extras para as minhas respostas - então eu absteve-se :)
Yehosef
2
Então, como eu determino o primeiro número. Corro xinput list | grep 'id='e procuro as coisas que mais se parecem com o mouse / touchpad? Alguma maneira definitiva de dizer se é a correta?
Kvothe
2

As instruções a seguir são baseadas nas informações do Ubuntu Wiki (role para baixo até o título "Exemplo: Desativando colar do botão do meio do mouse em um mouse com roda de rolagem").

Primeiro, determine o ID do ponteiro listando os dispositivos de entrada:

xinput list | grep 'id='

E procure a linha que contém o nome do seu ponteiro, também deve haver a identificação do dispositivo, logo após "id =". Por exemplo, o ID deste dispositivo é 10:

Lenovo ThinkPad Compact USB Keyboard with TrackPoint    id=10   [slave  pointer  (2)]

Em seguida, obtenha o mapa de botões atual desse dispositivo (usarei o ID do meu dispositivo, que é 10):

xinput get-button-map 10

Resultado:

1 2 3 4 5 6 7 8 9

É o mapeamento dos botões do ponteiro para as ações, em que número representa o código da ação e o botão de posição.

Estamos interessados ​​no segundo mapa - o número 2 corresponde à ação "Clique no botão do meio" e a posição dele - no botão do meio real.

Para desativar o botão do meio que aciona qualquer ação, eu usaria o comando xinput set-button-mapcom o ID do dispositivo e o mapa atualizado (o novo código de ação é 0 - nenhuma ação). Não é necessário colocar o mapa inteiro - mapear até que o botão interessado seja suficiente (o resto não será atualizado):

 xinput set-button-map 10 1 0

É isso aí.

ego
fonte
Isso funcionou para o meu touchpad em um Lenovo Thinkpad T580 com Ubuntu 18.04
Russell England
0

set-button-mapdesativa a funcionalidade do clique do meio. Para emular o clique do meio usando o botão esquerdo + o botão direito (para que você possa colar e abrir na guia etc usando o mouse), mas desativar os cliques na roda do mouse, você pode corrigir o libinput

--- a/src/evdev.c   2019-09-22 17:15:13.498880044 +0300
+++ a/src/evdev.c   2019-09-22 17:15:18.062860221 +0300
@@ -1861,6 +1861,8 @@
    /* Logitech Marble Mouse claims to have a middle button */
    if (device->model_flags & EVDEV_MODEL_LOGITECH_MARBLE_MOUSE)
        libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
+
+   libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
 }

 static void
  • mkdir deb; cd deb; apt source libinput; sudo apt build-dep libinput
  • salve o patch acima como libinput-1.XX.Y/debian/patches/middle.diff
  • adicionar middle.diffadebian/patches/series
  • dpkg-buildpackage -us -uc -b
  • sudo dpkg -i ../libinput10_*.deb
  • reinicie o Xorg ou reinicie a máquina

E use xinput liste xinput set-prop 11 "libinput Middle Emulation Enabled" 1para ativar a emulação esquerda + direita. 11é o número do dispositivo xinput liste você pode adicionar o comando set-prop a ~/.xstartup.

Ou, para evitar a reconstrução, use um arquivo .quirks da libinput (não testado):

[My Mouse]
MatchUdevType=mouse
AttrEventCodeDisable=BTN_MIDDLE;
patraulea
fonte