pwr-Solaar / Solaar

Linux device manager for Logitech devices
https://pwr-solaar.github.io/Solaar
GNU General Public License v2.0
5.55k stars 411 forks source link

Logitech K600 is supported but not listed in devices.md #753

Closed fedelway closed 4 years ago

fedelway commented 4 years ago

Information

The logitech K600 keyboard with touchpad is supported by solaar, but it is not listed in devices.md. Here is the output for 'solaar show':

Unifying Receiver
  Device path  : /dev/hidraw0
  USB id       : 046d:c52b
  Serial       : E16D9B84
    Firmware   : 24.09.B0033
    Bootloader : 02.09
    Other      : AA.E5
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless (0x000100)
  Device activity counters: (empty)

  1: K600 TV
     Codename     : K600 TV
     Kind         : keyboard
     Wireless PID : 4078
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: 202A5413
        Bootloader: BOT 73.00.B0015
          Firmware: MPK 08.00.B0015
             Other: 
             Other: 
     Supports 36 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: unknown:0007           {0007}   
         7: BATTERY STATUS         {1000}   
         8: REPROG CONTROLS V4     {1B04}   
         9: unknown:1C00           {1C00}   
        10: SWAP BUTTON            {2005}   
        11: CHANGE HOST            {1814}   
        12: unknown:1815           {1815}   
        13: NEW FN INVERSION       {40A2}   
        14: ENCRYPTION             {4100}   
        15: LOCK KEY STATE         {4220}   
        16: KEYBOARD DISABLE       {4521}   
        17: unknown:4531           {4531}   
        18: TOUCHPAD RAW XY        {6100}   
        19: GESTURE 2              {6501}   
        20: unknown:00C2           {00C2}   
        21: unknown:1802           {1802}   internal, hidden
        22: unknown:1803           {1803}   internal, hidden
        23: unknown:1806           {1806}   internal, hidden
        24: unknown:1813           {1813}   internal, hidden
        25: unknown:1805           {1805}   internal, hidden
        26: unknown:1830           {1830}   internal, hidden
        27: unknown:1890           {1890}   internal, hidden
        28: unknown:1891           {1891}   internal, hidden
        29: unknown:18A1           {18A1}   internal, hidden
        30: unknown:1DF3           {1DF3}   internal, hidden
        31: unknown:1E00           {1E00}   hidden
        32: unknown:1EB0           {1EB0}   internal, hidden
        33: unknown:1861           {1861}   internal, hidden
        34: unknown:18B0           {18B0}   internal, hidden
        35: unknown:1F11           {1F11}   internal, hidden
     Has 19 reprogrammable keys:
         0: unknown:00D1              , default: unknown:00AE                => unknown:00D1              
             is FN, FN sensitive, divertable, persistently divertable, pos:1, group:0, gmask:0
         1: unknown:00D2              , default: unknown:00AF                => unknown:00D2              
             is FN, FN sensitive, divertable, persistently divertable, pos:2, group:0, gmask:0
         2: unknown:00D3              , default: unknown:00B0                => unknown:00D3              
             is FN, FN sensitive, divertable, persistently divertable, pos:3, group:0, gmask:0
         3: unknown:00D6              , default: unknown:00B3                => unknown:00D6              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:4, group:0, gmask:0
         4: unknown:00C7              , default: unknown:00A3                => unknown:00C7              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:5, group:0, gmask:0
         5: unknown:00C8              , default: unknown:00A4                => unknown:00C8              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:6, group:0, gmask:0
         6: unknown:00E4              , default: Previous                    => unknown:00E4              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:7, group:0, gmask:0
         7: unknown:00E5              , default: Play/Pause                  => unknown:00E5              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:8, group:0, gmask:0
         8: unknown:00E6              , default: Next                        => unknown:00E6              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:9, group:0, gmask:0
         9: unknown:00E7              , default: Mute                        => unknown:00E7              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:10, group:0, gmask:0
        10: unknown:00E8              , default: Volume Down                 => unknown:00E8              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:11, group:0, gmask:0
        11: unknown:00E9              , default: Volume Up                   => unknown:00E9              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:12, group:0, gmask:0
        12: unknown:00BE              , default: unknown:009A                => unknown:00BE              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        13: unknown:00D5              , default: unknown:00B2                => unknown:00D5              
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        14: unknown:00BD              , default: unknown:0099                => unknown:00BD              
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        15: unknown:00BA              , default: unknown:0096                => unknown:00BA              
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        16: unknown:00D4              , default: unknown:00B1                => unknown:00D4              
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        17: unknown:00B7              , default: ShowUI                      => unknown:00B7              
             divertable, pos:0, group:0, gmask:0
        18: unknown:0034              , default: Do Nothing One              => unknown:0034              
             nonstandard, pos:0, group:0, gmask:0
     Battery: 90%, discharging.

Here is what the GUI shows me: image

One little thing i'm seeing is that swap Fn keys when set on status "ON" deactivated the functions and functions normally. This means that when it is on, the system processes media functions without pressing the fn key. I don't know if this is intended or a bug.

pfps commented 4 years ago

For devices that support HID++ 2.0 (and above, but they are all really only HID++ 2.0) Solaar can discover the device's features (shown via solaar show) and show and manipulate some of them in the GUI.
The documentation in devices.md should be updated to reflect this.

The Swap Fx function when off should result in the function keys sending Fn codes when the FN key is not down and the "special" codes when the FN key is down; when on the reverse is true. The tooltip on the switch should so state.