Mini review :
So a few weeks ago I went and dropped $160 on a Logitech MX Air mouse. I’ve been justifying this fairly outrageous price by telling myself it would be a worthwhile addition to my desktop rig, which is looking more and more like a media centre every day. Sure, it actually is a worthwhile addition, but mostly I think it’s more to do with me being a tragic Logitech fanboy (I’ve already got a Logitech wireless keyboard and mouse combo at home, another one at work, and a set of X-540 surround speakers with which I torment my neighbours on a regular basis).
Turns out gyroscopic mice are a lot of fun to use. On the desk it works fine, but the odd shape takes a little getting used to. Probably the worst thing about it is the lack of a middle button. The scroll wheel has been replaced with a touch-sensitive pad, with buttons at the top and bottom that simply scroll. But it’s a mouse that was really designed to be picked up and waved around. Holding it in the air is very comfortable.
Things that work :
There doesn’t seem to be a lot of people using these mice in Linux yet. All I’ve been able to find to date is a couple of reviewers who plugged it in for five minutes and noticed “basic pointing functions” working. Whatever that means.
I was pleasantly surprised, though, with how well this thing works with Linux. Basic movement and scrolling works both on the desk and in the air — the scroll pad accelerates a lot faster than a wheel will, and I’m loving it.
The mouse also has four custom buttons: two labelled “BACK” and “SEL”, a play/pause button and a volume button. Out of the box, SEL is mapped to button 1 (for selecting stuff while it’s in the air), and the other two generate sensible keycodes and work out of the box in Ubuntu (VOL mutes and unmutes the volume). The mouse also has a few built-in gestures; holding the volume button and waving the mouse up and down changes the volume, while holding play and waving it in small circles will skip to the previous and next tracks. Again, the controller sends back sensible keycodes for these, and I didn’t have to do anything at all to make these work in Ubuntu.
Things I’ve fixed:
To make the BACK button usable takes a little bit of work. Out of the box it seems to be detected as button 2, but it’s too far out of the way to be terribly usable as a middle button. Ubuntu (and probably most other distributions) use a default mouse type of
ImPS/2, but the MX seems to fare a little better with the newer
ExplorerPS/2 driver. Additionally, not all of the buttons seem to be detected correctly, so manually setting them helps. My mouse device currently looks like:
Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ExplorerPS/2" Option "Buttons" "20" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "true" EndSection
I first tried setting the buttons to 16 (after playing around with a USB packet sniffer, see below). On startup X would poll the mouse, which reported it had 20 buttons. So that’s what I set it to. Now xev registers a BACK button press as button 8, and I can’t wait to think of something useful to do with it.
Things I haven’t fixed:
The one thing that’s eluded me so far is detecting when the mouse is being used in the air. The bundled Windows software does this, changing the pointer to a sexier, larger one that can easily be seen from the couch. I’ve been using the trial version of USB Monitor to sniff traffic, mostly because none of the freely available tools were able to decode it enough for poor plebs like me who haven’t read the HID spec. But it was enough to figure out that the mouse seems to be setting button 13 on while it’s in the air.
Back in Linux, xev violently disagrees. It doesn’t give up any sign of any button events that I’ve seen yet. I’m guessing it’s an option that the Windows driver is turning on, but haven’t yet looked at any of the traffic that goes on when the device is plugged in.