Hi,
On 9/12/20 7:08 AM, Dmitry Tunin wrote:
пт, 11 сент. 2020 г. в 23:58, Hans de Goede <hdegoede@xxxxxxxxxx>:
Hi,
On 9/11/20 10:40 PM, Dmitry Tunin wrote:
Hi Hans,
Thanks for the reply.
Hi Dmitry,
So I found some pictures and when you say "press a button on the touchpad"
you mean touch the icon in the top right corner of the touchpad I assume?
Exactly.
So not really a physical button, right ? Given that there is a keyboard
HID interface on the touchpad, I guess that that corner-button is handled
in software by the Windows driver and the Windows driver then sends a command
to the touchpad to switch to numpad mode and then the rest is handled by
firmware in the touchpad.
Which leaves the challenge of switching the touchpad to numpad mode
(and back again).
BTW what is the top left corner icon on the touchpad supposed to do ?
I don't have anything at the top left corner
Ah I see, I went by this picture:
https://tweakers.net/i/NE-bFDSJ5PKJU3d1u4r5DSzfWs0=/x800/filters:strip_icc():strip_exif()/i/2003833862.jpeg?f=imagegallery
Which also has a top left icon.
What might help is as root, with secure-boot off, do:
cat /sys/kernel/debug/hid/0018:04F3:30F2.0001/rdesc > rdesc
This will give us the HID descriptors of the touchpad,
which will help interpret the i2c traffic.
05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75
01 95 02 81 02 95 06 81 03 05 01 09 30 09 31 09 38 15 81 25 7f 75 08
95 03 81 06 05 0c 0a 38 02 95 01 81 06 75 08 95 03 81 03 c0 c0 05 0d
09 05 a1 01 85 04 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81
02 75 01 95 02 81 03 95 01 75 04 25 0f 09 51 81 02 05 01 15 00 26 78
0c 75 10 55 0e 65 13 09 30 35 00 46 90 01 95 01 81 02 46 d3 00 26 93
06 26 93 06 09 31 81 02 05 0d 15 00 25 64 95 03 c0 55 0c 66 01 10 47
ff ff 00 00 27 ff ff 00 00 75 10 95 01 09 56 81 02 09 54 25 7f 95 01
75 08 81 02 05 09 09 01 25 01 75 01 95 01 81 02 95 07 81 03 09 c5 75
08 95 04 81 03 05 0d 85 02 09 55 09 59 75 04 95 02 25 0f b1 02 85 07
09 60 75 01 95 01 15 00 25 01 b1 02 95 0f b1 03 06 00 ff 06 00 ff 85
06 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 85 0d 09 c4 15 00 26 ff
00 75 08 95 04 b1 02 85 0c 09 c6 96 8a 02 75 08 b1 02 85 0b 09 c7 95
80 75 08 b1 02 c0 05 0d 09 0e a1 01 85 03 09 22 a1 00 09 52 15 00 25
0a 75 10 95 01 b1 02 c0 09 22 a1 00 85 05 09 57 09 58 15 00 75 01 95
02 25 03 b1 02 95 0e b1 03 c0 c0 05 01 09 06 a1 01 85 0e 05 07 19 e0
29 e7 15 00 25 01 75 01 95 08 81 02 81 03 95 05 05 08 19 01 29 05 91
02 95 01 75 03 91 01 95 06 75 08 15 00 26 a4 00 05 07 19 00 2a a4 00
81 00 c0
<snip>
Thanks, one question, does the touchpad already work as
a multi-touch touchpad, or is it in mouse emulation mode ?
The touchpad is detected as 3 input devices:
ELAN1401:00 04F3:30F2 Touchpad
ELAN1401:00 04F3:30F2 Mouse
ELAN1401:00 04F3:30F2 Keyboard
The first one works as a full feature touchpad with abs coordinates
and multitouch, the other two are disabled and don't work.
You can check this by running evemu-record and then
selecting the touchpad interface and see if you get abs_x/abs_y
coordinates.
If not then it *might* help to add the ACPI id for the i2c-client
for the touchpad to: include/linux/input/elan-i2c-ids.h so that the
drivers/input/mouse/elan_i2c_*.c code will be used for it
instead of the generic HID code
Surprisingly it works without adding the code to elan_i2c.
That means that it is support the standard HID multi-touch /
Windows precision touchpad spec. That is not really surprising
for newer laptops, but sometimes we still encounter a touchpad
which needs the non standard drivers/input/mouse/elan_i2c* code.
>> Let's add Elan folks in case they can share the command to switch
>> touchpad mode with us.
>>
>
> It looks like really it is the trickiest part to get the command. If
> we can enable the keyboard, everything else is clear enough. Maybe
> not quite simple, but doable.
> Setting the numpad button area and catching events from it can be done
> even in user space.
Notice that as mentioned in a previous mail, with a Windows DSDT
override you can sniff the i2c bus. This is not bery easy, but it
also is not very hard. Various users have successfully used this
method before to help us debug i2c-hid issues.
Regards,
Hans