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

HID++ Scrolling does not work in 1.0.2 #868

Closed jeblad closed 4 years ago

jeblad commented 4 years ago

Information

Tested against Firefox 78.0.2 in Ubuntu 20.04 with solaar 1.0.2. Window does not scroll after “HID++ Scrolling” is turned on. If it is turned off the window scrolls as expected.

john@hydra:~$ solaar show
Unifying Receiver
  Device path  : /dev/hidraw1
  USB id       : 046d:c52b
  Serial       : BC7A93C7
    Firmware   : 12.10.B0032
    Bootloader : 02.15
    Other      : AA.AA
  Has 2 paired device(s) out of a maximum of 6.
  Notifications: wireless (0x000100)
  Device activity counters: 1=65, 3=10

  1: Multi Device Silent Mouse M585/M590
     Codename     : M585/M590
     Kind         : mouse
     Wireless PID : 406B
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: 35ECB06B
        Bootloader: BOT 48.00.B0001
          Firmware: MPM 05.01.B0006
             Other: 
     The power switch is located on the base.
     Supports 33 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: POINTER SPEED          {2205}   
            Pointer Speed: 1.0
        13: VERTICAL SCROLLING     {2100}   
            Roller type: standard
            Ratchet per turn: 18
            Scroll lines: 0
        14: DFUCONTROL SIGNED      {00C2}   
        15: DEVICE RESET           {1802}   internal, hidden
        16: unknown:1803           {1803}   internal, hidden
        17: CONFIG DEVICE PROPS    {1806}   internal, hidden
        18: OOBSTATE               {1805}   internal, hidden
        19: unknown:1813           {1813}   internal, hidden
        20: unknown:1830           {1830}   internal, hidden
        21: unknown:1861           {1861}   internal, hidden
        22: unknown:1890           {1890}   internal, hidden
        23: unknown:1891           {1891}   internal, hidden
        24: unknown:18A1           {18A1}   internal, hidden
        25: unknown:1DF3           {1DF3}   internal, hidden
        26: unknown:1E00           {1E00}   hidden
        27: unknown:1EB0           {1EB0}   internal, hidden
        28: unknown:18B1           {18B1}   internal, hidden
        29: unknown:1850           {1850}   internal, hidden
        30: unknown:1F03           {1F03}   internal, hidden
        31: unknown:18C0           {18C0}   internal, hidden
        32: LOWRES WHEEL           {2130}   
            Wheel Reports: HID
     Has 8 reprogrammable keys:
         0: LEFT CLICK                , default: LeftClick                   => LEFT CLICK                
             mse, reprogrammable, pos:0, group:1, gmask:1
         1: RIGHT CLICK               , default: RightClick                  => RIGHT CLICK               
             mse, reprogrammable, pos:0, group:1, gmask:1
         2: MIDDLE BUTTON             , default: MiddleMouseButton           => MIDDLE BUTTON             
             mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
         3: BACK AS BUTTON 4          , default: BackEx                      => BACK AS BUTTON 4          
             mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
         4: FORWARD AS BUTTON 5       , default: BrowserForwardEx            => FORWARD AS BUTTON 5       
             mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
         5: LEFT SCROLL AS AC PAN     , default: HorzScrollLeftSet           => LEFT SCROLL AS AC PAN     
             mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
         6: RIGHT SCROLL AS AC PAN    , default: HorzScrollRightSet          => RIGHT SCROLL AS AC PAN    
             mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
         7: unknown:00D7              , default: unknown:00B4                => unknown:00D7              
             divertable, virtual, pos:0, group:3, gmask:0
     Battery: 50%, discharging.

  3: MX Keys Wireless Keyboard
     Codename     : MX Keys
     Kind         : keyboard
     Wireless PID : 408A
     Protocol     : HID++ 4.5
     Polling rate : 20 ms (50Hz)
     Serial number: 98242B65
        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}   
         3: DEVICE NAME            {0005}   
         4: WIRELESS DEVICE STATUS {1D4B}   
         5: RESET                  {0020}   
         6: DEVICE FRIENDLY NAME   {0007}   
         7: BATTERY STATUS         {1000}   
         8: REPROG CONTROLS V4     {1B04}   
         9: CHANGE HOST            {1814}   
        10: HOSTS INFO             {1815}   
        11: BACKLIGHT2             {1982}   
        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: 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: 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:00C7              , default: unknown:00A3                => unknown:00C7              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:1, group:0, gmask:0
         4: unknown:00C8              , default: unknown:00A4                => unknown:00C8              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:2, group:0, gmask:0
         5: unknown:00E0              , default: unknown:00BF                => unknown:00E0              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:3, group:0, gmask:0
         6: unknown:00E1              , default: unknown:00C0                => unknown:00E1              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:4, group:0, gmask:0
         7: SHOW DESKTOP              , default: ShowDesktop                 => SHOW DESKTOP              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:5, group:0, gmask:0
         8: unknown:00E2              , default: unknown:00C1                => unknown:00E2              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:6, group:0, gmask:0
         9: unknown:00E3              , default: unknown:00C2                => unknown:00E3              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:7, group:0, gmask:0
        10: unknown:00E4              , default: Previous                    => unknown:00E4              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:8, group:0, gmask:0
        11: unknown:00E5              , default: Play/Pause                  => unknown:00E5              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:9, group:0, gmask:0
        12: unknown:00E6              , default: Next                        => unknown:00E6              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:10, group:0, gmask:0
        13: unknown:00E7              , default: Mute                        => unknown:00E7              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:11, group:0, gmask:0
        14: unknown:00E8              , default: Volume Down                 => unknown:00E8              
             is FN, FN sensitive, reprogrammable, divertable, persistently divertable, pos:12, group:0, gmask:0
        15: unknown:00E9              , default: Volume Up                   => unknown:00E9              
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        16: Calculator                , default: Calculator                  => Calculator                
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        17: unknown:00BF              , default: unknown:009B                => unknown:00BF              
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        18: unknown:00EA              , default: unknown:00C3                => unknown:00EA              
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        19: Lock PC                   , default: WindowsLock                 => Lock PC                   
             nonstandard, reprogrammable, divertable, persistently divertable, pos:0, group:0, gmask:0
        20: unknown:00EC              , default: unknown:00B8                => unknown:00EC              
             nonstandard, divertable, persistently divertable, pos:0, group:0, gmask:0
        21: unknown:00EB              , default: unknown:00B6                => unknown:00EB              
             nonstandard, divertable, persistently divertable, pos:0, group:0, gmask:0
        22: unknown:00DE              , default: Do Nothing One              => unknown:00DE              
             is FN, pos:0, group:0, gmask:0
        23: unknown:0034              , default: Do Nothing One              => unknown:0034              
             nonstandard, pos:0, group:0, gmask:0
     Battery: 50%, discharging.
pfps commented 4 years ago

Hover your mouse over the setting in the Solaar main window. You will see more about how this setting works - HID++ scrolling doesn't work in Linux.
So why is this setting in Solaar at all? It's there so that Solaar can swtich HID++ scrolling off for devices that are switched between Linux and other systems where HID++ scrolling is used.

jeblad commented 4 years ago

Bugger… Are they still fighting over this? I thought it was in.

There should be a better way to show the information. Hidden information that shows by accident is not a good solution.

pfps commented 4 years ago

I can't think of a better way of showing this information. Hovering is a standard way of finding out more about a UI element.

pfps commented 4 years ago

Closing as working as well as can be expected. :-(