Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • S Solaar
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 10
    • Issues 10
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 2
    • Merge requests 2
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • pwr-Solaar
  • Solaar
  • Issues
  • #784
Closed
Open
Issue created May 19, 2020 by Administrator@rootContributor

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)

Assignee
Assign to
Time tracking