Ich habe einen Wacom-Stift mit einem Knopf. Wie kann ich das Scrollen auslösen, wenn ich den Stift mit gedrückter Taste bewege?
Nach xev
unten sind die auslösenden Ereignisse MotionNotify mit staatlicher 0x200 .
Wenn dies nicht trivial gemacht wird, ist eine Idee, die ich habe, einen Service aufzubauen, um diese Ereignisse von irgendwoher zu lesen und sie in andere Ereignisse umzuwandeln. Auf diese Weise kann ich auch Gesten definieren. Mit diesem Ansatz:
- Wo kann ich sie lesen?
- Wie kann ich Ereignisse zurückschreiben?
- Gibt es Bibliotheken, um Gesten zu erkennen?
MotionNotify-Ereignis, Seriennummer 33, synthetisches NO, Fenster 0xc00001, root 0x2ce, subw 0x0, time 695630659, (349,181), root: (1255,185), Zustand 0x0, is_hint 0, same_screen YES ButtonPress-Ereignis, Seriennummer 33, synthetisches NO, Fenster 0xc00001, root 0x2ce, subw 0x0, time 695630659, (349,181), root: (1255,185), Zustand 0x0, Taste 2, same_screen YES MotionNotify-Ereignis, Seriennummer 33, synthetisches NO, Fenster 0xc00001, root 0x2ce, subw 0x0, time 695630667, (348,183), root: (1254,187), Zustand 0x200, is_hint 0, same_screen YES MotionNotify-Ereignis, Seriennummer 33, synthetisches NO, Fenster 0xc00001, root 0x2ce, subw 0x0, Zeit 695630675, (347,184), root: (1253,188), Zustand 0x200, is_hint 0, same_screen YES ... MotionNotify-Ereignis, Seriennummer 33, synthetisches NO, Fenster 0xc00001, root 0x2ce, subw 0x0, Zeit 695632069, (327,486), root: (1233,490), Zustand 0x200, is_hint 0, same_screen YES ButtonRelease-Ereignis, Seriennummer 33, synthetisches NO, Fenster 0xc00001, root 0x2ce, subw 0x0, Zeit 695632069, (327,486), root: (1233,490), Zustand 0x200, Taste 2, same_screen YES
Antworten:
Ich stieß auf eine viel einfachere Variante dieses Problems: Die zusätzlichen Tasten meiner Maus wurden in Tastatur- / Maustastenkombinationen übersetzt, damit sie im Fenstermanager zum Verschieben / Ändern der Fenstergröße gebunden werden können. Vielleicht kann mein Code Ihnen als Ausgangspunkt dienen:
https://gist.github.com/CyberShadow/ae30a8d9f86c170c2451c3dd7edb649c
Der Kern der Idee besteht darin, dass Eingabeereignisse vom
/dev/input/...
Gerät meiner Maus erfasst, optional geändert und wieder ausgegeben werden/dev/uinput
.quelle