Improve Solaar rules in Wayland
Created by: intelfx
Information
- Solaar version:
1.0.4.r54.g0427e56
- Distribution: Arch GNU/Linux
- Kernel version: 5.8.x, 5.9.x
- Output of
solaar show
:
1: Craft Advanced Keyboard
Device path : /dev/hidraw1
WPID : 4066
Codename : Craft
Kind : keyboard
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: 02AFBAD2
Model ID: B35040660000
Unit ID: 78CEC42D
Bootloader: BOT 41.01.B0015
Firmware: MPK 07.01.B0015
Other:
Other:
The power switch is located on the edge of top right corner.
Supports 39 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
Firmware: Bootloader BOT 41.01.B0015 0000B6A2C54601
Firmware: Firmware MPK 07.01.B0015 4066B6A2C54601
Firmware: Other
Firmware: Other
Unit ID: 78CEC42D Model ID: B35040660000 Transport IDs: {'btleid': 'B350', 'wpid': '4066'}
3: DEVICE NAME {0005}
Name: Craft Advanced Keyboard
Kind: keyboard
4: WIRELESS DEVICE STATUS {1D4B}
5: RESET {0020}
6: DEVICE FRIENDLY NAME {0007}
7: BATTERY STATUS {1000}
Battery: 50%, discharging, next level 20%.
8: CHANGE HOST {1814}
Change Host: 1:able
9: HOSTS INFO {1815}
Host 0 (paired):
Host 1 (paired): ARCADIA
Host 2 (paired): whitepad
10: BACKLIGHT2 {1982}
Backlight: True
11: REPROG CONTROLS V4 {1B04}
Key/Button Diversion: {'209': 0, '210': 0, '211': 0, '199': 0, '200': 0, '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}
12: PERSISTENT REMAPPABLE ACTION {1C00}
13: K375S FN INVERSION {40A3}
Swap Fx function: False
14: ENCRYPTION {4100}
15: LOCK KEY STATE {4220}
16: KEYBOARD DISABLE KEYS {4521}
Disable keys: {'1': False, '2': False, '4': False, '8': False, '16': False}
17: MULTIPLATFORM {4531}
Set OS: Windows
18: CROWN {4600}
Divert crown events: False
19: DFUCONTROL SIGNED {00C2}
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:1801 {1801} internal, hidden
28: unknown:18A1 {18A1} internal, hidden
29: unknown:9280 {9280} internal, hidden
30: unknown:1A20 {1A20} internal, hidden
31: unknown:1DF3 {1DF3} internal, hidden
32: unknown:1E00 {1E00} hidden
33: unknown:1EB0 {1EB0} internal, hidden
34: unknown:1861 {1861} internal, hidden
35: unknown:18B0 {18B0} internal, hidden
36: unknown:92C0 {92C0} internal, hidden
37: unknown:9203 {9203} internal, hidden
38: unknown:3615 {3615} internal, hidden
Has 24 reprogrammable keys:
0: Host Switch Channel 1 , default: HostSwitch Channel 1 => HostSwitch Channel 1
nonstandard, divertable, persistently divertable, 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, 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, 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, pos:1, group:0, group mask:empty
reporting: default
4: Brightness Up , default: Brightness Up => Brightness Up
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:2, group:0, group mask:empty
reporting: default
5: Mission Control/Task View , default: Mission Control/Task View => Mission Control/Task View
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, 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, 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, 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, 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, pos:7, group:0, group mask:empty
reporting: default
10: Previous Fn , default: Previous => Previous
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, 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, pos:9, group:0, group mask:empty
reporting: default
12: Next Fn , default: Next => Next
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:10, group:0, group mask:empty
reporting: default
13: Mute Fn , default: Mute => Mute
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, 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, pos:12, group:0, group mask:empty
reporting: default
15: Volume Up Fn , default: Volume Up => Volume Up
nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, group mask:empty
reporting: default
16: Calculator , default: Calculator => Calculator
nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, group mask:empty
reporting: default
17: Screen Capture/Print Screen, default: Screen Capture => Screen Capture
nonstandard, reprogrammable, divertable, persistently divertable, 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, pos:0, group:0, group mask:empty
reporting: default
19: Lock PC , default: WindowsLock => WindowsLock
nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, group mask:empty
reporting: default
20: Left Arrow , default: Keyboard Left Arrow => Keyboard Left Arrow
nonstandard, divertable, persistently divertable, pos:0, group:0, group mask:empty
reporting: default
21: Right Arrow , default: Keyboard Right Arrow => Keyboard Right Arrow
nonstandard, divertable, persistently divertable, pos:0, group:0, group mask:empty
reporting: default
22: F Lock , default: Do Nothing One => Do Nothing One
is FN, pos:0, group:0, group mask:empty
reporting: default
23: unknown:0034 , default: Do Nothing One => Do Nothing One
nonstandard, pos:0, group:0, group mask:empty
reporting: default
Battery: 50%, discharging, next level 20%.
The newly introduced rule-based crown handling (#987 (closed), #988) does not appear to work in Wayland environments. As I understand, this is not a bug but a deliberately missing feature.
Describe the solution you'd like
It would be nice to have this working in Wayland environments.
Describe alternatives you've considered
I don't know, use X11 maybe.
Additional context
As I understand, input injection can happen via non-X11-dependent mechanisms, like pynput's uinput backend. What else does solaar need from the window system?