Sometimes you plug a new peripheral into your Linux machine and it fails to “just work.” And all too often, even with Google’s assistance, the fix is difficult to find (if a satisfactory solution can be found at all). Here I’m documenting the settings I’ve found for a few input devices that don’t quite work out-of-the-box.

Configuration overview

Configs for X11 on Linux have moved around a lot over the years. Nowadays, settings can either go in .conf files under xorg.conf.d/ directories or in xorg.conf files, and these can live in several locations, including /etc/X11 and /usr/share/X11 (man xorg.conf for details). The preferred way to introduce custom settings is .conf files under /etc/X11/xorg.conf.d/.

Marble Mouse

The Logitech Trackman Marble (aka Marble Mouse) is an affordable trackball that’s great for reducing space requirements and wrist usage. The scroll buttons don’t last more than a few years, and the bearings need regular cleaning, but it remains my preferred pointing device. Custom configuration is required to get ball-based scrolling and middle-click emulation. Fortunately, the options are well-documented on the ArchWiki.

Add the following to /etc/X11/xorg.conf.d/MarbleMouse.conf (or other X11 config location of your choice):

Section "InputClass"
        Identifier  "Marble Mouse"
        MatchProduct "Logitech USB Trackball"
        Option "EmulateWheel" "true"
        Option "EmulateWheelButton" "8"
        Option "XAxisMapping" "6 7"
        Option "Emulate3Buttons" "true"
        # TODO: Don't map scroll button to back button
EndSection

Note that Gnome 3 will need an additional gsettings config to allow middle-click emulation. Also, note that this enables horizontal as well as vertical scrolling, and some versions of the JVM register side scrolls as right clicks, though that problem appears to have been resolved for a few years now. Finally, I think there is an option to unmap the right scroll button from the back button, which will save you headaches when the button inevitably becomes flaky a few years down the line.

LifeChat headset

The Microsoft LifeChat LX-6000 is one of The Wirecutter’s top choices for USB headset. However, on Linux, it can exhibit some strange behavior, such as holding down your mouse button when its mute button is pressed. The key is to tell X11 to not treat it as an input device; it is an audio device, after all, and the mute and volume buttons actually function independently of any OS driver, so interpreting them as input sources is just asking for trouble.

To restore sanity, add the following to /etc/X11/xorg.conf.d/LiftChat.conf (or another X11 config location of your choosing):

Section "InputClass"
        Identifier "LifeChat"
        MatchProduct "Microsoft LifeChat LX-6000"
        Option "Ignore" "true"
EndSection

SpaceMouse

The SpaceNavigator is a 3D mouse that gives you 6-degree-of-freedom input control (equivalent to 6 analog axes of joystick control). Often found in engineering offices for doing CAD work, it is ideal for interacting with 3D modeling applications like Blender and can even be used with the Gamepad API in some web browsers on some platforms (Google Chrome on Windows, for example).

3Dconnexion provides x86 Linux drivers, but there is also the open-source spacenavd that provides an alternate interface in addition to reimplementing the proprietary one.

TODO: Anything special here? Issues starting daemon with desktop environment?