Eu tenho uma caneta wacom com um botão. Como acionar a rolagem ao mover a caneta com o botão pressionado?
De acordo com xev
, abaixo, os eventos de disparo são MotionNotify com o estado 0x200 .
Se isso não for feito trivialmente, uma idéia que tenho é criar um serviço para ler esses eventos de algum lugar e transformá-los em outros eventos. Dessa forma, também posso definir gestos. Com esta abordagem:
- Onde posso lê-los?
- Como posso escrever eventos de volta?
- Existem bibliotecas para detectar gestos?
Evento MotionNotify, serial 33, NO sintético, janela 0xc00001, raiz 0x2ce, subw 0x0, tempo 695630659, (349,181), raiz: (1255,185), estado 0x0, is_hint 0, same_screen SIM Evento ButtonPress, série 33, NO sintético, janela 0xc00001, raiz 0x2ce, subw 0x0, tempo 695630659, (349,181), raiz: (1255,185), estado 0x0, botão 2, same_screen SIM Evento MotionNotify, serial 33, NO sintético, janela 0xc00001, raiz 0x2ce, subw 0x0, tempo 695630667, (348,183), raiz: (1254,187), estado 0x200, is_hint 0, same_screen SIM Evento MotionNotify, serial 33, NO sintético, janela 0xc00001, raiz 0x2ce, subw 0x0, tempo 695630675, (347,184), raiz: (1253,188), estado 0x200, is_hint 0, same_screen SIM ... Evento MotionNotify, serial 33, NO sintético, janela 0xc00001, raiz 0x2ce, subw 0x0, tempo 695632069, (327,486), raiz: (1233,490), estado 0x200, is_hint 0, same_screen SIM Evento ButtonRelease, serial 33, NO sintético, janela 0xc00001, raiz 0x2ce, subw 0x0, tempo 695632069, (327,486), raiz: (1233,490), estado 0x200, botão 2, same_screen SIM
Respostas:
Eu me deparei com uma variante muito mais simples desse problema: converter as teclas extras do mouse em combinações de teclado / botão do mouse, para permitir vinculá-las no gerenciador de janelas para mover / redimensionar janelas. Talvez meu código possa servir como ponto de partida:
https://gist.github.com/CyberShadow/ae30a8d9f86c170c2451c3dd7edb649c
A essência da idéia é que ela captura os eventos de entrada do
/dev/input/...
dispositivo do meu mouse , opcionalmente os modifica e os grava de volta para/dev/uinput
.fonte