Provide a means to emulate horizontal wheel events
Created by: SlySven
Information
- Solaar version (
solaar --version
andgit describe --tags
): - Distribution:
- Kernel version (ex.
uname -srmo
): - Output of
solaar show
for the target device (if applicable):
1.1.8-48-g04f2adf
Devuan 4.0 "Chimaera"
Linux 5.10.0-21-amd64 x86_64 GNU/Linux
Unifying Receiver
Device path : /dev/hidraw3
USB id : 046d:C52B
Serial : B1B294D4
Firmware : 12.10.B0032
Bootloader : 02.15
Other : AA.AA
Has 2 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
Device activity counters: 2=130
1: {Device omitted}
2: Wireless Mouse MX Master
Device path : /dev/hidraw5
WPID : 4071
Codename : MX Master
Kind : mouse
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: D3596818
Model ID: B01E40710000
Unit ID: 9803B76B
Bootloader: BOT 56.10.B0005
Firmware: MPM 12.10.B0005
Firmware: MPM 12.10.B0005
Other:
The power switch is located on the base.
Supports 32 HID++ 2.0 features:
0: ROOT {0000} V0
1: FEATURE SET {0001} V0
2: DEVICE FW VERSION {0003} V2
Firmware: Bootloader BOT 56.10.B0005 40717622661101
Firmware: Firmware MPM 12.10.B0005 B01E7622661101
Firmware: Firmware MPM 12.10.B0005 40717622661101
Firmware: Other
Unit ID: 9803B76B Model ID: B01E40710000 Transport IDs: {'btleid': 'B01E', 'wpid': '4071'}
3: DEVICE NAME {0005} V0
Name: Wireless Mouse MX Master
Kind: mouse
4: WIRELESS DEVICE STATUS {1D4B} V0
5: CONFIG CHANGE {0020} V0
6: CRYPTO ID {0021} V0
7: BATTERY STATUS {1000} V0
B attery: 50%, discharging, next level 20%.
8: CONFIG DEVICE PROPS {1806} V0 internal, hidden
9: CHANGE HOST {1814} V1
Change Host : 1:Ripley
10: REPROG CONTROLS V4 {1B04} V3
Key/Button Actions (saved): {Left Button:Left Click, Right Button:Right Click, Middle Button:Mouse Middle Button, Back Button:Mouse Back Button, Forward Button:Mouse Forward Button, Mouse Gesture Button:Gesture Button Navigation, Smart Shift:Smart Shift}
Key/Button Actions : {Left Button:Left Click, Right Button:Right Click, Middle Button:Mouse Middle Button, Back Button:Mouse Back Button, Forward Button:Mouse Forward Button, Mouse Gesture Button:Gesture Button Navigation, Smart Shift:Smart Shift}
Key/Button Diversion (saved): {Middle Button:Regular, Back Button:Regular, Forward Button:Regular, Mouse Gesture Button:Mouse Gestures, Smart Shift:Regular}
Key/Button Diversion : {Middle Button:Regular, Back Button:Regular, Forward Button:Regular, Mouse Gesture Button:Diverted, Smart Shift:Regular}
11: ADJUSTABLE DPI {2201} V1
Sensitivity (DPI) (saved): 1200
Sensitivity (DPI) : 1200
12: VERTICAL SCROLLING {2100} V0
Roller type: 3G
Ratchet per turn: 24
Scroll lines: 0
13: SMART SHIFT {2110} V0
Scroll Wheel Ratcheted (saved): Ratcheted
Scroll Wheel Ratcheted : Ratcheted
Scroll Wheel Ratchet Speed (saved): 5
Scroll Wheel Ratchet Speed : 5
14: HIRES WHEEL {2121} V0
Multiplier: 8
Has invert: Normal wheel motion
Has ratchet switch: Normal wheel mode
High resolution mode
HID notification
Scroll Wheel Direction (saved): False
Scroll Wheel Direction : False
Scroll Wheel Resolution (saved): True
Scroll Wheel Resolution : True
Scroll Wheel Diversion (saved): False
Scroll Wheel Diversion : False
15: GESTURE 2 {6501} V0
Gestures (saved): {45: False, 46: False}
Gestures : {46: False, 45: False}
Gestures Diversion (saved): {46: True}
Gestures Diversion : {46: True}
16: DFUCONTROL SIGNED {00C2} V0
17: unknown:1813 {1813} V0 internal, hidden
18: unknown:1830 {1830} V0 internal, hidden
19: unknown:1890 {1890} V0 internal, hidden
20: unknown:1891 {1891} V0 internal, hidden
21: unknown:18A1 {18A1} V0 internal, hidden
22: unknown:18C0 {18C0} V0 internal, hidden
23: unknown:1DF3 {1DF3} V0 internal, hidden
24: unknown:1E00 {1E00} V0 hidden
25: unknown:1EB0 {1EB0} V0 internal, hidden
26: unknown:1803 {1803} V0 internal, hidden
27: unknown:1861 {1861} V0 internal, hidden
28: unknown:9001 {9001} V0 internal, hidden
29: unknown:9200 {9200} V0 internal, hidden
30: unknown:9202 {9202} V0 internal, hidden
31: OOBSTATE {1805} V0 internal, hidden
Has 8 reprogrammable keys:
0: Left Button , default: Left Click => Left Click
mse, pos:0, group:1, group mask:g1
reporting: default
1: Right Button , default: Right Click => Right Click
mse, pos:0, group:1, group mask:g1
reporting: default
2: Middle Button , default: Mouse Middle Button => Mouse Middle Button
mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3
reporting: default
3: Back Button , default: Mouse Back Button => Mouse Back Button
mse, reprogrammable, divertable, raw XY, pos:0, group:2, group mask:g1,g2
reporting: default
4: Forward Button , default: Mouse Forward Button => Mouse Forward Button
mse, reprogrammable, divertable, raw XY, pos:0, group:2, group mask:g1,g2
reporting: default
5: Mouse Gesture Button , default: Gesture Button Navigation => Gesture Button Navigation
mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3
reporting: diverted, raw XY diverted
6: Smart Shift , default: Smart Shift => Smart Shift
mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3
reporting: default
7: Virtual Gesture Button , default: Virtual Gesture Button => Virtual Gesture Button
divertable, virtual, raw XY, force raw XY, pos:0, group:4, group mask:empty
reporting: default
Has 2 gesture(s), 0 param(s) and 4 spec(s):
Thumbwheel Enabled( 0): False Diverted:( 0) True
NaturalScrolling Enabled( 1): False Diverted:(None) None
period unit Spec ( 3): 800
DVI field width Spec ( 1): 8
field widths Spec ( 2): 8
resolution Spec ( 4): 2048
Battery: 50%, discharging, next level 20%.
Is your feature request related to a problem? Please describe. I have a first generation Master MX mouse and the thumb-wheel seems useless.
Describe the solution you'd like To get the thumb-wheel on my Master (original) to generate second scroll-wheel events.
Describe alternatives you've considered I might be missing something blindingly obvious in the rules.
Additional context I have managed to craft some rules that manage to fake Forward and Backward button presses:
%YAML 1.3
---
- Feature: GESTURE 2
- TestBytes: [2, 3, 3, 3]
- Rule:
- TestBytes: [3, 4, 1, 127]
- MouseClick: [button8, 1]
- Rule:
- TestBytes: [3, 4, -128, -1]
- MouseClick: [button9, 1]
...
I am coding on a Qt 5.x project and that supports wheel-events in both the x and y direction nowadays. I notice that the corresponding output for this mouse from the (QPointF) QWheelEvent::angleDelta()
method produces steps of 120
(corresponding to 15 degrees) from the vertical mouse wheel is moved by a single click. It is not diverted, but it is set to "High-sensitivity" mode. I would like to be able to get the same size steps from the thumb-wheel. The positive value range, of the first of the pair of the TestBytes in the (sub)-rule corresponds to the thumb-wheel being rotated upwards by the thumb.
I have to say though, that it was not immediately obvious that I would have to faff around with "Gestures" in order to get the data that that model of mouse sends out for the thumbwheel to be seen by anything.