boppreh / mouse

Hook and simulate global mouse events in pure Python
MIT License
895 stars 134 forks source link

Wacom support #4

Open ababak opened 6 years ago

ababak commented 6 years ago

On Linux, Wacom is sending different button codes than a regular mouse and so all events get the '?' button argument. The events are sent for everything as a button press (just hovering near the surface with pen or finger is also a separate click event). Is there any way to get not the raw codes from Wacom but the higher-level button codes translated by the driver?

boppreh commented 6 years ago

Sorry for not responding to this sooner.

The code responsible for this is here. If the events are reported as button clicks with "?" name, then Wacom must be sending EV_KEY events with a button value that is neither BTN_LEFT (0x110) nor BTN_RIGHT (0x111).

If you could manually modify this file in your installation, and add a simple print(value) to check the event codes, I could add them to the translation table and report their names correctly.

ababak commented 6 years ago

Yes, that's understood. The problem is that these codes coming from Wacom are too low-level and have very little meaning. The real click consists of many small events and the meaning of these series of events is defined in the driver. If there's no way to read the events after they are processed by the driver (the place where some of them should be ignored and some sequences are redefined to left/right/middle-button click) then this library will not help, unfortunately.

boppreh commented 6 years ago

I see. If this driver is implemented in X, it may be possible to access it in the future once Xlib support is added.

Im afraid of broadening the scope of the project beyond mouses (and keyboards on the other library), as it's very easy to get boggled down supporting gamepads, wheels, 3D pointing devices, etc.