Logitech Marble Mouse
The Logitech Marble Mouse is a pointing device with four buttons and a trackball, also known as the Trackman Marble. The Marble Mouse is usable either left- or right-handed. It requires some configuration to enable scrolling with the trackball. For a detailed image, see: Logitech Marble Mouse (or here).
Installation
The mouse is detected at boot time or whenever it is "hot-plugged" into a booted system, automatically. No special installation is required.
Sample Configurations
For additional information about available options, see libinput(4) § CONFIGURATION DETAILS.
libinput
GDM 3.16 and XFCE 4.12 use libinput. The following configuration steps are known to work as of Jan 23, 2019:
- Install xf86-input-libinput
- Edit
/etc/X11/xorg.conf.d/10-libinput.conf
. - Append the following content:
Section "InputClass" Identifier "Marble Mouse" MatchProduct "Logitech USB Trackball" Driver "libinput" Option "ScrollMethod" "button" Option "ScrollButton" "8" Option "MiddleEmulation" "true" EndSection
This:
- Enables horizontal and vertical scrolling by pressing and holding the small left button while moving the trackball.
- Enables chord-clicks by pressing the two large buttons simultaneously.
- Uses the small left button for browsing back.
- Uses the small right button for browsing forward.
Or append:
Section "InputClass" Identifier "Marble Mouse" MatchProduct "Logitech USB Trackball" Driver "libinput" Option "ScrollMethod" "button" Option "ScrollButton" "9" Option "MiddleEmulation" "true" Option "HorizontalScrolling" "false" Option "ButtonMapping" "1 2 3 4 5 6 7 9 8" EndSection
This:
- Enables vertical scrolling by pressing and holding the small right button while moving the trackball.
- Disables horizontal scrolling.
- Enables chord-clicks by pressing the two large buttons simultaneously.
- Uses the small left button for browsing forward.
- Uses the small right button for browsing back.
Basic function
Hardware IDs for the Marble Mouse buttons remain constant, regardless of device configuration.
When no additional configuration is specified, buttons are mapped to these functions:
ID | Hardware Action | Result |
---|---|---|
1 | Large button left | normal click |
2 | Both large buttons | middle-click † |
3 | Large button right | right-click |
4 | (not a button) | - |
5 | (not a button) | - |
6 | (not a button) | - |
7 | (not a button) | - |
8 | Small button left | browser back |
9 | Small button right | browser forward |
- Both large buttons pressed simultaneously creates a middle-click.
- † The simultaneous click is enabled by a configuration directive. It requires
Emulate3buttons
. - Terms middle-click and wheel-click are used interchangeably in this document.
- Alternate-click may be used instead of right-click. Typically, this pops up a context menu.
- The result shown above occurs when no modifier key is pressed.
- A different result may occur when a modifier key such as Ctrl is held while a button is clicked.
ID | Hardware Action | Result |
---|---|---|
4 | Roll ball down | move cursor down |
5 | Roll ball up | move cursor up |
6 | Roll ball left | move cursor left |
7 | Roll ball right | move cursor right |
- Cursor motion occurs when no modifier is used.
- A modifier used in conjunction with rolling motion may create an alternate result.
- "Modifier" refers to a key (such as Ctrl) or button (as in mouse button) being held while the trackball is rolled.
Using the trackball in "wheel mode" can require some unusual gestures on the user's part. Using a wheel mouse, for example, you can resize the display font in your web browser using the Ctrl + wheel_roll gesture. With the trackball, this operation becomes Ctrl + hold_button + ball_roll.
Configuration
You may find it helpful to simply jump to the sample configuration and try it.
The configuration sections contain information which may not be of interest to you. Most Arch users will be using a modern version of the X server which requires udev hot plugging.
Gnome 3 is used, for example, in Ubuntu 12.04.
Buttons and trackball
After you locate the sample configuration file you may wish to alter it. You need only concern yourself with three or four setup lines.
Assigning buttons
You may want to assign new actions for button presses. This is done by setting positional parameters.
Values may be changed for buttons 1, 2, 3, 8, and 9. (Button 2 is simply a combination press of the two large buttons.) Do not alter parameters 4, 5, 6, or 7.
# This line makes the default button assignments. Option "ButtonMapping" "1 2 3 4 5 6 7 8 9"
One obvious reason to assign different button actions is to accommodate left-handed placement:
# This line switches the left and right large buttons, and nothing else. For left-handed user. Option "ButtonMapping" "3 2 1 4 5 6 7 8 9"
Another reason to reassign is when you do not like the "normal" assignments — especially the small buttons.
The line below changes the button 2 action to browser forward. Parameter two (both-large-button click) is given value 9 for browser forward. The line below also reassigns both small buttons. We want them to emit middle-click. (Either button may be clicked separately.) Parameters eight and nine are given values of 2 for middle-click.
# Three buttons are given new assignments. For right-handed user. Option "ButtonMapping" "1 9 3 4 5 6 7 2 2"
Parameters are positioned in numeric order. Parameters you might modify are 1, 2, 3, 8, and 9. Parameters 4, 5, 6, and 7 should be left alone; they correspond to trackball movements.
"Both-large-buttons" combination-click
As stated, button 2 is a simultaneous press of the two large buttons.
Experimentation shows, in the absence of a configuration directive, this action produces an indeterminate result. It appears to issue some command, but the result is inconsistent with my expectation of middle-click. The result seems dependent on whichever object is foremost. It is inconsistent regardless. You need to enable the combination-click:
# Emulate3Buttons refers to the act of pressing buttons A and D # simultaneously to emulate a middle-click or wheel click. Option "Emulate3Buttons" "true"
This is sufficient to enable the default mapping of button 2, which is wheel-click. See minimal configuration.
As at May 2012, there is an issue with Gnome 3 and middle click emulation. Gnome 3 is used, for example, in Ubuntu 12.04. Gnome 3 also sets the middle click property, and defaults to "false". Since Gnome does its settings after Xorg, the Gnome setting overrides the xorg setting, and emulation is disabled. The Gnome setting can be changed with this command:
gsettings set org.gnome.settings-daemon.peripherals.mouse middle-button-enabled true
You only need to do this once (per user) as Gnome remembers the settings between sessions. There is a launchpad bug on the issue in case you are interested.
Scroll modifier
One huge limitation for the Marble Mouse is the lack of a scroll wheel or scroll ring. This limitation is overcome by assigning a scroll modifier: a mouse button which allows the trackball to scroll. When the scroll modifier is held, the trackball scrolls. Although a scroll modifier is assigned by default (see basic function), the scroll modifier is not enabled by default. In addition to enabling the scroll modifier, you may also assign it to a different button.
The standard scroll setting defines the small button for scrolling — that is good, — but the same button has a default "click" action that is browser back. A better choice is middle-click. Middle-click corresponds to what you would expect from years of wheel mouse usage.
Putting complaints aside (these are addressed by reassigning small buttons), you specify a button to be the scroll modifier:
Option "EmulateWheel" "true" Option "EmulateWheelButton" "8" # Button 8 is the small button on the left side, which works well for right-handed users. # Button 9 is the small button on the right side, which works well for left-handed users. # Button 2 cannot be assigned as the scroll modifier; AKA "EmulateWheelButton".
Disable horizontal scrolling
A particular configuration line enables horizontal scrolling. You disable horizontal scrolling by commenting that line out.
# A hash mark disables a configuration line. # Option "XAxisMapping" "6 7"
I use both scrolling directions, but some may find this restriction helpful. You cannot disable vertical scrolling in a similar fashion — not that you would want to, anyway.
Right-side or left-side
Previous sections explain how to modify your configuration file for either left or right placement.
- On occasion, you may wish to switch between left-handed and right-handed usage.
- I do this when I feel the early signs of repetitive strain injury.
To switch to the opposite placement, I manually edit my configuration file and restart the X server. Comments in the file remind me which lines to change. You could devise a script to make switching more automatic, if you wanted to.
- With Arch Linux, I prefer a lightweight or non-existent desktop environment running the Openbox window manager.
Other desktop environments may have widgets to simplify — or complicate, depending how you view it — switching between right and left. With Ubuntu 10.10, for example, you need only mark a box in the mouse control panel to effect a button switch. (You must change the configuration file to get the correct scroll modifier assignment, however. Also, Ubuntu ignores large button assignments in the configuration file; the control panel makes them unnecessary.)
System-wide or per-user
If you want the configuration to be system wide, you can add this line to the InputDevice-Section.
Option "ButtonMapping" "1 8 3 2 9"
For a per-user-configuration you need to put this in your ~/.xinitrc.
xinput set-button-map "Logitech USB Trackball" 1 8 3 4 5 6 7 2 9 10 11 12 13
Xorg input hotplugging
Two expositions help you configure a trackball with buttons for click, middle-click, right-click, and scrolling. The first exposition uses Xorg Input Hotplugging; the second does not. Edit them to suit your preferences.
Add this entry to your /etc/X11/xorg.conf
:
Section "InputClass" Identifier "Logitech Trackball" MatchProduct "Trackball" Option "ButtonMapping" "1 8 3 4 5 6 7 2 9" Option "EmulateWheel" "True" Option "EmulateWheelButton" "9" Option "XAxisMapping" "6 7" EndSection
To learn more about the used parameters you should read evdev(4) § CONFIGURATION DETAILS.
Without Xorg hotplugging
The mouse device entry in /etc/X11/xorg.conf
should look like this:
Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ExplorerPS/2" Option "Buttons" "9" Option "ZAxisMapping" "4 5" Option "XAxisMapping" "6 7" Option "EmulateWheelButton" "9" Option "EmulateWheel" "true" EndSection
The "Auto"
option for "Protocol"
works fine, too.
Of course you can use the name you prefer as the Identifier
, as long as it is the same you use as InputDevice
in the Section "ServerLayout"
.
GNOME 3 and Wayland
When running Wayland, the aforementioned configuration files have no effect. GNOME 3 does, however, provide a limited set of configuration options for enabling mouse wheel emulation and adjusting the acceleration behaviour of the mouse cursor.
These settings are also available via dconf under /org/gnome/desktop/peripherals/trackball/
Middle-click emulation
To enable the combination of left and right buttons to emulate a middle-click, enter
gsettings set org.gnome.desktop.peripherals.trackball middle-button-emulation true
Mouse wheel emulation
GNOME provides the option to assign a scroll modifier button. To do this, enter
gsettings set org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button <button_id>
, where <button_id> is the id of the mouse button that should act as the modifier (see basic function). To deactivate mouse wheel emulation, set this to 0.
Acceleration profile
The trackball can be configured to either use a "flat" or "adaptive" acceleration profile or to just use its "default" one. To do that, set
gsettings set org.gnome.desktop.peripherals.trackball accel-profile <profile>
to the desired value.
Sway and Wayland
When running Wayland, the aforementioned configuration files have no effect. Sway provides a limited set of configuration options for enabling mouse wheel emulation and adjusting the acceleration behaviour of the mouse cursor. In your sway configuration file, add the following section to enable scrolling with the marble while the small left button is pressed:
input "1133:50184:Logitech_USB_Trackball" { scroll_method on_button_down }
Hyprland
Hyprland also supports a limited set of options for wheel emulation. Add the following block your configuration:
hyprland.conf
device { name = logitech-usb-trackball scroll_method = on_button_down }
hyprctl devices
.You can also configure on_button_up
or edge
per the Hyprland input documentation.
The middle click emulation when clicking both the left mouse button and the right mouse button simultaneously seems to work without additional configuration.
Plasma and Wayland
When running a Plasma Desktop session in Wayland, you can configure scrolling with qdbus
, you just have to find the right event number, which you can determine from /dev
, for example:
event="$(basename $(readlink /dev/input/by-id/usb-Logitech_USB_Trackball-event-mouse))" qdbus org.kde.KWin /org/kde/KWin/InputDevice/$event org.kde.KWin.InputDevice.scrollOnButtonDown true
By default the small left button is used. If you want to use the small right button, set
qdbus org.kde.KWin /org/kde/KWin/InputDevice/$event org.kde.KWin.InputDevice.scrollButton 276
For other buttons, follow the table below:
Button | Kwin button code | Function (default) |
---|---|---|
Large button left | 272 | normal click |
Large button right | 273 | right click |
Small button Left | 275 | browser forward |
Small button right | 276 | browser back |
Sample configuration
The sample configuration modifies and extends the basic function of the Marble Mouse.
In this example, either of the two small buttons may be clicked to send a wheel-click. Wheel-click means the same as "middle-click" here. In addition, one of the small buttons provides scrolling in conjunction with the trackball. Note that only one small button has the ability for scrolling, although both small buttons are able to wheel-click.
Finally, clicking both large buttons simultaneously sends the browser back event. There is no button to send browser forward.
ID | Hardware Action | Result (this configuration) | New assignment |
---|---|---|---|
1 | Large button left | normal click | 1 |
2 | Both large buttons | browser back | 8 |
3 | Large button right | right-click | 3 |
8 | Small button left † | wheel-click | 2 |
9 | Small button right ‡ | wheel-click | 2 |
- Both large buttons pressed simultaneously results in browser back.
- Either small button, when clicked, results in middle-click.
- † This small button allows trackball scrolling when held down. It is the scroll modifier.
- ‡ This button can be mapped for scrolling function instead. This button works better for left-side placement because it lies near the thumb of one's left-hand. Only one button can be assigned as the scroll modifier as far as I know.
Configuration file
The following lines are appended to /etc/X11/xorg.conf.d/10-evdev.conf
Note: Users of other Linux distributions may find the configuration file in another location. Ubuntu uses /usr/share/X11/xorg.conf.d/10-evdev.conf
This example is set up for right-hand placement with horizontal scrolling disabled.
# - - - Logitech Marble Mouse Settings - - - # # The Logitech Marble Mouse buttons are mapped [A-D] from left to right: # A (large); B (small) | C (small); D (large). # # Preferred options for right-handed usage: # A = normal click [1] # B = middle-click [2] # C = middle-click [2] # D = right-click [3] # Hold button B while rolling trackball to emulate wheel-scrolling. # # Preferred options for left-handed usage: # A = right-click [3] # B = middle-click [2] # C = middle-click [2] # D = normal click [1] # Hold button C while rolling trackball to emulate wheel-scrolling. # Pressing both large buttons simultaneously (b) produces a "back" action. Section "InputClass" Identifier "Marble Mouse" MatchProduct "Logitech USB Trackball" MatchIsPointer "on" MatchDevicePath "/dev/input/event*" Driver "evdev" # Physical button #s: A b D - - - - B C # Option "ButtonMapping" "1 8 3 4 5 6 7 2 2" right-hand placement # Option "ButtonMapping" "3 8 1 4 5 6 7 2 2" left-hand placement # b = A & D Option "ButtonMapping" "1 8 3 4 5 6 7 2 2" # EmulateWheel: Use Marble Mouse trackball as mouse wheel # Factory Default: 8; Use 9 for right side small button Option "EmulateWheel" "true" Option "EmulateWheelButton" "8" # EmulateWheelInertia: How far (in pixels) the pointer must move to # generate button press/release events in wheel emulation mode. # Factory Default: 50 Option "EmulateWheelInertia" "10" # Axis Mapping: Enable vertical [ZAxis] and horizontal [XAxis] scrolling Option "ZAxisMapping" "4 5" # Option "XAxisMapping" "6 7" # Emulate3Buttons: Required to interpret simultaneous press of two large # buttons, A & D, as a seperate command, b. # Factory Default: true Option "Emulate3Buttons" "true" EndSection
Restarting X
Changes made to xorg configuration files do not take effect until the X session is restarted. To restart the X session, simply log out from your window manager and log back in.
Minimal configuration
Using evdev
At times it can be useful to start with the absolute minimum and build from there. This is one facet of The Arch Way. In this spirit, I decided to see how few lines I might use to create a usable Marble Mouse configuration.
You can omit all configuration lines and the Marble Mouse is still usable for basic pointing and clicking. However, it will not be able to scroll. The "both-large-button" simultaneous click produces indeterminate results — experimentation shows this.
Given that you are satisfied with default button settings and you wish only to enable scrolling and the "both-large-button" click, you need these lines. The following lines are appended to /etc/X11/xorg.conf.d/10-evdev.conf
.
Section "InputClass" Identifier "Marble Mouse" MatchProduct "Logitech USB Trackball" Option "EmulateWheel" "true" Option "EmulateWheelButton" "8" Option "XAxisMapping" "6 7" Option "Emulate3Buttons" "true" EndSection
Additional tweaks
Console (gpm)
See Console mouse support for details. Within the console you can use gpm
with type option set to imps2. Edit /etc/conf.d/gpm
such that:
GPM_ARGS="-m /dev/input/mice -t imps2"
This lets you use the large left button for selecting text and the right button to extend the selection. The small left button acts as a middle-click; it pastes the selection.
Firefox browser
Older versions of Firefox map horizontal-scrolling hardware to perform browser back and browser forward navigation.
This makes vertical scrolling using the trackball almost impossible.
The slightest horizontal motion triggers a URL redirection. To fix this:
- Enter
about:config
in the location bar - Find the internal variable named
mousewheel.horizscroll.withnokey.action
. Set its value to 0. - It may be useful to set
mousewheel.horizscroll.withnokey.numlines
to 1 as well.
See also
- Arch wiki documentation: All Mouse Buttons Working
- Arch wiki documentation: Xorg#Configuration
- Marble mouse scroll wheel: Replacement for SetPoint driver
- Joe Shaw blog post: Linux input ecosystem
- Ubuntu community: Logitech Marble Mouse
- Chrome web store: AutoScroll extension