Closed 0xvividmirage closed 4 years ago
Check with libinput record
what key code the button sends but it's most likely that the button is the eraser toggle button. In which case you can't map it, we don't have support for remapping that button yet (it's rather complicated to implement).
My tablet, as I am using it, does not show up in libinput list-devices
... it seems libinput cannot see this tablet. If I use xsetwacom list
, I see my tablet so I know it is recognized by my OS -- the output:
Wacom Digitizer II stylus id: 23 type: STYLUS
Wacom Digitizer II eraser id: 24 type: ERASER
Wacom Digitizer II cursor id: 25 type: CURSOR
libinput record
command doesn't seem to exist.
install libinput-utils
or some similarly named package from your distroy, that should include it.
I just installed libinput*
and still libinput record
does not exist in my distro.
from man libinput
:
libinput(1) libinput Manual libinput(1)
NAME libinput - tool to interface with libinput
SYNOPSIS libinput [--help|--version]
[ ] DESCRIPTION libinput is a library to handle input devices and provides device detection and input device event processing for most Way‐ land compositors and the X.Org xf86-input-libinput driver.
The libinput tools are a set of tools to debug, interface with and analyze data for libinput. These tools create libinput contexts separate from that of the compositor/X server and cannot change settings in a running session. See section COM‐ MANDS for a list of available commands. libinput's API documentation and details on features and various high-level concepts are available online at https://way‐ land.freedesktop.org/libinput/doc/latest/ The man page for the X.Org xf86-input-libinput driver is libinput(4).
OPTIONS --help Print help and exit
--version Print the version and exit
COMMANDS libinput-debug-events(1) Print all events as seen by libinput
libinput-debug-gui(1) Show a GUI to visualize libinput's events libinput-list-devices(1) List all devices recognized by libinput libinput-measure(1) Measure various properties of devices libinput-measure-touch-size(1) Measure touch size and orientation libinput-measure-touchpad-tap(1) Measure tap-to-click time libinput-measure-touchpad-pressure(1) Measure touch pressure libinput-measure-trackpoint-range(1) Measure the delta range of a trackpoint
LIBINPUT Part of the libinput(1) suite
SEE ALSO libinput(4)
libinput's online documentation https://wayland.freedesktop.org/libinput/doc/latest/
libinput 1.10.4 libinput(1)
oh, 1.10.4. yeah, in that case it's not included yet, it was first added in 1.11 or 1.12. evemu-record
should be available on your distro which is close enough for this.
I ran evemu-record
and I do not see any PRESSURE
being registered when I press button 3. When I press the the stylus and when I press button 2 and the eraser, all of them register PRESSURE
. Now what?
I'll need the evemu-record
logs attached here from a button press, anything else will just be guesswork.
The following is an evemu-record
log of myself pressing button 3 on my tablets stylus four times:
E: 1.935906 0001 0141 0001 # EV_KEY / BTN_TOOL_RUBBER 1
That's the key here. It's the usual button that switches the tablet to eraser mode. Since this is the same-ish sequence as if you turn the stylus around to use the eraser end on traditional tablets, we cannot handle this as button without special code - which we don't have yet. See https://github.com/linuxwacom/libwacom/pull/179 for one of the requirements to get there, eventually.
See also this post from 2014.
Meanwhile, I'm closing this bug. This isn't device-specific and it'll work when/if we manage to get this functionality implemented. Until then it cannot work.
@whot for clarity, I am posting a picture of the button I am pressing. the tip of my finger is touch the exact part of the pen I am touching. Are you saying, there is no way to remap this part of the stylus button?
correct, that button is hardwired to change the whole pen into an eraser type instead. To make this appear like a regular button, xf86-input-wacom would have to know this button is an eraser button (see the libwacom MR linked above) and then intercept the tool type switch and map it into a virtual button instead - that button could then be mapped. This is nontrivial and hasn't been done yet.
The ArtZ II serial tablet does not have this switching to eraser mode functionality that I am aware of. The stylus I am using came with this tablet, so its not like a Surface Pro stylus. In Windows, all three buttons are mappable and do not seem to be hard-wired:
ArtZ II User's Manual - Page 14
It seems my stylus is the UP-801E
Just because the buttons are mappable in Windows doesn't mean the stylus isn't setting the eraser flag under the hood. :wink: That said, its entirely possible that this is a bug in the kernel driver. The relevant function uses the same bit to control BTN_TOOL_RUBBER
and BTN_STYLUS2
. Because the MODEL_ARTPAD_II
doesn't have the F_HAS_STYLUS2
flag set, the kernel treats the bit as BTN_TOOL_RUBBER
. Its possible that the "real" eraser (for pens which have one) is actually reported in another bit for this particular model. But then again, I was told "eraser works too" before submitting the patch to add support... Maybe multiple bits get set? We'd need to watch how the bits in the report change when the 2nd button is pressed compared to the eraser...
here is an evemu-record
of pressing the eraser against the tablet 4 times:
@davidpgil - we''ll need the output from hid-recorder
, evemu is too high-level to debug a kernel driver issues. See https://gitlab.freedesktop.org/libevdev/hid-tools/ if it's not packaged in your distro.
Also, please attach recordings or any file longer than 10-15 lines.
I cannot get hid-tools
to to install or function in my distro. I believe it because I use Trisquel which is a free-software only distro and does not allow pip
because pip
has proprietary software in it. Is there some alternative sofware I can use that will do what you need in order for me to help out?
you can run hid-recorder
directly from the git tree. beyond that it's your job to figure out the rest, I don't have the time to work around Trisquel.
I manged to get help with why the hid-recorder
was not working for me on the Trisquel forums. The issue with that is solved.
When I run the hid-recorder
it does not seem to see my serial wacom tablet at all:
/dev/hidraw0: Apple Inc. Apple Watch Magnetic Charging Cable
/dev/hidraw1: SINOWEALTH Game Mouse
/dev/hidraw2: SINOWEALTH Game Mouse
/dev/hidraw3: Ultimate Gadget Laboratories Ultimate Hacking Keyboard
/dev/hidraw4: Ultimate Gadget Laboratories Ultimate Hacking Keyboard
/dev/hidraw5: Ultimate Gadget Laboratories Ultimate Hacking Keyboard
/dev/hidraw6: Ultimate Gadget Laboratories Ultimate Hacking Keyboard
/dev/hidraw7: Ultimate Gadget Laboratories Ultimate Hacking Keyboard
oh, a serial tablet? I missed that (re-reading the first comment, yes, you're using inputattach). In that case it predates hid and has its own serial parser in the kernel. So it's down to debugging the kernel driver wacom_w8000.c
(iirc). Not something I can help with though, we're looking at a device more than a decade old here too and I simply don't have the cycles for that.
Can this issue be re-opened then? I might take a crack at it since it in my best interests. I have some C knowledge but probably not enough... I suspect this may not be rocket science though. Also, someone else with the same issue may want to help.
there are very few users of serial devices left given that most of them are around 15y old now. Leaving the issue open for something that is unlikely going to get fixed unless you submit a patch to the upstream kernel is just a waste of developer attention (because every few months we'll click on this and go "what was this again?").
Once we have upstream support for remapping eraser buttons this will "accidentally" go away anyway in that you can configure the problem away.
@whot is there a ticket someone opened regarding being able to remap eraser buttons then? I'd like to follow/ contribute info to that ticket.
There is now :) See https://github.com/linuxwacom/xf86-input-wacom/issues/134
For some reason,
Button 3
(the top half of the stylus button) does not seem to register at all and cannot be assigned to anything. I've tried the--shell
syntax:xsetwacom set "Wacom Digitizer II stylus" "Button" "3" "button +3 "
and the non-
shell
syntax:xsetwacom set "Wacom Digitizer II stylus" Button 3 3
I am using Trisquel 9 (Ubuntu 18.04 based).
I used
inputattach --wacom_iv
to connect my tablet. I have confirmed that all stylus buttons work in Windows, so this is not an issue where the button is broken.However, I am able to set Button 2 to 3 to create a right-click, so I know I am configuring fine.
Any idea what may be going on?