Logitech Trackman / Marble USB trackball scroll wheel emulation?

I use a Logitech Trackman / Marble USB trackball on my F43 Gnome/Wayland install. This trackball does not have a hardware scroll wheel. I wanted to try defining a scroll modifier in hopes that it would allow me to hold down one mouse button and move the ball to emulate a scroll wheel.

As usual, the Arch wiki has the the exact instructions on how to do this but I haven’t been able to get it to work:

Since I’m using Gnome/Wayland, I did:

gsettings set org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button 8

Then I checked it to make sure it worked:

gsettings list-recursively  org.gnome.desktop.peripherals.trackball
org.gnome.desktop.peripherals.trackball accel-profile ‘default’
org.gnome.desktop.peripherals.trackball middle-click-emulation true
org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button 8
org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button-lock false

However, when I hold down the Small left button and moved the ball, it doesn’t scroll. I’ve tried it in Firefox, Chrome in the Gnome mouse settings Test Settings. Instead, it does the default mapping for that button which is browser back.

I have several potential complications that could be to blame. First, I use the trackball left handed but I’ve tried all the buttons. Second, I have input-remapper installed and I use that to remap the small right button to send the Meta key. Third, my trackball is connected through a Level1Tech KVM.

sudo libinput list-devices lists both the trackball and a virtual one created by input-remapper (I removed devices I didn’t think mattered from the output) :

sudo libinput list-devices

Device:                  Logitech USB Trackball
Kernel:                  /dev/input/event2
Id:                      usb:046d:c408
Group:                   4
Seat:                    seat0, default
Capabilities:            pointer
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             disabled
Nat.scrolling:           disabled
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          button
Scroll button:           BTN_SIDE
Scroll button lock:      disabled
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          flat *adaptive custom
Rotation:                0.0
Area rectangle:          n/a

Device:                  Generic Virtual HID Mouse
Kernel:                  /dev/input/event5
Id:                      usb:09eb:0131
Group:                   6
Seat:                    seat0, default
Capabilities:            pointer
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             disabled
Nat.scrolling:           disabled
Middle emulation:        disabled
Calibration:             n/a
Scroll methods:          button
Scroll button:           BTN_MIDDLE
Scroll button lock:      disabled
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          flat *adaptive custom
Rotation:                0.0
Area rectangle:          n/a

Device:                  Generic Virtual HID Consumer Control
Kernel:                  /dev/input/event7
Id:                      usb:09eb:0131
Group:                   6
Seat:                    seat0, default
Capabilities:            keyboard pointer
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           disabled
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  input-remapper Logitech USB Trackball forwarded
Kernel:                  /dev/input/event22
Id:                      usb:046d:c408
Group:                   9
Seat:                    seat0, default
Capabilities:            pointer
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             disabled
Nat.scrolling:           disabled
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          button
Scroll button:           BTN_SIDE
Scroll button lock:      disabled
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          flat *adaptive custom
Rotation:                0.0
Area rectangle:          n/a

When I run sudo libinput debug-events and then click the small left button I get:

sudo libinput debug-events
-event1   DEVICE_ADDED                 Power Button                      seat0 default group1  cap:k
-event3   DEVICE_ADDED                 Video Bus                         seat0 default group2  cap:k
-event0   DEVICE_ADDED                 Power Button                      seat0 default group3  cap:k
-event2   DEVICE_ADDED                 Logitech USB Trackball            seat0 default group4  cap:p left scroll-nat scroll-button
-event19  DEVICE_ADDED                 Microsoft Natural® Ergonomic Keyboard 4000 seat0 default group5  cap:k
-event20  DEVICE_ADDED                 Microsoft Natural® Ergonomic Keyboard 4000 seat0 default group5  cap:kp scroll-nat
-event4   DEVICE_ADDED                 Generic Virtual HID               seat0 default group6  cap:k
-event5   DEVICE_ADDED                 Generic Virtual HID Mouse         seat0 default group6  cap:p left scroll-nat scroll-button
-event6   DEVICE_ADDED                 Generic Virtual HID System Control seat0 default group6  cap:k
-event7   DEVICE_ADDED                 Generic Virtual HID Consumer Control seat0 default group6  cap:kp scroll-nat
-event9   DEVICE_ADDED                 Eee PC WMI hotkeys                seat0 default group7  cap:k
-event21  DEVICE_ADDED                 input-remapper keyboard           seat0 default group8  cap:k
-event22  DEVICE_ADDED                 input-remapper Logitech USB Trackball forwarded seat0 default group9  cap:p left scroll-nat scroll-button
event22  POINTER_BUTTON               +0.000s	BTN_SIDE (275) pressed, seat count: 1
event22  POINTER_BUTTON               +0.080s	BTN_SIDE (275) released, seat count: 0

I also tried enabling middle-click-emulation and it worked immediately.

Any ideas what I might be doing wrong? It may very well be user error as I’ve never tried to do a scroll modifier.

Thanks.

FYI, it looks like this is an incompatibility between the Gnome gsettings org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button command and input-remapper. When I disabled input-remapper, it works fine.

When I asked google about this, the AI says:

No, the GNOME scroll-wheel-emulation-button setting and the input-remapper tool are known to conflict with each other. They generally do not work together well.

Key Points

Conflict: Users and developers have reported that using both features simultaneously causes conflicts. The two systems interfere with how mouse button events are processed and remapped.

Alternative Approaches:

  • Use one or the other: If you want to use input-remapper to remap a button for scrolling, you should disable the GNOME scroll-wheel-emulation-button setting.
  • GNOME settings directly: Many users find success configuring scroll wheel emulation directly using gsettings or dconf commands, often for trackballs, without needing input-remapper for that specific function.

Would still love to find a solution to this.

Looks like this is a known issue with input-remapper: