Closed victorkirov closed 2 years ago
If you run solaar as solaar -dd
you will see the gesture notifications as they are created by Solaar including the gesture data. The gesture data is a list whose first element is the number of events followed by event data. Mouse movement data consists of a 0 followed by x (positive is right) and y (positive is down) movement Diverted key data consists of a 1 followed by the Logitech key code.
So please try solaar -dd
and see whether the notifications make sense. If not provide the output and describe what was happening for each notification.
You could also try solaar -ddd
, which outputs the actual message received by Solaar from the mouse showing when the key that initiates mouse gesture processing is pressed, the messages that the mouse sends during mouse gesture processing, and the message that the mouse sends when the gesture key is released. However, because of the amount of processing required the mouse movements are often broken up when running solaar -ddd
resulting in many small movements.
I'm not 100% sure where those numbers are located in the logs. I see the Master 3S is not in the list of supported mice yet, so maybe it's that?
I ran solaar -dd
and did the following:
Below are the relevant logs:
08:24:34,473 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (19) => r[11 FF 0900 00C30000000000000000000000000000]
08:24:34,473 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: notification for feature REPROG CONTROLS V4, report 0, data 00C30000000000000000000000000000
08:24:34,473 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: diverted controls pressed: 0xc3, 0x0, 0x0, 0x0
08:24:34,474 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (19) => r[11 FF 0910 017CFFE8000000000000000000000000]
08:24:34,474 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B034,MX Master 3S,?)>
08:24:34,474 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: notification for feature REPROG CONTROLS V4, report 0, data 017CFFE8000000000000000000000000
08:24:34,474 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: rawXY dx=380 dy=-24
08:24:34,593 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (19) => r[11 FF 0900 00000000000000000000000000000000]
08:24:34,593 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings_templates: mouse gesture move event 5 0 [1, 0, 5, 0]
08:24:34,593 INFO [ReceiverListener:hidraw2] logitech_receiver.settings_templates: mouse gesture notification [1, 0, 5, 0]
08:24:34,593 INFO [ReceiverListener:hidraw2] logitech_receiver.diversion: KeyPress action: ['Control_L', 'Super_L', 'Right'], modifiers 0 ['0x25', '0x85', '0x72']
08:24:34,595 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: notification for feature REPROG CONTROLS V4, report 0, data 00000000000000000000000000000000
08:24:34,595 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: diverted controls pressed: 0x0, 0x0, 0x0, 0x0
08:24:35,928 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (19) => r[11 FF 0900 00C30000000000000000000000000000]
08:24:35,928 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: notification for feature REPROG CONTROLS V4, report 0, data 00C30000000000000000000000000000
08:24:35,928 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: diverted controls pressed: 0xc3, 0x0, 0x0, 0x0
08:24:35,930 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (19) => r[11 FF 0910 FE580009000000000000000000000000]
08:24:35,930 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B034,MX Master 3S,?)>
08:24:35,931 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: notification for feature REPROG CONTROLS V4, report 0, data FE580009000000000000000000000000
08:24:35,931 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: rawXY dx=-424 dy=9
08:24:36,055 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (19) => r[11 FF 0900 00000000000000000000000000000000]
08:24:36,055 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings_templates: mouse gesture move event -6 0 [1, 0, -6, 0]
08:24:36,055 INFO [ReceiverListener:hidraw2] logitech_receiver.settings_templates: mouse gesture notification [1, 0, -6, 0]
08:24:36,056 INFO [ReceiverListener:hidraw2] logitech_receiver.diversion: KeyPress action: ['Control_L', 'Super_L', 'Left'], modifiers 0 ['0x25', '0x85', '0x71']
08:24:36,058 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: notification for feature REPROG CONTROLS V4, report 0, data 00000000000000000000000000000000
08:24:36,058 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,?)>: diverted controls pressed: 0x0, 0x0, 0x0, 0x0
The log appears to show that Solaar is acting correctly given the information it receives from the mouse. Solaar is reporting seeing six messages (lines from logitech_receiver.base), all related to the REPROG CONTROLS V4 feature, which is used for mouse gestures. First, the Mouse Gesture Button (00C3) goes down. Then the mouse immediately (or almost immediately) moves to the right (and up a little), which is turned into a gesture movement of 5,0. Then the Button goes up ( and the gesture triggers a rule that simulates Control_L+Super_L+Right. Then the Button goes down again, there is an immediate move left (down a bit), and the Button goes up.
So it appears that the mouse is somehow sending these extra movement reports and Solaar is just reporting on what it sees.
The question is what these extra movement reports represent. Try running with solaar -dd
and do large and small movements in different directions before pressing the gesture button. Also try moving the mouse while the button is down.
Oops, I meant to run with solaar -ddd
so that the messages from the device show up.
Also, you appear to be running version 1.1.1 of Solaar. You should upgrade to 1.1.4.
Before I continue, just want to say thanks for the great support :smile: The logs also make a lot more sense now after your description.
Ok, so I upgrade to 1.1.4, but same issue. I then tried something I should've tried from the start, and connected my 2S with the same settings. The 2S seems to work as expected.
It looks like this is a 3S thing. I'm guessing they changed the way that it publishes event messages and that's why it requires Logitech Options Plus in windows, which the older mice aren't compatible with (not even the MX Master 3). I'll see if I can figure out what it's doing this weekend and maybe report it back to you or see if I can make a PR.
Thanks again for the help.
I did some preliminary testing and it looks like there is a slight difference in how the 2S and 3S send messages. Possibly a new feature of the 3S or it's an upcoming feature that they haven't revealed yet and will enable with a new version of Logitech options Plus.
For the 2S we get this:
08:55:48,148 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (17) => r[11 FF 0A00 00C30000000000000000000000000000]
08:55:48,148 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: notification for feature REPROG CONTROLS V4, report 0, data 00C30000000000000000000000000000
08:55:48,149 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: diverted controls pressed: 0xc3, 0x0, 0x0, 0x0
08:55:49,169 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (17) => r[11 FF 0A10 FFFF0000000000000000000000000000]
08:55:49,169 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B019,Wireless Mouse MX Master 2S,)>
08:55:49,169 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: notification for feature REPROG CONTROLS V4, report 0, data FFFF0000000000000000000000000000
08:55:49,170 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: rawXY dx=-1 dy=0
08:55:49,170 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (17) => r[11 FF 0A10 0000FFFF000000000000000000000000]
08:55:49,170 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B019,Wireless Mouse MX Master 2S,)>
08:55:49,170 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: notification for feature REPROG CONTROLS V4, report 0, data 0000FFFF000000000000000000000000
08:55:49,170 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: rawXY dx=0 dy=-1
08:55:49,176 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (17) => r[11 FF 0A10 FFFF0000000000000000000000000000]
08:55:49,176 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B019,Wireless Mouse MX Master 2S,)>
08:55:49,176 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: notification for feature REPROG CONTROLS V4, report 0, data FFFF0000000000000000000000000000
08:55:49,176 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: rawXY dx=-1 dy=0
...
...
08:55:49,394 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (17) => r[11 FF 0A10 FFFF0000000000000000000000000000]
08:55:49,394 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B019,Wireless Mouse MX Master 2S,)>
08:55:49,394 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: notification for feature REPROG CONTROLS V4, report 0, data FFFF0000000000000000000000000000
08:55:49,394 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: rawXY dx=-1 dy=0
08:55:49,619 DEBUG [ReceiverListener:hidraw2] logitech_receiver.base: (17) => r[11 FF 0A00 00000000000000000000000000000000]
08:55:49,620 DEBUG [ReceiverListener:hidraw2] logitech_receiver.settings_templates: mouse gesture move event -1 0 [1, 0, -1, 0]
08:55:49,620 INFO [ReceiverListener:hidraw2] logitech_receiver.settings_templates: mouse gesture notification [1, 0, -1, 0]
08:55:49,620 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: notification for feature REPROG CONTROLS V4, report 0, data 00000000000000000000000000000000
08:55:49,620 DEBUG [ReceiverListener:hidraw2] logitech_receiver.notifications: <Device(255,B019,Wireless Mouse MX Master 2S,)>: diverted controls pressed: 0x0, 0x0, 0x0, 0x0
For the 3S, it sends this:
08:58:01,121 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[11 FF 0900 00C30000000000000000000000000000]
08:58:01,122 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: notification for feature REPROG CONTROLS V4, report 0, data 00C30000000000000000000000000000
08:58:01,122 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: diverted controls pressed: 0xc3, 0x0, 0x0, 0x0
08:58:01,122 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[11 FF 0910 01C30016000000000000000000000000]
08:58:01,122 DEBUG [ReceiverListener:hidraw1] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B034,MX Master 3S,)>
08:58:01,122 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: notification for feature REPROG CONTROLS V4, report 0, data 01C30016000000000000000000000000
08:58:01,122 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: rawXY dx=451 dy=22
08:58:01,586 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[11 FF 0910 0000FFFF000000000000000000000000]
08:58:01,586 DEBUG [ReceiverListener:hidraw1] logitech_receiver.settings_templates: mouse gesture move event 6 0 [1, 0, 6, 0]
08:58:01,586 DEBUG [ReceiverListener:hidraw1] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B034,MX Master 3S,)>
08:58:01,586 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: notification for feature REPROG CONTROLS V4, report 0, data 0000FFFF000000000000000000000000
08:58:01,587 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: rawXY dx=0 dy=-1
08:58:01,608 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[11 FF 0910 FFFF0000000000000000000000000000]
08:58:01,608 DEBUG [ReceiverListener:hidraw1] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B034,MX Master 3S,)>
08:58:01,609 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: notification for feature REPROG CONTROLS V4, report 0, data FFFF0000000000000000000000000000
08:58:01,609 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: rawXY dx=-1 dy=0
...
...
08:58:01,886 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[11 FF 0910 FFFF0000000000000000000000000000]
08:58:01,886 DEBUG [ReceiverListener:hidraw1] logitech_receiver.settings: dpi: settings read 1000 from <Device(255,B034,MX Master 3S,)>
08:58:01,886 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: notification for feature REPROG CONTROLS V4, report 0, data FFFF0000000000000000000000000000
08:58:01,886 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: rawXY dx=-1 dy=0
08:58:01,998 DEBUG [ReceiverListener:hidraw1] logitech_receiver.base: (13) => r[11 FF 0900 00000000000000000000000000000000]
08:58:01,998 DEBUG [ReceiverListener:hidraw1] logitech_receiver.settings_templates: mouse gesture move event -2 0 [2, 0, 6, 0, 0, -2, 0]
08:58:01,999 INFO [ReceiverListener:hidraw1] logitech_receiver.settings_templates: mouse gesture notification [2, 0, 6, 0, 0, -2, 0]
08:58:01,999 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: notification for feature REPROG CONTROLS V4, report 0, data 00000000000000000000000000000000
08:58:01,999 DEBUG [ReceiverListener:hidraw1] logitech_receiver.notifications: <Device(255,B034,MX Master 3S,)>: diverted controls pressed: 0x0, 0x0, 0x0, 0x0
So it looks like the 3S sends a message with the last movement done before the gesture button was pushed and then acts like the 2S thereafter.
A possible solution would be to ignore the first movement command from all mice until it becomes clear what Logitech were going for and then maybe implement that feature once it's released. Skipping a single movement message shouldn't make much of a difference with the amount of movement messages coming in.
Skipping the first message is possible. If the movement is small it won't matter and if the movement is large then the mouse is moving fast so it won't matter anyway because there will be other large movement messages anyway and if there isn't the user won't be able to tell whether the sole large movement was before or after pressing the button. But it would be better to see if there is some new aspect of the feature that can be used to ignore this first movement event.
I did get my MX Master 3 to produce a regular movement message with over 100 displacement by moving the mouse very fast.
Take a look at PR #1664, which ignores the first movement event. I probably won't merge this PR in for a while in the hopes that some information about the 3S is forthcoming from Logitech.
To clone and use Solar from its GitHub repository
git clone https://github.com/pwr-Solaar/Solaar.git
cd Solaar
Run Solaar as bin/solaar from this directory.
To run PR #1664, 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/1664/head:pull_1664
git checkout pull_1664
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_1664
git fetch origin pull/1664/head
git reset --hard FETCH_HEAD
Thank you so much! The hack seems to be working perfectly :tada:
I'm waiting to see whether I can get information from Logitech on this issue. In the meantime, can you run solaar -ddd show
while the 3S is active and post the output?
Sure, here it is:
Thanks. That shows that the version of the feature is newer than the documentation I have.
There is a new version of the PR that uses a more principled way of determining when to ignore the first movement. Please try it out.
It's still working well with the new changes.
There is one weird thing that happens but I'm not sure how to reproduce it. After using the mouse for a bit without doing a gesture, the first gesture I try is ignored. I'll try and figure out a reliable way to reproduce and let you know. It might be a 3S issue again.
You will probably have to run with bin/solaar -ddd
to capture the messages that the mouse produces.
But I don't see anything that can distinguish the unusual movement message from other messages.
It seems to have fixed itself after a reboot. All working well now :smile: Thank you!
I can confirm that the PR really improves the MX Master 3S mouse gesture behaviour.
The fix is still a hack. I've reported the bad behaviour to Logitech and there may be a better solution. I'll wait for a while longer before merging the PR.
I'm still experiencing this with my MX Master 3S, even with the fix. Exactly the same as scenario 1 described in this issue. I've attached a sample of solaar -ddd
but I can open another more detailed issue if needed
Information
solaar --version
orgit describe --tags
if cloned from this repository): 1.1.1uname -srmo
):Linux 5.17.15-76051715-generic x86_64 GNU/Linux
solaar show
:~/.config/solaar/config.yaml
(or~/.config/solaar/config.json
if~/.config/solaar/config.yaml
not present):Describe the bug As per my rules config, I've setup gestures for each direction and a no-op gesture. I'm getting strange behaviour when doing gestures.
Scenario 1:
Scenario 2:
To Reproduce Steps to reproduce the behavior: