Mighty Mouse Returns!

I recently complained about my troubles in getting my Apple Mighty Mouse to scroll horizontally on my Linux box. It works now! Nothing to it…

Turns out there was a bug in the USB HID to Linux Input subsystem converter. As usual, I wasted a lot of time looking for some wacky thing the mouse was doing that the kernel didn't expect. Nope—just a plain ol' bug where some lines were in the wrong order. (The technical version is that it was setting capability bits for the REL inputs before it remapped those inputs in quirks mapping. After works much better.)

A patch (for kernel 2.6.15.6) is attached. It also contains a bunch of gratuitous code cleanups and debugging. I suppose I should submit this somewhere, although I imagine it may already be patched by now; I know I wasn't the only one working on it.

The real problem is that input in Linux has become a gosh-awful undebuggable mess. Yeesh. For example, it turns out (thanks to Keithp for the tip!) that the ability to talk directly to /dev/psaux is just…gone. That device, by definition, now aggregates all mouse input events, and so you better hope that's what you wanted. You can get just the events for your PS/2 mouse off one of the /dev/input/event? or /dev/input/mouse? devices—if you can figure out which one. Good luck with that. BTW, the current X server will hang if you point it wrong, and there doesn't seem to be any way to ask it to check. Whee!

I've only played with it for a few seconds, really, but the Mighty Mouse itself seems pretty nice. 2D scrolling in Firefox is great. 2D scrolling in the GIMP is awesome. Image editing is about 100 times easier now.

Mostly it was fun to debug and repair a kernel problem. Sure could have used the Seat HOWTO, though. (B)