tablet: eraser button reported as normal pen tip event
I am using a Wacom Bamboo CTH-661-SE graphics tablet via the xf86-input-libinput-0.28.2 driver. Graphics applications like mypaint or Xournal handle the eraser button of the pen the same way as the pen's tip button.
While libinput itself differentiates between the different button events (see libinput-log), xinput --test
reports both button presses as the same.
I hope this is the correct component to report the bug, otherwise feel free to point me to the responsible project.
libinput log
$ libinput list-devices
Device: Wacom Bamboo 2FG 6x8 SE Pen
Kernel: /dev/input/event23
Group: 7
Seat: seat0, default
Size: 216x137mm
Capabilities: tablet
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: disabled
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Accel profiles: none
Rotation: n/a
Device: Wacom Bamboo 2FG 6x8 SE Finger
Kernel: /dev/input/event24
Group: 7
Seat: seat0, default
Size: 185x125mm
Capabilities: pointer gesture
Tap-to-click: enabled
Tap-and-drag: enabled
Tap drag lock: disabled
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: n/a
Calibration: n/a
Scroll methods: *two-finger edge
Click methods: none
Disable-w-typing: n/a
Accel profiles: none
Rotation: n/a
The two button press events are separated by newlines for better clarity.
Notice the EV_KEY / BTN_TOOL_PEN
in the first group and the EV_KEY / BTN_TOOL_RUBBER
in the second group being different events.
$ libinput record
Select the device event number: 23
Recording to 'stdout'.
version: 1
ndevices: 1
libinput:
version: "1.15.0"
git: "unknown"
system:
kernel: "5.4.68"
dmi: "dmi:bvnLENOVO:bvrGJET91WW(2.41):bd09/21/2016:svnLENOVO:pn20ARS0BH00:pvrThinkPadT440s:rvnLENOVO:rn20ARS0BH00:rvrNotDefined:cvnLENOVO:ct10:cvrNotAvailable:"
devices:
- node: /dev/input/event23
evdev:
# Name: Wacom Bamboo 2FG 6x8 SE Pen
# ID: bus 0x3 vendor 0x56a product 0xdb version 0x100
# Size in mm: 216x137
# Supported Events:
# Event type 0 (EV_SYN)
# Event type 1 (EV_KEY)
# Event code 320 (BTN_TOOL_PEN)
# Event code 321 (BTN_TOOL_RUBBER)
# Event code 330 (BTN_TOUCH)
# Event code 331 (BTN_STYLUS)
# Event code 332 (BTN_STYLUS2)
# Event type 3 (EV_ABS)
# Event code 0 (ABS_X)
# Value 0
# Min 0
# Max 21648
# Fuzz 4
# Flat 0
# Resolution 100
# Event code 1 (ABS_Y)
# Value 0
# Min 0
# Max 13700
# Fuzz 4
# Flat 0
# Resolution 100
# Event code 24 (ABS_PRESSURE)
# Value 0
# Min 0
# Max 1023
# Fuzz 0
# Flat 0
# Resolution 0
# Event code 25 (ABS_DISTANCE)
# Value 0
# Min 0
# Max 31
# Fuzz 1
# Flat 0
# Resolution 0
# Properties:
# Property 0 (INPUT_PROP_POINTER)
name: "Wacom Bamboo 2FG 6x8 SE Pen"
id: [3, 1386, 219, 256]
codes:
0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] # EV_SYN
1: [320, 321, 330, 331, 332] # EV_KEY
3: [0, 1, 24, 25] # EV_ABS
absinfo:
0: [0, 21648, 4, 0, 100]
1: [0, 13700, 4, 0, 100]
24: [0, 1023, 0, 0, 0]
25: [0, 31, 1, 0, 0]
properties: [0]
hid: [5, 1, 9, 2, 161, 1, 133, 1, 9, 1, 161, 0, 5, 9, 25, 1, 41, 5, 21, 0, 37, 1, 149, 5, 117, 1, 129, 2, 149, 1, 117, 3, 129, 1, 5, 1, 9, 48, 9, 49, 21, 129, 37, 127, 117, 8, 149, 2, 129, 6, 192, 192, 5, 13, 9, 1, 161, 1, 133, 2, 161, 0, 6, 0, 255, 9, 1, 21, 0, 38, 255, 0, 117, 8, 149, 8, 129, 2, 192, 9, 1, 133, 2, 149, 1, 177, 2, 9, 1, 133, 3, 149, 1, 177, 2, 9, 1, 133, 4, 149, 1, 177, 2, 9, 1, 133, 5, 149, 1, 177, 2, 9, 1, 133, 16, 149, 2, 177, 2, 9, 1, 133, 17, 149, 16, 177, 2, 9, 1, 133, 19, 149, 1, 177, 2, 9, 1, 133, 32, 149, 1, 177, 2, 9, 1, 133, 33, 149, 1, 177, 2, 9, 1, 133, 6, 149, 1, 177, 2, 9, 1, 133, 7, 149, 1, 177, 2, 9, 1, 133, 20, 149, 1, 177, 2, 192 ]
udev:
properties:
- ID_INPUT=1
- ID_INPUT_HEIGHT_MM=137
- ID_INPUT_TABLET=1
- ID_INPUT_WIDTH_MM=216
- LIBINPUT_DEVICE_GROUP=3/56a/db:usb-0000:00:14.0-3
quirks:
events:
- evdev:
- [18446743591332, 910384, 1, 330, 1] # EV_KEY / BTN_TOUCH 1
- [18446743591332, 910384, 3, 0, 5977] # EV_ABS / ABS_X 5977
- [18446743591332, 910384, 3, 1, 4327] # EV_ABS / ABS_Y 4327
- [18446743591332, 910384, 3, 24, 1023] # EV_ABS / ABS_PRESSURE 1023
- [18446743591332, 910384, 3, 25, 14] # EV_ABS / ABS_DISTANCE 14
- [18446743591332, 910384, 1, 320, 1] # EV_KEY / BTN_TOOL_PEN 1
- [18446743591332, 910384, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +788933678ms
- [18446743591332, 918319, 3, 25, 13] # EV_ABS / ABS_DISTANCE 13
- [18446743591332, 918319, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 926303, 3, 1, 4326] # EV_ABS / ABS_Y 4326
- [18446743591332, 926303, 3, 25, 12] # EV_ABS / ABS_DISTANCE 12
- [18446743591332, 926303, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 934312, 3, 25, 11] # EV_ABS / ABS_DISTANCE 11
- [18446743591332, 934312, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 942312, 3, 1, 4328] # EV_ABS / ABS_Y 4328
- [18446743591332, 942312, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 950309, 3, 1, 4327] # EV_ABS / ABS_Y 4327
- [18446743591332, 950309, 3, 25, 10] # EV_ABS / ABS_DISTANCE 10
- [18446743591332, 950309, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 958319, 3, 1, 4326] # EV_ABS / ABS_Y 4326
- [18446743591332, 958319, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 962315, 3, 0, 5979] # EV_ABS / ABS_X 5979
- [18446743591332, 962315, 3, 1, 4325] # EV_ABS / ABS_Y 4325
- [18446743591332, 962315, 3, 24, 1012] # EV_ABS / ABS_PRESSURE 1012
- [18446743591332, 962315, 3, 25, 9] # EV_ABS / ABS_DISTANCE 9
- [18446743591332, 962315, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +4ms
- [18446743591332, 970344, 3, 24, 955] # EV_ABS / ABS_PRESSURE 955
- [18446743591332, 970344, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 978310, 3, 0, 5988] # EV_ABS / ABS_X 5988
- [18446743591332, 978310, 3, 1, 4324] # EV_ABS / ABS_Y 4324
- [18446743591332, 978310, 3, 24, 831] # EV_ABS / ABS_PRESSURE 831
- [18446743591332, 978310, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 986338, 3, 0, 6008] # EV_ABS / ABS_X 6008
- [18446743591332, 986338, 3, 1, 4292] # EV_ABS / ABS_Y 4292
- [18446743591332, 986338, 3, 24, 649] # EV_ABS / ABS_PRESSURE 649
- [18446743591332, 986338, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591332, 994347, 3, 0, 6065] # EV_ABS / ABS_X 6065
- [18446743591332, 994347, 3, 1, 4215] # EV_ABS / ABS_Y 4215
- [18446743591332, 994347, 3, 24, 131] # EV_ABS / ABS_PRESSURE 131
- [18446743591332, 994347, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591333, 2336, 1, 330, 0] # EV_KEY / BTN_TOUCH 0
- [18446743591333, 2336, 3, 0, 6091] # EV_ABS / ABS_X 6091
- [18446743591333, 2336, 3, 1, 4137] # EV_ABS / ABS_Y 4137
- [18446743591333, 2336, 3, 24, 0] # EV_ABS / ABS_PRESSURE 0
- [18446743591333, 2336, 3, 25, 11] # EV_ABS / ABS_DISTANCE 11
- [18446743591333, 2336, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591333, 10316, 3, 0, 6069] # EV_ABS / ABS_X 6069
- [18446743591333, 10316, 3, 1, 4102] # EV_ABS / ABS_Y 4102
- [18446743591333, 10316, 3, 25, 16] # EV_ABS / ABS_DISTANCE 16
- [18446743591333, 10316, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591333, 18340, 3, 0, 5983] # EV_ABS / ABS_X 5983
- [18446743591333, 18340, 3, 1, 4079] # EV_ABS / ABS_Y 4079
- [18446743591333, 18340, 3, 25, 23] # EV_ABS / ABS_DISTANCE 23
- [18446743591333, 18340, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591333, 22336, 3, 25, 31] # EV_ABS / ABS_DISTANCE 31
- [18446743591333, 22336, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +4ms
- [18446743591333, 50343, 3, 0, 0] # EV_ABS / ABS_X 0
- [18446743591333, 50343, 3, 1, 0] # EV_ABS / ABS_Y 0
- [18446743591333, 50343, 3, 25, 0] # EV_ABS / ABS_DISTANCE 0
- [18446743591333, 50343, 1, 320, 0] # EV_KEY / BTN_TOOL_PEN 0
- [18446743591333, 50343, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +28ms
# triggering an eraser press
- [18446743591343, 770693, 1, 330, 1] # EV_KEY / BTN_TOUCH 1
- [18446743591343, 770693, 3, 0, 9617] # EV_ABS / ABS_X 9617
- [18446743591343, 770693, 3, 1, 6900] # EV_ABS / ABS_Y 6900
- [18446743591343, 770693, 3, 24, 1023] # EV_ABS / ABS_PRESSURE 1023
- [18446743591343, 770693, 3, 25, 16] # EV_ABS / ABS_DISTANCE 16
- [18446743591343, 770693, 1, 321, 1] # EV_KEY / BTN_TOOL_RUBBER 1
- [18446743591343, 770693, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +10720ms
- [18446743591343, 774665, 3, 0, 9615] # EV_ABS / ABS_X 9615
- [18446743591343, 774665, 3, 25, 15] # EV_ABS / ABS_DISTANCE 15
- [18446743591343, 774665, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +4ms
- [18446743591343, 790695, 3, 0, 9614] # EV_ABS / ABS_X 9614
- [18446743591343, 790695, 3, 1, 6899] # EV_ABS / ABS_Y 6899
- [18446743591343, 790695, 3, 25, 14] # EV_ABS / ABS_DISTANCE 14
- [18446743591343, 790695, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +16ms
- [18446743591343, 798688, 3, 0, 9612] # EV_ABS / ABS_X 9612
- [18446743591343, 798688, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 806723, 3, 0, 9609] # EV_ABS / ABS_X 9609
- [18446743591343, 806723, 3, 1, 6898] # EV_ABS / ABS_Y 6898
- [18446743591343, 806723, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 814684, 3, 1, 6895] # EV_ABS / ABS_Y 6895
- [18446743591343, 814684, 3, 25, 13] # EV_ABS / ABS_DISTANCE 13
- [18446743591343, 814684, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 822733, 3, 0, 9608] # EV_ABS / ABS_X 9608
- [18446743591343, 822733, 3, 1, 6893] # EV_ABS / ABS_Y 6893
- [18446743591343, 822733, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 830687, 3, 0, 9610] # EV_ABS / ABS_X 9610
- [18446743591343, 830687, 3, 1, 6880] # EV_ABS / ABS_Y 6880
- [18446743591343, 830687, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 834684, 3, 0, 9612] # EV_ABS / ABS_X 9612
- [18446743591343, 834684, 3, 1, 6877] # EV_ABS / ABS_Y 6877
- [18446743591343, 834684, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +4ms
- [18446743591343, 842665, 3, 0, 9640] # EV_ABS / ABS_X 9640
- [18446743591343, 842665, 3, 1, 6851] # EV_ABS / ABS_Y 6851
- [18446743591343, 842665, 3, 24, 870] # EV_ABS / ABS_PRESSURE 870
- [18446743591343, 842665, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 850694, 1, 330, 0] # EV_KEY / BTN_TOUCH 0
- [18446743591343, 850694, 3, 0, 9664] # EV_ABS / ABS_X 9664
- [18446743591343, 850694, 3, 1, 6755] # EV_ABS / ABS_Y 6755
- [18446743591343, 850694, 3, 24, 0] # EV_ABS / ABS_PRESSURE 0
- [18446743591343, 850694, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 858699, 3, 0, 9631] # EV_ABS / ABS_X 9631
- [18446743591343, 858699, 3, 1, 6648] # EV_ABS / ABS_Y 6648
- [18446743591343, 858699, 3, 25, 17] # EV_ABS / ABS_DISTANCE 17
- [18446743591343, 858699, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 866735, 3, 0, 9580] # EV_ABS / ABS_X 9580
- [18446743591343, 866735, 3, 1, 6662] # EV_ABS / ABS_Y 6662
- [18446743591343, 866735, 3, 25, 24] # EV_ABS / ABS_DISTANCE 24
- [18446743591343, 866735, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
- [18446743591343, 870692, 3, 25, 31] # EV_ABS / ABS_DISTANCE 31
- [18446743591343, 870692, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +4ms
- [18446743591343, 894726, 3, 0, 0] # EV_ABS / ABS_X 0
- [18446743591343, 894726, 3, 1, 0] # EV_ABS / ABS_Y 0
- [18446743591343, 894726, 3, 25, 0] # EV_ABS / ABS_DISTANCE 0
- [18446743591343, 894726, 1, 321, 0] # EV_KEY / BTN_TOOL_RUBBER 0
- [18446743591343, 894726, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +24ms
xinput log
$ xinput --test 20
# pen tip press
motion a[0]=12855893 a[1]=8102680 a[2]=1817
motion a[0]=12855893 a[1]=8102680 a[2]=1817
button press 1
motion a[0]=12857055 a[1]=8101456 a[2]=1766
motion a[0]=12858605 a[1]=8101456 a[2]=1674
motion a[0]=12860542 a[1]=8100231 a[2]=1499
motion a[0]=12864417 a[1]=8099007 a[2]=1242
motion a[0]=12870617 a[1]=8096558 a[2]=920
motion a[0]=12882629 a[1]=8087986 a[2]=157
motion a[0]=12917115 a[1]=8063496 a[2]=0
button release 1
motion a[0]=12915952 a[1]=8068394 a[2]=0
motion a[0]=12910140 a[1]=8083088 a[2]=0
motion a[0]=12898128 a[1]=8117375 a[2]=0
motion a[0]=12869455 a[1]=8162682 a[2]=0
motion a[0]=12841556 a[1]=8203091 a[2]=0
# eraser press
motion a[0]=12426562 a[1]=9346798 a[2]=1838
motion a[0]=12426562 a[1]=9346798 a[2]=1838
button press 1
motion a[0]=12426562 a[1]=9346798 a[2]=1844
motion a[0]=12427337 a[1]=9346798 a[2]=1855
motion a[0]=12429662 a[1]=9345573 a[2]=1777
motion a[0]=12432762 a[1]=9340675 a[2]=1625
motion a[0]=12435862 a[1]=9337001 a[2]=1448
motion a[0]=12438574 a[1]=9335777 a[2]=1238
motion a[0]=12441674 a[1]=9340675 a[2]=842
motion a[0]=12451748 a[1]=9404350 a[2]=0
button release 1
motion a[0]=12450586 a[1]=9417820 a[2]=0
motion a[0]=12448261 a[1]=9443535 a[2]=0
motion a[0]=12443224 a[1]=9475373 a[2]=0
motion a[0]=12434699 a[1]=9510884 a[2]=0
motion a[0]=12427337 a[1]=9532925 a[2]=0
environment
- distribution: NixOS 20.03
- libinput: v1.15.0
- xf86inputlibinput: v0.28.2
- xorg-server: v1.20.8