Daniel Keast

Disable middle button scroll

linux

I’m playing around with blender tutorials, trying to understand how to make some simple 3d models. The way you move the 3d viewport around is by holding in the middle mouse button and moving the mouse around. This is blocked by a default setting in X for my thinkpad that causes middle click drag to emulate a mouse wheel for scrolling.

Here is how you list out all the connected input devices:

$ xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Integrated Camera                         id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=13   [slave  keyboard (3)]

It’s the TrackPoint I’m interested in, the list-props option will list out all the properties:

$ xinput --list-props 12
Device 'TPPS/2 IBM TrackPoint':
    Device Enabled (139):    1
    Coordinate Transformation Matrix (141):    1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Accel Speed (284):    0.000000
    libinput Accel Speed Default (285):    0.000000
    libinput Accel Profiles Available (302):    1, 1
    libinput Accel Profile Enabled (303):    1, 0
    libinput Accel Profile Enabled Default (304):    1, 0
    libinput Natural Scrolling Enabled (286):    0
    libinput Natural Scrolling Enabled Default (287):    0
    libinput Send Events Modes Available (261):    1, 0
    libinput Send Events Mode Enabled (262):    0, 0
    libinput Send Events Mode Enabled Default (263):    0, 0
    libinput Left Handed Enabled (288):    0
    libinput Left Handed Enabled Default (289):    0
    libinput Scroll Methods Available (290):    0, 0, 1
    libinput Scroll Method Enabled (291):    0, 0, 1
    libinput Scroll Method Enabled Default (292):    0, 0, 1
    libinput Button Scrolling Button (305):    2
    libinput Button Scrolling Button Default (306):    2
    libinput Middle Emulation Enabled (296):    0
    libinput Middle Emulation Enabled Default (297):    0
    Device Node (264):    "/dev/input/event2"
    Device Product ID (265):    2, 10
    libinput Drag Lock Buttons (300):    <no items>
    libinput Horizontal Scroll Enabled (301):    1

This is the property I’m interested in:

input Scroll Method Enabled Default (292):    0, 0, 1

Running this command will disable this feature:

$ xinput --set-prop "TPPS/2 IBM TrackPoint" "libinput Scroll Method Enabled" 0 0 0

I’ve put this in my .bashrc to have it run on login.