xorg, evdev and EmulateWheel

With the switch to evdev as the input for the xserver in intrepid I lost my EmulateWheel settings. I use this option on my Thinkpad a lot. I have configured the middle mouse button so that I can scroll up and down with the trackpoint. I really love this option and use it quite a lot.

So today I decided to look into what can be done to get it back 🙂 With the help of Timo Aaltonen and Julien Cristau I made it work again.

You need a very recent xserver-xorg-input-evdev (git snapshot) that I put into my PPA at “deb http://ppa.launchpad.net/mvo/ubuntu intrepid main” and then a fdi file in /etc/hal/fdi/policy/mouse-wheel.fdi that looks like this:

<match key="info.product" string="TPPS/2 IBM TrackPoint">
 <merge key="input.x11_options.EmulateWheel" type="string">true</merge>
 <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
 <merge key="input.x11_options.ZAxsisMapping" type="string">4 5</merge>
 <merge key="input.x11_options.Emulate3Buttons" type="string">true</merge>
</match>

You may have to alter the “info.product” key for your system to make it work. After restarting hal and the xserver, that gave me my middle button scroll back and I’m a happy (and productive) man again.

41 Responses to “xorg, evdev and EmulateWheel”

  1. Rick Harding Says:

    Wow, that seems like a lot of work for that. I haven’t been following intrepid, adding that EmulateWheel content to an xorg.conf file no longer works?

  2. Michael Vogt Says:

    xorg.conf works as well, but it need to be customized as well and it seems like the right device /dev/input/inputX needs to be put in. I think that the fdi file is more robust.

    I think for intrepid final things will be a lot easier, there is support to set these options via XProperties, so I expect some sort of GUI in the future (part of gnome-control-center maybe?).

  3. chris jones Says:

    nice work! I absolutely depend on this feature!

  4. Nathan Dbb Says:

    Thanks for this, I was confused by the change when I set up 8.10 Alpha 4.

    I have noticed that on my thinkpad travel keyboard, I can hold down the scroll key and scroll with my finger on the touchpad (any place, not just the edge). On the built-in keyboad, this would not work.

    Does this setup allow you to scroll with a finger on the pad (not on the nipple mouse) after hitting the scroll key?

  5. Michael Ummels Says:

    Thanks for this!

    I have tried to enable “EmulateWheelTimeout” by adding the line

    200

    after the other merge tags. This would leave the middle mouse button intact. However, as judged by xorg.log this line is ignored. Any ideas why?

  6. Michael Ummels Says:

    That’s <merge key=”input.x11_options.EmulateWheelTimeout” type=”string”>200</merge>.

  7. Michael Vogt Says:

    Hi MIchael,

    it looks like this option is not supported in the evdev version of the emuWheel source code. Sorry for that, its a very nice feature. Middle mouse is still availabe via emulate3button, but its of course more inconvenient than the native middle button.

  8. Michael Ummels Says:

    Hi Michael,

    thanks for ur answer. Then hopefully it will be implemented soon. 🙂

  9. Marc Says:

    Hi Michael, I’ve been looking to restore that behavior for a while, and your solution works GREAT, except for one detail: the middle mouse button does not work anymore by itself.

    It’s the thing I use the most (second is the wheel scroll)… is there a way to have this work as well? Is it what the “EmulateWheelTimeout” is suppose to address?

    I’ve seen a patch addressing the timeout issue (http://readlist.com/lists/lists.freedesktop.org/xorg/4/24605.html), maybe your package is not using the latest version?

    Thanks!

  10. Sébastien Mazy Says:

    Hi Michael,

    For those who want to keep the “mouse” driver managing the trackpoint until evdev is feature complete, here is a workaround:

  11. Sébastien Mazy Says:

    My comment was mangled: .

  12. Chris Jones Says:

    Using the latest stuff in Intrepid, I can get this working via xinput:

    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation” 8 1
    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation Button” 8 2

    that enables wheel emulation and ties it to button 2 (ie middle mouse button).

    see “man xinput” and “xinput list” to find the right device name, and then “xinput list-props DEVICENAME” to find out what it can do. As an example, these are the commands I ran to figure out the various things I needed to know:

    xinput list => “TPPS/2 IBM TrackPoint”
    xinput list-props “TPPS/2 IBM TrackPoint” => “Wheel Emulation”/”Wheel Emulation Button”

  13. whyohwhyohwhyoh Says:

    nice! i always find it a struggle to find out what to do with all that fdi stuff.

    right, now that i’ve got my middle mouse button i’m off to play with blender in fedora 9 on my eee pc 🙂

  14. Mathias Schulze Says:

    On the ThinkPad X300 (or X301) this does not seem to work. xinput lists the following devices. Any ideas?

    mschulze@X300:~$ xinput list-props 3
    Device ‘DualPoint Stick’:
    Device Enabled: 1
    Middle Button Emulation: 2
    Middle Button Timeout: 50
    Wheel Emulation Inertia: 10
    Wheel Emulation: 1
    Wheel Emulation X Axis: 0, 0
    Wheel Emulation Y Axis: 4, 5
    Wheel Emulation Timeout: 200
    Wheel Emulation Button: 2
    Drag Lock Buttons: 0

    mschulze@X300:~$ xinput list-props 4
    Device ‘AlpsPS/2 ALPS DualPoint TouchPad’:
    Device Enabled: 1
    Synaptics Edges: 120, 0, 830, 0
    Synaptics Finger: 14, 0, 15
    Synaptics Tap Time: 180
    Synaptics Tap Move: 110
    Synaptics Tap Durations: 180, 0, 180
    Synaptics Tap FastTap: 0
    Synaptics Middle Button Timeout: 75
    Synaptics Two-Finger Pressure: 257
    Synaptics Scrolling Distance: 20, 0
    Synaptics Edge Scrolling: 1, 0, 0
    Synaptics Two-Finger Scrolling: 0, 0
    Synaptics Edge Motion Pressure: 30, 0
    Synaptics Edge Motion Speed: 1, 0
    Synaptics Edge Motion Always: 0
    Synaptics Button Scrolling: 1, 1
    Synaptics Button Scrolling Repeat: 1, 1
    Synaptics Button Scrolling Time: 100
    Synaptics Off: 0
    Synaptics Guestmouse Off: 0
    Synaptics Locked Drags: 0
    Synaptics Locked Drags Timeout: 5000
    Synaptics Tap Action: 2, 3, 0, 0, 1, 2, 3
    Synaptics Click Action: 1, 1, 1
    Synaptics Circular Scrolling: 0
    Synaptics Circular Scrolling Trigger: 0
    Synaptics Circular Pad: 0
    Synaptics Palm Detection: 1
    Synaptics Palm Dimensions: 10, 0
    Synaptics Pressure Motion: 30, 0
    Synaptics Grab Event Device: 1

  15. Nice Says:

    This solution does not seem to work for older hardware like Thinkpad R50 or may be i messed up something!

    Here is one more approach.

    This worked for me. (http://ph.ubuntuforums.com/showthread.php?t=942565)
    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation” 8 1
    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation Button” 8 2

    Added these two lines to your startup script ( or add one gnome-session-properties)

  16. Flawless! Says:

    This is a great fix and worked perfectly for me.
    Thankyou!

  17. Bashar Al-Abdulhadi Says:

    it didn’t work with 8.04 X300 and now with 8.10 also is not working

    i think the thinkpad X300 has something different

  18. Bashar Al-Abdulhadi Says:

    ok i finally got it working on X300

    you need to disable the touch pad from bois then the trackpoint will show as “TPPS/2 IBM TrackPoint” instead of “DualPoint Stick” when using the command ‘xinput list-props 3’

    now i can scroll 😀

    Thanks guys

  19. le tux Says:

    Works great on my T60.

    Thanks

  20. Loke Says:

    I could enable it on my x61, but it stops working once I suspend. Any ideas?

  21. |cyn| Says:

    This did not work for me on a Thinkpad X61 running the latest Intrepid. I have check xinput list for the device name, and it is “TPPS/2 IBM TrackPoint” as described in the config file.

    Xorg.0.log seems to list the device correctly:

    (II) config/hal: Adding input device TPPS/2 IBM TrackPoint
    (**) TPPS/2 IBM TrackPoint: always reports core events
    (**) TPPS/2 IBM TrackPoint: Device: “/dev/input/event8”
    (II) TPPS/2 IBM TrackPoint: Found x and y relative axes
    (II) TPPS/2 IBM TrackPoint: Found 3 mouse buttons
    (II) TPPS/2 IBM TrackPoint: Configuring as mouse
    (II) XINPUT: Adding extended input device “TPPS/2 IBM TrackPoint” (type: MOUSE)
    (**) Option “Emulate3Buttons” “true”
    (II) TPPS/2 IBM TrackPoint: Forcing middle mouse button emulation.
    (**) Option “EmulateWheel” “true”
    (**) Option “EmulateWheelButton” “2”
    (**) Option “YAxisMapping” “4 5”
    (**) TPPS/2 IBM TrackPoint: YAxisMapping: buttons 4 and 5
    (**) Option “XAxisMapping” “6 7”
    (**) TPPS/2 IBM TrackPoint: XAxisMapping: buttons 6 and 7
    (**) TPPS/2 IBM TrackPoint: EmulateWheelButton: 2, EmulateWheelInertia: 10, EmulateWheelTimeout: 200

    Anyone have any ideas?

  22. jonas Says:

    thanks!

    my Thinkpad R60 dont like the .fdi file, but with the commands for xinput it works!
    i did this in the terminal:
    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation” 8 1
    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation Button” 8 2

  23. aliencam Says:

    This does work to get vertical scrolling, but I can’t get your configuration to cause horizontal scrolling. I am using ubuntu 7.10 x86_64 on a thinkpad x61-Tablet. (I have tried misspelling and correctly spelling axis, and dozens of other things)
    In order to get the horizontal scrolling working for myself, I have to make a shell script run at startup that runs
    xinput -set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation X Axis” 8 6 7

    now everything works.

  24. Paul Says:

    Michael,
    I have a T43 and this did not work for me, you say I might have to edit the info.product key, and I know what you mean, I just don’t know what I would change it to. Any help would be great

    Paul

  25. Paul Says:

    also, enabling it with xinput works with the code:

    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation” 8 1
    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Wheel Emulation Button” 8 2

    so I don’t know why the .fdi wont

  26. aliencam dot net blog. » Blog Archive » Thinkpad Middle Mouse Scrolling in Ubuntu 8.10 Says:

    […] The websites I used to formulate this approach are: psung.blogspot.com/2008/09/scrolling-with-thinkpads-trackpoint-in.html mvogt.wordpress.com/2008/08/15/xorg-evdev-and-emulatewheel/ […]

  27. il55 Says:

    it works perfect on t61!! thank you!!

  28. RaiulBaztepo Says:

    Hello!
    Very Interesting post! Thank you for such interesting resource!
    PS: Sorry for my bad english, I’v just started to learn this language 😉
    See you!
    Your, Raiul Baztepo

  29. Andrei Popescu Says:

    Hello,

    The ZAxisMapping option does not exist for evdev (Debian sid, evdev 2.2.1. (BTW, you also have a typo in that line). Emulate3Buttons is not needed on my machine.

    Otherwise thanks a lot, I got scrolling back on my R61.

    Regards,
    Andrei

  30. sambu Says:

    thanks dude!

  31. creon Says:

    Fedora 11, Thinkpad R50e
    fdi file does not work.

    works only with this xinput setup:

    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Evdev Wheel Emulation” 8 1
    xinput set-int-prop “TPPS/2 IBM TrackPoint” “Evdev Wheel Emulation Button” 8 2

  32. Ilya Says:

    Fedora 11, ThinPad R400

    fdi works after logout / new login and hald-restart

  33. ubuntu 覚書 | bloK Says:

    […] on code from Michael Vogt and adapted to support both vertical and horizontal […]

  34. tsahee Says:

    Adding mouse-wheel.fdi with no other changes worked perfectly on my thinkpad R51 running Karmic.
    Thank you!

  35. gerard Says:

    Thanks a lot, That works like a charm on a Thinkpad SL410. But how can we select the sensivity of the trackpoint and how to deselect the touchpad wich is disturbing now (I haven’t succeed to go in the Bios) ? Anyway, I’m so happy I’ve found your post and that it works very well on my machine.

  36. Natashia Hetcher Says:

    [..] A bit unrelated, but I really liked this webpage post [..]

  37. Asweek Says:

    Thank you Michael! It works well in Karmic, but not in Lucid. I read that the configuration schema changed again, is it true?
    What can we do to make this work in Lucid?

  38. Gres Says:

    In the Arch forums I found a solution for the new config schema:

    https://bbs.archlinux.org/viewtopic.php?pid=847309#p847309

  39. Phil Says:

    YES! Spent a long time hunting for a solution. thank you.

  40. Ubuntu scrollen mit dem Trackpoint » Sebastian Thiele Says:

    […] on code from Michael Vogt and adapted to support both vertical and horizontal […]

  41. Telecope Says:

    thank you, wish i would do something like yours

Leave a reply to Michael Ummels Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.