Faça o mouse com a mão esquerda e o touchpad com a mão direita

8

Eu vejo que posso configurar o mouse e o touchpad em um único painel (Ubuntu 13.10, padrões, Gnome). O que é até certo ponto. Ou seja, eu quero ter o touchpad configurado de maneira diferente do mouse e ...

Quando eu tenho um mouse (USB) conectado, eu o uso normalmente com a mão esquerda. Por isso, mudo os botões para canhotos. Mas quando eu uso o touchpad me sinto um pouco perdido com esse tipo de configuração. Portanto, eu quero ter destro.

Existe uma maneira de conseguir o seguinte: quando eu faço o plugin de um mouse (respectivamente quando é detectado) automaticamente mudo para a mão esquerda e quando eu o desconecto, mudo automaticamente para destro?

    
por LeO 14.11.2013 / 17:12

4 respostas

9

Eu entendo sua frustração, mas esse problema pode ser resolvido de forma muito simples com a ajuda da ferramenta xinput .

Primeiro, conecte o mouse USB e execute o seguinte comando:

xinput list

para ver o id do seu mouse. A saída do comando acima pode ser semelhante a:

xinput | cat
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [slave  pointer  (2)]
⎜   ↳ USB Mouse                                 id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ...

No exemplo acima, o mouse USB tem id=11 . Usaremos esse id no seguinte comando, que trocará os botões para serem canhotos apenas para o mouse USB (e não para o tauchpad):

xinput set-button-map 11 3 2 1

Em geral:

xinput set-button-map id 3 2 1

Para reverter a alteração, use:

xinput set-button-map id 1 2 3

Para fazer a alteração permanentemente, adicione o seguinte comando em Startup Applications (procure em Dash para Startup Applications ):

sh -c "xinput set-button-map id 3 2 1"

Atualização:

Como o id pode mudar após a reinicialização, mas o nome do USBmouse não, você também pode usar o nome do mouse e aplicá-lo. Para pular os detalhes reg. escolhendo o nome da solução final:

for id in '/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;

empacote nos aplicativos de inicialização acima mencionados que você conseguirá:

sh -c "for id in '/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"
    
por Radu Rădeanu 14.11.2013 / 17:55
8

Existe uma maneira ainda mais simples que a resposta de Radu Rădeanu . xinput aceita o nome do dispositivo de entrada como uma alternativa ao seu ID numérico. Como seu mouse USB provavelmente é tratado genericamente, seu nome provavelmente é USB Mouse . Portanto, você provavelmente nem precisa executar xinput list .

Assim, seu xinput set-button-map , com esse nome no lugar do ID numérico, se torna:

xinput set-button-map "USB Mouse" 3 2 1

Isso toma o lugar de xinput set-button-map id 3 2 1 e deve alcançar a mesma coisa, com 3 2 1 tornando-o um mouse canhoto, assim como quando o modo de ID numérico é usado. (E a substituição de 3 2 1 por 1 2 3 ainda funcionará para transformá-lo em um mouse destro.)

Isso tem a vantagem de que, desde que funcione inicialmente, continuará a funcionar nas reinicializações, sem precisar obter o número de identificação do dispositivo usando comandos longos e complexos.

    
por reedstrm 04.09.2014 / 16:21
1

Descobri que o comando de inicialização na outra resposta só funciona se o id for um número de dois dígitos. Aqui estão minhas modificações que devem funcionar para números de um e dois dígitos:

Em aplicativos de inicialização

bash -c "for id in '/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*'; do xinput set-button-map ${id:3} 3 2 1; done;"
    
por robbie 30.03.2014 / 13:26
0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

Aqui está uma solução mais detalhada que resolve dois problemas:

  • Funciona para IDs de dispositivos com qualquer número de dígitos (o mesmo que @robbie solution, mas escrito um pouco diferente)
  • Considera que o nome do dispositivo pode estar duplicado. No meu caso, eu tenho um mouse sem fio + teclado, então xinput list mostra 2 entradas com o mesmo nome ("2.4G Wireless Keyboard & Mouse") exceto que uma diz "[ponteiro escravo (2)]" e a outra diz " [teclado escravo (3)] ". Então, com a solução @reedstrm, tive este erro "Existem vários dispositivos chamados '2.4G Wireless Keyboard & Mouse'.", Enquanto com a solução @Radu Rădeanu, o for estava iterando mais de 2 ids, um para o mouse e um para o teclado, tendo uma mensagem de erro "o dispositivo não tem botões" com o segundo.
por matiascelasco 25.08.2017 / 18:41