Tornar o mouse canhoto e o touchpad destro

10

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 forma diferente do mouse e ...

Quando tenho um mouse (USB) conectado, normalmente o uso é canhoto. Portanto, mudo os botões para canhoto. Mas quando uso o touchpad, me sinto um pouco perdido com esse tipo de configuração. Portanto, eu quero tê-lo com a mão direita.

Existe uma maneira de obter o seguinte: quando conecto um mouse (respectivamente quando detectado), alterno automaticamente para canhoto e, quando o desconecto, alterno automaticamente para destro?

LeO
fonte

Respostas:

10

Entendo sua frustração, mas esse problema pode ser resolvido de maneira muito simples com a ajuda da xinputferramenta.

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

xinput list

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

xinput | gato
Id ID do ponteiro do núcleo virtual = 2 [ponteiro mestre (3)]
Id ↳ ID do ponteiro do núcleo virtual XTEST = 4 [ponteiro escravo (2)]
Id id ID do TouchPad SynPS / 2 Synaptics = 14 [ponteiro escravo (2)]
Id ↳ Identificação do mouse USB = 11 [ponteiro escravo (2)]
Id ID do teclado do núcleo virtual = 3 [teclado principal (2)]
    ...

No exemplo acima, o mouse USB possui id=11. Usaremos isso idno comando a seguir, 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-botão-map id 3 2 1

Para reverter a alteração, use:

xinput set-botão-map id 1 2 3

Para fazer a alteração permanentemente, adicione o seguinte comando em Aplicativos de Inicialização (procure no Dash por Aplicativos de Inicialização ):

sh -c "xinput set-botão-map id 3 2 1"

Atualizar:

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

para identificação em `/ usr / bin / xinput list | / bin / grep ' Mouse USB ' | / bin / grep -o [0-9] [0-9] `; xinput set-button-map $ id 3 2 1; feito;

empacote-o nos aplicativos de inicialização mencionados acima, você obterá finalmente:

sh -c "para identificação em` / usr / bin / lista xinput | / bin / grep ' Mouse USB ' | / bin / grep -o [0-9] [0-9] `; faça xinput definir mapa de botões $ id 3 2 1; pronto; "
Radu Rădeanu
fonte
2
Não sei se devo editar sua postagem ou não. Sua abordagem me deu a direção certa, mas o problema era / é que uma reinicialização pode alterar o ID do mouse. Portanto, eu mudei para sh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"e isso funciona (talvez seja necessário se preocupar com os hífens adequados). Obrigado pela dica.
LeO 15/11/13
@LeO No meu caso, uma reinicialização não altera o ID do mouse. Não testei com mais mouses nem alterei a posição da porta USB.
Radu Rădeanu 15/11
@LeO De qualquer forma, sua ideia é muito boa, então vá em frente, edite a resposta. Caso contrário, farei isso mais tarde.
Radu Rădeanu 15/11
8

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

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

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

Isso substitui e deve obter a mesma coisa, tornando-o um mouse canhoto, exatamente como quando o modo de ID numérico é usado. (E a substituição por ainda funcionará para mudar para um mouse para destros.)xinput set-button-map id 3 2 13 2 13 2 11 2 3

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.

reedstrm
fonte
1
Esta resposta merece mais votos.
Mephisto
No meu caso, eu tenho um mouse sem fio + teclado, então xinput listmostra 2 entradas com o mesmo nome ("Teclado e mouse sem fio 2.4G"), exceto uma que diz "[ponteiro escravo (2)]" e a outra diz "[teclado escravo (3 )] ". Portanto, com a sua solução, tenho este erro "Existem vários dispositivos denominados 'Teclado e mouse sem fio 2.4G'.". No momento, estou usando a adição da solução de Radu grep 'slave pointer'. Gostaria de saber se o xinput permite de alguma forma especificar que estamos nos referindo a um ponteiro sem fazer tudo isso.
Matiascelasco
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;"
Robbie
fonte
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 identificações de dispositivos com qualquer número de dígitos (o mesmo que a solução @robbie, mas escrito um pouco diferente)
  • Considera que o nome do dispositivo pode ser duplicado. No meu caso, eu tenho um mouse sem fio + teclado, então xinput listmostra 2 entradas com o mesmo nome ("Teclado e mouse sem fio 2.4G"), exceto uma que diz "[ponteiro escravo (2)]" e a outra diz "[teclado escravo (3 )] ". Portanto, com a solução @reedstrm, recebi o erro "Existem vários dispositivos denominados 'Teclado e mouse sem fio 2.4G'.", Enquanto na solução @Radu Rădeanu, iterava formais de 2 IDs, um para o mouse e outro para o teclado, tendo um mensagem de erro "o dispositivo não possui botões" com o segundo.
matiascelasco
fonte