Thinkpad X configuration

X Version:
Dave Hansen would suggest that everyone run the latest version of XFree86, which as of this writing is 4.1.0.  The 4.0 release had issues with the savage driver and required you to upgrade the driver module.  This buggy version of X came with Redhat 7.0 and 7.1.  This is one reason that I suggest that you run 7.2, which has XFree86 4.1.

External Monitor:
Some problems are caused by running the Thinkpads with an external monitor at one resolution and using the LCD with another.  You can not change the X desktop size on the fly. You can change the resolution, but you have to use edge scrolling.

X could not do it until 4.1, but it will now automatically detect whether you have an external monitor attached. With my current configuration, when I restart X, it comes up at 1280x1024 if it is hooked up to the external monitor or 1024x768 if the LCD is on.

Mike Anderson had previously experimented with the ServerLayout section of the XF86Config-4 file. He believes this is intended for multi-head, but with the -layout command line option it should work.

Mouse
For the external mouse, I think that the best solution is to use a USB mouse. In the Thinkpads, there is a "PS/2 mixer" mechanism that combines the input from the external PS/2 mouse and the Trackpoint to
present a single mouse to the system. This mixer also strips out some of the extra functions of PS/2 mice, such as the mouse wheel messages. Some special commands need to be sent to the mouse controller to get it to let these messages pass. Linux doesn't do this by default, but there
was a patch a little while ago to fix this:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0108.0/0144.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0108.0/0218.html
As I said, I just use a USB mouse, this bypasses all of the PS/2
related problems.

In order to use more mice, you need more InputDevice entries in the ServerLayout section of XF86Config:

Section "ServerLayout"
        Identifier     "Anaconda Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "TrackPoint" "CorePointer"
        InputDevice    "WirelessMouseMan" "SendCoreEvents"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Here are my mouse input device sections:
Notice the /dev/input/mice as the "Device". /dev/input/mice is an aggregate of all mice; it also allows you to hot-plug mice.

Section "InputDevice"
        Identifier  "WirelessMouseMan"
        Driver      "mouse"
        Option      "Buttons" "5"
        Option      "Resolution" "400"
        Option      "Protocol" "IMPS/2"
        Option      "Device" "/dev/input/mouse0"
        Option      "Emulate3Buttons" "no"
        Option      "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
        Identifier  "TrackPoint"
        Driver      "mouse"
        Option      "Buttons" "3"
        Option      "Resolution" "400"
        Option      "Protocol" "PS/2"
        Option      "Device" "/dev/psaux"
        Option      "Emulate3Buttons" "no"
EndSection

Dave Hansen has attached his whole XF86Config if anyone wants to take a look.

Hotplug

The -ac kernel supports a hotplug notification event when a laptop is plugged into a docking station. That event gets sent to /sbin/hotplug, but the current linux-hotplug package doesn't do anything with this information.

This could be used to change your X configuration files on the fly, or other fun things (switch your network config, etc.)

If anyone wants to work with Greg KH on adding some basic hooks to the linux-hotplug package for this, let him know.

Linux-hotplug: http://linux-hotplug.sf.net/

Misc

On another note, here is another utility which does configuration of a lot of different Thinkpad hardware options.