Haga que los movimientos del mouse se desplace cuando se mantenga presionado el botón central

29

En Windows, estoy acostumbrado a hacer clic en el botón central y ofrece una opción de "desplazamiento rápido" hacia arriba o hacia abajo. ¿Cómo puedo obtener este comportamiento en Linux? Actualmente parece utilizar el botón de retroceso al hacer clic en el centro en su lugar.

Yo uso Gnome en CentOS.

algunos1
fuente
¿Qué, específicamente, no funciona? Los ratones Unix tenían tres botones desde el primer día, por lo que el botón central del mouse normalmente funciona fuera de la caja.
Gilles 'SO- deja de ser malvado'
Estoy acostumbrado a hacer clic en el botón central y ofrece una opción de "desplazamiento rápido" hacia arriba o hacia abajo. Actualmente parece utilizar el botón de retroceso al hacer clic en el centro en su lugar.
some1
2
Ah, entonces desea el comportamiento de Windows del botón central (o más bien presionar la rueda), en lugar del comportamiento de Unix (donde el botón central normalmente pega el contenido del portapapeles). Realmente necesitas decir esto en tu pregunta, ¡no podemos leer tu mente! Esto requiere soporte de las aplicaciones; que aplicaciones usas ¿Qué entorno de escritorio (por ejemplo, Gnome, KDE, XFCE, ...)?
Gilles 'SO- deja de ser malvado'
Bueno, pensé que habría un panel de configuración en algún lugar donde pudiera configurarlo, pero ni siquiera podría llegar tan lejos. El escritorio es Gnome, supongo, ¿es ese el valor predeterminado? Y el problema está en Firefox.
some1
1
Para Firefox, hay una solución en una pregunta casi duplicada .
Gilles 'SO- deja de ser malvado'

Respuestas:

26

Esta característica de Windows nunca ha llegado realmente al mundo de Unix. En el mundo de Unix, el propósito principal del botón central del mouse es pegar el contenido del portapapeles (o más precisamente, el texto seleccionado con el mouse, que se copia automáticamente). Un par de aplicaciones multiplataforma como Firefox y Chrome que admiten el botón central del mouse del estilo Linux en Windows y viceversa, pero aparte de eso, la mayoría de las aplicaciones no admiten este tipo de desplazamiento fino.

No obstante, puede acercarse bastante a nivel del sistema. Es posible configurar un botón del mouse de modo que cuando se presiona, los movimientos del mouse se transformen en eventos de rueda. Esta es la misma característica a la que está acostumbrado, pero es probable que encuentre el movimiento entrecortado, porque las aplicaciones reciben eventos de rueda, que generalmente se interpretan como desplazamiento por una línea o columna completa.

Para jugar con esta configuración, use el programa xinput (no sé si hay una interfaz gráfica de usuario para ello). Primero, ejecute el siguiente comando para ver el nombre de su dispositivo señalador:

$ xinput --list       
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Generic USB Mouse                         id=8    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳   USB Keyboard                            id=9    [slave  keyboard (3)]

Por ejemplo, en la salida anterior, el dispositivo puntero es Generic USB mouse. Puede ejecutar el siguiente comando para enumerar las propiedades que se pueden ajustar:

xinput --list-props 'Generic USB Mouse'

El conjunto de propiedades que está buscando son las de "Emulación de rueda Evdev". Con la siguiente configuración, cuando se presiona el botón central del mouse (botón 2), mover el mouse envía eventos de rueda (4 = arriba, 5 = abajo, 6 = izquierda, 7 = derecha).

xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation' 1
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Button' 2
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Axes' 6 7 4 5

Es posible que desee ajustar otros parámetros (inercia, tiempo de espera).

Puede poner estos comandos en un script. Agregue #!/bin/shcomo la primera línea y haga que el archivo de script sea ejecutable (por ejemplo chmod +x ~/bin/activate-wheel-emulation.sh). Luego, agregue ese script a la lista de comandos para ejecutar cuando comience su sesión (le gnome-session-propertiespermite configurar eso).

Si tiene acceso root y desea realizar el cambio para todos los usuarios (aceptable en una máquina doméstica), es más sencillo hacerlo a través del archivo de configuración del servidor X.org . Como root, cree un archivo llamado que /etc/X11/xorg.conf.d/wheel-emulation.confcontenga configuraciones para el controlador del mouse . La configuración es la misma pero está organizada de manera un poco diferente.

Section "InputClass"
    Identifier "Wheel Emulation"
    MatchProduct "Generic USB Mouse"
    Option "EmulateWheel" "on"
    Option "EmulateWheelButton" "2"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection
Gilles 'SO- deja de ser malvado'
fuente
Deberá tener precaución al ajustar los otros parámetros. Si reduce Evdev Wheel Emulation Timeoutdemasiado el parámetro, puede perder por completo la funcionalidad del botón central del mouse (clic). Por ejemplo, si reduce Evdev Wheel Emulation Timeoutpor debajo del valor de Evdev Middle Button Timeout, ya no generará eventos de clic del botón central. Por experiencia personal, lo siguiente parece funcionar razonablemente bien:
agnussmcferguss
xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Emulation' 1. xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Timeout' 50. xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Timeout' 100. Eso proporciona una funcionalidad de desplazamiento y clic razonablemente ágil, aunque si encuentra que se dispara demasiado rápido, intente aumentar Evdev Wheel Emulation Timeout(creo que 200 es el valor predeterminado)
agnussmcferguss
Gilles, creo que hay algo mal en el archivo de configuración xorg.conf.d sugerido. Cuando lo usé, mi X.Org arrancó en una pantalla negra. Derivé una versión que funciona agregando Device "evdev"y colocando comillas dobles alrededor del "EmulateWheelButton"valor de "2". (Disculpas, no tengo tiempo para investigar si uno o ambos cambios solucionan el problema).
Arkanon,
@Arkanon Las comillas dobles que faltan son definitivamente un error de sintaxis. No creo Device "evdev"que tenga sentido, ¿querías decir Driver "evdev"? Creo que esta sería una alternativa a la MatchProductdirectiva que establece las opciones para todos los dispositivos de entrada en lugar de solo ratones USB genéricos.
Gilles 'SO- deja de ser malvado'
1
@Wallacoloo No sé si puede obtener este efecto exacto, pero puede hacer que el teclado numérico mueva el mouse tecleando Pointer_EnableKeys(google o haga una nueva pregunta aquí), y puede configurar un comportamiento más elegante con XKB (teclado de búsqueda) : mousekeys, o haga una nueva pregunta aquí que describa exactamente lo que quiere y con qué se conformará si no puede tenerlo exactamente).
Gilles 'SO- deja de ser malvado'
25

Resulta que esto se puede hacer a través de las preferencias de Firefox.

  1. Desde el menú desplegable: Editar -> Preferencias
  2. Luego seleccione las pestañas: Avanzado -> general
  3. Luego marque "Usar desplazamiento automático"

Captura de pantalla

   ss

algunos1
fuente
0

para chromeque pueda usar esta extensión para el desplazamiento automático

Desplazamiento automático

no olvides reiniciar Chrome después de instalar la extensión

juegos de código
fuente