pwr-Solaar / Solaar

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

Rule for typing text when pressing a button with modifier for MX 3S #2691

Open wld0102 opened 13 hours ago

wld0102 commented 13 hours ago

Screenshot_20241118_231306

This rule doesn't work with any modifier set.

pfps commented 13 hours ago

Much more information is needed. Fill out all the information requested in a bug report. Also provide the output of solaar -ddd around the time that you try to trigger the rule.

wld0102 commented 13 hours ago

Solaar version: 1.1.13 Distribution: Arch Linux Kernel: 6.11.6 x86_64 DE: KDE/Xorg Device: Logi MX Master 3S

wld0102 commented 13 hours ago

solaar show:

Bolt Receiver
  Device path  : /dev/hidraw2
  USB id       : 046d:C548
  Serial       : 33413946343641363946324642303733
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless, software present (0x000900)
  Device activity counters: 1=26

  1: MX Master 3S
     Device path  : None
     WPID         : B034
     Codename     : MX Master 3S
     Kind         : mouse
     Protocol     : HID++ 4.5
     Serial number: 852C0958
     Model ID:      B03400000000
     Unit ID:       852C0958
                 1: BL1 69.01.B0006
                 0: RBM 22.01.B0006
                 3: 
     The power switch is located on the (unknown).
     Supports 36 HID++ 2.0 features:
         0: ROOT                   {0000} V0     
         1: FEATURE SET            {0001} V0     
         2: DEVICE FW VERSION      {0003} V4     
            Firmware: Bootloader BL1 69.01.B0006 B034BB5190E8
            Firmware: Firmware RBM 22.01.B0006 B034BB5190E8
            Firmware: Other   
            Unit ID: 852C0958  Model ID: B03400000000  Transport IDs: {'btleid': 'B034'}
         3: DEVICE NAME            {0005} V0     
            Name: MX Master 3S
            Kind: mouse
         4: WIRELESS DEVICE STATUS {1D4B} V0     
         5: CONFIG CHANGE          {0020} V0     
            Configuration: 11000000000000000000000000000000
         6: CRYPTO ID              {0021} V1     
         7: DEVICE FRIENDLY NAME   {0007} V0     
            Friendly Name: MX Master 3S
         8: UNIFIED BATTERY        {1004} V3     
            Battery: 55%, discharging.
         9: REPROG CONTROLS V4     {1B04} V5     
            Key/Button Actions (saved): {Left Button:Left Click, Right Button:Right Click, Middle Button:Mouse Middle Button, Back Button:Mouse Back Button, Forward Button:Mouse Forward Button, Mouse Gesture Button:Gesture Button Navigation, Smart Shift:Smart Shift}
            Key/Button Actions        : {Left Button:Left Click, Right Button:Right Click, Middle Button:Mouse Middle Button, Back Button:Mouse Back Button, Forward Button:Mouse Forward Button, Mouse Gesture Button:Gesture Button Navigation, Smart Shift:Smart Shift}
            Key/Button Diversion (saved): {Middle Button:Regular, Back Button:Diverted, Forward Button:Diverted, Mouse Gesture Button:Diverted, Smart Shift:Diverted}
            Key/Button Diversion        : {Middle Button:Regular, Back Button:Diverted, Forward Button:Diverted, Mouse Gesture Button:Diverted, Smart Shift:Diverted}
        10: CHANGE HOST            {1814} V1     
            Change Host        : 1:hp
        11: HOSTS INFO             {1815} V2     
            Host 0 (paired): hp
            Host 1 (unpaired): 
            Host 2 (unpaired): 
        12: XY STATS               {2250} V1     
        13: ADJUSTABLE DPI         {2201} V2     
            Sensitivity (DPI) (saved): 1000
            Sensitivity (DPI)        : 1000
        14: SMART SHIFT            {2110} V0     
            Scroll Wheel Ratcheted (saved): Ratcheted
            Scroll Wheel Ratcheted        : Ratcheted
            Scroll Wheel Ratchet Speed (saved): 7
            Scroll Wheel Ratchet Speed        : 7
        15: HIRES WHEEL            {2121} V1     
            Multiplier: 15
            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
            Scroll Wheel Diversion (saved): False
            Scroll Wheel Diversion        : False
        16: THUMB WHEEL            {2150} V0     
            Thumb Wheel Direction (saved): False
            Thumb Wheel Direction        : False
            Thumb Wheel Diversion (saved): True
            Thumb Wheel Diversion        : True
        17: WHEEL STATS            {2251} V0     
        18: DFUCONTROL             {00C3} V0     
        19: DEVICE RESET           {1802} V0    internal, hidden, unknown:000010 
        20: unknown:1803           {1803} V0    internal, hidden, unknown:000010 
        21: CONFIG DEVICE PROPS    {1806} V8    internal, hidden, unknown:000010 
        22: unknown:1816           {1816} V0    internal, hidden, unknown:000010 
        23: OOBSTATE               {1805} V0    internal, hidden 
        24: unknown:1830           {1830} V0    internal, hidden, unknown:000010 
        25: unknown:1891           {1891} V7    internal, hidden, unknown:000008 
        26: unknown:18A1           {18A1} V0    internal, hidden, unknown:000010 
        27: unknown:1E00           {1E00} V0    hidden 
        28: unknown:1E02           {1E02} V0    internal, hidden 
        29: unknown:1602           {1602} V0     
        30: unknown:1EB0           {1EB0} V0    internal, hidden, unknown:000010 
        31: unknown:1861           {1861} V1    internal, hidden, unknown:000010 
        32: unknown:9300           {9300} V0    internal, hidden, unknown:000010 
        33: unknown:9001           {9001} V0    internal, hidden, unknown:000010 
        34: unknown:1E22           {1E22} V0    internal, hidden, unknown:000010 
        35: unknown:9205           {9205} V0    internal, hidden, unknown:000010 
     Has 8 reprogrammable keys:
         0: Left Button               , default: Left Click                  => Left Click                
             mse, analytics key events, pos:0, group:1, group mask:g1
             reporting: default
         1: Right Button              , default: Right Click                 => Right Click               
             mse, analytics key events, pos:0, group:1, group mask:g1
             reporting: default
         2: Middle Button             , default: Mouse Middle Button         => Mouse Middle Button       
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
             reporting: default
         3: Back Button               , default: Mouse Back Button           => Mouse Back Button         
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
             reporting: diverted
         4: Forward Button            , default: Mouse Forward Button        => Mouse Forward Button      
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
             reporting: diverted
         5: Mouse Gesture Button      , default: Gesture Button Navigation   => Gesture Button Navigation 
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
             reporting: diverted
         6: Smart Shift               , default: Smart Shift                 => Smart Shift               
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
             reporting: diverted
         7: Virtual Gesture Button    , default: Virtual Gesture Button      => Virtual Gesture Button    
             divertable, virtual, raw XY, force raw XY, pos:0, group:3, group mask:empty
             reporting: default
     Battery: 55%, discharging.
wld0102 commented 13 hours ago

config.yaml

- 1.1.13
- _NAME: MX Master 3S
  _absent: [hi-res-scroll, lowres-scroll-mode, onboard_profiles, report_rate, report_rate_extended, pointer_speed, dpi_extended, speed-change, backlight,
    backlight_level, backlight_duration_hands_out, backlight_duration_hands_in, backlight_duration_powered, backlight-timed, led_control, led_zone_, rgb_control,
    rgb_zone_, brightness_control, per-key-lighting, fn-swap, persistent-remappable-keys, disable-keyboard-keys, crown-smooth, divert-crown, divert-gkeys,
    m-key-leds, mr-key-led, multiplatform, gesture2-gestures, gesture2-divert, gesture2-params, sidetone, equalizer, adc_power_management]
  _battery: 4100
  _modelId: B03400000000
  _sensitive: {divert-keys: true, hires-smooth-resolution: false, reprogrammable-keys: false, smart-shift: false, thumb-scroll-mode: true}
  _serial: 852C0958
  _unitId: 852C0958
  _wpid: B034
  change-host: null
  divert-keys: {82: 0, 83: 1, 86: 1, 195: 1, 196: 1}
  dpi: 1000
  hires-scroll-mode: false
  hires-smooth-invert: false
  hires-smooth-resolution: false
  reprogrammable-keys: {80: 80, 81: 81, 82: 82, 83: 83, 86: 86, 195: 195, 196: 196}
  scroll-ratchet: 2
  smart-shift: 7
  thumb-scroll-invert: false
  thumb-scroll-mode: true

rules.yaml

%YAML 1.3
---
- Key: [Smart Shift, pressed]
- Modifiers: Control
- Execute: [xdotool, type, text]
...
wld0102 commented 13 hours ago

solaar -ddd

2024-11-26 01:01:07,360,360    DEBUG [SolaarListener:hidraw2] logitech_receiver.base: (15) => r[11 01 0900 00C40000000000000000000000000000]
2024-11-26 01:01:07,361,361    DEBUG [SolaarListener:hidraw2] logitech_receiver.notifications: <Device(1,B034,MX Master 3S,852C0958)>: notification for feature REPROG CONTROLS V4, report 0, data 00C40000000000000000000000000000
2024-11-26 01:01:07,361,361    DEBUG [SolaarListener:hidraw2] logitech_receiver.notifications: <Device(1,B034,MX Master 3S,852C0958)>: diverted controls pressed: 0xc4, 0x0, 0x0, 0x0
2024-11-26 01:01:07,361,361    DEBUG [MainThread] logitech_receiver.diversion: evaluating rules on Notification(11,1,09,00,00C40000000000000000000000000000)
2024-11-26 01:01:07,361,361    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule[Rule(/home/user/.config/solaar/rules.yaml)[Rule(/home/user/.config/solaar/rules.yaml)[Key: Smart Shift (pressed), Modifiers: 4, Execute: xdotool type text]], Rule[Rule[Rule[Key: Brightness Down (pressed), KeyPress: XF86_MonBrightnessDown click], Rule[Key: Brightness Up (pressed), KeyPress: XF86_MonBrightnessUp click]]]]
2024-11-26 01:01:07,361,361    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule(/home/user/.config/solaar/rules.yaml)[Rule(/home/user/.config/solaar/rules.yaml)[Key: Smart Shift (pressed), Modifiers: 4, Execute: xdotool type text]]
2024-11-26 01:01:07,362,362    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule(/home/user/.config/solaar/rules.yaml)[Key: Smart Shift (pressed), Modifiers: 4, Execute: xdotool type text]
2024-11-26 01:01:07,362,362    DEBUG [MainThread] logitech_receiver.diversion: evaluate condition: Key: Smart Shift (pressed)
2024-11-26 01:01:07,362,362    DEBUG [MainThread] logitech_receiver.diversion: evaluate condition: Modifiers: 4
2024-11-26 01:01:07,362,362     INFO [MainThread] logitech_receiver.diversion: Execute action: ['xdotool', 'type', 'text']
2024-11-26 01:01:07,495,495    DEBUG [SolaarListener:hidraw2] logitech_receiver.base: (15) => r[11 01 0900 00000000000000000000000000000000]
2024-11-26 01:01:07,495,495    DEBUG [SolaarListener:hidraw2] logitech_receiver.notifications: <Device(1,B034,MX Master 3S,852C0958)>: notification for feature REPROG CONTROLS V4, report 0, data 00000000000000000000000000000000
2024-11-26 01:01:07,496,496    DEBUG [SolaarListener:hidraw2] logitech_receiver.notifications: <Device(1,B034,MX Master 3S,852C0958)>: diverted controls pressed: 0x0, 0x0, 0x0, 0x0
2024-11-26 01:01:07,496,496    DEBUG [MainThread] logitech_receiver.diversion: evaluating rules on Notification(11,1,09,00,00000000000000000000000000000000)
2024-11-26 01:01:07,496,496    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule[Rule(/home/user/.config/solaar/rules.yaml)[Rule(/home/user/.config/solaar/rules.yaml)[Key: Smart Shift (pressed), Modifiers: 4, Execute: xdotool type text]], Rule[Rule[Rule[Key: Brightness Down (pressed), KeyPress: XF86_MonBrightnessDown click], Rule[Key: Brightness Up (pressed), KeyPress: XF86_MonBrightnessUp click]]]]
2024-11-26 01:01:07,496,496    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule(/home/user/.config/solaar/rules.yaml)[Rule(/home/user/.config/solaar/rules.yaml)[Key: Smart Shift (pressed), Modifiers: 4, Execute: xdotool type text]]
2024-11-26 01:01:07,496,496    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule(/home/user/.config/solaar/rules.yaml)[Key: Smart Shift (pressed), Modifiers: 4, Execute: xdotool type text]
2024-11-26 01:01:07,497,497    DEBUG [MainThread] logitech_receiver.diversion: evaluate condition: Key: Smart Shift (pressed)
2024-11-26 01:01:07,497,497    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule[Rule[Rule[Key: Brightness Down (pressed), KeyPress: XF86_MonBrightnessDown click], Rule[Key: Brightness Up (pressed), KeyPress: XF86_MonBrightnessUp click]]]
2024-11-26 01:01:07,497,497    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule[Rule[Key: Brightness Down (pressed), KeyPress: XF86_MonBrightnessDown click], Rule[Key: Brightness Up (pressed), KeyPress: XF86_MonBrightnessUp click]]
2024-11-26 01:01:07,497,497    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule[Key: Brightness Down (pressed), KeyPress: XF86_MonBrightnessDown click]
2024-11-26 01:01:07,497,497    DEBUG [MainThread] logitech_receiver.diversion: evaluate condition: Key: Brightness Down (pressed)
2024-11-26 01:01:07,497,497    DEBUG [MainThread] logitech_receiver.diversion: evaluate rule: Rule[Key: Brightness Up (pressed), KeyPress: XF86_MonBrightnessUp click]
2024-11-26 01:01:07,497,497    DEBUG [MainThread] logitech_receiver.diversion: evaluate condition: Key: Brightness Up (pressed)
wld0102 commented 13 hours ago

If i set a rule with, for example, the smart button to xdotool type, it works fine. But if I add a modifier like Ctrl, xdotool doesn't output nothing. If I set the modifier for shift, xdotool output the text but in capitals.

pfps commented 12 hours ago

This looks like a problem with how the Linux input mechanism works. What xdotool does is not send characters to applications but simulates pressing keys. So if the control key is pressed as the time the keys will act like control keys, which may do unusual things or may do nothing. If the shift key is pressed at the time the keys will be shifted.

I wish that xdotool worked differently but that's the way things are.