Eu uso o Debian 9 (também conhecido como 'Stretch') x86_64.
$ uname -a:
Linux mypc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
Tentei mapear meu botão extra do meu dispositivo, Logitech MU-007:
$ lsusb | grep Logitech
Bus 001 Device 023: ID 046d:c069 Logitech, Inc. M-U0007 [Corded Mouse M500]
dispositivo de entrada:
$ xinput | grep Logitech
⎜ ↳ Logitech USB Laser Mouse id=10 [slave pointer (2)]
Teste de botões extras com xinput test 10
retorno 8 e 9 para os dois botões do lado esquerdo dos mouses.
$ xinput -version
xinput version 1.6.2
Tentei um simples:
xinput set-button-map 10 8 2 3
ou
$ xmodmap -e "pointer = 9 2 3"
Warning: Only changing the first 3 of 12 buttons.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 116 (X_SetPointerMapping)
Value in failed request: 0x9
Serial number of failed request: 9
Current serial number in output stream:
Os botões esquerdos não funcionam, não pode selecionar com aqueles como clique esquerdo.
Eu gostaria de manter o botão esquerdo E os botões extras como clique esquerdo também.
Alguma idéia de por que o xinput
comando não selecionou nada?
EDITAR
Finalmente:
id=$(xinput list | grep -oP 'Logitech USB Laser Mouse.*id=\K\d+')
xinput set-button-map $id 1 2 3 4 5 6 7 1 1 10 11 12
Você assumiu que este comando mapearia a função do primeiro botão do mouse para o botão físico nº 8:
Essa suposição está incorreta. Na verdade, o comando funciona exatamente da maneira oposta: você realmente define o botão físico nº 1 para enviar eventos como outra instância do "botão 8", o que efetivamente torna a ação "primeiro botão do mouse" indisponível.
Se você quiser fazer com que o botão físico #8 funcione como um "primeiro botão do mouse" extra, você terá que fazer desta forma:
O mapeamento padrão é
1 2 3 4 5 6 7 8 9 10 11 12
, portanto, se você quiser que o botão físico #8 funcione da mesma forma que o primeiro botão do mouse, substitua o número8
no mapeamento por outro1
.Se você deseja desabilitar completamente um botão específico, use
0
no slot correspondente a esse botão físico.Observe que os botões 4 e 5 geralmente correspondem às ações para cima/para baixo da roda do mouse.
Encontrei uma solução melhor. Desta forma, posso manter o teclado numérico que não é possível com outras soluções.
Eu tenho uma tecla do teclado para alternar entre o modo mousekeys , dessa forma, eu uso F1 como botão esquerdo, F2 como clique do meio e F3 como botão direito. Então eu posso voltar ao teclado com a tecla especial.
A tecla especial aciona este script (verifique suas preferências de atalhos de teclado WM).
Quando os gestos do mouse estão ativados, tenho este ícone na bandeja do sistema: