Haga que el mouse sea zurdo y el touchpad diestro

10

Veo que puedo configurar el mouse y el panel táctil en un solo panel (Ubuntu 13.10, valores predeterminados, Gnome). Lo cual es hasta cierto punto. Es decir, quiero tener el panel táctil configurado de manera diferente, luego el mouse y ...

Cuando tengo un mouse (USB) conectado, lo uso normalmente para zurdos. Por eso cambio los botones a zurdos. Pero cuando uso el panel táctil me siento un poco perdido con ese tipo de configuración. Por lo tanto, quiero tenerlo con la mano derecha.

¿Hay alguna manera de lograr lo siguiente: cuando conecto un mouse (respectivamente cuando se detecta), automáticamente cambio a zurdo y cuando lo desconecto, cambio automáticamente a diestro?

León
fuente

Respuestas:

10

Entiendo tu frustración, pero este problema se puede resolver de manera muy simple con la ayuda de la xinputherramienta.

Primero conecte su mouse USB, luego ejecute el siguiente comando:

xinput list

para ver el idde tu mouse. La salida del comando anterior puede ser similar a:

xinput | gato
⎡ Id. Del puntero del núcleo virtual = 2 [puntero maestro (3)]
⎜ ↳ ID de puntero XTEST de núcleo virtual = 4 [puntero esclavo (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [puntero esclavo (2)]
⎜ ↳ Identificación del mouse USB = 11 [puntero esclavo (2)]
⎣ Id. De teclado del núcleo virtual = 3 [teclado maestro (2)]
    ...

En el ejemplo anterior, el mouse USB tiene id=11. Usaremos esto iden el siguiente comando que intercambiará los botones para dejarlos a la izquierda solo para el mouse USB (y no para el tauchpad):

xinput set-button-map 11 3 2 1

En general:

xinput set-button-map id 3 2 1

Para revertir el cambio, use:

xinput set-button-map id 1 2 3

Para hacer el cambio de forma permanente, agregue el siguiente comando en aplicaciones de inicio (buscar en la rociada para aplicaciones de inicio ):

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

Actualizar:

Dado que la identificación puede cambiar después del reinicio pero el nombre del mouse USB no, también puede buscar el nombre del mouse y aplicarlo. Para omitir los detalles reg. eligiendo el nombre de la solución final se ve así:

para id en `/ usr / bin / xinput list | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; do xinput set-button-map $ id 3 2 1; hecho;

empaquételo en las aplicaciones de inicio mencionadas anteriormente que finalmente obtendrá:

sh -c "para id en` / usr / bin / xinput list | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; do xinput set-button-map $ id 3 2 1; hecho; "
Radu Rădeanu
fuente
2
No sé si debería editar tu publicación o no. Su enfoque me dio la dirección correcta, pero el problema era / es que un reinicio podría cambiar la identificación del mouse. Por lo tanto, lo cambié 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;"y esto funciona (tal vez uno tiene que preocuparse por los guiones adecuados). Gracias por la pista.
LeO
@LeO En mi caso, un reinicio no cambia la identificación del mouse. No probé con más ratones o para cambiar la posición del puerto USB.
Radu Rădeanu
@LeO De todos modos, tu idea es muy buena, así que adelante, edita la respuesta. Si no, lo haré más tarde.
Radu Rădeanu
8

Hay una forma aún más simple que en la respuesta de Radu Rădeanu . xinputacepta el nombre del dispositivo de entrada como alternativa a su ID numérico. Dado que su mouse USB probablemente sea tratado genéricamente, su nombre es muy probable USB Mouse. Por lo tanto, es probable que ni siquiera necesite correr xinput list.

Por lo tanto xinput set-button-map, su , con este nombre en lugar de la ID numérica, se convierte en:

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

Esto toma el lugar y debería lograr lo mismo, convirtiéndolo en un mouse zurdo, al igual que cuando se usa la forma de identificación numérica . (Y reemplazar con todavía funcionará para cambiarlo a un mouse diestro).xinput set-button-map id 3 2 13 2 13 2 11 2 3

Esto tiene la ventaja de que, siempre que funcione inicialmente, continuará funcionando en todos los reinicios, sin tener que obtener el número de identificación del dispositivo mediante comandos largos y complejos.

Reedstrm
fuente
1
Esta respuesta merece más votos a favor.
Mephisto
En mi caso, tengo un mouse inalámbrico + teclado, por lo que xinput listmuestra 2 entradas con el mismo nombre ("2.4G Wireless Keyboard & Mouse") excepto que uno dice "[puntero esclavo (2)]" y el otro dice "[teclado esclavo (3 )] ". Entonces con su solución tengo este error "Hay varios dispositivos llamados '2.4G Wireless Keyboard & Mouse'". Por el momento, estoy usando la solución de Radu agregando grep 'slave pointer'. Me pregunto si xinput permite especificar de alguna manera que nos estamos refiriendo a un puntero sin hacer todo esto.
matiascelasco
1

Descubrí que el comando de inicio en la otra respuesta solo funciona si la identificación es un número de dos dígitos. Aquí están mis modificaciones que deberían funcionar para números de uno y dos dígitos:

En aplicaciones de inicio

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
fuente
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 

Aquí hay una solución más detallada que resuelve dos problemas:

  • Funciona para identificadores de dispositivo con cualquier número de dígitos (igual que la solución @robbie, pero escrita un poco diferente)
  • Considera que el nombre del dispositivo puede estar duplicado. En mi caso, tengo un mouse inalámbrico + teclado, por lo que xinput listmuestra 2 entradas con el mismo nombre ("2.4G Wireless Keyboard & Mouse") excepto que uno dice "[puntero esclavo (2)]" y el otro dice "[teclado esclavo (3 )] ". Entonces, con la solución @reedstrm, tuve este error "Hay varios dispositivos llamados '2.4G Wireless Keyboard & Mouse'", mientras que con la solución @Radu Rădeanu, iteraba formás de 2 identificadores, uno para el mouse y otro para el teclado, teniendo un mensaje de error "el dispositivo no tiene botones" con el segundo.
matiascelasco
fuente