Add support of mouse gestures
Created by: antonsoroko
Information
- Solaar version (
solaar --version
andgit describe --tags
): 1.0.5 - Distribution: KUbuntu 20.10
- Kernel version (ex.
uname -srmo
): Linux 5.8.0-44-generic x86_64 GNU/Linux - Output of
solaar show
for the target device (if applicable):
Unifying Receiver
Device path : /dev/hidraw0
USB id : 046d:C52B
Serial : C3C1108B
Firmware : 24.11.B0036
Bootloader : 02.09
Other : AA.AC
Has 2 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
Device activity counters: 1=79, 2=247
1: MX Keys Keyboard
Device path : /dev/hidraw1
WPID : 408A
Codename : MX Keys
Kind : keyboard
Protocol : HID++ 4.5
Polling rate : 20 ms (50Hz)
Serial number: D853A210
Model ID: B35B408A0000
Unit ID: D853A210
Bootloader: BL1 08.00.B0011
Firmware: MPK 12.00.B0011
Other:
The power switch is located on the edge of top right corner.
Supports 33 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
Firmware: Bootloader BL1 08.00.B0011 00008169E8BB
Firmware: Firmware MPK 12.00.B0011 408A8169E8BB
Firmware: Other
Unit ID: D853A210 Model ID: B35B408A0000 Transport IDs: {'btleid': 'B35B', 'wpid': '408A'}
3: DEVICE NAME {0005}
Name: MX Keys Wireless Keyboard
Kind: keyboard
4: WIRELESS DEVICE STATUS {1D4B}
5: RESET {0020}
6: DEVICE FRIENDLY NAME {0007}
7: BATTERY STATUS {1000}
Battery: 100%, discharging, next level 50%.
8: REPROG CONTROLS V4 {1B04}
Key/Button Diversion: {'209': 0, '210': 0, '211': 0, '199': 1, '200': 1, '224': 0, '225': 0, '110': 0, '226': 0, '227': 0, '228': 0, '229': 0, '230': 0, '231': 0, '232': 0, '233': 0, '10': 0, '191': 0, '234': 0, '111': 0, '236': 0, '235': 0}
9: CHANGE HOST {1814}
Change Host: 3:DESKTOP-BMCVF52
10: HOSTS INFO {1815}
Host 0 (paired): ANTIX-PC
Host 1 (unpaired):
Host 2 (paired): DESKTOP-BMCVF52
11: BACKLIGHT2 {1982}
Backlight: True
12: K375S FN INVERSION {40A3}
Сменить поведение Fx: False
13: ENCRYPTION {4100}
14: LOCK KEY STATE {4220}
15: KEYBOARD DISABLE KEYS {4521}
Disable keys: {'1': False, '2': False, '4': False, '8': False, '16': False}
16: MULTIPLATFORM {4531}
Set OS: Windows
17: DFUCONTROL SIGNED {00C2}
18: DEVICE RESET {1802} internal, hidden
19: unknown:1803 {1803} internal, hidden
20: CONFIG DEVICE PROPS {1806} internal, hidden
21: unknown:1813 {1813} internal, hidden
22: OOBSTATE {1805} internal, hidden
23: unknown:1830 {1830} internal, hidden
24: unknown:1890 {1890} internal, hidden
25: unknown:1891 {1891} internal, hidden
26: unknown:18A1 {18A1} internal, hidden
27: unknown:1DF3 {1DF3} internal, hidden
28: unknown:1E00 {1E00} hidden
29: unknown:1EB0 {1EB0} internal, hidden
30: unknown:1861 {1861} internal, hidden
31: unknown:1A20 {1A20} internal, hidden
32: unknown:18B0 {18B0} internal, hidden
Has 24 reprogrammable keys:
0: Host Switch Channel 1 , default: HostSwitch Channel 1 => HostSwitch Channel 1
nonstandard, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
1: Host Switch Channel 2 , default: HostSwitch Channel 2 => HostSwitch Channel 2
nonstandard, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
2: Host Switch Channel 3 , default: HostSwitch Channel 3 => HostSwitch Channel 3
nonstandard, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
3: Brightness Down , default: Brightness Down => Brightness Down
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:1, group:0, group mask:empty
reporting: diverted
4: Brightness Up , default: Brightness Up => Brightness Up
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:2, group:0, group mask:empty
reporting: diverted
5: Mission Control/Task View , default: Mission Control/Task View => Mission Control/Task View
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:3, group:0, group mask:empty
reporting: default
6: Dashboard Launchpad/Action Center, default: Dashboard Launchpad/Action Center => Dashboard Launchpad/Action Center
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:4, group:0, group mask:empty
reporting: default
7: Show Desktop , default: Show Desktop => Show Desktop
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:5, group:0, group mask:empty
reporting: default
8: Backlight Down , default: Backlight Down => Backlight Down
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:6, group:0, group mask:empty
reporting: default
9: Backlight Up , default: Backlight Up => Backlight Up
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:7, group:0, group mask:empty
reporting: default
10: Previous Fn , default: Previous => Previous
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:8, group:0, group mask:empty
reporting: default
11: Play/Pause Fn , default: Play/Pause => Play/Pause
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:9, group:0, group mask:empty
reporting: default
12: Next Fn , default: Next => Next
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:10, group:0, group mask:empty
reporting: default
13: Mute Fn , default: Mute => Mute
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:11, group:0, group mask:empty
reporting: default
14: Volume Down Fn , default: Volume Down => Volume Down
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, analytics key events, pos:12, group:0, group mask:empty
reporting: default
15: Volume Up Fn , default: Volume Up => Volume Up
nonstandard, reprogrammable, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
16: Calculator , default: Calculator => Calculator
nonstandard, reprogrammable, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
17: Screen Capture/Print Screen, default: Screen Capture => Screen Capture
nonstandard, reprogrammable, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
18: App Contextual Menu/Right Click, default: Right Click/App Contextual Menu => Right Click/App Contextual Menu
nonstandard, reprogrammable, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
19: Lock PC , default: WindowsLock => WindowsLock
nonstandard, reprogrammable, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
20: Left Arrow , default: Keyboard Left Arrow => Keyboard Left Arrow
nonstandard, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
21: Right Arrow , default: Keyboard Right Arrow => Keyboard Right Arrow
nonstandard, divertable, persistently divertable, analytics key events, pos:0, group:0, group mask:empty
reporting: default
22: F Lock , default: Do Nothing One => Do Nothing One
is FN, analytics key events, pos:0, group:0, group mask:empty
reporting: default
23: unknown:0034 , default: Do Nothing One => Do Nothing One
nonstandard, analytics key events, pos:0, group:0, group mask:empty
reporting: default
Battery: 100%, discharging, next level 50%.
2: MX Vertical Wireless Mouse
Device path : /dev/hidraw2
WPID : 407B
Codename : MX Vertical
Kind : mouse
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: D8F09E6A
Model ID: B020407BC08A
Unit ID: B7847ED4
Bootloader: BOT 78.00.B0009
Firmware: MPM 16.00.B0009
Other:
Supports 34 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
Firmware: Bootloader BOT 78.00.B0009 AAE28E5B17FF
Firmware: Firmware MPM 16.00.B0009 407B8E5B17FF
Firmware: Other
Unit ID: B7847ED4 Model ID: B020407BC08A Transport IDs: {'btleid': 'B020', 'wpid': '407B', 'usbid': 'C08A'}
3: DEVICE NAME {0005}
Name: MX Vertical Advanced Ergonomic Mouse
Kind: mouse
4: WIRELESS DEVICE STATUS {1D4B}
5: RESET {0020}
6: CRYPTO ID {0021}
7: DEVICE FRIENDLY NAME {0007}
8: BATTERY STATUS {1000}
Battery: 90%, discharging, next level 50%.
9: unknown:1002 {1002}
10: REPROG CONTROLS V4 {1B04}
Key/Button Actions: {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '253': 253}
Key/Button Diversion: {'82': 0, '83': 0, '86': 0, '253': 1, '215': 0}
11: PERSISTENT REMAPPABLE ACTION {1C00}
12: CHANGE HOST {1814}
Change Host: 3:DESKTOP-BMCVF52
13: HOSTS INFO {1815}
Host 0 (unpaired): ANTIX-PC
Host 1 (unpaired):
Host 2 (unpaired): DESKTOP-BMCVF52
14: unknown:2250 {2250}
15: unknown:18B1 {18B1} internal, hidden
16: VERTICAL SCROLLING {2100}
Roller type: standard
Ratchet per turn: 24
Scroll lines: 0
17: LOWRES WHEEL {2130}
Wheel Reports: HID
Scroll Wheel HID++ Scrolling: False
18: ADJUSTABLE DPI {2201}
Чувствительность (DPI): 1000
19: DEVICE RESET {1802} internal, hidden
20: unknown:1803 {1803} internal, hidden
21: CONFIG DEVICE PROPS {1806} internal, hidden
22: unknown:1813 {1813} internal, hidden
23: OOBSTATE {1805} internal, hidden
24: unknown:1830 {1830} internal, hidden
25: unknown:1890 {1890} internal, hidden
26: unknown:1891 {1891} internal, hidden
27: unknown:18A1 {18A1} internal, hidden
28: unknown:1DF3 {1DF3} internal, hidden
29: unknown:1E00 {1E00} hidden
30: unknown:1EB0 {1EB0} internal, hidden
31: unknown:1E22 {1E22} internal, hidden
32: unknown:1861 {1861} internal, hidden
33: unknown:18C0 {18C0} internal, hidden
Has 7 reprogrammable keys:
0: Left Button , default: Left Click => Left Click
mse, reprogrammable, analytics key events, pos:0, group:1, group mask:g1
reporting: default
1: Right Button , default: Right Click => Right Click
mse, reprogrammable, analytics key events, pos:0, group:1, group mask:g1
reporting: default
2: Middle Button , default: Mouse Middle Button => Mouse Middle Button
mse, reprogrammable, divertable, persistently divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
reporting: default
3: Back Button , default: Mouse Back Button => Mouse Back Button
mse, reprogrammable, divertable, persistently divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
reporting: default
4: Forward Button , default: Mouse Forward Button => Mouse Forward Button
mse, reprogrammable, divertable, persistently divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
reporting: default
5: DPI Switch , default: DPI Switch => DPI Switch
mse, reprogrammable, divertable, persistently divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
reporting: diverted
6: Virtual Gesture Button , default: Virtual Gesture Button => Virtual Gesture Button
divertable, virtual, raw XY, force raw XY, pos:0, group:3, group mask:empty
reporting: default
Battery: 90%, discharging, next level 50%.
Is your feature request related to a problem? Please describe.
Describe the solution you'd like Would be nice to be able to configure simple mouse gestures (up/down/left/right) via rules editor in Solaar like you can in Logitech Options.
Describe alternatives you've considered https://github.com/PixlOne/logiops can configure gestures (but w/o UI) for mouses that have separate special gesture on/off button. But not for mouses that don't have this button like mx vertical. Logitech Options uses Fn button from keyboard (e.g. mx keys). (As a side note - when gesture button is pressed mouse pointer freezes, which is convenient/safe.)
Anyway solutions like easystroke or built-in kde gestures do not allow to use keyboard as an initiator of mouse gesture (at least not in a way like Logitech Options does).
Thanks for hearing me out.