Difference between revisions of "How to configure the TrackPoint"
m (→Configuration using xinput) |
|||
Line 60: | Line 60: | ||
=Configuration using sysfs= | =Configuration using sysfs= | ||
− | Another way to modify changes on the fly, is echoing values directly into special files in {{path|/sys/devices/platform/i8042/serio1/serio2}}. | + | Another way to modify changes on the fly, is echoing values directly into special files in sysfs. |
+ | |||
+ | {{NOTE| | ||
+ | The examples shown below are valid for ThinkPads with both TrackPoint and Touchpad, in which case the sysfs path is {{path|/sys/devices/platform/i8042/serio1/serio2}}. | ||
+ | |||
+ | If however you have a ThinkPad without Touchpad, or with the Touchpad disabled in the BIOS, the sysfs path needs to be changed to {{path|/sys/devices/platform/i8042/serio1}} instead (notice the missing serio2 at the end).}} | ||
If you want to set the sysfs parameters at boot, you can use the [http://linux-diag.sourceforge.net/Sysfsutils.html sysfsutils] and put the preferred value in /etc/sysfs.conf. | If you want to set the sysfs parameters at boot, you can use the [http://linux-diag.sourceforge.net/Sysfsutils.html sysfsutils] and put the preferred value in /etc/sysfs.conf. |
Revision as of 21:57, 11 April 2009
The kernel trackpoint driver is controlled by echoing values to special files. Common configuration options are outlined below. |
Configuration using Gnome
If you are using GNOME, you might want to use configure-trackpoint as a graphical frontend.
Configuration using HAL
Modern distributions like Ubuntu 8.10 and Fedora 10 use HAL to configure the input devices. You should no longer make changes to xorg.conf as by default Xorg (through the evdev driver) will let the kernel now handle input devices.
But before you get started on this you should make sure you have all the updates applied from your distro vendor as both Ubuntu 8.10 and Fedora 10 require some additional fixes that you will need.
vertical scrolling
By default the middle mouse button is that, a middle mouse button, which in Linux is used for the Paste operation.
But you can configure it to act in the same way as in Windows, such that you can use it for vertical scrolling (keep the button pressed and move the TrackPoint up and down to scroll). To accomplish this create the file /etc/hal/fdi/policy/mouse-wheel.fdi as root with the following content:
<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.YAxisMapping" type="string">4 5</merge> <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge> <merge key="input.x11_options.Emulate3Buttons" type="string">true</merge> <merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge> </match>
After this reboot, or restart the hal service and Xorg. You can validate the settings with lshal
.
Reactivate Scrolling after suspend/resume
Scrolling may be disabled after a resume from suspend.
You can manually reactivate the trackpoint by reloading the psmouse module as root:
# rmmod psmouse && modprobe psmouse
You can automatically force the pm-utils to reload this module. Create a file /etc/pm/config.d/01reload_mouse as root with the following content:
# reload psmouse to reactivate trackpoint scrolling SUSPEND_MODULES="${SUSPEND_MODULES:+$SUSPEND_MODULES }psmouse"
Press to Select
TODO
|
need sample hal config file
|
Sensitivity and Speed
TODO
|
need sample hal config file
|
Configuration using xinput
If you want to modify changes on the fly, you can do so with xinput
(part of the optional xorg-x11-apps rpm on Fedora).
Note that these changes are not saved when the xserver is restarted.
To query the available options
xinput list-props "TPPS/2 IBM TrackPoint"
To enable vertical scrolling
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
TODO
|
some other examples
|
Configuration using sysfs
Another way to modify changes on the fly, is echoing values directly into special files in sysfs.
The examples shown below are valid for ThinkPads with both TrackPoint and Touchpad, in which case the sysfs path is /sys/devices/platform/i8042/serio1/serio2.
If however you have a ThinkPad without Touchpad, or with the Touchpad disabled in the BIOS, the sysfs path needs to be changed to /sys/devices/platform/i8042/serio1 instead (notice the missing serio2 at the end).If you want to set the sysfs parameters at boot, you can use the sysfsutils and put the preferred value in /etc/sysfs.conf.
Press to Select
Press to Select allows you to tap the control stick which will simulate a left click. You can enable this feature by typing the following in to a terminal (you may need to be root):
# echo -n 1 > /sys/devices/platform/i8042/serio1/serio2/press_to_select
Press to Select should now be enabled. You can disable it in a similar manner:
# echo -n 0 > /sys/devices/platform/i8042/serio1/serio2/press_to_select
You can use this script to automate the operation
#!/bin/bash if [ "$1" = "1" ]; then echo "Turning on tap on TrackPoint" echo -n 1 > /sys/devices/platform/i8042/serio1/serio2/press_to_select exit 0 fi if [ "$1" = "0" ]; then echo "Turning off tap on TrackPoint" echo -n 0 > /sys/devices/platform/i8042/serio1/serio2/press_to_select exit 0 fi echo -n "Tap status: " cat /sys/devices/platform/i8042/serio1/serio2/press_to_select
Sensitivity & Speed
Adjusting the speed and sensitivity of the TrackPoint requires echoing a value between 0 and 255 into the appropriate file. For example, for a speed of 120 and a sensitivity of 250, type the following into a terminal:
# echo -n 120 > /sys/devices/platform/i8042/serio1/serio2/speed
# echo -n 250 > /sys/devices/platform/i8042/serio1/serio2/sensitivity
Feel free to experiment with your settings until you find a combination that is comfortable.
When you satisfy your setting, add the two lines into /etc/rc.d/rc.local in order to avoid restoring the default setting every time the system reboots.
Vertical Scrolling
No sysfs entry exists for vertical scrolling in kernels after 2.6.11.
The feature was removed as it was not a hardware feature, but rather emulating a scroll action in software and as such did not belong in the kernel. Instead the scroll feature of the Xserver should be used, which can be activated with HAL or xinput as described above.
Configuration using the X server (old Xorg only)
The scroll setting has been removed from the trackpoint driver in kernel versions 2.6.11 and above. Scroll emulation should now be handled in the X server.
A nice side effect of that is, that middle button scrolling applies to any mouse and not just the TrackPoint interface, which can be a quite handy feature for desktop computers or people who prefer to use an external mouse, especially when scrolling through long lists or needing to use horizontal scrolling with a mouse which has only a vertical scroll wheel.
The necessary functionality, known as "EmulateWheelTimeout" allowing to use button 2 for a middle click, wasn't implemented in Xorg prior to 6.9/7.0. However, there was a patch included in most distributions packages of Xorg, which was announced here. You can find an updated version of the package in the experimental branch of Debian or try to build the mouse driver yourself with the information in the announcement. This has successfully been tried with FC3's 6.8.2 packages.
Once this functionality is in the X.org, add these lines to your TrackPoint configuration section in /etc/X11/xorg.conf:
Option "EmulateWheel" "on" Option "EmulateWheelButton" "2"
It may also be necessary to add these lines:
Option "YAxisMapping" "4 5" Option "XAxisMapping" "6 7"
which specify which buttons are mapped to motion in the vertical (Y) and horizontal (X) directions, respectively, in wheel emulation mode (see http://www.xfree86.org/current/mouse.4.html).
You might want to try: "xev | grep button"
eix xf86-input-evdev
emerge -C xf86-input-evdev
and then remove the evdev flag in make.conf INPUT_DEVICES
So, a complete mouse section, that implements this nicely and works very well on my R51, even with a simultaneously connected USB mouse, looks like that (tried out today, 20th of September, 2006 on Dapper):
Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ExplorerPS/2" Option "Emulate3Buttons" "on" Option "Emulate3TimeOut" "50" Option "EmulateWheel" "on" Option "EmulateWheelTimeOut" "200" Option "EmulateWheelButton" "2" Option "YAxisMapping" "4 5" Option "XAxisMapping" "6 7" Option "ZAxisMapping" "4 5" EndSection
The mappings for Y and Z are the same, since the "Z-Axis" refers to actual hardware scrolling wheels which usually scroll the screen along the Y-Axis. If there is no hardware scrolling wheel present, horizontal and vertical scrolling using the TrackPoint work fine without the Z-Axis line.
Now restart X and hold down button 2 and move the mouse to scroll, or just press and release button 2 for a middle click.
To make this work with the synaptics driver for the touchpad, you can add
Option "GuestMouseOff" "1"
to the synaptics device section. This will make the synaptics driver ignore the Trackpoint, so it will be handled by the mouse driver. This allowed me to disable the touchpad while making the TrackPoint work like it should.
- I can press the wheel on my external USB mouse and move the mouse up and down for scrolling
- or I can just use the wheel on the external mouse for scrolling
- or pressing the MMB button of the trackpoint and use the trackpoint for scrolling.
- Even horizontal scrolling works automagically in Konqueror, for Firefox/Opera see below.
Simultaneously I can use
- a press on the external mouse's wheel
- or the MMB of the trackpoint
Soft Transparent Mode
If you wish to connect a special device to the external PS/2 port, you should consider using "Soft Transparent Mode" so that the TrackPoint controller does not interpret any commands sent to the external PS/2 port. You can enable soft transparent mode by typing the following in to a terminal:
# echo -n 1 > /sys/devices/platform/i8042/serio1/serio2/transparent
Disabling soft transparent mode is similar:
# echo -n 0 > /sys/devices/platform/i8042/serio1/serio2/transparent
Configure firefox for using trackpoint horizontal scrolling
Vertical Scrolling seems to work out of the box in firefox if you followed the steps above. Anyway, there is a problem when you don't scroll exactly vertical, because horizontal scrolling turns into browser BACK/FORWARD commands. You can avoid this by typing about:config + ENTER in the address bar of firefox. You have to adjust the following options:
mousewheel.horizscroll.withcontrolkey.action = 3; mousewheel.horizscroll.withcontrolkey.numlines = 1; mousewheel.horizscroll.withcontrolkey.sysnumlines = true; mousewheel.horizscroll.withnokey.action = 0; mousewheel.horizscroll.withnokey.numlines = 1; mousewheel.horizscroll.withnokey.sysnumlines = true; mousewheel.horizscroll.withshiftkey.action = 1; mousewheel.horizscroll.withshiftkey.numlines = 1; mousewheel.horizscroll.withshiftkey.sysnumlines = true;
FWIW, you can change only the following value to remove the browser BACK/FORWARD commands:
mousewheel.horizscroll.withnokey.action = 0;
With that, you can still go BACK/FORWARD by pressing together the shift or the alt key, while with the control key you increase or decrease the font size.
Configure Opera for using trackpoint horizontal scrolling
You'll experience the same annoying problem with the popular browser Opera. To fix this you need to edit the configfile standard_mouse.ini in e.g. /usr/share/opera/ini/ (Debian) or /opt/opera/share/opera/ini/ (Gentoo) and comment out the following lines
Button6 = Back Button7 = Forward
so they look like that
;Button6 = Back ;Button7 = Forward
Remember, Button6 and Button7 do not so coincidental correspond with our X configuration we know from above:
Option "YAxisMapping" "6 7"
After this change you will be able to scroll vertically and horizontally with your middle button.