Repository: pwr-Solaar/Solaar

Issue:
Support for Logitech G613 with receiver id c53d
Apparently solaar v1.0.1 on ubuntu ppa does not support Lightspeed receiver with id c53d . solaar reported that no receiver has been found.

Here is the output of my lsusb

tonny@fenrir:[~]: lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 1b1c:1b65 Corsair 
Bus 003 Device 006: ID 046d:c53d Logitech, Inc. 
Bus 003 Device 003: ID 046d:082b Logitech, Inc. Webcam C170
Bus 003 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 8087:0aa7 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub



Discussion:
Yes, that receiver is currently unknown to Solaar.   Adding a new receiver is easy but requires super user access.   I created a new branch in my repository for this receiver.   The following should let you see how well your device works:
1/ Clone the c53d branch of my repository via
```
git clone -b c53d https://github.com/pfps/Solaar.git
```
2/ Kill any running Solaar.
3/ Run this Solaar as root (otherwise you would have to install a udev rule and that requires root anyway)
```
sudo Solaar/bin/solaar
```

Please let us know how this goes and please provide the output of `Solaar/bin/solaar show` as that says what features your device has.

I'm having the same problem... Solar only recognizes my G603 mouse, and not my G613 keyboard...

@pfps Do you know if doing this the macro keys will work? Right now, the system sees them as F1~F6 keys :/ 
@raulcraveiro Each device (mouse or keyboard) is different.  You won't know what is supported or what is easy to support until the receiver is added to Solaar and you see what shows up in the Solaar main window.   The output of `solaar show` says which HID++ features are provided by the device, so if things aren't working right providing that information is helpful to see what can be done.
To get this receiver added I need someone to test out my changes.
It's working!

![image](https://user-images.githubusercontent.com/5623492/82839211-04783280-9ea5-11ea-90b9-28534d0871b5.png)

Do you need me to test something specifically?

Good.   I'll put in a PR for the changes.

Could you post the output from `solaar show` so that I can see what features the keyboard has?
Thank you @pfps 
@pfps Here's the output from the show:

Lightspeed Receiver
  Device path  : /dev/hidraw5
  USB id       : 046d:c539
  Serial       : 61E612F6
    Firmware   : 39.06.B0040
    Bootloader : 02.09
    Other      : AA.BE
  Has 1 paired device(s) out of a maximum of 1.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  1: G603 Wireless Gaming Mouse
     Codename     : G603
     Kind         : mouse
     Wireless PID : 406C
     Protocol     : HID++ 4.2
     Polling rate : 8 ms (125Hz)
     Serial number: BE87C8CC
        Bootloader: BOT 58.06.B0028
          Firmware: MPM 08.06.B0028
             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: DEVICE FRIENDLY NAME   {0007}   
         6: BATTERY STATUS         {1000}   
         7: REPROG CONTROLS V4     {1B04}   
         8: CHANGE HOST            {1814}   
         9: HOSTS INFO             {1815}   
        10: COLOR LED EFFECTS      {8070}   
        11: ONBOARD PROFILES       {8100}   
        12: MOUSE BUTTON SPY       {8110}   
        13: REPORT RATE            {8060}   
        14: MODE STATUS            {8090}   
        15: DFUCONTROL UNSIGNED    {00C1}   
        16: DFUCONTROL SIGNED      {00C2}   
        17: DEVICE RESET           {1802}   internal, hidden
        18: unknown:1803           {1803}   internal, hidden
        19: CONFIG DEVICE PROPS    {1806}   internal, hidden
        20: unknown:1813           {1813}   internal, hidden
        21: OOBSTATE               {1805}   internal, hidden
        22: unknown:1830           {1830}   internal, hidden
        23: unknown:1890           {1890}   internal, hidden
        24: unknown:1891           {1891}   internal, hidden
        25: unknown:1DF3           {1DF3}   internal, hidden
        26: unknown:1E00           {1E00}   hidden
        27: unknown:1EB0           {1EB0}   internal, hidden
        28: unknown:1861           {1861}   internal, hidden
        29: unknown:18B1           {18B1}   internal, hidden
        30: unknown:1E22           {1E22}   
        31: unknown:1801           {1801}   internal, hidden
        32: ADJUSTABLE DPI         {2201}   
     Has 2 reprogrammable keys:
         0: unknown:00D1              , default: unknown:00AE                => unknown:00D1              
             divertable, persistently divertable, pos:1, group:0, gmask:0
         1: unknown:00D2              , default: unknown:00AF                => unknown:00D2              
             divertable, persistently divertable, pos:2, group:0, gmask:0
     Battery: 90%, discharging.

Lightspeed Receiver
  Device path  : /dev/hidraw2
  USB id       : 046d:c53d
  Serial       : 17887C62
    Firmware   : 43.00.B0006
    Bootloader : 02.10
    Other      : AA.D2
  Has 1 paired device(s) out of a maximum of 1.
  Notifications: (none)
  Device activity counters: (empty)

  1: G613 Wireless Mechanical Gaming Keyboard
     Codename     : G613
     Kind         : keyboard
     Wireless PID : 4065
     Protocol     : HID++ 4.2
     Polling rate : 1 ms (1000Hz)
     Serial number: 63A22FBD
        Bootloader: BOT 46.00.B0006
          Firmware: MPK 05.02.B0021
             Other: 
     Supports 32 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: REPORT HID USAGE       {1BC0}   
        12: ENCRYPTION             {4100}   
        13: KEYBOARD DISABLE BY USAGE {4522}   
        14: KEYBOARD LAYOUT 2      {4540}   
        15: GKEY                   {8010}   
        16: REPORT RATE            {8060}   
        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:18B1           {18B1}   internal, hidden
     Has 2 reprogrammable keys:
         0: unknown:00D1              , default: unknown:00AE                => unknown:00D1              
             divertable, persistently divertable, pos:1, group:0, gmask:0
         1: unknown:00D2              , default: unknown:00AF                => unknown:00D2              
             divertable, persistently divertable, pos:2, group:0, gmask:0
     Battery: 80%, discharging.
OK, that will help when more features are implemented.
Just gonna throw my output here as well since it's a tiny bit different and maybe that helps with compatibility somehow.
```
Lightspeed Receiver
  Device path  : /dev/hidraw10
  USB id       : 046d:c53d
  Serial       : C7A6EBE9
    Firmware   : 43.01.B0009
    Bootloader : 02.10
    Other      : AA.D2
  Has 1 paired device(s) out of a maximum of 1.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  1: G613 Wireless Mechanical Gaming Keyboard
     Codename     : G613
     Kind         : keyboard
     Wireless PID : 4065
     Protocol     : HID++ 4.2
     Polling rate : 1 ms (1000Hz)
     Serial number: 1B3FC305
        Bootloader: BOT 46.00.B0006
          Firmware: MPK 05.02.B0021
             Other: 
     Supports 32 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: REPORT HID USAGE       {1BC0}   
        12: ENCRYPTION             {4100}   
        13: KEYBOARD DISABLE BY USAGE {4522}   
        14: KEYBOARD LAYOUT 2      {4540}   
        15: GKEY                   {8010}   
        16: REPORT RATE            {8060}   
        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:18B1           {18B1}   internal, hidden
     Has 2 reprogrammable keys:
         0: unknown:00D1              , default: unknown:00AE                => unknown:00D1              
             divertable, persistently divertable, pos:1, group:0, gmask:0
         1: unknown:00D2              , default: unknown:00AF                => unknown:00D2              
             divertable, persistently divertable, pos:2, group:0, gmask:0
     Battery: 50%, discharging.
```
Awesome to see this support is potentially coming soon. Thanks so much for all your efforts here, its much appreciated.
Support is already in the version of Solaar on this repository, and maybe in some distributions as well.  You can clone and run Solaar from hear fairly easily - see the instructions in https://pwr-solaar.github.io/Solaar/installation

Hi Guys,

Hi Can I set the G-keys for this keyboard?
Sollar doesn't currently support the GKEY feature, which is probably what is needed to set these keys.  Depending on how this feature works it may be easy to implement in Solaar.
I have a G613 and came upon this searching for setting the G Keys as well. If some king of dump is needed I could try to provide it.

FWIW on both Windows and Linux the G Keys are identified as F keys without the Logitech software installed.
I expect that the GKEY feature allows "diverting" the G keys to report using a special mechanism.  A very recent addition to Solaar allows such diverted reports to be processed and turned into other key presses (at least under X11).  If this diversion is not on, then the G keys act like Fn keys.
The easiest way to find out more is to get some documentation from Logitech.  If this fails, then it might be necessary to sniff out what the Logitech software is doing.
This is really odd to me, the hardware is delivering the same keycode to G1 and F1?
Or is the OS replacing the keycode gap?
There are lots of things that are odd about Logitech (and other) devices.  If you have this keyboard then you could use a tool like showkey or xev to find out more about what G keys do without the Logitech software running.
Using showkey command, both Fs and Gs have the same code
PR #1027 adds a new setting.  Turning it on causes the G keys to send HID++ notifications.  These notifications can be handled by rules in Solaar using a just-added enhancement.   The PR needs testing.  

To test download and run the PR.   Run Solaar as `bin/solaar -d`.  Make sure that Solaar starts up correctly.  Then add a rule that does something in response to a G key (like popping up a terminal).

You can do this by clicking on "Rule Editor".  Then right-click on "User-define rules" and select "Insert new rule".  Right-click on "[empty]" in the new rule and select "Insert here", "Condition", "Key".  Enter "G1" in the box on the bottom.   Then right-click on the "Key" and select "Insert below", "Action", "Execute".  Enter "xterm" in the box on the bottom.  Click on "Save changes".  

Then in the Solaar main window select your keyboard and turn on the "Divert G Keys" setting.
Now when you press the G1 key an xterm should start up.

Add some other rules for the other G keys, like having G2 turn into XF86_AudioLowerVolume.  See https://pwr-solaar.github.io/Solaar/rules for more information on rules.


To download and work with Solar
```
git clone https://github.com/pwr-Solaar/Solaar.git
cd Solaar
```
Run Solaar as bin/solaar from this directory.


To run PR #1027, first clone Solaar if you have not already done so and cd to the clone directory.  The first time you download the pull request, fetch it into a new branch and checkout that branch, as in:
```
git fetch origin pull/1027/head:pull_1027
git checkout pull_1027
```
To download a new version of the pull request, fetch it and then set your pull branch
to the new fetch, as in:
```
git checkout pull_1027
git fetch origin pull/1027/head
git reset --hard FETCH_HEAD
```

@pfps 
I tried, your PR.
I can set every step as you described, no action has worked though :(

I tried gnome-terminal, google-chrome

But the G keys are not running the F functions as they were before

Can you provide output from `bin/solaar -dd` when pressing the G keys? 
```
13:49:23,853    DEBUG [MainThread] solaar.ui.tray: picked device with lowest battery: ('/dev/hidraw6', 1, 'G613 Wireless Mechanical Gaming Keyboard', {'LINK ENCRYPTED': True, 'BATTERY LEVEL': 80, 'BATTERY STATUS': NamedInt(0, 'discharging'), 'BATTERY NEXT LEVEL': 50, 'BATTERY VOLTAGE': None, 'BATTERY CHARGING': False, 'ERROR': None})
13:49:23,854    DEBUG [MainThread] solaar.ui.icons: battery icon for 80:False = battery-good
13:49:23,856    DEBUG [MainThread] solaar.ui.icons: battery icon for 80:False = battery-good
13:49:23,857    DEBUG [MainThread] solaar.ui.icons: battery icon for 80:False = battery-good
13:49:23,868    DEBUG [AsyncUI] logitech_receiver.settings: divert-keys: settings read {'209': 0, '210': 0} from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,746A9634)>
13:49:23,871    DEBUG [AsyncUI] logitech_receiver.settings: divert-gkeys: settings read True from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,746A9634)>
13:49:23,873    DEBUG [AsyncUI] logitech_receiver.settings: change-host: settings read NamedInt(0, '1:localhost') from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,746A9634)>
13:49:28,921    DEBUG [ReceiverListener:hidraw6] logitech_receiver.base: (17) => r[11 01 0F00 20000000000000000000000000000000]
13:49:28,922    ERROR [ReceiverListener:hidraw6] logitech_receiver.listener: processing Notification(11,1,0F,00,20000000000000000000000000000000)
Traceback (most recent call last):
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/listener.py", line 193, in run
    self._notifications_callback(n)
  File "/home/brunoricardo/Solaar/lib/solaar/listener.py", line 246, in _notifications_handler
    _notifications.process(dev, n)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/notifications.py", line 62, in process
    return _process_device_notification(device, status, notification)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/notifications.py", line 138, in _process_device_notification
    return _process_feature_notification(device, status, n, feature)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/notifications.py", line 388, in _process_feature_notification
    _diversion.process_notification(device, status, n, feature)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/diversion.py", line 649, in process_notification
    if not new_g_keys_down & 0x01 << (i - 1):
TypeError: unsupported operand type(s) for &: 'tuple' and 'int'
13:49:29,039    DEBUG [ReceiverListener:hidraw6] logitech_receiver.base: (17) => r[11 01 0F00 00000000000000000000000000000000]
13:49:29,040    ERROR [ReceiverListener:hidraw6] logitech_receiver.listener: processing Notification(11,1,0F,00,00000000000000000000000000000000)
Traceback (most recent call last):
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/listener.py", line 193, in run
    self._notifications_callback(n)
  File "/home/brunoricardo/Solaar/lib/solaar/listener.py", line 246, in _notifications_handler
    _notifications.process(dev, n)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/notifications.py", line 62, in process
    return _process_device_notification(device, status, notification)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/notifications.py", line 138, in _process_device_notification
    return _process_feature_notification(device, status, n, feature)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/notifications.py", line 388, in _process_feature_notification
    _diversion.process_notification(device, status, n, feature)
  File "/home/brunoricardo/Solaar/lib/logitech_receiver/diversion.py", line 649, in process_notification
    if not new_g_keys_down & 0x01 << (i - 1):
TypeError: unsupported operand type(s) for &: 'tuple' and 'int'
```
Argh.  I see that there is a stupid bug in the code. 
OK.  I fixed the silly bug and also changed how the keys are identified.   At least the diversion is working as expected.

Please try again.
Hello
I have also a G613 keyboard and I has tested the #1027 too.
The TypeError is fixed now.
But the action is not launched, I have tried to execute konsole but it does not.
Nevertheless the key seems correctly catched (i see log when I press a G key) and when the divert rules is selected, G key are no longer linked to F key.
Here is my log file 
[solaar_log.txt](https://github.com/pwr-Solaar/Solaar/files/5684524/solaar_log.txt)

Can you remember which keys you pressed and in which order?   (Or test again and provide the output lines with GKEY in them, in order, and the order of key presses.)  It may be that I don't have the correct bit to key mapping.
Please also change the rule to use G3 and see whether it is triggered by key G6.
I don't remenber ! So I do again the test, here I press G1 to G6 key:
```
14:51:06,330    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 01000000000000000000000000000000]
14:51:06,330    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 01000000000000000000000000000000
14:51:06,413    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
14:51:06,413    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 00000000000000000000000000000000
14:51:08,220    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 02000000000000000000000000000000]
14:51:08,220    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 02000000000000000000000000000000
14:51:08,293    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
14:51:08,293    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 00000000000000000000000000000000
14:51:10,194    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 04000000000000000000000000000000]
14:51:10,194    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 04000000000000000000000000000000
14:51:10,283    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
14:51:10,283    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 00000000000000000000000000000000
14:51:10,742    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 08000000000000000000000000000000]
14:51:10,742    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 08000000000000000000000000000000
14:51:10,821    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
14:51:10,821    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 00000000000000000000000000000000
14:51:11,199    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 10000000000000000000000000000000]
14:51:11,199    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 10000000000000000000000000000000
14:51:11,281    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
14:51:11,281    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 00000000000000000000000000000000
14:51:11,682    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 20000000000000000000000000000000]
14:51:11,682    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 20000000000000000000000000000000
14:51:11,761    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
14:51:11,761    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 00000000000000000000000000000000
```

So the bit assignment is not what I expected.  Expect a fix shortly.
Moreover when I press all the keys, the application is launched, that smells good...

> Moreover when I press all the keys, the application is launched, that smells good...

I don't understand.  Which rule and key press launches the application?
when I have pressed all G keys, the konsole application had been launched 
I have set G3 to open konsole

```
15:09:28,215    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 02000000000000000000000000000000]
15:09:28,215    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 02000000000000000000000000000000
15:09:28,217    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 03000000000000000000000000000000]
15:09:28,217    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 03000000000000000000000000000000
15:09:28,219    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 0B000000000000000000000000000000]
15:09:28,219    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 0B000000000000000000000000000000
15:09:28,221    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 1B000000000000000000000000000000]
15:09:28,221    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 1B000000000000000000000000000000
15:09:28,222    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 1F000000000000000000000000000000]
15:09:28,222     INFO [ReceiverListener:hidraw2] logitech_receiver.diversion: Execute action: ['/usr/bin/konsole']
15:09:28,224    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 1F000000000000000000000000000000
15:09:28,229    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 3F000000000000000000000000000000]
15:09:28,229    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 3F000000000000000000000000000000
15:09:28,388    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 3E000000000000000000000000000000]
15:09:28,388    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 3E000000000000000000000000000000
15:09:28,394    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 3A000000000000000000000000000000]
15:09:28,394    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 3A000000000000000000000000000000
15:09:28,396    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 38000000000000000000000000000000]
15:09:28,396    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 38000000000000000000000000000000
15:09:28,401    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 18000000000000000000000000000000]
15:09:28,401    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 18000000000000000000000000000000
15:09:28,403    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 10000000000000000000000000000000]
15:09:28,403    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 10000000000000000000000000000000
15:09:28,407    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
15:09:28,407    DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,8D6D16D8)>: notification for feature NamedInt(32784, 'GKEY'), report 0, data 00000000000000000000000000000000
```
Aah.   What is going wrong is the key-to-bit mapping.   I had bit 1 as G1, but it really is bit 8.  This means that there is no key for bit 2, but bit 3 (supposedly G3) is actually for G6.
OK, I have updated the PR.  I added a debugging print statement to show which key Solaar thinks was pressed.  Give it a try and report whether this output is correct and whether the rule works correctly.
It seems to have an error with unpack

```
16:24:04,251    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 04000000000000000000000000000000]
16:24:04,252    ERROR [ReceiverListener:hidraw2] logitech_receiver.listener: processing Notification(11,1,0F,00,04000000000000000000000000000000)
Traceback (most recent call last):
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/listener.py", line 193, in run
    self._notifications_callback(n)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/solaar/listener.py", line 246, in _notifications_handler
    _notifications.process(dev, n)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/notifications.py", line 62, in process
    return _process_device_notification(device, status, notification)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/notifications.py", line 138, in _process_device_notification
    return _process_feature_notification(device, status, n, feature)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/notifications.py", line 388, in _process_feature_notification
    _diversion.process_notification(device, status, n, feature)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/diversion.py", line 647, in process_notification
    new_g_keys_down, = _unpack('!B', notification.data[:4])
struct.error: unpack requires a buffer of 1 bytes
16:24:04,326    DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (16) => r[11 01 0F00 00000000000000000000000000000000]
16:24:04,326    ERROR [ReceiverListener:hidraw2] logitech_receiver.listener: processing Notification(11,1,0F,00,00000000000000000000000000000000)
Traceback (most recent call last):
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/listener.py", line 193, in run
    self._notifications_callback(n)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/solaar/listener.py", line 246, in _notifications_handler
    _notifications.process(dev, n)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/notifications.py", line 62, in process
    return _process_device_notification(device, status, notification)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/notifications.py", line 138, in _process_device_notification
    return _process_feature_notification(device, status, n, feature)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/notifications.py", line 388, in _process_feature_notification
    _diversion.process_notification(device, status, n, feature)
  File "/home/mickael/temp/solaar_1027/Solaar/lib/logitech_receiver/diversion.py", line 647, in process_notification
    new_g_keys_down, = _unpack('!B', notification.data[:4])
struct.error: unpack requires a buffer of 1 bytes
```
Grr.  Stupid error.  Should be fixed now.
Very good it works perfectly ! The debugging output gives the right key and the action is correctly executed
Thanks!

```
GKEY DOWN G1
GKEY DOWN G2
GKEY DOWN G3
GKEY DOWN G4
GKEY DOWN G5
GKEY DOWN G6
```
OK.  I took out the print statements and put up the new version.  I'll merge this PR in shortly.
Works great mapping G-keys on my G613, very nice work! Thank you!
Is there any tutorial on how to map the g-keys? I can't make it recognize on other softwares like OBS-Studio for example...
See the comment from Dec 4, 2020.  The Solaar documentation has some information on rules, which mentions the G keys.  As far as I know, you can't make the G keys send other characters directly, you have to divert them and write Solaar rules that handle the HID++ notifications that result and do whatever you need.
Using version 1.0.6, I couldn't make it work on my G613. 

I followed (almost) all the steps in https://github.com/pwr-Solaar/Solaar/issues/786#issuecomment-738852143 
Except for "Divert G Keys" option. It is locked. In contrast to the other options (which have 3 states, locked, unlocked or ignore) I can only ignore or keep "Divert G Keys" locked. Which results, obviously, in the G keys not being diverted. :-p

Although I could not unlock from the GUI, when "locked" the debug output states that it is diverting (even though the GUI says it is disabled)!? (see `'divert-gkeys': True` below).

```
14:57:06,351     INFO [AsyncUI] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_sensitive': {'change-host': False, 'divert-gkeys': True, 'divert-keys': False, 'report_rate': False}, 
...
...
``` 

`42-logitech-unify-permissions.rules` was copied to `/etc/udev/rules.d` and rules were updated using `sudo udevadm control --reload-rules`, and the machine rebooted.

I 'm using Manjaro  with kernel  5.10.

Unpairing and pairing again had no effect.

Any hints?
Please provide more output from `bin/solaar -dd` from when you are trying to cycle the status of the Divert G Keys.
Sure! Thanks for the quick reply.

Here it is. First clicking on the lock icon besides the "Divert G Keys", which  then becomes the "exclamation mark" icon that when clicked becomes the lock again. 

```
15:30:27,882     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_sensitive': {'change-host': False, 'divert-gkeys': 'ignore', 'divert-keys': False, 'report_rate': False}, '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 1}, 'report_rate': 1}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_sensitive': {'hires-smooth-invert': False}, '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
15:30:30,882     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_sensitive': {'change-host': False, 'divert-gkeys': True, 'divert-keys': False, 'report_rate': False}, '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 1}, 'report_rate': 1}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_sensitive': {'hires-smooth-invert': False}, '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
15:30:30,882    DEBUG [AsyncUI] logitech_receiver.settings: divert-gkeys: settings read None from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
15:30:30,883     INFO [AsyncUI] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_sensitive': {'change-host': False, 'divert-gkeys': True, 'divert-keys': False, 'report_rate': False}, '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 1}, 'report_rate': 1}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_sensitive': {'hires-smooth-invert': False}, '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json

```
Just a follow up: it works as expected in 1.0.5.

Hmm.  You are going to have to search for the change that broke things.   There are about 70 commits between 1.0.5 and 1.0.6.
Probably the easiest way to look for the commit is to cd to your Solaar clone directory.  Then `git checkout master~XX` where XX is how far back from the most recent state of the git repository you want to go.   Then run `bin/solaar` and see whether things are working.  Let me know which commit broke things.  This is the identifier in the last line of output from the git commit command, e.g., 68049ef from `HEAD is now at 68049ef ui: better handling of tray icons`.

The first bad commit according to `git bisect`: https://github.com/pwr-Solaar/Solaar/commit/33a4bf8bf54750b97350bd8b024b493739e880dc

```
33a4bf8bf54750b97350bd8b024b493739e880dc is the first bad commit
commit 33a4bf8bf54750b97350bd8b024b493739e880dc
Author: Peter F. Patel-Schneider <pfpschneider@gmail.com>
Date:   Sat Apr 10 11:16:07 2021 -0400

    ui: read current value of setting when switching away from ignore
```

I noticed that to reproduce the problem, a clean configuration is needed. With a configuration already created with 1.0.5, version 1.0.6 also works as expected.
That makes some sense.  What might be happening is that the underlying setting is being changed during the ignore period and then that is what shows up after switching away from ignore.

I don't know what you mean by a clean configuration.   Solaar runs as a unique application so that if Solaar is running (as 1.0.5) if you start another copy of Solaar (1.0.5 or 1.0.6) then the other copy notices that Solaar is running and quickly exists (but does have the side effect of opening the main window of the already running Solaar).  So to guarantee that you are running Solaar 1.0.6 you have to kill any currently running Solaar.

Anyway, debugging is going to be a bit of a problem, particularly as I'll have to tell you want to do and have you do it - I don't have a gaming keyboard available.
The first thing to do is to try to figure out just what the device is doing.  To see that run Solaar and cycle through the ignore/locked/unlocked setting for GKey diversion a couple of times.  After each change, run `bin/solaar show` and grab the part of the output that gives information about the GKEY feature and post here.

Note:  Running `solaar show` is safe.  It is only the GUI that runs as a unique application.
Note:  What devices have are features.  What Solaar shows and changes in the GUI are settings, which are usually some part of some feature.
Sorry - I just noticed something. The GKEY setting is special.  I think that this is what is going wrong.  In any case, do what I said above, as that will help validate my guess as to what the problem is.

Note for self:  The GKEY setting is not stored on the device so retrieving it has been programmed to always result in False.
By a clean configuration I mean killing Solaar,  doing a `rm -fr ~/.config/solaar`, and then running Solaar. In all my tests I run only one instance of Sollar, always closing it before opening a different version. 

I noticed that the `config.json` generated by 1.0.5 has an additional line compared to the one generated by 1.0.6:

<details>
  <summary>1.0.5</summary>

```
$ cat config.json 
{
  "4065:C79F1378": {
    "_modelId": "B34F40650000",
    "_name": "G613 Wireless Mechanical Gaming Keyboard",
    "_sensitive": {
      "divert-gkeys": true
    },
    "_serial": "C79F1378",
    "_unitId": "D03D3C1A",
    "divert-gkeys": true,
    "divert-keys": {
      "209": 0,
      "210": 1
    },
    "report_rate": 1
  },
...
...
```

</details>

<details>
  <summary>1.0.6</summary>

```
$ cat config.json 
{
  "4065:C79F1378": {
    "_modelId": "B34F40650000",
    "_name": "G613 Wireless Mechanical Gaming Keyboard",
    "_sensitive": {
      "divert-gkeys": true
    },
    "_serial": "C79F1378",
    "_unitId": "D03D3C1A",
    "divert-keys": {
      "209": 0,
      "210": 0
    },
    "report_rate": 1
  },
...
...  
```
</details>

Now the outputs for the tests you suggested:

<details>
  <summary>Right after running Solaar: </summary>
  
```
$ solaar show
Unifying Receiver
  Device path  : /dev/hidraw5
  USB id       : 046d:C52B
  Serial       : 3C33970C
    Firmware   : 12.09.B0030
    Bootloader : 04.16
    Other      : AA.AA
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  2: Anywhere Mouse MX 2
     Device path  : /dev/hidraw6
     WPID         : 404A
     Codename     : Anywhere MX 2
     Kind         : mouse
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: 4A7889FB
     The power switch is located on the base.
     Battery: unknown (device is offline).

Lightspeed Receiver
  Device path  : /dev/hidraw8
  USB id       : 046d:C53D
  Serial       : 661EC541
    Firmware   : 43.00.B0006
    Bootloader : 02.10
    Other      : AA.D2
  Has 1 paired device(s) out of a maximum of 1.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  1: G613 Wireless Mechanical Gaming Keyboard
     Device path  : None
     WPID         : 4065
     Codename     : G613
     Kind         : keyboard
     Protocol     : HID++ 4.2
     Polling rate : 1 ms (1000Hz)
     Serial number: C79F1378
     Model ID:      B34F40650000
     Unit ID:       D03D3C1A
        Bootloader: BOT 46.00.B0006
          Firmware: MPK 05.02.B0021
             Other: 
     Supports 32 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 46.00.B0006 00006E86A7BD
            Firmware: Firmware MPK 05.02.B0021 40656E86A7BD
            Firmware: Other   
            Unit ID: D03D3C1A  Model ID: B34F40650000  Transport IDs: {'btleid': 'B34F', 'wpid': '4065'}
         3: DEVICE NAME            {0005}   
            Name: G613 Wireless Mechanical Gaming 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:warp
         9: HOSTS INFO             {1815}   
            Host 0 (paired): warp
            Host 1 (paired): warp
        10: REPROG CONTROLS V4     {1B04}   
        11: REPORT HID USAGE       {1BC0}   
        12: ENCRYPTION             {4100}   
        13: KEYBOARD DISABLE BY USAGE {4522}   
        14: KEYBOARD LAYOUT 2      {4540}   
        15: GKEY                   {8010}   
            Divert G Keys        : None
        16: REPORT RATE            {8060}   
            Polling Rate (ms): 1
            Polling Rate (ms) (saved): 1
            Polling Rate (ms)        : 1
        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:18B1           {18B1}   internal, hidden
     Has 2 reprogrammable keys:
         0: Host Switch Channel 1     , default: HostSwitch Channel 1        => HostSwitch Channel 1      
             divertable, persistently divertable, pos:1, group:0, group mask:empty
             reporting: default
         1: Host Switch Channel 2     , default: HostSwitch Channel 2        => HostSwitch Channel 2      
             divertable, persistently divertable, pos:2, group:0, group mask:empty
             reporting: default
     Battery: 50%, discharging, next level 20%.

Wired Devices
  1: Wireless Mouse MX Anywhere 2
     Device path  : /dev/hidraw11
     USB id       : 046d:B013
     Codename     : ?? (B013)
     Kind         : mouse
     Protocol     : HID++ 4.5
     Serial number: ?
     Model ID:      B013404A0000
     Unit ID:       49C782CC
        Bootloader: BOT 23.00.B0007
          Firmware: MPM 02.00.B0007
          Firmware: MPM 02.00.B0007
             Other: 
     Supports 23 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 23.00.B0007 404A591AF20A
            Firmware: Firmware MPM 02.00.B0007 B013591AF20A
            Firmware: Firmware MPM 02.00.B0007 404A591AF20A
            Firmware: Other   
            Unit ID: 49C782CC  Model ID: B013404A0000  Transport IDs: {'btleid': 'B013', 'wpid': '404A'}
         3: DEVICE NAME            {0005}   
            Name: Wireless Mouse MX Anywhere 2
            Kind: mouse
         4: WIRELESS DEVICE STATUS {1D4B}   
         5: RESET                  {0020}   
         6: BATTERY STATUS         {1000}   
            Battery: N/A, recharging, next level 0%.
         7: CHANGE HOST            {1814}   
            Change Host        : 1:warp
         8: REPROG CONTROLS V4     {1B04}   
            Key/Button Actions (saved): {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
            Key/Button Actions        : {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
         9: ADJUSTABLE DPI         {2201}   
            Sensitivity (DPI) (saved): 1000
            Sensitivity (DPI)        : 1000
        10: VERTICAL SCROLLING     {2100}   
            Roller type: 3G
            Ratchet per turn: 24
            Scroll lines: 0
        11: HIRES WHEEL            {2121}   
            Multiplier: 8
            Has invert: Normal wheel motion
            Has ratchet switch: Normal wheel mode
            Low resolution mode
            HID notification
            Scroll Wheel Direction (saved): False
            Scroll Wheel Direction        : False
            Scroll Wheel Resolution (saved): False
            Scroll Wheel Resolution        : False
        12: unknown:1813           {1813}   internal, hidden
        13: unknown:1830           {1830}   internal, hidden
        14: unknown:18A1           {18A1}   internal, hidden
        15: unknown:18C0           {18C0}   internal, hidden
        16: unknown:1DF3           {1DF3}   internal, hidden
        17: unknown:1E00           {1E00}   hidden
        18: unknown:1EB0           {1EB0}   internal, hidden
        19: unknown:1803           {1803}   internal, hidden
        20: unknown:1861           {1861}   internal, hidden
        21: unknown:9000           {9000}   internal, hidden
        22: OOBSTATE               {1805}   internal, hidden
     Has 8 reprogrammable keys:
         0: Left Button               , default: Left Click                  => Left Click                
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         1: Right Button              , default: Right Click                 => Right Click               
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         2: Middle Button             , default: Gesture Button Navigation   => Gesture Button Navigation 
             mse, reprogrammable, divertable, raw XY, pos:0, group:2, group mask:g1,g2,g4
             reporting: default
         3: Back Button               , default: Mouse Back Button           => Mouse Back Button         
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         4: Forward Button            , default: Mouse Forward Button        => Mouse Forward Button      
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         5: Left Tilt                 , default: Mouse Scroll Left Button    => Mouse Scroll Left Button  
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         6: Right Tilt                , default: Mouse Scroll Right Button   => Mouse Scroll Right Button 
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         7: Mouse Gesture Button      , default: Gesture Button              => Gesture Button            
             virtual, raw XY, pos:0, group:4, group mask:empty
             reporting: default
     Battery: N/A, recharging, next level 0%.
```

</details>

<details>
  <summary>After clicking on the "lock" beside "Divert G Keys" </summary>
  
```
$ solaar show
Unifying Receiver
  Device path  : /dev/hidraw5
  USB id       : 046d:C52B
  Serial       : 3C33970C
    Firmware   : 12.09.B0030
    Bootloader : 04.16
    Other      : AA.AA
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  2: Anywhere Mouse MX 2
     Device path  : /dev/hidraw6
     WPID         : 404A
     Codename     : Anywhere MX 2
     Kind         : mouse
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: 4A7889FB
     The power switch is located on the base.
     Battery: unknown (device is offline).

Lightspeed Receiver
  Device path  : /dev/hidraw8
  USB id       : 046d:C53D
  Serial       : 661EC541
    Firmware   : 43.00.B0006
    Bootloader : 02.10
    Other      : AA.D2
  Has 1 paired device(s) out of a maximum of 1.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  1: G613 Wireless Mechanical Gaming Keyboard
     Device path  : None
     WPID         : 4065
     Codename     : G613
     Kind         : keyboard
     Protocol     : HID++ 4.2
     Polling rate : 1 ms (1000Hz)
     Serial number: C79F1378
     Model ID:      B34F40650000
     Unit ID:       D03D3C1A
        Bootloader: BOT 46.00.B0006
          Firmware: MPK 05.02.B0021
             Other: 
     Supports 32 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 46.00.B0006 00006E86A7BD
            Firmware: Firmware MPK 05.02.B0021 40656E86A7BD
            Firmware: Other   
            Unit ID: D03D3C1A  Model ID: B34F40650000  Transport IDs: {'btleid': 'B34F', 'wpid': '4065'}
         3: DEVICE NAME            {0005}   
            Name: G613 Wireless Mechanical Gaming 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:warp
         9: HOSTS INFO             {1815}   
            Host 0 (paired): warp
            Host 1 (paired): warp
        10: REPROG CONTROLS V4     {1B04}   
        11: REPORT HID USAGE       {1BC0}   
        12: ENCRYPTION             {4100}   
        13: KEYBOARD DISABLE BY USAGE {4522}   
        14: KEYBOARD LAYOUT 2      {4540}   
        15: GKEY                   {8010}   
            Divert G Keys        : None
        16: REPORT RATE            {8060}   
            Polling Rate (ms): 1
            Polling Rate (ms) (saved): 1
            Polling Rate (ms)        : 1
        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:18B1           {18B1}   internal, hidden
     Has 2 reprogrammable keys:
         0: Host Switch Channel 1     , default: HostSwitch Channel 1        => HostSwitch Channel 1      
             divertable, persistently divertable, pos:1, group:0, group mask:empty
             reporting: default
         1: Host Switch Channel 2     , default: HostSwitch Channel 2        => HostSwitch Channel 2      
             divertable, persistently divertable, pos:2, group:0, group mask:empty
             reporting: default
     Battery: 50%, discharging, next level 20%.

Wired Devices
  1: Wireless Mouse MX Anywhere 2
     Device path  : /dev/hidraw11
     USB id       : 046d:B013
     Codename     : ?? (B013)
     Kind         : mouse
     Protocol     : HID++ 4.5
     Serial number: ?
     Model ID:      B013404A0000
     Unit ID:       49C782CC
        Bootloader: BOT 23.00.B0007
          Firmware: MPM 02.00.B0007
          Firmware: MPM 02.00.B0007
             Other: 
     Supports 23 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 23.00.B0007 404A591AF20A
            Firmware: Firmware MPM 02.00.B0007 B013591AF20A
            Firmware: Firmware MPM 02.00.B0007 404A591AF20A
            Firmware: Other   
            Unit ID: 49C782CC  Model ID: B013404A0000  Transport IDs: {'btleid': 'B013', 'wpid': '404A'}
         3: DEVICE NAME            {0005}   
            Name: Wireless Mouse MX Anywhere 2
            Kind: mouse
         4: WIRELESS DEVICE STATUS {1D4B}   
         5: RESET                  {0020}   
         6: BATTERY STATUS         {1000}   
            Battery: N/A, recharging, next level 0%.
         7: CHANGE HOST            {1814}   
            Change Host        : 1:warp
         8: REPROG CONTROLS V4     {1B04}   
            Key/Button Actions (saved): {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
            Key/Button Actions        : {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
         9: ADJUSTABLE DPI         {2201}   
            Sensitivity (DPI) (saved): 1000
            Sensitivity (DPI)        : 1000
        10: VERTICAL SCROLLING     {2100}   
            Roller type: 3G
            Ratchet per turn: 24
            Scroll lines: 0
        11: HIRES WHEEL            {2121}   
            Multiplier: 8
            Has invert: Normal wheel motion
            Has ratchet switch: Normal wheel mode
            Low resolution mode
            HID notification
            Scroll Wheel Direction (saved): False
            Scroll Wheel Direction        : False
            Scroll Wheel Resolution (saved): False
            Scroll Wheel Resolution        : False
        12: unknown:1813           {1813}   internal, hidden
        13: unknown:1830           {1830}   internal, hidden
        14: unknown:18A1           {18A1}   internal, hidden
        15: unknown:18C0           {18C0}   internal, hidden
        16: unknown:1DF3           {1DF3}   internal, hidden
        17: unknown:1E00           {1E00}   hidden
        18: unknown:1EB0           {1EB0}   internal, hidden
        19: unknown:1803           {1803}   internal, hidden
        20: unknown:1861           {1861}   internal, hidden
        21: unknown:9000           {9000}   internal, hidden
        22: OOBSTATE               {1805}   internal, hidden
     Has 8 reprogrammable keys:
         0: Left Button               , default: Left Click                  => Left Click                
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         1: Right Button              , default: Right Click                 => Right Click               
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         2: Middle Button             , default: Gesture Button Navigation   => Gesture Button Navigation 
             mse, reprogrammable, divertable, raw XY, pos:0, group:2, group mask:g1,g2,g4
             reporting: default
         3: Back Button               , default: Mouse Back Button           => Mouse Back Button         
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         4: Forward Button            , default: Mouse Forward Button        => Mouse Forward Button      
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         5: Left Tilt                 , default: Mouse Scroll Left Button    => Mouse Scroll Left Button  
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         6: Right Tilt                , default: Mouse Scroll Right Button   => Mouse Scroll Right Button 
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         7: Mouse Gesture Button      , default: Gesture Button              => Gesture Button            
             virtual, raw XY, pos:0, group:4, group mask:empty
             reporting: default
     Battery: N/A, recharging, next level 0%.
```


</details>

<details>
  <summary>After clicking on the "exclamation mark" beside "Divert G Keys"</summary>
  

```
$ solaar show
Unifying Receiver
  Device path  : /dev/hidraw5
  USB id       : 046d:C52B
  Serial       : 3C33970C
    Firmware   : 12.09.B0030
    Bootloader : 04.16
    Other      : AA.AA
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  2: Anywhere Mouse MX 2
     Device path  : /dev/hidraw6
     WPID         : 404A
     Codename     : Anywhere MX 2
     Kind         : mouse
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: 4A7889FB
     The power switch is located on the base.
     Battery: unknown (device is offline).

Lightspeed Receiver
  Device path  : /dev/hidraw8
  USB id       : 046d:C53D
  Serial       : 661EC541
    Firmware   : 43.00.B0006
    Bootloader : 02.10
    Other      : AA.D2
  Has 1 paired device(s) out of a maximum of 1.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  1: G613 Wireless Mechanical Gaming Keyboard
     Device path  : None
     WPID         : 4065
     Codename     : G613
     Kind         : keyboard
     Protocol     : HID++ 4.2
     Polling rate : 1 ms (1000Hz)
     Serial number: C79F1378
     Model ID:      B34F40650000
     Unit ID:       D03D3C1A
        Bootloader: BOT 46.00.B0006
          Firmware: MPK 05.02.B0021
             Other: 
     Supports 32 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 46.00.B0006 00006E86A7BD
            Firmware: Firmware MPK 05.02.B0021 40656E86A7BD
            Firmware: Other   
            Unit ID: D03D3C1A  Model ID: B34F40650000  Transport IDs: {'btleid': 'B34F', 'wpid': '4065'}
         3: DEVICE NAME            {0005}   
            Name: G613 Wireless Mechanical Gaming 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:warp
         9: HOSTS INFO             {1815}   
            Host 0 (paired): warp
            Host 1 (paired): warp
        10: REPROG CONTROLS V4     {1B04}   
        11: REPORT HID USAGE       {1BC0}   
        12: ENCRYPTION             {4100}   
        13: KEYBOARD DISABLE BY USAGE {4522}   
        14: KEYBOARD LAYOUT 2      {4540}   
        15: GKEY                   {8010}   
            Divert G Keys        : None
        16: REPORT RATE            {8060}   
            Polling Rate (ms): 1
            Polling Rate (ms) (saved): 1
            Polling Rate (ms)        : 1
        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:18B1           {18B1}   internal, hidden
     Has 2 reprogrammable keys:
         0: Host Switch Channel 1     , default: HostSwitch Channel 1        => HostSwitch Channel 1      
             divertable, persistently divertable, pos:1, group:0, group mask:empty
             reporting: default
         1: Host Switch Channel 2     , default: HostSwitch Channel 2        => HostSwitch Channel 2      
             divertable, persistently divertable, pos:2, group:0, group mask:empty
             reporting: default
     Battery: 50%, discharging, next level 20%.

Wired Devices
  1: Wireless Mouse MX Anywhere 2
     Device path  : /dev/hidraw11
     USB id       : 046d:B013
     Codename     : ?? (B013)
     Kind         : mouse
     Protocol     : HID++ 4.5
     Serial number: ?
     Model ID:      B013404A0000
     Unit ID:       49C782CC
        Bootloader: BOT 23.00.B0007
          Firmware: MPM 02.00.B0007
          Firmware: MPM 02.00.B0007
             Other: 
     Supports 23 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 23.00.B0007 404A591AF20A
            Firmware: Firmware MPM 02.00.B0007 B013591AF20A
            Firmware: Firmware MPM 02.00.B0007 404A591AF20A
            Firmware: Other   
            Unit ID: 49C782CC  Model ID: B013404A0000  Transport IDs: {'btleid': 'B013', 'wpid': '404A'}
         3: DEVICE NAME            {0005}   
            Name: Wireless Mouse MX Anywhere 2
            Kind: mouse
         4: WIRELESS DEVICE STATUS {1D4B}   
         5: RESET                  {0020}   
         6: BATTERY STATUS         {1000}   
            Battery: N/A, full, next level 0%.
         7: CHANGE HOST            {1814}   
            Change Host        : 1:warp
         8: REPROG CONTROLS V4     {1B04}   
            Key/Button Actions (saved): {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
            Key/Button Actions        : {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
         9: ADJUSTABLE DPI         {2201}   
            Sensitivity (DPI) (saved): 1000
            Sensitivity (DPI)        : 1000
        10: VERTICAL SCROLLING     {2100}   
            Roller type: 3G
            Ratchet per turn: 24
            Scroll lines: 0
        11: HIRES WHEEL            {2121}   
            Multiplier: 8
            Has invert: Normal wheel motion
            Has ratchet switch: Normal wheel mode
            Low resolution mode
            HID notification
            Scroll Wheel Direction (saved): False
            Scroll Wheel Direction        : False
            Scroll Wheel Resolution (saved): False
            Scroll Wheel Resolution        : False
        12: unknown:1813           {1813}   internal, hidden
        13: unknown:1830           {1830}   internal, hidden
        14: unknown:18A1           {18A1}   internal, hidden
        15: unknown:18C0           {18C0}   internal, hidden
        16: unknown:1DF3           {1DF3}   internal, hidden
        17: unknown:1E00           {1E00}   hidden
        18: unknown:1EB0           {1EB0}   internal, hidden
        19: unknown:1803           {1803}   internal, hidden
        20: unknown:1861           {1861}   internal, hidden
        21: unknown:9000           {9000}   internal, hidden
        22: OOBSTATE               {1805}   internal, hidden
     Has 8 reprogrammable keys:
         0: Left Button               , default: Left Click                  => Left Click                
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         1: Right Button              , default: Right Click                 => Right Click               
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         2: Middle Button             , default: Gesture Button Navigation   => Gesture Button Navigation 
             mse, reprogrammable, divertable, raw XY, pos:0, group:2, group mask:g1,g2,g4
             reporting: default
         3: Back Button               , default: Mouse Back Button           => Mouse Back Button         
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         4: Forward Button            , default: Mouse Forward Button        => Mouse Forward Button      
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         5: Left Tilt                 , default: Mouse Scroll Left Button    => Mouse Scroll Left Button  
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         6: Right Tilt                , default: Mouse Scroll Right Button   => Mouse Scroll Right Button 
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         7: Mouse Gesture Button      , default: Gesture Button              => Gesture Button            
             virtual, raw XY, pos:0, group:4, group mask:empty
             reporting: default
     Battery: N/A, full, next level 0%.
```

</details>

<details>
  <summary>After clicking the lock once again:</summary>
  

```
$ solaar show
Unifying Receiver
  Device path  : /dev/hidraw5
  USB id       : 046d:C52B
  Serial       : 3C33970C
    Firmware   : 12.09.B0030
    Bootloader : 04.16
    Other      : AA.AA
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  2: Anywhere Mouse MX 2
     Device path  : /dev/hidraw6
     WPID         : 404A
     Codename     : Anywhere MX 2
     Kind         : mouse
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: 4A7889FB
     The power switch is located on the base.
     Battery: unknown (device is offline).

Lightspeed Receiver
  Device path  : /dev/hidraw8
  USB id       : 046d:C53D
  Serial       : 661EC541
    Firmware   : 43.00.B0006
    Bootloader : 02.10
    Other      : AA.D2
  Has 1 paired device(s) out of a maximum of 1.
  Notifications: wireless, software present (0x000900)
  Device activity counters: (empty)

  1: G613 Wireless Mechanical Gaming Keyboard
     Device path  : None
     WPID         : 4065
     Codename     : G613
     Kind         : keyboard
     Protocol     : HID++ 4.2
     Polling rate : 1 ms (1000Hz)
     Serial number: C79F1378
     Model ID:      B34F40650000
     Unit ID:       D03D3C1A
        Bootloader: BOT 46.00.B0006
          Firmware: MPK 05.02.B0021
             Other: 
     Supports 32 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 46.00.B0006 00006E86A7BD
            Firmware: Firmware MPK 05.02.B0021 40656E86A7BD
            Firmware: Other   
            Unit ID: D03D3C1A  Model ID: B34F40650000  Transport IDs: {'btleid': 'B34F', 'wpid': '4065'}
         3: DEVICE NAME            {0005}   
            Name: G613 Wireless Mechanical Gaming 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:warp
         9: HOSTS INFO             {1815}   
            Host 0 (paired): warp
            Host 1 (paired): warp
        10: REPROG CONTROLS V4     {1B04}   
        11: REPORT HID USAGE       {1BC0}   
        12: ENCRYPTION             {4100}   
        13: KEYBOARD DISABLE BY USAGE {4522}   
        14: KEYBOARD LAYOUT 2      {4540}   
        15: GKEY                   {8010}   
            Divert G Keys        : None
        16: REPORT RATE            {8060}   
            Polling Rate (ms): 1
            Polling Rate (ms) (saved): 1
            Polling Rate (ms)        : 1
        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:18B1           {18B1}   internal, hidden
     Has 2 reprogrammable keys:
         0: Host Switch Channel 1     , default: HostSwitch Channel 1        => HostSwitch Channel 1      
             divertable, persistently divertable, pos:1, group:0, group mask:empty
             reporting: default
         1: Host Switch Channel 2     , default: HostSwitch Channel 2        => HostSwitch Channel 2      
             divertable, persistently divertable, pos:2, group:0, group mask:empty
             reporting: default
     Battery: 50%, discharging, next level 20%.

Wired Devices
  1: Wireless Mouse MX Anywhere 2
     Device path  : /dev/hidraw11
     USB id       : 046d:B013
     Codename     : ?? (B013)
     Kind         : mouse
     Protocol     : HID++ 4.5
     Serial number: ?
     Model ID:      B013404A0000
     Unit ID:       49C782CC
        Bootloader: BOT 23.00.B0007
          Firmware: MPM 02.00.B0007
          Firmware: MPM 02.00.B0007
             Other: 
     Supports 23 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 23.00.B0007 404A591AF20A
            Firmware: Firmware MPM 02.00.B0007 B013591AF20A
            Firmware: Firmware MPM 02.00.B0007 404A591AF20A
            Firmware: Other   
            Unit ID: 49C782CC  Model ID: B013404A0000  Transport IDs: {'btleid': 'B013', 'wpid': '404A'}
         3: DEVICE NAME            {0005}   
            Name: Wireless Mouse MX Anywhere 2
            Kind: mouse
         4: WIRELESS DEVICE STATUS {1D4B}   
         5: RESET                  {0020}   
         6: BATTERY STATUS         {1000}   
            Battery: N/A, full, next level 0%.
         7: CHANGE HOST            {1814}   
            Change Host        : 1:warp
         8: REPROG CONTROLS V4     {1B04}   
            Key/Button Actions (saved): {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
            Key/Button Actions        : {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
         9: ADJUSTABLE DPI         {2201}   
            Sensitivity (DPI) (saved): 1000
            Sensitivity (DPI)        : 1000
        10: VERTICAL SCROLLING     {2100}   
            Roller type: 3G
            Ratchet per turn: 24
            Scroll lines: 0
        11: HIRES WHEEL            {2121}   
            Multiplier: 8
            Has invert: Normal wheel motion
            Has ratchet switch: Normal wheel mode
            Low resolution mode
            HID notification
            Scroll Wheel Direction (saved): False
            Scroll Wheel Direction        : False
            Scroll Wheel Resolution (saved): False
            Scroll Wheel Resolution        : False
        12: unknown:1813           {1813}   internal, hidden
        13: unknown:1830           {1830}   internal, hidden
        14: unknown:18A1           {18A1}   internal, hidden
        15: unknown:18C0           {18C0}   internal, hidden
        16: unknown:1DF3           {1DF3}   internal, hidden
        17: unknown:1E00           {1E00}   hidden
        18: unknown:1EB0           {1EB0}   internal, hidden
        19: unknown:1803           {1803}   internal, hidden
        20: unknown:1861           {1861}   internal, hidden
        21: unknown:9000           {9000}   internal, hidden
        22: OOBSTATE               {1805}   internal, hidden
     Has 8 reprogrammable keys:
         0: Left Button               , default: Left Click                  => Left Click                
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         1: Right Button              , default: Right Click                 => Right Click               
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         2: Middle Button             , default: Gesture Button Navigation   => Gesture Button Navigation 
             mse, reprogrammable, divertable, raw XY, pos:0, group:2, group mask:g1,g2,g4
             reporting: default
         3: Back Button               , default: Mouse Back Button           => Mouse Back Button         
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         4: Forward Button            , default: Mouse Forward Button        => Mouse Forward Button      
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         5: Left Tilt                 , default: Mouse Scroll Left Button    => Mouse Scroll Left Button  
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         6: Right Tilt                , default: Mouse Scroll Right Button   => Mouse Scroll Right Button 
             mse, reprogrammable, divertable, raw XY, pos:0, group:3, group mask:g1,g2,g3,g4
             reporting: default
         7: Mouse Gesture Button      , default: Gesture Button              => Gesture Button            
             virtual, raw XY, pos:0, group:4, group mask:empty
             reporting: default
     Battery: N/A, full, next level 0%.
```

</details>


My guess at what was wrong didn't pan out.  Try this:
In the function_change_click in lib/solaar/ui/config_panel.py add
```
    print("CC", "DEVICE", device.codename, "SETTING", name, "OLD", allowed, icon_name, "NEW", new_allowed, eb.get_children()[0].get_icon_name()[0])
```
(one line) just before the `if device.persister:` line.

Then run `bin/solaar -dd` and change the gkeys sensitivity setting enough to establish a clear cycle.  Then do the same for another setting.  Post the output (just the sensitivity changes).
Here it is. With a clean configuration I run Solaar and did the following steps:

- select the keyboard from the list on the left
- clicked repeatedly on the Divert Gkeys sensitivity setting (lock->exclamation mark -> lock ->exclamation mark -> ... )

<details>
  <summary>Divert Gkeys Sensitivity</summary>

```
CC DEVICE G613 SETTING divert-gkeys OLD False changes-prevent NEW ignore dialog-error
11:35:51,290     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': 'ignore', 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING divert-gkeys OLD ignore dialog-error NEW True changes-allow
11:35:51,966     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
11:35:51,966    DEBUG [AsyncUI] logitech_receiver.settings: divert-gkeys: settings read None from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
11:35:51,966     INFO [AsyncUI] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING divert-gkeys OLD False changes-prevent NEW ignore dialog-error
11:35:52,633     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': 'ignore', 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING divert-gkeys OLD ignore dialog-error NEW True changes-allow
11:35:53,255     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
11:35:53,256    DEBUG [AsyncUI] logitech_receiver.settings: divert-gkeys: settings read None from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
11:35:53,256     INFO [AsyncUI] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING divert-gkeys OLD False changes-prevent NEW ignore dialog-error
11:35:53,908     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': 'ignore', 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING divert-gkeys OLD ignore dialog-error NEW True changes-allow
11:35:54,516     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
11:35:54,516    DEBUG [AsyncUI] logitech_receiver.settings: divert-gkeys: settings read None from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
11:35:54,516     INFO [AsyncUI] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING divert-gkeys OLD False changes-prevent NEW ignore dialog-error
11:35:56,173     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': 'ignore', 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING divert-gkeys OLD ignore dialog-error NEW True changes-allow
11:35:56,683     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
11:35:56,683    DEBUG [AsyncUI] logitech_receiver.settings: divert-gkeys: settings read None from <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
11:35:56,683     INFO [AsyncUI] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
```

</details>


Now, doing the same for the "Polling Rate (ms)" sensitivity setting: (lock -> exclamation -> red lock -> lock ...)

<details>
  <summary>Polling Rate (ms)</summary>

```
CC DEVICE G613 SETTING report_rate OLD False changes-prevent NEW ignore dialog-error
11:32:55,838     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': 'ignore'}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING report_rate OLD ignore dialog-error NEW True changes-allow
11:33:01,938     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': True}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
11:33:01,940    DEBUG [AsyncUI] logitech_receiver.settings: report_rate: settings write 1 to <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
11:33:01,940    DEBUG [AsyncUI] logitech_receiver.settings: report_rate: settings prepare write(1) => b'\x01'
11:33:01,942    DEBUG [AsyncUI] logitech_receiver.base: (19) <= w[11 01 1028 01000000000000000000000000000000]
11:33:02,308    DEBUG [ReceiverListener:hidraw8] logitech_receiver.base: (18) => r[11 01 1028 00000000000000000000000000000000]
11:33:02,308    DEBUG [AsyncUI] logitech_receiver.base: (19) => r[11 01 1028 00000000000000000000000000000000]


CC DEVICE G613 SETTING report_rate OLD True changes-allow NEW False changes-prevent
11:33:07,124     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING report_rate OLD False changes-prevent NEW ignore dialog-error
11:33:27,084     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': 'ignore'}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING report_rate OLD ignore dialog-error NEW True changes-allow
11:33:34,985     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': True}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
11:33:34,986    DEBUG [AsyncUI] logitech_receiver.settings: report_rate: settings write 1 to <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
11:33:34,986    DEBUG [AsyncUI] logitech_receiver.settings: report_rate: settings prepare write(1) => b'\x01'
11:33:34,986    DEBUG [AsyncUI] logitech_receiver.base: (19) <= w[11 01 1029 01000000000000000000000000000000]
11:33:35,293    DEBUG [AsyncUI] logitech_receiver.base: (19) => r[11 01 1029 00000000000000000000000000000000]
11:33:35,293    DEBUG [ReceiverListener:hidraw8] logitech_receiver.base: (18) => r[11 01 1029 00000000000000000000000000000000]


CC DEVICE G613 SETTING report_rate OLD True changes-allow NEW False changes-prevent
11:33:49,940     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING report_rate OLD False changes-prevent NEW ignore dialog-error
11:33:50,893     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': 'ignore'}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json


CC DEVICE G613 SETTING report_rate OLD ignore dialog-error NEW True changes-allow
11:33:51,612     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': True}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
11:33:51,612    DEBUG [AsyncUI] logitech_receiver.settings: report_rate: settings write 1 to <Device(1,4065,G613 Wireless Mechanical Gaming Keyboard,C79F1378)>
11:33:51,612    DEBUG [AsyncUI] logitech_receiver.settings: report_rate: settings prepare write(1) => b'\x01'
11:33:51,612    DEBUG [AsyncUI] logitech_receiver.base: (19) <= w[11 01 102D 01000000000000000000000000000000]
11:33:51,950    DEBUG [ReceiverListener:hidraw8] logitech_receiver.base: (18) => r[11 01 102D 00000000000000000000000000000000]
11:33:51,951    DEBUG [AsyncUI] logitech_receiver.base: (19) => r[11 01 102D 00000000000000000000000000000000]


CC DEVICE G613 SETTING report_rate OLD True changes-allow NEW False changes-prevent
11:33:55,640     INFO [MainThread] solaar.configuration: saved {'4065:C79F1378': {'_modelId': 'B34F40650000', '_name': 'G613 Wireless Mechanical Gaming Keyboard', '_serial': 'C79F1378', '_unitId': 'D03D3C1A', 'divert-keys': {'209': 0, '210': 0}, 'report_rate': 1, '_sensitive': {'divert-gkeys': True, 'report_rate': False}}, 'B013404A0000:49C782CC': {'_modelId': 'B013404A0000', '_name': 'Wireless Mouse MX Anywhere 2', '_unitId': '49C782CC', 'divert-keys': {'82': 0, '83': 0, '86': 0, '91': 0, '93': 0}, 'dpi': 1000, 'dpi-sliding': 0, 'hires-smooth-invert': False, 'hires-smooth-resolution': False, 'mouse-gestures': 0, 'reprogrammable-keys': {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}}, '_version': '1.0.6'} to /home/emilio/.config/solaar/config.json
```

</details>



@francesquini What do you see on the Solaar window for the setting?  Is there a little caution icon and does "Read/write operation failed" show up when you hover over it?

I think I've found the problem.  This setting can't be read from the device so there is a fake read function.  But this function has a bug.  Expect a fix shortly.
What I did was change a setting for a device I have to look like the divert gkeys setting, saw the problem, and fixed it for this modified setting.

Resolving patch:
diff --git a/lib/logitech_receiver/settings_templates.py b/lib/logitech_receiver/settings_templates.py
--- a/lib/logitech_receiver/settings_templates.py
+++ b/lib/logitech_receiver/settings_templates.py
@@ -820,7 +820,7 @@ def __init__(self, feature):
             super(_DivertGkeysRW, self).__init__(feature, write_fnid=0x20)
 
         def read(self, device):  # no way to read, so just assume not diverted
-            return 0x00
+            return b'\x00'
 
     rw = _DivertGkeysRW(_F.GKEY)
     return _Setting(_DIVERT_GKEYS, rw, _BooleanV(true_value=0x01, false_value=0x00, mask=0xff), device_kind=(_DK.keyboard, ))


Test patch: