Summary: | Thinkpad 13 trackpoint is very slow | ||
---|---|---|---|
Product: | Wayland | Reporter: | Alex Corcoles <alex> |
Component: | libinput | Assignee: | Wayland bug list <wayland-bugs> |
Status: | RESOLVED WONTFIX | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | eaon, peter.hutterer |
Version: | 1.5.0 | ||
Hardware: | x86-64 (AMD64) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | evemu-record pushing trackpoint to top right |
Description
Alex Corcoles
2016-11-11 21:22:22 UTC
Further info: $ udevadm info /dev/input/event1 P: /devices/platform/i8042/serio1/input/input3/event1 N: input/event1 E: DEVNAME=/dev/input/event1 E: DEVPATH=/devices/platform/i8042/serio1/input/input3/event1 E: ID_BUS=i8042 E: ID_INPUT=1 E: ID_INPUT_MOUSE=1 E: ID_INPUT_POINTINGSTICK=1 E: LIBINPUT_DEVICE_GROUP=11/2/e/0:isa0060/serio1 E: MAJOR=13 E: MINOR=65 E: SUBSYSTEM=input E: USEC_INITIALIZED=6158959 MOUSE_DPI isn't read for trackpoints because they don't have a DPI in the sense mice have. Look at 70-pointingstick.hwdb and the POINTINGSTICK_CONST_ACCEL and POINTINGSTICK_SENSITIVITY properties. If you have an elantech one you may not be able to set the sensitivity, but try settings const accel to something higher. Thank you. However, I must admit I must be an idiot. I am unable to create the selector for the trackpoint as: # cat /etc/udev/hwdb.d/71-pointingstick-local.hwdb evdev:input:* POINTINGSTICK_SENSITIVITY=200 POINTINGSTICK_CONST_ACCEL=100.0 However, if I do: sudo udevadm hwdb --update ; sudo udevadm trigger /dev/input/event1 I get the following in my logs: ==> daemon.log <== Nov 15 22:21:10 armitage systemd-udevd[3597]: Failed to write 'sensitivity' attribute for '(null)': No such device or address Nov 15 22:21:10 armitage systemd-udevd[541]: worker [3597] terminated by signal 11 (Segmentation fault) ==> kern.log <== Nov 15 22:21:10 armitage upowerd[2269]: treating change event as add on /sys/devices/platform/i8042/serio1/input/input3/event1 Nov 15 22:21:10 armitage kernel: [ 1090.142850] traps: systemd-udevd[3597] general protection ip:7f99ff70322b sp:7ffc66389070 error:0 in libc-2.24.so[7f99ff68c000+195000] ==> messages <== Nov 15 22:21:10 armitage upowerd[2269]: treating change event as add on /sys/devices/platform/i8042/serio1/input/input3/event1 Nov 15 22:21:10 armitage kernel: [ 1090.142850] traps: systemd-udevd[3597] general protection ip:7f99ff70322b sp:7ffc66389070 error:0 in libc-2.24.so[7f99ff68c000+195000] ==> syslog <== Nov 15 22:21:10 armitage systemd-udevd[3597]: Failed to write 'sensitivity' attribute for '(null)': No such device or address Nov 15 22:21:10 armitage upowerd[2269]: treating change event as add on /sys/devices/platform/i8042/serio1/input/input3/event1 Nov 15 22:21:10 armitage systemd-udevd[541]: worker [3597] terminated by signal 11 (Segmentation fault) Nov 15 22:21:10 armitage kernel: [ 1090.142850] traps: systemd-udevd[3597] general protection ip:7f99ff70322b sp:7ffc66389070 error:0 in libc-2.24.so[7f99ff68c000+195000] ==> Xorg.0.log <== [ 1090.142] (II) config/udev: removing device Elantech PS/2 TrackPoint [ 1090.180] (II) UnloadModule: "libinput" [ 1090.181] (II) config/udev: Adding input device Elantech PS/2 TrackPoint (/dev/input/event1) [ 1090.181] (**) Elantech PS/2 TrackPoint: Applying InputClass "evdev pointer catchall" [ 1090.181] (**) Elantech PS/2 TrackPoint: Applying InputClass "libinput pointer catchall" [ 1090.181] (II) Using input driver 'libinput' for 'Elantech PS/2 TrackPoint' [ 1090.181] (**) Elantech PS/2 TrackPoint: always reports core events [ 1090.181] (**) Option "Device" "/dev/input/event1" [ 1090.181] (**) Option "_source" "server/udev" [ 1090.182] (II) input device 'Elantech PS/2 TrackPoint', /dev/input/event1 is tagged by udev as: Mouse Pointingstick [ 1090.182] (II) Device 'Elantech PS/2 TrackPoint' set to const accel 100.00 [ 1090.182] (II) input device 'Elantech PS/2 TrackPoint', /dev/input/event1 is a pointer caps [ 1090.204] (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio1/input/input3/event1" [ 1090.204] (II) XINPUT: Adding extended input device "Elantech PS/2 TrackPoint" (type: MOUSE, id 13) [ 1090.207] (**) Option "AccelerationScheme" "none" [ 1090.209] (**) Elantech PS/2 TrackPoint: (accel) selected scheme none/0 [ 1090.209] (**) Elantech PS/2 TrackPoint: (accel) acceleration factor: 2.000 [ 1090.209] (**) Elantech PS/2 TrackPoint: (accel) acceleration threshold: 4 [ 1090.210] (II) input device 'Elantech PS/2 TrackPoint', /dev/input/event1 is tagged by udev as: Mouse Pointingstick [ 1090.210] (II) Device 'Elantech PS/2 TrackPoint' set to const accel 100.00 [ 1090.210] (II) input device 'Elantech PS/2 TrackPoint', /dev/input/event1 is a pointer caps , which doesn't look good and indeed doesn't do anything. If there is some reading material on this I'd be happy to read it :( (In reply to Alex Corcoles from comment #3) > # cat /etc/udev/hwdb.d/71-pointingstick-local.hwdb > evdev:input:* > POINTINGSTICK_SENSITIVITY=200 this one isn't available on all pointing sticks, looks like yours is one of them. The crashes are a systemd issue, would be worth filing a bug for that. Errors are ok, but this shouldn't segfault. as for CONST_ACCEL: this is applied by libinput directly and it shows up in the log above [ 1090.182] (II) Device 'Elantech PS/2 TrackPoint' set to const accel 100.00 however, setting it to 100 may just trigger some unrelated bug, I very much doubt you'd want the pointer to move 100 pixels each time you generate a single 1unit movement from the trackpoint. set it something more tame like 1.5 or 2 and see how you go with that first. Hmmm, tried with: evdev:input:* POINTINGSTICK_CONST_ACCEL=2 1.5, 2... didn't create much change. I also poked a bit with xinput: $ xinput list-props 11 Device 'Elantech PS/2 TrackPoint': Device Enabled (140): 1 Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Accel Speed (314): 0.000000 libinput Accel Speed Default (315): 0.000000 libinput Accel Profiles Available (316): 1, 1 libinput Accel Profile Enabled (317): 1, 0 libinput Accel Profile Enabled Default (318): 1, 0 libinput Natural Scrolling Enabled (319): 0 libinput Natural Scrolling Enabled Default (320): 0 libinput Send Events Modes Available (262): 1, 0 libinput Send Events Mode Enabled (263): 0, 0 libinput Send Events Mode Enabled Default (264): 0, 0 libinput Left Handed Enabled (321): 0 libinput Left Handed Enabled Default (322): 0 libinput Scroll Methods Available (323): 0, 0, 1 libinput Scroll Method Enabled (324): 0, 0, 1 libinput Scroll Method Enabled Default (325): 0, 0, 1 libinput Button Scrolling Button (326): 2 libinput Button Scrolling Button Default (327): 274 libinput Middle Emulation Enabled (328): 0 libinput Middle Emulation Enabled Default (329): 0 Device Node (265): "/dev/input/event1" Device Product ID (266): 2, 14 libinput Drag Lock Buttons (330): <no items> libinput Horizontal Scroll Enabled (267): 1 but... * 314: only goes between 0..1, no difference * 315, 316: cannot be changed However: $ xinput set-prop 11 142 1 0 0 0 1 0 0 0 0.4 does speed up things for me. It's not great, as it's not very "accelerate-y"... but it helps a bit. you can use the property names directly, not the numbers. that's a lot more portable across reboots. all the "* Default" and "* Available" properties are read-only, so you can't change them. Changing the coordinate transformation matrix is intended for mainly device rotation, using it for acceleration is not recommended. Run libinput-debug-events --verbose and see if the "Device '<device name>' set to const acel ..." shows up. If not, then the property isn't recognised correctly which would explain why it isn't working. Also, please attach an evemu-record recording of the trackpoint as you try to push the cursor into the top-right corner with "normal pressure". [that's also the biggest issue we face with trackpoint acceleration, who knows what "normal pressure" is...] Thanks, > you can use the property names directly, not the numbers. that's a lot more portable across reboots. all the "* Default" and "* Available" properties are read-only, so you can't change them. Ah, good to know. > Changing the coordinate transformation matrix is intended for mainly device rotation, using it for acceleration is not recommended. I guessed so- still it's quite workable as a temporary solution > Run libinput-debug-events --verbose and see if the "Device '<device name>' set to const acel ..." shows up. If not, then the property isn't recognised correctly which would explain why it isn't working. It does print out: Device 'ETPS/2 Elantech TrackPoint' set to const accel 2.00 > Also, please attach an evemu-record recording of the trackpoint as you try to push the cursor into the top-right corner with "normal pressure". [that's also the biggest issue we face with trackpoint acceleration, who knows what "normal pressure" is...] Got it. Seems to oscillate (1..2, -1..-2). Created attachment 128083 [details]
evemu-record pushing trackpoint to top right
ok, that'd explain it then. the one I have here on a T440s easily goes up to 10 with light-medium pressure and up to 20 for when I want to move it fast. we'll probably need some special handling for yours to speed it up. and figure out how to do so to begin with... The good news, trackpoints are getting their own acceleration soon, see bug 91369. The bad news - yours needs a custom accel method which is probably something I won't have time to implement yourself, sorry, too many other fires to deal with. I recommend having a look at the branch I just posted in that bug though, if that gets merged then it would be simple enough to add an acceleration method for yours that uses time-based acceleration (i.e. get faster the longer the stick is held in the same direction). Also, did you ever try windows on this one? Does that work better? I'm closing this as wontfix, it'd be dishonest to keep it open. This doesn't mean a fix wouldn't get merged if you started hacking on it, it simply means that no-one but you is likely to implement this in the forseeable future. Sorry Hi, That's fine, no worries. For reference and future visitors from Google, what I found acceptable is to follow the advice from: https://www.reddit.com/r/thinkpad/comments/4jku4c/configuring_trackpoint_on_thinkpad_13/d3asw6g/ , remove xserver-xorg-input-libinput and use something like: xinput --set-prop "ETPS/2 Elantech TrackPoint" "Device Accel Constant Deceleration" 0.2 Cheers, Álex |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.