Trackpoint buttons on Lenovo X1 Carbon 3rd Gen

Peter Hutterer peter.hutterer at who-t.net
Mon Jan 19 20:45:10 PST 2015


On Mon, Jan 19, 2015 at 11:13:10PM -0500, Aron Parsons wrote:
> Thanks for the quick reply Peter.  I filed the bug at
> https://bugs.freedesktop.org/show_bug.cgi?id=88609
> 
> Here are the evemu-record logs, which are also posted to the bug.  The
> first one is the TouchPad, the second is the TrackPoint.  The physical
> buttons only register events for the TouchPad although it looks like the
> TrackPoint device claims to have buttons as well.

oh crap. this will definitely need patching, in the kernel and depending on
how far we get with this in the userspace drivers as well. Thanks for the
bug report, for now this will do.

Cheers,
   Peter

> [root at x1 ~]# evemu-record
> Available devices:
> /dev/input/event0:	Lid Switch
> /dev/input/event1:	Sleep Button
> /dev/input/event2:	Power Button
> /dev/input/event3:	AT Translated Set 2 keyboard
> /dev/input/event4:	Video Bus
> /dev/input/event5:	SynPS/2 Synaptics TouchPad
> /dev/input/event6:	Integrated Camera
> /dev/input/event7:	HDA Intel HDMI HDMI/DP,pcm=3
> /dev/input/event8:	HDA Intel HDMI HDMI/DP,pcm=7
> /dev/input/event9:	HDA Intel HDMI HDMI/DP,pcm=8
> /dev/input/event10:	HDA Intel PCH Mic
> /dev/input/event11:	HDA Intel PCH Headphone
> /dev/input/event12:	TPPS/2 IBM TrackPoint
> Select the device event number [0-12]: 5
> # EVEMU 1.2
> # Input device name: "SynPS/2 Synaptics TouchPad"
> # Input device ID: bus 0x11 vendor 0x02 product 0x07 version 0x1b1
> # 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 type 1 (EV_KEY)
> #     Event code 256 (BTN_0)
> #     Event code 257 (BTN_1)
> #     Event code 258 (BTN_2)
> #     Event code 272 (BTN_LEFT)
> #     Event code 325 (BTN_TOOL_FINGER)
> #     Event code 328 (BTN_TOOL_QUINTTAP)
> #     Event code 330 (BTN_TOUCH)
> #     Event code 333 (BTN_TOOL_DOUBLETAP)
> #     Event code 334 (BTN_TOOL_TRIPLETAP)
> #     Event code 335 (BTN_TOOL_QUADTAP)
> #   Event type 3 (EV_ABS)
> #     Event code 0 (ABS_X)
> #       Value   1607
> #       Min     1266
> #       Max     5676
> #       Fuzz       0
> #       Flat       0
> #       Resolution 45
> #     Event code 1 (ABS_Y)
> #       Value   2032
> #       Min     1096
> #       Max     4758
> #       Fuzz       0
> #       Flat       0
> #       Resolution 68
> #     Event code 24 (ABS_PRESSURE)
> #       Value      0
> #       Min        0
> #       Max      255
> #       Fuzz       0
> #       Flat       0
> #       Resolution 0
> #     Event code 28 (ABS_TOOL_WIDTH)
> #       Value      0
> #       Min        0
> #       Max       15
> #       Fuzz       0
> #       Flat       0
> #       Resolution 0
> #     Event code 47 (ABS_MT_SLOT)
> #       Value      0
> #       Min        0
> #       Max        1
> #       Fuzz       0
> #       Flat       0
> #       Resolution 0
> #     Event code 53 (ABS_MT_POSITION_X)
> #       Value      0
> #       Min     1266
> #       Max     5676
> #       Fuzz       0
> #       Flat       0
> #       Resolution 45
> #     Event code 54 (ABS_MT_POSITION_Y)
> #       Value      0
> #       Min     1096
> #       Max     4758
> #       Fuzz       0
> #       Flat       0
> #       Resolution 68
> #     Event code 57 (ABS_MT_TRACKING_ID)
> #       Value      0
> #       Min        0
> #       Max    65535
> #       Fuzz       0
> #       Flat       0
> #       Resolution 0
> #     Event code 58 (ABS_MT_PRESSURE)
> #       Value      0
> #       Min        0
> #       Max      255
> #       Fuzz       0
> #       Flat       0
> #       Resolution 0
> # Properties:
> #   Property  type 0 (INPUT_PROP_POINTER)
> #   Property  type 2 (INPUT_PROP_BUTTONPAD)
> #   Property  type 4 (INPUT_PROP_TOPBUTTONPAD)
> N: SynPS/2 Synaptics TouchPad
> I: 0011 0002 0007 01b1
> P: 15 00 00 00 00 00 00 00
> B: 00 0b 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 07 00 01 00 00 00 00 00
> B: 01 20 e5 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 02 00 00 00 00 00 00 00 00
> B: 03 03 00 00 11 00 80 60 06
> B: 04 00 00 00 00 00 00 00 00
> B: 05 00 00 00 00 00 00 00 00
> B: 11 00 00 00 00 00 00 00 00
> B: 12 00 00 00 00 00 00 00 00
> B: 14 00 00 00 00 00 00 00 00
> B: 15 00 00 00 00 00 00 00 00
> B: 15 00 00 00 00 00 00 00 00
> A: 00 1266 5676 0 0 45
> A: 01 1096 4758 0 0 68
> A: 18 0 255 0 0 0
> A: 1c 0 15 0 0 0
> A: 2f 0 1 0 0 0
> A: 35 1266 5676 0 0 45
> A: 36 1096 4758 0 0 68
> A: 39 0 65535 0 0 0
> A: 3a 0 255 0 0 0
> ################################
> #      Waiting for events      #
> ################################
> E: 0.000000 0001 0100 0001	# EV_KEY / BTN_0                1
> E: 0.000000 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 0.008950 0001 0100 0000	# EV_KEY / BTN_0                0
> E: 0.008950 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 1.705538 0001 0101 0001	# EV_KEY / BTN_1                1
> E: 1.705538 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> 
> E: 1.715480 0001 0101 0000	# EV_KEY / BTN_1                0
> E: 1.715480 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 6.091416 0001 0110 0001	# EV_KEY / BTN_LEFT             1
> E: 6.091416 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 6.331766 0001 0110 0000	# EV_KEY / BTN_LEFT             0
> E: 6.331766 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 9.503149 0001 0110 0001	# EV_KEY / BTN_LEFT             1
> E: 9.503149 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 9.802307 0001 0110 0000	# EV_KEY / BTN_LEFT             0
> E: 9.802307 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 10.602692 0001 0110 0001	# EV_KEY / BTN_LEFT             1
> E: 10.602692 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 10.881548 0001 0110 0000	# EV_KEY / BTN_LEFT             0
> E: 10.881548 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 11.364079 0001 0110 0001	# EV_KEY / BTN_LEFT             1
> E: 11.364079 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 11.672063 0001 0110 0000	# EV_KEY / BTN_LEFT             0
> E: 11.672063 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 12.066900 0001 0110 0001	# EV_KEY / BTN_LEFT             1
> E: 12.066900 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 12.279415 0001 0110 0000	# EV_KEY / BTN_LEFT             0
> E: 12.279415 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> 
> 
> [root at x1 ~]# evemu-record
> Available devices:
> /dev/input/event0:	Lid Switch
> /dev/input/event1:	Sleep Button
> /dev/input/event2:	Power Button
> /dev/input/event3:	AT Translated Set 2 keyboard
> /dev/input/event4:	Video Bus
> /dev/input/event5:	SynPS/2 Synaptics TouchPad
> /dev/input/event6:	Integrated Camera
> /dev/input/event7:	HDA Intel HDMI HDMI/DP,pcm=3
> /dev/input/event8:	HDA Intel HDMI HDMI/DP,pcm=7
> /dev/input/event9:	HDA Intel HDMI HDMI/DP,pcm=8
> /dev/input/event10:	HDA Intel PCH Mic
> /dev/input/event11:	HDA Intel PCH Headphone
> /dev/input/event12:	TPPS/2 IBM TrackPoint
> Select the device event number [0-12]: 12
> # EVEMU 1.2
> # Input device name: "TPPS/2 IBM TrackPoint"
> # Input device ID: bus 0x11 vendor 0x02 product 0x0a version 0000
> # 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 type 1 (EV_KEY)
> #     Event code 272 (BTN_LEFT)
> #     Event code 273 (BTN_RIGHT)
> #     Event code 274 (BTN_MIDDLE)
> #   Event type 2 (EV_REL)
> #     Event code 0 (REL_X)
> #     Event code 1 (REL_Y)
> # Properties:
> #   Property  type 0 (INPUT_PROP_POINTER)
> #   Property  type 5 (INPUT_PROP_POINTING_STICK)
> N: TPPS/2 IBM TrackPoint
> I: 0011 0002 000a 0000
> P: 21 00 00 00 00 00 00 00
> B: 00 0b 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 07 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 01 00 00 00 00 00 00 00 00
> B: 02 03 00 00 00 00 00 00 00
> B: 03 00 00 00 00 00 00 00 00
> B: 04 00 00 00 00 00 00 00 00
> B: 05 00 00 00 00 00 00 00 00
> B: 11 00 00 00 00 00 00 00 00
> B: 12 00 00 00 00 00 00 00 00
> B: 14 00 00 00 00 00 00 00 00
> B: 15 00 00 00 00 00 00 00 00
> B: 15 00 00 00 00 00 00 00 00
> ################################
> #      Waiting for events      #
> ################################
> E: 0.000000 0002 0001 0001	# EV_REL / REL_Y                1
> E: 0.000000 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 0.019310 0002 0000 0001	# EV_REL / REL_X                1
> E: 0.019310 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 0.048622 0002 0001 0001	# EV_REL / REL_Y                1
> E: 0.048622 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 0.068458 0002 0001 0001	# EV_REL / REL_Y                1
> E: 0.068458 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 0.088470 0002 0000 0001	# EV_REL / REL_X                1
> E: 0.088470 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 0.134325 0002 0001 0001	# EV_REL / REL_Y                1
> E: 0.134325 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> E: 0.230916 0002 0000 -001	# EV_REL / REL_X                -1
> E: 0.230916 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
> 
> 
> 
> 
> /aron
> 
> On Mon, Jan 19, 2015 at 10:39 PM, Peter Hutterer <peter.hutterer at who-t.net>
> wrote:
> 
> > On Mon, Jan 19, 2015 at 07:58:27PM -0500, Aron Parsons wrote:
> > > I received a Lenovo X1 Carbon 3rd generation today, the one with the
> > > resurrection of the physical Trackpoint buttons.  However, there is
> > > some broken behavior related to those much loved buttons on this laptop
> > > running an up-to-date Fedora 21.
> > >
> > > The clickpad buttons seem to work fine, however I would like to achieve
> > > a configuration that disables the touchpad and only use the Trackpoint
> > > and the physical buttons as I have on all my Thinkpads in the past.
> > > There is an option in the BIOS to disable the touchpad, but it seems to
> > > be completely ignored under Linux; with it set to off in the BIOS, the
> > > touchpad is still fully functional.  This is likely related to the fact
> > > that the physical buttons generate events on the touchpad's event device
> > > (/dev/input/event4 in this case) and not for the Trackpoint's event
> > > device (/dev/input/event12), so the device can't really be disabled.
> > >
> > > So here are the various scenarios regarding the physical buttons and how
> > > they are failing at the moment:
> > >
> > > - Dragging does not work at all with the physical left button with either
> > > the evdev or synaptics driver.  Dragging with the clickpad's left button
> > > is fine.
> > >
> > > - Middle click does not register at all (from viewing evtest output),
> > which
> > > I assume means it's an issue at the kernel layer not registering the
> > event.
> > > Neither the physical buttons or the clickpad generate a middle click
> > event
> > > using either the evdev or synaptics drivers.
> > >
> > > - With the synaptics driver, the buttons are picked up as up/down
> > buttons.
> > > Setting UpDownScrolling=off changes the behavior as described in the man
> > > page (double-click/button 2).  Using xinput, I can force the right-button
> > > to behave correctly, but the left-button will not change its behavior (it
> > > is always a double-click).  This makes it unusable with the synaptics
> > > driver.
> > >
> > > Please let me know what relevant logs, command output or tests I can
> > provide
> > > to help troubleshoot this issue.  I have attached the X11 log using the
> > > evdev driver, but I don't see anything useful in there other than the
> > > device identification.
> >
> > best to file a bug for this so we have this archived.
> > For the logs, run evemu-record on both kernel devices and hit the buttons,
> > then attach the output here. that'll include enough information to narrow
> > this down.
> >
> > Cheers,
> >    Peter
> >
> >


More information about the xorg mailing list