Well, you can't say I didn't try. If you look at this question on AskUbuntu, you can certainly say I tried. I tried hard. I tried to exhaust every tool at my disposal to make my new Logitech T630 Ultrathin Bluetooth Touch mouse behave properly in Ubuntu. Unfortunately, it doesn't behave properly and respond to all the things it should, including suggestions from X input hacker Peter Hutterer (who I greatly thank for so generously taking random private messages from me on IRC). I think officially I'm ready to give up.
The verdict: one of three things needs to happen for this to be solved:
- hack the device firmware
- reverse engineer the non-Linux device drivers
- fix how the kernel deals with the mouse
Unfortunately I think part of the problem lies in the fact that the mouse is partially a keyboard. When the gestures happen, keyboard events are the result. It seems to me that this is ripe for the same multitouch treatment the Apple Magic Mouse got.
That's not to say I didn't learn a lot about the whole input process works. That's always helpful for the troubleshooting. Here's a brief run down:
- First, there's a lot of utilities that have "keyboard" in the name. That doesn't mean they don't work for mice. Yeah, I know: weird.
- It all starts at the kernel. You can see the currently registered input devices with
lsinput. Like with all kernel-level commands, you'll need to
- Input events are recorded in
/dev/input/eventNwhere N is some integer. These events can be probed with
- The kernel registers scancodes. The keymap (accessible from
input-utilspackage) registers the keycodes (and keynames, like
KEY_LEFTCTRL) that should be output in response to the scan codes.
- Next layer up is the
Xserver. As a general rule, your input device (no matter what kind it is) will be run by
evdev(on other Linux systems without HAL, you'll use the
kbddrivers), a generic input driver. Of course, you may have some device that has its own driver, but that's the exception rather than the rule.
- Since the options of such a driver can only be modified when the server starts, we have
xinputwhich allows us to tweak options on the fly. Don't need
…or at least that's how it should work.