@Koviko - Eu tenho um mouse semelhante - um Logitech MX1100 - que também possui botões DPI que não são enviados para o USB quando pressionados no modo padrão. Fiz alguns testes por conta própria e, finalmente, consegui descobrir os códigos para enviar o sinal para mudar o mouse para o "Modo Driver", o que me permitiu usar o easygestures / xev para reatribuir os botões.
Se você quiser, posso orientá-lo nas etapas que usei para determinar como desativá-lo (agora tenho um script que simplesmente preciso executar na inicialização, como uma solução alternativa muito hack-y, mas ele está trabalhando em pelo menos), mas envolve a configuração de uma máquina virtual e ter um mouse secundário e farejar o tráfego USB bruto, e infelizmente parece ser muito específico para o mouse.
Meus passos (os melhores quase certamente existem):
1) Ter uma VM Windows (com o software Logitech SetPoint instalado; usei o VirtualBox, porque é isso que eu já tinha configurado com o WinXP para trabalho), o Wireshark e o gcc instalados no seu sistema. 2) Então eu corri os seguintes passos em um terminal:
sudo modprobe usbmon
sudo wireshark &
sudo /usr/lib/virtualbox/VirtualBox &
3) No Wireshark, escolha 'Listar as interfaces de captura disponíveis ...' e anote qual número de barramento USB gera uma tonelada de pacotes quando você move o mouse (o meu usbmon3, mas imagino que seja puramente baseado em qual porta USB seu receptor está conectado).
3) A partir do VirtualBox (precisei rodar como sudo para compartilhar o controlador USB), editei as configurações da VM XP e ativei tanto o controlador USB quanto o controlador USB 2.0 (EHCI). Em seguida, adicionei um novo Filtro USB preenchido a partir de um dispositivo existente e selecionei o receptor do meu mouse da Logitech (ID do fornecedor 046d, Produto c245, para você) e iniciei a VM.
(Nota: Após este ponto, eu precisava de um segundo mouse conectado, porque eu tinha que controlar meu mouse normal para a VM do Windows para que o software SetPoint pudesse ver que ele existia como algo mais do que um mouse genérico. )
4) Na VM, iniciei o software SetPoint e fui para a tela que permite definir ações personalizadas para vários botões. Em seguida, no Wireshark, iniciei uma captura no barramento USB para o mouse e, em seguida, entrei imediatamente no VM / SetPoint e mudei a atribuição de botões de DPI +/- para Atribuição de pressionamento de tecla, depois voltei imediatamente para o Wireshark e parei capturar. (Repeti isso cerca de 10 a 15 vezes, alterando as configurações para modos diferentes, principalmente porque eu não tinha certeza de quantos dados precisaria, mas depois de revisar, eu realmente só precisava das primeiras 1 a 2 capturas.) / p>
Supondo que seu mouse funcione vagamente como o meu, o que eu acho que seria, sua captura provavelmente teria um total de 16 quadros, 4x GET DESCRIPTOR, depois 3x (2xURB_CONTROL out + 2xURB_INTERRUPT in). O que você está procurando são os três quadros de saída URB_CONTROL mais longos. Um exemplo de um dos meus quadros capturados é:
0000 c0 80 64 36 00 88 ff ff 53 02 00 03 03 00 00 00
0010 5e 4b 25 50 00 00 00 00 f4 d9 08 00 8d ff ff ff
0020 07 00 00 00 07 00 00 00 21 09 10 02 01 00 07 00
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040 10 01 80 65 82 85 ff
O que procuramos são os últimos 7 bytes da resposta (acima, o '10 01 80 65 82 85 ff '), de cada um dos quadros' URB_CONTROL out 'mais longos. Finalmente, eu baixei a fonte do "g_hack" de Git , e remendado no meu código de produto mouse no topo, e uma nova opção (eu configurá-lo para 0/1 com uma declaração if dentro deles, uma vez que era apenas uma prova de conceito muito crua), que iria mudar meu mouse em " modo driver "ou" modo DPI ".
Depois disso, tudo o que era necessário era configurar os novos botões do mouse disponíveis em seus programas de remapeamento (eu usei easygestures porque essa foi a primeira coisa que encontrei com uma UI que encontrei - pode ou não ter um substituto superior) ).