I haven’t blogged in a very long time; the top item of my To Do list is “post a review of The Legend of Zelda: Spirit Tracks” but although I wrote myself a great little rambling
Rogerian intro to that post, I hit a mental block the size of an office building when the time came to talk about, you know, the actual game.
But right now, I have a cold and don’t feel like doing much of anything, let alone creative exertion, so no review tonight.
However, Ubuntu 10.04 “Lucid Lynx” came out last month, and I’ve only just gotten around to upgrading (thanks, crappy Australian internet bandwidth caps!) and I’ve spent the evening upgrading, grumbling and generally trying to get things back the way I like them. Most of my settings came across well enough, but
the TrackPoint USB Keyboard I use was pretty annoying.
At the end of the last entry, I noted that Ubuntu 9.10 used “HAL” for its device settings, but using “udev” directly was The Way Of The Future. It turns out that in six months since 9.10 came out, The Way Of The Future has actually changed twice - first it was “using udev directly”, now it’s apparently “ignoring udev, and using Xorg config file fragments”.
Before I dive too deeply into that, first the good news - all the “special” keys that worked in Ubuntu 9.10 still work in 10.04, and most of the ones that were broken are now fixed. The only exception is the “microphone mute” button, since there’s no obvious standard key code to map it onto. The “back” and “forward” keys still generate hard-coded “Alt+Left” and “Alt+Right” sequences, though.
Anyway, as I mentioned above, the current Way Of The Future for configuring input devices is “Xorg config file fragments”. You might expect, from the name, that where you used to have an “xorg.conf” file (namely, “/etc/X11/”) you should instead find an “xorg.conf.d” directory, into which config fragments go. If you expected that, you would be *almost* right.
If you examine the “xorg.conf” manpage, you’ll see that “/etc/X11/xorg.conf.d” is indeed one of the places Xorg looks for config fragments, but it’s not created by default - the Ubuntu package creates and populates “/usr/lib/X11/xorg.conf.d” instead. You might think, as I did, “/usr/lib? As the local administrator, I shouldn’t put config files there, that directory’s for Ubuntu to manage. I should put them in /etc where they’ll be respected”. If you thought that, you would be WRONG.
If, as I did, you create a “/etc/X11/xorg.conf.d/” directory and put a “trackpoint.conf” file into it, carefully designed to apply only to the trackpoint and no other input device, you’ll discover that suddenly your keyboard (and maybe your mouse too, if you made a typo) are disabled. It turns out, when Xorg looks through its list of potential xorg.conf.d directories, it uses the first one it finds and ignores all the others, including the helpful files in /usr/lib/X11/xorg.conf.d that make everything work by default. Debian, of course,
already has a patch that fixes this (the patch added by Timo Aaltonen in that entry), so it should be fixed by Ubuntu 10.10. Unless The Way Of The Future has changed again by then.
ACTUALLY SOLVING THE PROBLEM NOW
- Take this text:
Section "InputClass"
Identifier "TrackPoint USB Scroll-wheel Emulation"
MatchProduct "ThinkPad USB Keyboard"
MatchIsPointer "True"
Option "EmulateWheel" "True"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "7 6"
Option "YAxisMapping" "4 5"
Option "Emulate3Buttons" "False"
EndSection
- Store it under the filename “/usr/lib/X11/xorg.conf.d/99-local.conf”
- Leave yourself a note that in six months’ time, you’ll need to move that file back to “/etc/X11/xorg.conf.d/”, unless the config system changes again in that time.
UPDATE: Here we are a few months later, and I've upgraded to the beta version of Ubuntu 10.10. Turns out my prediction was exactly right - I moved that file back to “/etc/X11/xorg.conf.d/” and now everything works again.