Emule el desplazamiento vertical y horizontal usandolibinput

Emule el desplazamiento vertical y horizontal usandolibinput

He creado un teclado personalizado con una bola de seguimiento debajo del pulgar y quiero asignar un comportamiento de desplazamiento de tal manera que cuando presiono un atajo (como alt izquierdo) y giro la bola, debería comportarse como un desplazamiento. Estoy usando Xorg aquí, pero estaría muy interesado en ver soluciones tanto para X como para Wayland (si la solución involucrara un servidor de visualización).

Respuesta1

Emule el desplazamiento vertical y horizontal usandolibinput

El evdevconductor desucioLa respuesta solo admite la emulación de desplazamiento vertical. Si usted (como yo) también desea desplazarse horizontalmente, libinputpuede utilizar el controlador para hacerlo:

  1. Los detalles están en la página de manual para libinput(4):

    Opción "Botón Desplazamiento" "int"

    Designa un botón como botón de desplazamiento. Si elMétodo de desplazamientoesbotóny el botón se mantiene presionado lógicamente, el movimiento del eje x/y se convierte en eventos de desplazamiento.

    Opción "ScrollMethod" "cadena"

    Habilita un método de desplazamiento. Los valores permitidos sonninguno, dos dedos, borde, botón. No todos los dispositivos admiten todas las opciones; si una opción no es compatible, se utiliza la opción de desplazamiento predeterminada para este dispositivo

  2. Por ejemplo:

    Section "InputClass"
      Identifier "Some Trackball"
      # ... Stuff to match your trackball, see xorg.conf(5)
      Driver "libinput"
      Option "ScrollMethod" "button"
      Option "ScrollButton" "4" # Or whatever button suits your needs
    EndSection
    

Respuesta2

Simular la rueda del mouse con trackball

Puede utilizar las opciones de configuración existentes de los controladores que hacen algo similar a lo que desea o escribir su propio controlador.

ElLogitech M570Es un trackball inalámbrico con receptor USB. Eso significa que aparecerá como un ESCONDIDOLos eventos del dispositivo y del mouse estarán disponibles a través delaportecapa en el kernel y puede leer desde el /dev/eventdispositivo correspondiente.

El controlador X, a su vez, lo utiliza evdevpara leer eventos de esta capa y los convierte en eventos X. No estoy familiarizado con Wayland, pero supongo que funcionará de manera similar allí.

1) El evdevcontrolador ya contiene opciones para emular la rueda del mouse en una trackball, consulte man evdev. Los más importantes son

Opción "EmulateWheel" "booleana"

Activar/desactivar la emulación de "rueda". La emulación de rueda significa emular eventos de presionar/soltar un botón cuando se mueve el mouse mientras se presiona un botón real específico. Los eventos de los botones de rueda (normalmente los botones 4 y 5) se utilizan normalmente para desplazarse. La emulación de ruedas es útil para conseguir un comportamiento similar al de una rueda con trackballs.

Opción "EmulateWheelButton" "entero"

Especifica qué botón se debe mantener presionado para habilitar el modo de emulación de rueda. Mientras este botón está presionado, el movimiento del puntero X y/o Y generará eventos de presionar/soltar el botón según lo especificado para las configuraciones XAxisMapping y YAxisMapping. Si el botón es 0 y EmulateWheel está activado, cualquier movimiento del dispositivo se convierte en eventos de rueda. Predeterminado: 4.

Entonces, esto funciona usando un botón trackball en lugar de un método abreviado de teclado (porque el controlador solo ve eventos desde el mouse, no desde el teclado), y convertirámovimientoen eventos de rueda, y norotación.

2) Escriba su propio controlador modificando varios existentes. Deberá combinar los controladores para el teclado y el mouse, de modo que la emulación de la rueda se pueda activar presionando una tecla.

El código fuente delcapa de entrada del kernelestá drivers/inputen el árbol del núcleo.

El código fuente delevdevEl controlador X está enxorg/driver/xf86-input-evdev/tree/src/evdev.c.

El controlador del teclado depende del tipo de teclado que haya utilizado.

información relacionada