Support Multiplatform layout switching (features MULTIPLATFORM and DUALPLATFORM)
Created by: kaechele
Information
- Output of
solaar show
for the target device (if applicable):
2: K850 Performance Wireless Keyboard
Codename : K850
Kind : keyboard
Wireless PID : 4062
Protocol : HID++ 4.5
Polling rate : 20 ms (50Hz)
Serial number: 1A943920
Bootloader: BOT 43.01.B0004
Firmware: MPK 04.03.B0015
Other:
The power switch is located on the edge of top right corner.
Supports 31 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: WIRELESS DEVICE STATUS {1D4B}
5: RESET {0020}
6: DEVICE FRIENDLY NAME {0007}
7: BATTERY STATUS {1000}
8: CHANGE HOST {1814}
9: HOSTS INFO {1815}
10: REPROG CONTROLS V4 {1B04}
11: PERSISTENT REMAPPABLE ACTION {1C00}
12: K375S FN INVERSION {40A3}
13: ENCRYPTION {4100}
14: LOCK KEY STATE {4220}
15: KEYBOARD DISABLE {4521}
16: MULTIPLATFORM {4531}
17: DFUCONTROL SIGNED {00C2}
18: unknown:1803 {1803} internal, hidden
19: CONFIG DEVICE PROPS {1806} internal, hidden
20: OOBSTATE {1805} internal, hidden
21: unknown:1813 {1813} internal, hidden
22: unknown:1830 {1830} internal, hidden
23: unknown:1861 {1861} 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:18B0 {18B0} internal, hidden
Has 21 reprogrammable keys:
0: unknown:00D1 , default: unknown:00AE => unknown:00D1
nonstandard, divertable, persistently divertable, pos:0, group:0, gmask:0
1: unknown:00D2 , default: unknown:00AF => unknown:00D2
nonstandard, divertable, persistently divertable, pos:0, group:0, gmask:0
2: unknown:00D3 , default: unknown:00B0 => unknown:00D3
nonstandard, divertable, persistently divertable, pos:0, group:0, gmask:0
3: unknown:00D5 , default: unknown:00B2 => unknown:00D5
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:1, group:0, gmask:0
4: unknown:00D6 , default: unknown:00B3 => unknown:00D6
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:2, group:0, gmask:0
5: unknown:00BD , default: unknown:0099 => unknown:00BD
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:3, group:0, gmask:0
6: unknown:00D4 , default: unknown:00B1 => unknown:00D4
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:4, group:0, gmask:0
7: Previous , default: Previous => Previous
is FN, FN sensitive, divertable, persistently divertable, pos:5, group:0, gmask:0
8: Play/Pause , default: Play/Pause => Play/Pause
is FN, FN sensitive, divertable, persistently divertable, pos:6, group:0, gmask:0
9: Next , default: Next => Next
is FN, FN sensitive, divertable, persistently divertable, pos:7, group:0, gmask:0
10: Mute , default: Mute => Mute
is FN, FN sensitive, divertable, persistently divertable, pos:8, group:0, gmask:0
11: Volume Down , default: Volume Down => Volume Down
is FN, FN sensitive, divertable, persistently divertable, pos:9, group:0, gmask:0
12: Volume Up , default: Volume Up => Volume Up
is FN, FN sensitive, divertable, persistently divertable, pos:10, group:0, gmask:0
13: unknown:00C2 , default: WindowsLock => unknown:00C2
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:11, group:0, gmask:0
14: unknown:00DD , default: unknown:00BA => unknown:00DD
is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:12, group:0, gmask:0
15: unknown:00BF , default: unknown:009B => unknown:00BF
is FN, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
16: Calculator , default: Calculator => Calculator
is FN, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
17: unknown:00C1 , default: unknown:0070 => unknown:00C1
is FN, divertable, persistently divertable, pos:0, group:0, gmask:0
18: unknown:00C0 , default: unknown:006F => unknown:00C0
is FN, divertable, persistently divertable, pos:0, group:0, gmask:0
19: unknown:00DE , default: Do Nothing One => unknown:00DE
is FN, pos:0, group:0, gmask:0
20: unknown:0034 , default: Do Nothing One => unknown:0034
nonstandard, pos:0, group:0, gmask:0
Battery: 90%, discharging.
Is your feature request related to a problem? Please describe.
A Linux client will always use the keyboard layout of the last connected platform (Windows/Mac). Let me elaborate:
Consider the following set-up:
- Thunderbolt Docking Station
- Logitech Unifying receiver connected to docking station
- Docking station is used alternately with a MacBook, a Fedora Linux laptop and a Windows laptop
- K850 Keyboard
The K850 keyboard has multi-platform support, i.e. is has keys that are printed for use with Mac (grey labelling) and Windows (white labelling).
When the last connected device was a Mac then the Linux machine will use the keyboard layout corresponding to the grey labelling, i.e. on the K850 this specifically means the Super key will be on the key labelled Alt / Cmd
(Windows/Mac respectively).
If the last connected device was a Windows computer then it will use the Windows layout (white labelling), i.e. the Super key is the one labelled Start / Alt Opt
which is physically located left of the Alt / Cmd
key.
In essence, as a Linux user you will experience a different behaviour depending on which type of operating system was connected last. Basically every time the switch happens you will have to reassess which key is now Alt
and which one is Super
.
Describe the solution you'd like Whenever the Keyboard is connected to a Linux client the Windows Layout should be requested.
Describe alternatives you've considered N/A
Additional context I believe this issue could be much more pronounced on keyboard layouts that label even more keys for dual use (i.e. German). I have both a US and a German K850 but haven't been able to test with the German one.
My wild guess is that this is what the MULTIPLATFORM {4531}
feature does and thus it'd fall under #582 (closed)