Remapear o botão de toque lateral no Microsoft Sculpt Comfort Mouse

12

Recentemente, comprei um mouse Sculpt Comfort da Microsoft. Ele usa Bluetooth para conectar-se ao meu laptop e todos os botões comuns do mouse funcionam perfeitamente no Linux e no Windows 7. Porém, o que é diferente nesse mouse é que ele possui uma tecla Windows/ especial Superao lado que inicia o menu Iniciar / quando pressionada. Ele também possui um sensor de toque que detecta quando o botão lateral é pressionado para cima ou para baixo e vibra o mouse para reconhecer que foi ativado.

Obviamente, no Windows, existe um programa que permite alterar o que os traços fazem e desligar a vibração.

No Linux, o xev detecta apenas um pressionamento de tecla normal quando o botão lateral é pressionado ou pressionado. O Xev não relata pressionar o botão do mouse.

Portanto, minha pergunta é: posso alterar quais teclas pressionadas são enviadas no Linux?

Gostaria muito de alterar a ligação de chave de tabpara down, backspacepara up(o que o xev relata) para ctrl+ alt+ left/ rightpara alternar entre os espaços de trabalho.

Obrigado por qualquer ajuda!

user223544
fonte
Você deu uma olhada no howto para mouses em help.ubuntu.com/community/ManyButtonsMouseHowto ?
ubfan1
1
Obrigado pela dica ubfan1, o xinput get-button-map me dá 13 botões. xev e xinput report report apenas botões 1-7. Tentei remapear os botões 8 a 13 usando o xinput set-button-map e xbindkeys do link, mas nada mudou. Pressionar a tecla lateral reporta a imprensa 133 (super), deslize para cima a tecla relatórios, pressione 22 (backspace), deslize para baixo a tecla relatórios, pressione 23 (guia).
user223544

Respostas:

5

Acabei de comprar um e descobri que o seguinte funciona perfeitamente para mim.

  1. Abra o dconf-editor ( sudo apt-get install dconf-editorse ainda não estiver instalado).
  2. Navegue para org -> gnome -> desktop -> wm -> combinações de teclas.
  3. Altere o valor de alternar para o espaço de trabalho para baixo para

    ['<Control><Alt>Down', '<Primary><Super>Tab', '<Control><Super>Tab']

    eo valor do switch-to-workspace-up para

    ['<Control><Alt>Up', '<Primary><Super>BackSpace', '<Control><Super>Backspace']

Axel David Ingolfsson
fonte
Esta solução funciona de maneira mais confiável do que a solução encontrada com xbindkeys. A única desvantagem comparada às xbindkeys é que a solução xbindkeys parecia capturar apenas os eventos de tecla do mouse, enquanto essa solução também funcionará se as teclas do teclado forem usadas. Independentemente disso, a confiabilidade desta solução a torna a melhor solução.
precisa saber é o seguinte
2

Portanto, como o Microsoft Sculpt Comfort Mouse não está registrando pressionamentos de botão do mouse para os gestos de super e deslizar, mas registrando pressionamentos de tecla do teclado, usei os pacotes 'xautomation' e 'xbindkeys' para ouvir essas teclas pressionadas e enviar Ctrl+ Alt+ Right/ Leftpara alternar entre áreas de trabalho. Não é uma solução ideal, mas funciona 8 em 10 vezes.

#Move to left workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Left' 'keyup Control_L' 'keyup Alt_L' 'keyup Left'"
   m:0x4+mod4+m:0x0+c:23
   #Control_L+Super_L+Tab

#Move to right workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Right' 'keyup Control_L' 'keyup Alt_L' 'keyup Right'"
   m:0x4+mod4+m:0x0+c:22
   #Control_L+Super_L+Backspace

O que esse script xbindkeys faz é escutar as teclas pressionadas pelos mouses e deslizar para baixo os gestos enviados ao computador. Se detectado, o xautomation envia a tecla de movimentação padrão da área de trabalho, control+ alt+ left/ right.

O gesto de deslizar para cima no mouse envia o pressionamento de tecla left control+ left super+ backspace. O gesto de deslizar para baixo no mouse envia a tecla left control+ left super+ tab. m: 0x4 + mod4 + m: 0x0 + c22 é a combinação de código de chave real que é detectada pelas xbindkeys.

Vou mexer um pouco mais para ver se posso melhorar a eficiência, mas por enquanto isso faz o trabalho. Eu só espero que o tabe backspaceque as saídas do mouse não ferrar com qualquer trabalho que eu estou fazendo.

user223544
fonte
1
Você pode explicar como a solução funciona? O mouse está enviando Control_L+Super_L+Tab(de onde vem o Control_L + Super_L)? Ou você combina os botões do mouse com m:0x4+mod4+m:0x0+c:23(você parecia dizer que não há eventos de mouse gerados na pergunta)?
Volker Siegel
Editei minha solução para explicar de onde vêm Control_L + Super_L. Eu também expliquei o objetivo de m: 0x0 + mod4 + m: 0x0 + c: 23.
user223544
0

Eu queria mapear os mesmos botões para navegar pelas guias do Firefox nas duas direções. Estou usando xbindkeys e xmacro. Está funcionando muito bem!

.xbindkeysrc

#Thumb down
"echo 'KeyStrPress Control_L KeyStrPress Tab KeyStrRelease Control_L KeyStrRelease Tab'|xmacroplay :0"
   Control+Mod4+Tab

#Thumb up
"echo 'KeyStrPress Control_L KeyStrPress Shift_L KeyStrPress ISO_Left_Tab KeyStrRelease Control_L KeyStrRelease Shift_L KeyStrRelease ISO_Left_Tab' |xmacroplay :0"
   Control+Mod4+BackSpace
user3229974
fonte