Hi Dmitry, On Sat, Jan 06, 2018 at 10:52:01PM -0800, Dmitry Torokhov wrote: > Guys, could you please try the patch below? It will not solve the > "speed" issue on 0x01 devices, but hopefully we won't be exposing > non-existing controls on others. Thanks for looking into this. Which speed issue on 0x01 devices? I thought those were the legacy ones that used to work and still do as ever. I've tried your (slightly modified, see below) patch and the trackpoint now gets apparently[1] correctly detected as "psmouse serio2: trackpoint: Elan TrackPoint firmware: 0x04, buttons: 3/3". However, I still have the feeling that it's a lot more sensitive (or faster?) than with the regular PS/2 driver - even with libinput accel speed turned to -1. I don't know how I could measure this objectively, but there must be some difference between the trackpoint driver and the regular one. Is it maybe an init sequence that causes it to report more sensitively, or a different resolution, or ...? I really have no idea how mice work. :) Also, I'm wondering, since my trackpoint works just fine as "Generic PS/2 Mouse", including the third button. The driver even says: | /* | * Bare PS/2 protocol "detection". Always succeeds. | */ | static int ps2bare_detect(struct psmouse *psmouse, bool set_properties) | { | [...] | /* | * We have no way of figuring true number of buttons so let's | * assume that the device has 3. | */ | __set_bit(BTN_MIDDLE, psmouse->dev->keybit); | } | | return 0; | } So I wonder what driver Aaron was using that didn't report a third button. What vendor/firmwares did you (get reports of) have that middle mouse button problem on, Aaron? Thanks, Sebastian 1: If it's actually Elan. I've taken out my battery but could only find FRU numbers on the back of the keyboard, no signs of a vendor. <https://photos.app.goo.gl/iafpfzvRY042dOBo2> or <https://t.yath.de/IMG_20180108_143205.jpg> In trackpoint_start_protocol: > + switch (param[0]) { > + case TP_VARIANT_IBM: > + case TP_VARIANT_ALPS: > + case TP_VARIANT_ELAN: > + case TP_VARIANT_NXP: > + if (variant_id) > + *variant_id = param[0]; > + if (firmware_id) > + *firmware_id = param[1]; > + break; ^^^^^ That should be a return 0. > + } > > - return 0; > + return -ENODEV; > } -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html