Skip to content

Instantly share code, notes, and snippets.

@superjamie
Created June 14, 2020 01:54
Show Gist options
  • Save superjamie/abc574cb7c4c2a39cc6e0f2d368b7dc0 to your computer and use it in GitHub Desktop.
Save superjamie/abc574cb7c4c2a39cc6e0f2d368b7dc0 to your computer and use it in GitHub Desktop.
xorg.conf for Logitech Trackman Marble Mouse
# https://help.ubuntu.com/community/Logitech_Marblemouse_USB
# https://wiki.archlinux.org/index.php/Logitech_Marble_Mouse
#
# Xorg Functions
# 1 = Left Click
# 2 = Middle Click
# 3 = Right Click
# 4 = Mouse Cursor Down
# 5 = Mouse Cursor Up
# 6 = Mouse Cursor Left
# 7 = Mouse Cursor Right
# 8 = Browser Back
# 9 = Browser Forward
#
# Xorg Physical Button Locations
# 1 = Left Large Button
# 2 = Left Small and Right Small together when Emulate3Buttons is enabled
# 3 = Right Large Button
# 8 = Left Small Button (back)
# 9 = Right Small Button (forward)
#
# For right hand usage:
#
# Left Large (1) = Normal Click (1)
# Right Large (3) = Right Click (3)
# Left Small (8) = Middle Click (2)
# Right Small (9) = Back (8)
# Hold Left Small (8) and move trackball to scroll
# Press both large buttons to simulate Middle Click (2)
#
# For left hand usage:
#
# Left Large (1) = Right Click (3)
# Right Large (3) = Normal Click (1)
# Left Small (8) = Back (8)
# Right Small (9) = Middle Click (2)
# Hold Right Small (9) and move trackball to scroll
# Press both large buttons to simulate Middle Click (2)
Section "InputClass"
Identifier "Marble Mouse"
MatchProduct "Logitech USB Trackball"
#MatchIsPointer "on"
#MatchDevicePath "/dev/input/event*"
######## evdev(4) - requires xserver-xorg-input-evdev in Ubuntu 20.04
Driver "evdev"
# Xorg physical numbers: 1 2 3 4 5 6 7 8 9
# Description: L m R l r (m = L+R)
#
# Right Hand:
# Option "ButtonMapping" "1 8 3 4 5 6 7 2 8"
#
# Left Hand:
Option "ButtonMapping" "3 8 1 4 5 6 7 8 2"
# EmulateWheel: Use Marble Mouse trackball as mouse wheel
Option "EmulateWheel" "true"
# Right Hand:
# Option "EmulateWheelButton" "8"
# Left Hand:
Option "EmulateWheelButton" "9"
# Axis Mapping: Enable vertical [ZAxis] and horizontal [XAxis] scrolling
Option "ZAxisMapping" "4 5"
Option "XAxisMapping" "6 7"
# 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"
# Emulate3Buttons: Press both large buttons to simulate middle click
Option "Emulate3Buttons" "true"
######## libinput(4)
# could never get this working how i wanted, too lazy to learn button mapping
# Driver "libinput"
#
# Option "ButtonMapping" "1 2 3 4 5 6 7 9 8"
# Option "LeftHanded" "true"
# Option "MiddleEmulation" "true"
#
# Option "ScrollMethod" "button"
# Option "ScrollButton" "9"
# Option "HorizontalScrolling" "true"
EndSection
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment