jakeday / linux-surface

Linux Kernel for Surface Devices
2.6k stars 243 forks source link

Surface Go - Pen buttons (bluetooth) #612

Open mfauvain opened 4 years ago

mfauvain commented 4 years ago

On SurfaceGo (arch, kernel 5.1.15) pen buttons are recognized when pairing using bluetoothctl : evtest gives : /dev/input/event21: Surface Pen Keyboard /dev/input/event22: Surface Pen and selecting Surface Pen Keyboard gives the following events : Input driver version is 1.0.1 Input device ID: bus 0x5 vendor 0x45e product 0x921 version 0x2e Input device name: "Surface Pen Keyboard" ... Testing ... (interrupt to exit) Event: time 1574641529.711769, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3 Event: time 1574641529.711769, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1 Event: time 1574641529.711769, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006f Event: time 1574641529.711769, type 1 (EV_KEY), code 190 (KEY_F20), value 1 Event: time 1574641529.711769, -------------- SYN_REPORT ------------ Event: time 1574641529.741384, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3 Event: time 1574641529.741384, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0 Event: time 1574641529.741384, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006f Event: time 1574641529.741384, type 1 (EV_KEY), code 190 (KEY_F20), value 0 Event: time 1574641529.741384, -------------- SYN_REPORT ------------ Event: time 1574641533.223069, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3 Event: time 1574641533.223069, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1 Event: time 1574641533.223069, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006e Event: time 1574641533.223069, type 1 (EV_KEY), code 189 (KEY_F19), value 1 Event: time 1574641533.223069, -------------- SYN_REPORT ------------ Event: time 1574641533.223416, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3 Event: time 1574641533.223416, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0 Event: time 1574641533.223416, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006e Event: time 1574641533.223416, type 1 (EV_KEY), code 189 (KEY_F19), value 0 Event: time 1574641533.223416, -------------- SYN_REPORT ------------ Event: time 1574641537.634682, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3 Event: time 1574641537.634682, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1 Event: time 1574641537.634682, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006d Event: time 1574641537.634682, type 1 (EV_KEY), code 188 (KEY_F18), value 1 Event: time 1574641537.634682, -------------- SYN_REPORT ------------ Event: time 1574641537.634883, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3 Event: time 1574641537.634883, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0 Event: time 1574641537.634883, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006d Event: time 1574641537.634883, type 1 (EV_KEY), code 188 (KEY_F18), value 0

which are respectively eraser button simple click, double click and long click. Which is good news. However, bluetooth turns off after a minute or so, and when it automatically reconnects, buttons are not recognized anymore. Disconnecting, unpairing the pen completely and using bluetoothctl again restablish the buttons. This doesn't happen with a Surface Pro 6.

Any clue?

mfauvain commented 4 years ago

for completeness here is xinput list : ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Microsoft Surface Type Cover Consumer Control id=9 [slave pointer (2)] ⎜ ↳ Microsoft Surface Type Cover Mouse id=10 [slave pointer (2)] ⎜ ↳ Microsoft Surface Type Cover Touchpad id=11 [slave pointer (2)] ⎜ ↳ ELAN9038:00 04F3:261A Touchscreen touch id=12 [slave pointer (2)] ⎜ ↳ ELAN9038:00 04F3:261A stylus id=13 [slave pointer (2)] ⎜ ↳ ELAN9038:00 04F3:261A eraser id=18 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Video Bus id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Microsoft Surface Type Cover id=8 [slave keyboard (3)] ↳ Intel HID events id=14 [slave keyboard (3)] ↳ Intel HID 5 button array id=15 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=16 [slave keyboard (3)] ↳ Microsoft Surface Type Cover Consumer Control id=17 [slave keyboard (3)] ↳ Surface Pen Keyboard id=19 [slave keyboard (3)]