Hi All,
Juerd (in the Cc) reported the following problem to me at our local hackerspace.
During a big hacker event in the Netherlands this summer (MCH) the logistics
team used custom barcodes to keep track of inventory. These custom barcodes
contain a # symbol.
They noticed that with the USB-keyboard emulating barcodescanner they were
using the # would sometimes turn into a 3, but only when running under Wayland.
Juerd, we did not discuss how you were running Wayland (which compositor),
I guess you were using GNOME3 when you hit this ?
We reproduced the problem at the local hackerspace (with GNOME3) and the
following
evdev frame:
E: 13.283445 0004 0004 458977 # EV_MSC / MSC_SCAN 458977
E: 13.283445 0001 002a 0001 # EV_KEY / KEY_LEFTSHIFT1
E: 13.283445 0004 0004 458775 # EV_MSC / MSC_SCAN 458775
E: 13.283445 0001 0014 # EV_KEY / KEY_T0
E: 13.283445 0004 0004 458784 # EV_MSC / MSC_SCAN 458784
E: 13.283445 0001 0004 0001 # EV_KEY / KEY_31
E: 13.283445 # SYN_REPORT (0) -- +2ms
Triggers the problem. Note that the T key release from the previous
char in the barcode has been added to the same evdev frame as the shift + 3
for reporting the # (the next char in the barcode). This seems to be what
triggers this problem. I have attached a full evemu-record-ing of a couple
of scans of the troublesome barcode. Replaying this with a terminal in GNOME3
wayland open should reproduce (I have not tried this).
Note that not all barcodes in the recording trigger the bug.
I'm not sure if this is a libinput or GNOME3 issue, so I've send this
email to a bunch of different people + wayland-devel.
Regards,
Hans
# EVEMU 1.3
# Kernel: 5.19.0+
# DMI:
dmi:bvnLENOVO:bvrN2WET30W(1.20):bd08/26/2021:br1.20:efr1.13:svnLENOVO:pn20U90SIT19:pvrThinkPadX1CarbonGen8:rvnLENOVO:rn20U90SIT19:rvrNotDefined:cvnLENOVO:ct10:cvrNone:skuLENOVO_MT_20U9_BU_Think_FM_ThinkPadX1CarbonGen8:
# Input device name: "Symbol Technologies, Inc, 2008 Symbol Bar Code Scanner"
# Input device ID: bus 0x03 vendor 0x5e0 product 0x1200 version 0x110
# Supported events:
# Event type 0 (EV_SYN)
# Event code 0 (SYN_REPORT)
# Event code 1 (SYN_CONFIG)
# Event code 2 (SYN_MT_REPORT)
# Event code 3 (SYN_DROPPED)
# Event code 4 ((null))
# Event code 5 ((null))
# Event code 6 ((null))
# Event code 7 ((null))
# Event code 8 ((null))
# Event code 9 ((null))
# Event code 10 ((null))
# Event code 11 ((null))
# Event code 12 ((null))
# Event code 13 ((null))
# Event code 14 ((null))
# Event code 15 (SYN_MAX)
# Event type 1 (EV_KEY)
# Event code 1 (KEY_ESC)
# Event code 2 (KEY_1)
# Event code 3 (KEY_2)
# Event code 4 (KEY_3)
# Event code 5 (KEY_4)
# Event code 6 (KEY_5)
# Event code 7 (KEY_6)
# Event code 8 (KEY_7)
# Event code 9 (KEY_8)
# Event code 10 (KEY_9)
# Event code 11 (KEY_0)
# Event code 12 (KEY_MINUS)
# Event code 13 (KEY_EQUAL)
# Event code 14 (KEY_BACKSPACE)
# Event code 15 (KEY_TAB)
# Event code 16 (KEY_Q)
# Event code 17 (KEY_W)
# Event code 18 (KEY_E)
# Event code 19 (KEY_R)
# Event code 20 (KEY_T)
# Event code 21 (KEY_Y)
# Event code 22 (KEY_U)
# Event code 23 (KEY_I)
# Event code 24 (KEY_O)
# Event code 25 (KEY_P)
# Event code 26 (KEY_LEFTBRACE)
# Event code 27 (KEY_RIGHTBRACE)
# Event code 28 (KEY_ENTER)
# Event code 29 (KEY_LEFTCTRL)
# Event code 30 (KEY_A)
# Event code 31 (KEY_S)
# Event code 32 (KEY_D)
# Event code 33 (KEY_F)
# Event code 34 (KEY_G)
# Event code 35 (KEY_H)
# Event code 36 (KEY_J)
# Event code 37 (KEY_K)
# Event code 38 (KEY_L)
# Event code 39 (KEY_SEMICOLON)
# Event code 40 (KEY_APOSTROPHE)
# Event code 41 (KEY_GRAVE)
# Event code 42 (KEY_LEFTSHIFT)
# Event code 43 (KEY_BACKSLASH)
# Event code 44 (KEY_Z)
# Event code 45 (KEY_X)
# Event code 46 (KEY_C)
# Event code 47 (KEY_V)
# Event code 48 (KEY_B)
# Event code 49 (KEY_N)
# Event code 50 (KEY_M)
# Event code 51 (KEY_COMMA)
# Event code 52 (KEY_DOT)
# Event code 53 (KEY_SLASH)
# Event code 54 (KEY_RIGHTSHIFT)
# Event code 55 (KEY_KPASTERISK)
# Event code 56 (KEY_LEFTALT)
# Event code 57 (KEY_SPACE)
# Event code 58 (KEY_CAPSLOCK)
# Event code 59 (KEY_F1)
# Event code 60 (KEY_F2)
# Event code 61 (KEY_F3)
# Event code 62 (KEY_F4)
# Event code 63 (KEY_F5)
# Event code 64 (KEY_F6)
# Event code 65 (KEY_F7)
# Event code 66 (KEY_F8)
# Event code 67 (KEY_F9)
# Event code 68 (KEY_F10)
# Event code 69 (KEY_NUMLOCK)
# Event code 70 (KEY_SCROLLLOCK)
# Event code 71 (KEY_KP7)
# Event code 72 (KEY_KP8)
# Event code 73 (KEY_KP9)
# Event code 74 (KEY_KPMINUS)
# Event code 75 (KEY_KP4)
# Event code 76