Как установить абсолютное положение курсора мыши в Wayland без использования мыши?

Вам необходимо отредактировать файл конфигурации для конкретного сайта по этому пути / etc / apache2 / sites-enabled

, файл, который вам, вероятно, потребуется отредактировать, это 000-default.conf

, просто измените DocumentRoot от / var / www / html до / var / www / YOUR_DIRECTORY

1
08.02.2018, 03:49
1 ответ

Si no desea escribir código C para uinput , hay paquetes de python e incluso algunos depuración y utilidades de prueba que funcionan al mismo nivel evdev , a saber evemu-describe, evemu-device, evemu-play, evemu-recordy evemu-eventdel paquete evemu. Necesitas ser root para usarlos. Aquí hay un ejemplo que encuentra el dispositivo del mouse y los eventos que genera, luego genera artificialmente un evento para él.

Primero enumeramos los dispositivos evdev:

$ sudo evemu-describe 
Available devices:
...
/dev/input/event5:     Logitech USB Optical Mouse
...

Este es un comando interactivo, que después de enumerar los dispositivos físicos nos pide que elijamos uno para obtener más detalles al respecto. Elegimos 5, el ratón:

Select the device event number [0-9]: 5
...
# Input device name: "Logitech USB Optical Mouse"
...
# Supported events:
#   Event type 0 (EV_SYN)
#     Event code 0 (SYN_REPORT)
...
#   Event type 1 (EV_KEY)
#     Event code 272 (BTN_LEFT)
#     Event code 273 (BTN_RIGHT)
#     Event code 274 (BTN_MIDDLE)
#   Event type 2 (EV_REL)
#     Event code 0 (REL_X)
#     Event code 1 (REL_Y)
#     Event code 8 (REL_WHEEL)
...

Otro de los comandos de prueba de evemu nos mostrará los eventos que se generan cuando movemos el mouse:

$ sudo evemu-record /dev/input/event5
E: 4.223 0002 0000 0004 # EV_REL / REL_X                4
E: 4.223 0000 0000 0000 # ------------ SYN_REPORT (0) ------ +8ms
E: 4.231 0002 0000 0007 # EV_REL / REL_X                7
E: 4.231 0002 0001 0001 # EV_REL / REL_Y                1
E: 4.231 0000 0000 0000 # ------------ SYN_REPORT (0) ------ +8ms

Por lo general, para un movimiento del mouse existe el tipo de evento EV _REL, el código de evento REL _X o REL _Y para el eje de movimiento relativo, y el valor del evento distancia movida (4, 7, 1 arriba ). Los eventos son seguidos por un evento de sincronización de tipo EV _SYN con el código SYN _REPORT para señalar el final del evento.

Podemos inyectar nuestro propio evento (digamos un movimiento de 20,10 )con otro de los comandos de prueba:

sudo evemu-event /dev/input/event5 --type EV_REL --code REL_X --value 20
sudo evemu-event /dev/input/event5 --type EV_REL --code REL_Y --value 10 --sync

La ​​opción --syncagrega el evento SYN _REPORT al final (el equivalente a--type EV_SYN --code SYN_REPORT).

Finalmente, otro comando de prueba, evemu-devicenos permite crear un nuevo dispositivo de entrada dando una descripción como las que ya hemos visto para el mouse. Utiliza /dev/uinputy crea un nuevo dispositivo /dev/input/event*, que luego podemos usar para enviar eventos.

Entonces, incluso si no tiene un mouse, puede agregar uno dinámicamente y luego controlarlo como desee. No tengo un dispositivo con eventos de posición absoluta para brindarle un ejemplo, pero de manera similar puede agregar un dispositivo similar a una tableta -y enviar eventos de movimientos absolutos a través de él.

2
27.01.2020, 23:14

Теги

Похожие вопросы