У меня есть ручка Wacom с кнопкой. Как запустить прокрутку при перемещении ручки при нажатой кнопке?
В соответствии с xev
нижеприведенными событиями запуска являются MotionNotify с состоянием 0x200 .
Если это не делается тривиально, у меня есть идея создать сервис для чтения этих событий откуда-то и преобразования их в другие события. Таким образом, я могу также определять жесты. При таком подходе:
- Где я могу их прочитать?
- Как я могу написать события назад?
- Есть ли библиотеки для обнаружения жестов?
Событие MotionNotify, серийный номер 33, синтетический номер NO, окно 0xc00001, корень 0x2ce, subw 0x0, время 695630659, (349,181), корень: (1255,185), состояние 0x0, is_hint 0, тот же экран YES Событие ButtonPress, серийный номер 33, синтетический номер NO, окно 0xc00001, корень 0x2ce, subw 0x0, время 695630659, (349,181), корень: (1255,185), состояние 0x0, кнопка 2, тот же экран YES Событие MotionNotify, серийный номер 33, синтетический номер NO, окно 0xc00001, корень 0x2ce, subw 0x0, время 695630667, (348,183), корень: (1254,187), состояние 0x200, is_hint 0, тот же экран YES Событие MotionNotify, серийный номер 33, синтетический номер NO, окно 0xc00001, корень 0x2ce, subw 0x0, время 695630675, (347,184), корень: (1253,188), состояние 0x200, is_hint 0, тот же экран YES ... Событие MotionNotify, серийный номер 33, синтетический номер NO, окно 0xc00001, корень 0x2ce, subw 0x0, время 695632069, (327,486), корень: (1233,490), состояние 0x200, is_hint 0, тот же экран YES Событие ButtonRelease, серийный номер 33, синтетический номер NO, окно 0xc00001, корень 0x2ce, subw 0x0, время 695632069, (327,486), корень: (1233,490), состояние 0x200, кнопка 2, тот же экран YES
Ответы:
Я столкнулся с гораздо более простым вариантом этой проблемы: преобразование дополнительных клавиш моей мыши в комбинации клавиатура / мышь-кнопка, чтобы связать их в диспетчере окон для перемещения / изменения размера окон. Возможно, мой код может послужить вам отправной точкой:
https://gist.github.com/CyberShadow/ae30a8d9f86c170c2451c3dd7edb649c
Суть идеи заключается в том, что он захватывает входные события с устройства моей мыши
/dev/input/...
, при необходимости изменяет их и записывает обратно/dev/uinput
.источник