Cannot scroll on Logitech Lift - New on the application

Hello!!

I just downloaded the app, and I’m loving it!!

But I’m having a small issue: I’m working with my logitech lift, have already uninstalled Logioptions (as required). MY MIDDLE BUTTON IS NOT SCROLLING any app, anywhere I just don’t have scroll, and I haven’t assigned any option to the middle button it is working as usual but the scrolling option.

any idea of what would be happening?

Thank you!!

Unfortunately I have not yet tested with a Logitech Lift mouse, could you paste these logs here?

Which version of BTT are you using? (I'd recommend upgrading to the latest alpha because there have been many improvements)

the version I’m using is: BetterTouchTool 6.093

see the logs:

the version I’m using is: BetterTouchTool 6.093 

see the logs: 

# LOGI LOG: ========================================
LOGI LOG: BTT Logitech Debug Information
LOGI LOG: Timestamp: 2026-01-21 14:49:17
LOGI LOG: BTT: (Version: 6.093 | 2026012108)
LOGI LOG: macOS: Version 26.2 (Build 25C56)
LOGI LOG: ========================================
LOGI LOG:
LOGI LOG: Step 1: Stopping Logitech Manager...
LOGI LOG: BTTLogitechManager: Stopping...
LOGI LOG: BTTLogitechManager: Setting ONBOARD mode on 1 device(s) before shutdown...
LOGI LOG: BTTLogitechManager: ✅ ONBOARD mode set on 0 device(s), skipped 1 (shutdown complete)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0x7a4f259d0 for deviceIndex 0 (remaining protocols for this device: 1)
LOGI LOG: BTTLogitechManager: Stopped
LOGI LOG: Step 2: Restarting Logitech Manager...
LOGI LOG: BTTLogitechManager: Starting device discovery...
LOGI LOG: BTTLogitechManager: Started successfully
LOGI LOG: Step 3: Calling initializeLogitechMice...
LOGI LOG: BTTLogitechManager: Already running
LOGI LOG:

LOGI LOG: BTTLogitechManager: Scanning for Logitech Devices
LOGI LOG: ==============================================

# LOGI LOG: No Logitech HID++ devices found.
LOGI LOG:
💡 Make sure your device is:
LOGI LOG:    • Connected via USB, Bluetooth, or Unifying Receiver
LOGI LOG:    • Powered on
LOGI LOG:    • Using HID++ 2.0 protocol (most recent Logitech mice/keyboards)
LOGI LOG: Step 4: Waiting 5 seconds for device initialization...
LOGI LOG: BTTLogitechManager: Found HID interface - LIFT - Interface: ?, Usage Page: 0x0001, Usage: 0x0002
LOGI LOG: BTTLogitechManager: ✅ Accepted - Bluetooth Logitech device (HID++ over mouse interface) \[generic\]
LOGI LOG: BTTLogitechManager: Device connected - LIFT (046d:b031)
LOGI LOG: BTTHIDPPDevice: Auto-detected deviceIndex 0x00 for 046d:b031 (Bluetooth)
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=0, IOHIDDevice retain count=3
LOGI LOG: Unknown device: LIFT (046d:b031) - using feature discovery, deviceIndex: 0, transport: Bluetooth Low Energy
LOGI LOG: BTTHIDPPProtocol: Bluetooth device detected - forcing LONG reports only
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 0, isSharedDevice: 0)...
LOGI LOG: BTTHIDPPProtocol: ✅ Registered Bluetooth protocol 0x7a7471e30 for BOTH deviceIndex 0 and 255 (0xFF)
LOGI LOG: BTTHIDPPProtocol: Non-shared device - registering dedicated input callback
LOGI LOG: BTTHIDPPProtocol: ✅ Device opened successfully
LOGI LOG: BTTHIDPPProtocol: Supports short reports: NO, long reports: YES
LOGI LOG: BTTLogitechManager: Bluetooth device detected - waiting 0.5s before starting feature discovery for LIFT...
LOGI LOG: BTTLogitechManager: Starting feature discovery for LIFT...
LOGI LOG: BTTHIDPPFeatureCache: ✅ Found cached features for 046d:b031 (cached 2026-01-21 18:58:18 +0000)
LOGI LOG: BTTHIDPPDevice: ⚡ Using cached features for LIFT (32 features)
LOGI LOG: BTTHIDPPDevice: ⚡ Restoring cached device name: LIFT VERTICAL ERGONOMIC MOUSE
LOGI LOG: BTTHIDPPProtocol: Pre-populated feature cache with 32 features
LOGI LOG: BTTHIDPPDevice: Cached protocol: 4.5
LOGI LOG: BTTHIDPPProtocol: ✅ Registered event handler for feature 0x1B04 (protocol 0x7a7471e30, deviceIndex 0)
LOGI LOG:    Total event handlers registered: 1
LOGI LOG: Button Manager supported
LOGI LOG: DPI Manager supported
LOGI LOG: Battery Monitor supported (Unified Battery 0x1004)
LOGI LOG: Checking scroll wheel features...
LOGI LOG:   SmartShift (0x2110): ❌ NO
LOGI LOG:   SmartShift Enhanced (0x2111): ❌ NO
LOGI LOG:   HiRes Wheel (0x2121): ❌ NO
LOGI LOG:   Thumbwheel (0x2150): ❌ NO
LOGI LOG:   Wheel Analytics (0x2250): ✅ YES
LOGI LOG:   Wheel Mode Status (0x2251): ❌ NO
LOGI LOG: No scroll wheel features supported
LOGI LOG: BTTHIDPPDevice: Device type confirmed as MOUSE (has mouse-specific features)
LOGI LOG: Applying default device configuration...
LOGI LOG: 🔍 Attempting to query device name via HID++ feature 0x0005...
LOGI LOG: ✅ Device supports feature 0x0005, querying name length...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x03, address=0x08
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x03, func=0x00)
LOGI LOG: Device name length: 29 bytes
LOGI LOG: Reading device name chunk at offset 0/29...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x03, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x03, func=0x01)
LOGI LOG: Read 16 bytes: "LIFT VERTICAL ER"
LOGI LOG: Reading device name chunk at offset 16/29...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x03, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x03, func=0x01)
LOGI LOG: Read 13 bytes: "GONOMIC MOUSE"
LOGI LOG: 📝 Device name assembled: "LIFT VERTICAL ERGONOMIC MOUSE" (29 bytes)
LOGI LOG: ✅ Device name from HID++: LIFT VERTICAL ERGONOMIC MOUSE
LOGI LOG: BTTHIDPPFeatureCache: 📝 Updated device name for 046d:b031 to: LIFT VERTICAL ERGONOMIC MOUSE
LOGI LOG: BTTLogitechManager: 📝 Device name updated to: LIFT VERTICAL ERGONOMIC MOUSE
LOGI LOG: BTTLogitechManager: ✅ Device ready - LIFT VERTICAL ERGONOMIC MOUSE (Protocol 4.5)
LOGI LOG: BTTLogitechManager: 🔍 Checking for pending setup requests for 'LIFT VERTICAL ERGONOMIC MOUSE'...
LOGI LOG: BTTLogitechManager: ✅ Device ready - LIFT VERTICAL ERGONOMIC MOUSE (Protocol 4.5)
LOGI LOG: BTTLogitechManager: Device LIFT VERTICAL ERGONOMIC MOUSE has no onboard profiles - skipping auto ONBOARD mode
LOGI LOG: BTTLogitechManager: 🔍 Checking for pending setup requests for 'LIFT VERTICAL ERGONOMIC MOUSE'...
LOGI LOG: BTTHIDPPFeatureCache: Saved 1 device profiles to disk
LOGI LOG: BTTLogitechManager: ✅ Set macOS pointer settings for 'LIFT VERTICAL ERGONOMIC MOUSE' (IOHIDDevice: 0x046D:0xB031): speed=0.00, accel=8.00
LOGI LOG: BTTLogitechManager: Quick setup for 'LIFT VERTICAL ERGONOMIC MOUSE'...
LOGI LOG: BTTLogitechManager: 🔒 Started quick setup for 'LIFT VERTICAL ERGONOMIC MOUSE' (guard key: LIFT VERTICAL ERGONOMIC MOUSE)
LOGI LOG: BTTLogitechManager: ✅ Device 'LIFT VERTICAL ERGONOMIC MOUSE' is ready (slot 0), proceeding with quick setup
LOGI LOG: BTTLogitechManager: Remapping buttons to standard mouse buttons for 'LIFT VERTICAL ERGONOMIC MOUSE' (remapScrollTilt=0)...
LOGI LOG: BTTLogitechManager: Using runtime task ID remapping (0x1b04) - NO flash writes
LOGI LOG: BTTLogitechManager: Factory profiles preserved - buttons revert on disconnect
LOGI LOG: BTTHIDPPButtonCache: ✅ Found cached buttons for 046d:b031 (7 buttons, cached 2026-01-21 18:58:35 +0000)
LOGI LOG: BTTHIDPPButtonManager: ⚡ Loaded 7 buttons from persistent cache (FAST STARTUP)
LOGI LOG: BTTLogitechManager: ⚡ Loaded 7 buttons from persistent cache for remapping (FAST STARTUP)
LOGI LOG: BTTLogitechManager: ⚡ Using 7 cached buttons for remapping
LOGI LOG: BTTLogitechManager: Found 7 buttons, analyzing task IDs...
LOGI LOG: BTTLogitechManager: Device 'LIFT VERTICAL ERGONOMIC MOUSE' detected, isMXMaster4=0
LOGI LOG: BTTLogitechManager:   Processing button 0x0050, flags=0x01
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0050 (Left) → button 0
LOGI LOG: BTTLogitechManager:   Processing button 0x0051, flags=0x01
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0051 (Right) → button 1
LOGI LOG: BTTLogitechManager:   Processing button 0x0052, flags=0x31
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0052 (Middle) → button 2
LOGI LOG: BTTLogitechManager:   Processing button 0x0053, flags=0x31
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0053 (Back) → button 3
LOGI LOG: BTTLogitechManager:   Processing button 0x0056, flags=0x31
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0056 (Forward) → button 4
LOGI LOG: BTTLogitechManager:   Processing button 0x00FD, flags=0x31
LOGI LOG: BTTLogitechManager:   Processing button 0x00D7, flags=0xA0
LOGI LOG: BTTLogitechManager:   → Skipping non-reprogrammable button 0x00D7
LOGI LOG: BTTLogitechManager:   → Dynamic mapping: controlId 0x00FD → button 10 (sorted by controlId)
LOGI LOG: BTTLogitechManager: ✅ Created dynamic button mapping for 'LIFT VERTICAL ERGONOMIC MOUSE' with 6 buttons
LOGI LOG: BTTLogitechManager: 🔄 Undiversting all reprogrammable buttons first to reset state...
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0050 (flags=0x01)
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0051 (flags=0x01)
LOGI LOG: BTTLogitechManager:   Skipping standard button 0x0052 (preserving default behavior)
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x00D7 (flags=0xA0)
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel undiverting 3 buttons (direct connection)...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel undiversion complete: 3/3 succeeded
LOGI LOG: BTTLogitechManager: ✅ Undivert phase complete (3/3), proceeding with remapping...
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0050
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0051
LOGI LOG: BTTLogitechManager:   Preserving standard button 0x0052 (keeping default behavior)
LOGI LOG: BTTLogitechManager:   Remapping extra button 0x0053: task 0x003C → 0x005E
LOGI LOG: BTTLogitechManager:   Remapping extra button 0x0056: task 0x003E → 0x005F
LOGI LOG: BTTLogitechManager:   Remapping extra button 0x00FD: task 0x00D2 → 0x0060
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x00D7
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0xFF, address=0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters\[1\]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ⚠️  Failed to remap button 0x0053: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0xFF, address=0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters\[1\]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ⚠️  Failed to remap button 0x0056: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0xFF, address=0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters\[1\]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ⚠️  Failed to remap button 0x00FD: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTLogitechManager: ✅ Remapped 0 buttons via task IDs
LOGI LOG: BTTLogitechManager: 🔀 Diverting 3 buttons that couldn't be remapped for event handling...
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel diverting 3 buttons (direct connection)...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel diversion complete: 3/3 succeeded
LOGI LOG: BTTLogitechManager: ✅ Diverted 3/3 buttons for event handling
LOGI LOG: BTTLogitechManager: ℹ️  Diverted buttons will trigger buttonEventHandler callback
LOGI LOG: BTTLogitechManager: No scroll wheel manager, skipping hi-res scroll
LOGI LOG: BTTLogitechManager: No scroll wheel manager, skipping main wheel invert
LOGI LOG: BTTLogitechManager: No scroll wheel manager, skipping thumb wheel invert
LOGI LOG: BTTLogitechManager: Setting DPI for 'LIFT VERTICAL ERGONOMIC MOUSE' to 2000...
LOGI LOG: BTTLogitechManager: First-time DPI setup - enumerating sensors...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x08
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x00)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x01)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x02)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x03)
LOGI LOG: BTTLogitechManager: ✅ DPI set to 2000 for 'LIFT VERTICAL ERGONOMIC MOUSE' (sensor 0)
LOGI LOG: BTTLogitechManager: ❌ Device 'LIFT VERTICAL ERGONOMIC MOUSE' does not support report rate control
LOGI LOG: BTTLogitechManager: ⚠️  Report rate setup failed: Device 'LIFT VERTICAL ERGONOMIC MOUSE' does not support report rate control
LOGI LOG: BTTLogitechManager: Setting SmartShift for 'LIFT VERTICAL ERGONOMIC MOUSE' (ratchet: 1, autoDisengage: 20, torque: 80)...
LOGI LOG: BTTLogitechManager: ⚠️  SmartShift setup failed: Device not found or doesn't support scroll wheel features
LOGI LOG: BTTLogitechManager: 🔓 Quick setup guard cleared for 'LIFT VERTICAL ERGONOMIC MOUSE' (guard key: LIFT VERTICAL ERGONOMIC MOUSE)
LOGI LOG: BTTLogitechManager: ✅ Quick setup complete for 'LIFT VERTICAL ERGONOMIC MOUSE'
LOGI LOG: BTTLogitechManager: Already running
LOGI LOG:

LOGI LOG: BTTLogitechManager: Scanning for Logitech Devices
LOGI LOG: ==============================================

LOGI LOG: Found 1 Logitech device(s):

LOGI LOG: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LOGI LOG: Device 1: LIFT VERTICAL ERGONOMIC MOUSE
LOGI LOG: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LOGI LOG: 📋 Basic Information:
LOGI LOG:    Vendor ID:     0x046d (Logitech)
LOGI LOG:    Product ID:    0xb031
LOGI LOG:    Database:      ⚠️  Unknown device (will use feature discovery)
LOGI LOG:    Device Index:  0 (0x00)
LOGI LOG:
🔌 Protocol Information:
LOGI LOG:    HID++ Version: 4.5
LOGI LOG:    Status:        ✅ Ready
LOGI LOG:
✨ Supported Features:
LOGI LOG:    DPI Control:         ✅ YES
LOGI LOG:    Button Diversion:    ✅ YES ⭐
LOGI LOG:    LED Control:         ❌ NO
LOGI LOG:    Onboard Profiles:    ❌ NO
LOGI LOG:    Report Rate:         ❌ NO
LOGI LOG:    Battery Monitoring:  ✅ YES
LOGI LOG:
LOGI LOG: ==============================================
LOGI LOG: Scan complete. Found 1 device(s).
LOGI LOG: ==============================================

LOGI LOG: BTTLogitechManager: ✅ Set macOS pointer settings for 'LIFT VERTICAL ERGONOMIC MOUSE' (IOHIDDevice: 0x046D:0xB031): speed=0.00, accel=8.00
LOGI LOG: BTTLogitechManager: Quick setup for 'LIFT VERTICAL ERGONOMIC MOUSE'...
LOGI LOG: BTTLogitechManager: 🔒 Started quick setup for 'LIFT VERTICAL ERGONOMIC MOUSE' (guard key: LIFT VERTICAL ERGONOMIC MOUSE)
LOGI LOG: BTTLogitechManager: ✅ Device 'LIFT VERTICAL ERGONOMIC MOUSE' is ready (slot 0), proceeding with quick setup
LOGI LOG: BTTLogitechManager: Remapping buttons to standard mouse buttons for 'LIFT VERTICAL ERGONOMIC MOUSE' (remapScrollTilt=0)...
LOGI LOG: BTTLogitechManager: Using runtime task ID remapping (0x1b04) - NO flash writes
LOGI LOG: BTTLogitechManager: Factory profiles preserved - buttons revert on disconnect
LOGI LOG: BTTLogitechManager: ⚡ Using 7 cached buttons for remapping
LOGI LOG: BTTLogitechManager: Found 7 buttons, analyzing task IDs...
LOGI LOG: BTTLogitechManager: Device 'LIFT VERTICAL ERGONOMIC MOUSE' detected, isMXMaster4=0
LOGI LOG: BTTLogitechManager:   Processing button 0x0050, flags=0x01
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0050 (Left) → button 0
LOGI LOG: BTTLogitechManager:   Processing button 0x0051, flags=0x01
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0051 (Right) → button 1
LOGI LOG: BTTLogitechManager:   Processing button 0x0052, flags=0x31
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0052 (Middle) → button 2
LOGI LOG: BTTLogitechManager:   Processing button 0x0053, flags=0x31
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0053 (Back) → button 3
LOGI LOG: BTTLogitechManager:   Processing button 0x0056, flags=0x31
LOGI LOG: BTTLogitechManager:   → Fixed mapping: 0x0056 (Forward) → button 4
LOGI LOG: BTTLogitechManager:   Processing button 0x00FD, flags=0x31
LOGI LOG: BTTLogitechManager:   Processing button 0x00D7, flags=0xA0
LOGI LOG: BTTLogitechManager:   → Skipping non-reprogrammable button 0x00D7
LOGI LOG: BTTLogitechManager:   → Dynamic mapping: controlId 0x00FD → button 10 (sorted by controlId)
LOGI LOG: BTTLogitechManager: ✅ Created dynamic button mapping for 'LIFT VERTICAL ERGONOMIC MOUSE' with 6 buttons
LOGI LOG: BTTLogitechManager: 🔄 Undiversting all reprogrammable buttons first to reset state...
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0050 (flags=0x01)
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0051 (flags=0x01)
LOGI LOG: BTTLogitechManager:   Skipping standard button 0x0052 (preserving default behavior)
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x00D7 (flags=0xA0)
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel undiverting 3 buttons (direct connection)...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x08
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x00)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x08
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x00)
LOGI LOG: BTTHIDPPButtonManager: 📊 Device reports 7 keys/buttons to enumerate
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x08, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x08, func=0x01)
LOGI LOG:
🔋 Battery:
LOGI LOG:    Level:        40%
LOGI LOG:    Status:       Discharging
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel undiversion complete: 3/3 succeeded
LOGI LOG: BTTLogitechManager: ✅ Undivert phase complete (3/3), proceeding with remapping...
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0050
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x0051
LOGI LOG: BTTLogitechManager:   Preserving standard button 0x0052 (keeping default behavior)
LOGI LOG: BTTLogitechManager:   Remapping extra button 0x0053: task 0x003C → 0x005E
LOGI LOG: BTTLogitechManager:   Remapping extra button 0x0056: task 0x003E → 0x005F
LOGI LOG: BTTLogitechManager:   Remapping extra button 0x00FD: task 0x00D2 → 0x0060
LOGI LOG: BTTLogitechManager:   Skipping non-reprogrammable button 0x00D7
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x01)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: 📋 \[0\] Key/Button 0x0050: flags=0x01 \[MouseBtn\] divertable=0 virtual=0
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0xFF, address=0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters\[1\]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ⚠️  Failed to remap button 0x0053: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0xFF, address=0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters\[1\]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ⚠️  Failed to remap button 0x0056: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0xFF, address=0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters\[1\]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ⚠️  Failed to remap button 0x00FD: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTLogitechManager: ✅ Remapped 0 buttons via task IDs
LOGI LOG: BTTLogitechManager: 🔀 Diverting 3 buttons that couldn't be remapped for event handling...
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel diverting 3 buttons (direct connection)...
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x02)
LOGI LOG:
🎯 DPI Information:
LOGI LOG:    Sensor 0:
LOGI LOG:       Current DPI:  2000
LOGI LOG:       Range:        400 - 4000 (step: 100)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x02)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x03)
LOGI LOG: BTTHIDPPButtonManager: ⚡ Parallel diversion complete: 3/3 succeeded
LOGI LOG: BTTLogitechManager: ✅ Diverted 3/3 buttons for event handling
LOGI LOG: BTTLogitechManager: ℹ️  Diverted buttons will trigger buttonEventHandler callback
LOGI LOG: BTTLogitechManager: No scroll wheel manager, skipping hi-res scroll
LOGI LOG: BTTLogitechManager: No scroll wheel manager, skipping main wheel invert
LOGI LOG: BTTLogitechManager: No scroll wheel manager, skipping thumb wheel invert
LOGI LOG: BTTLogitechManager: Setting DPI for 'LIFT VERTICAL ERGONOMIC MOUSE' to 2000...
LOGI LOG: BTTLogitechManager: ⚡ Using cached sensor info (FAST PATH)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: 📋 \[1\] Key/Button 0x0051: flags=0x01 \[MouseBtn\] divertable=0 virtual=0
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x0E, address=0x38
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x0E, func=0x03)
LOGI LOG: BTTLogitechManager: ✅ DPI set to 2000 for 'LIFT VERTICAL ERGONOMIC MOUSE' (sensor 0)
LOGI LOG: BTTLogitechManager: ❌ Device 'LIFT VERTICAL ERGONOMIC MOUSE' does not support report rate control
LOGI LOG: BTTLogitechManager: ⚠️  Report rate setup failed: Device 'LIFT VERTICAL ERGONOMIC MOUSE' does not support report rate control
LOGI LOG: BTTLogitechManager: Setting SmartShift for 'LIFT VERTICAL ERGONOMIC MOUSE' (ratchet: 1, autoDisengage: 20, torque: 80)...
LOGI LOG: BTTLogitechManager: ⚠️  SmartShift setup failed: Device not found or doesn't support scroll wheel features
LOGI LOG: BTTLogitechManager: 🔓 Quick setup guard cleared for 'LIFT VERTICAL ERGONOMIC MOUSE' (guard key: LIFT VERTICAL ERGONOMIC MOUSE)
LOGI LOG: BTTLogitechManager: ✅ Quick setup complete for 'LIFT VERTICAL ERGONOMIC MOUSE'
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x02)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: 📋 \[2\] Key/Button 0x0052: flags=0x31 \[MouseBtn|Reprog|DIVERT\] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x02)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: 📋 \[3\] Key/Button 0x0053: flags=0x31 \[MouseBtn|Reprog|DIVERT\] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x02)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: 📋 \[4\] Key/Button 0x0056: flags=0x31 \[MouseBtn|Reprog|DIVERT\] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x02)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: 📋 \[5\] Key/Button 0x00FD: flags=0x31 \[MouseBtn|Reprog|DIVERT\] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x02)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x18
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: 📋 \[6\] Key/Button 0x00D7: flags=0xA0 \[DIVERT|VIRTUAL\] divertable=1 virtual=1
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0x00, sub_id(featureIdx)=0x09, address=0x28
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ✅ Matched to pending request (feat=0x09, func=0x02)
LOGI LOG:
🖱️  Buttons:
LOGI LOG:    Total:        7 buttons
LOGI LOG:    Available for diversion:
LOGI LOG:       Button at position 0 (controlId: 0x0050)
LOGI LOG:       Button at position 0 (controlId: 0x0051)
LOGI LOG:       Button at position 0 (controlId: 0x0052)
LOGI LOG:       Button at position 0 (controlId: 0x0053)
LOGI LOG:       Button at position 0 (controlId: 0x0056)
LOGI LOG:       Button at position 0 (controlId: 0x00FD)
LOGI LOG:       Button at position 0 (controlId: 0x00D7)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x00
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x00, params=\[00 FD 00 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: State change - Currently pressed: {(
253
)}, Newly pressed: {(
253
)}, Released: {(
)}
LOGI LOG: BTTHIDPPButtonManager: 🔔 Button press: controlId=0x00FD
LOGI LOG: BTTHIDPPDevice: 🔘 Button event received: controlId=0x00FD, pressed=1
LOGI LOG: BTTHIDPPDevice: Delegate=<BTTLogitechManager: 0x7a887a440>, respondsToSelector=1
LOGI LOG: BTTHIDPPDevice: ✅ Calling delegate method...
LOGI LOG: BTTLogitechManager: Button pressed on LIFT VERTICAL ERGONOMIC MOUSE (controlId: 0x00FD)
LOGI LOG: BTTLogitechManager: Mapped controlId 0x00FD → button 10 (LIFT VERTICAL ERGONOMIC MOUSE) \[dynamic\]
LOGI LOG: BTTLogitechManager: Click tracking DOWN for LIFT VERTICAL ERGONOMIC MOUSE button 10: clickCount=1, timeSinceLastClick=790721366.321s
LOGI LOG: BTTLogitechManager: Set device IDs: vendor=0x046D, product=0xB031, packed=0xB031046D
LOGI LOG: BTTLogitechManager: Created CGEvent: type=25, button=10, buttonNumber=10, clickCount=1, location=(-107.3,141.7)
LOGI LOG: BTTLogitechManager: ✅ Generated CGEvent for button 0x00FD
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x20
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x20, params=\[00 FD 01 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: ⚠️  Ignoring button event with address=0x20 (only processing address=0x00 to avoid duplicates)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x00
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x00, params=\[00 00 00 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: State change - Currently pressed: {(
)}, Newly pressed: {(
)}, Released: {(
253
)}
LOGI LOG: BTTHIDPPButtonManager: 🔔 Button release: controlId=0x00FD
LOGI LOG: BTTHIDPPDevice: 🔘 Button event received: controlId=0x00FD, pressed=0
LOGI LOG: BTTHIDPPDevice: Delegate=<BTTLogitechManager: 0x7a887a440>, respondsToSelector=1
LOGI LOG: BTTHIDPPDevice: ✅ Calling delegate method...
LOGI LOG: BTTLogitechManager: Button released on LIFT VERTICAL ERGONOMIC MOUSE (controlId: 0x00FD)
LOGI LOG: BTTLogitechManager: Mapped controlId 0x00FD → button 10 (LIFT VERTICAL ERGONOMIC MOUSE) \[dynamic\]
LOGI LOG: BTTLogitechManager: Click tracking UP for LIFT VERTICAL ERGONOMIC MOUSE button 10: clickCount=1 (matched from DOWN)
LOGI LOG: BTTLogitechManager: Set device IDs: vendor=0x046D, product=0xB031, packed=0xB031046D
LOGI LOG: BTTLogitechManager: Created CGEvent: type=26, button=10, buttonNumber=10, clickCount=1, location=(-107.3,141.7)
LOGI LOG: BTTLogitechManager: ✅ Generated CGEvent for button 0x00FD
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x20
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x20, params=\[00 FD 00 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: ⚠️  Ignoring button event with address=0x20 (only processing address=0x00 to avoid duplicates)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x00
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x00, params=\[00 FD 00 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: State change - Currently pressed: {(
253
)}, Newly pressed: {(
253
)}, Released: {(
)}
LOGI LOG: BTTHIDPPButtonManager: 🔔 Button press: controlId=0x00FD
LOGI LOG: BTTHIDPPDevice: 🔘 Button event received: controlId=0x00FD, pressed=1
LOGI LOG: BTTHIDPPDevice: Delegate=<BTTLogitechManager: 0x7a887a440>, respondsToSelector=1
LOGI LOG: BTTHIDPPDevice: ✅ Calling delegate method...
LOGI LOG: BTTLogitechManager: Button pressed on LIFT VERTICAL ERGONOMIC MOUSE (controlId: 0x00FD)
LOGI LOG: BTTLogitechManager: Mapped controlId 0x00FD → button 10 (LIFT VERTICAL ERGONOMIC MOUSE) \[dynamic\]
LOGI LOG: BTTLogitechManager: Click tracking DOWN for LIFT VERTICAL ERGONOMIC MOUSE button 10: clickCount=2, timeSinceLastClick=0.540s
LOGI LOG: BTTLogitechManager: Set device IDs: vendor=0x046D, product=0xB031, packed=0xB031046D
LOGI LOG: BTTLogitechManager: Created CGEvent: type=25, button=10, buttonNumber=10, clickCount=2, location=(-107.3,141.7)
LOGI LOG: BTTLogitechManager: ✅ Generated CGEvent for button 0x00FD
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x20
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x20, params=\[00 FD 01 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: ⚠️  Ignoring button event with address=0x20 (only processing address=0x00 to avoid duplicates)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x00
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x00, params=\[00 00 00 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: State change - Currently pressed: {(
)}, Newly pressed: {(
)}, Released: {(
253
)}
LOGI LOG: BTTHIDPPButtonManager: 🔔 Button release: controlId=0x00FD
LOGI LOG: BTTHIDPPDevice: 🔘 Button event received: controlId=0x00FD, pressed=0
LOGI LOG: BTTHIDPPDevice: Delegate=<BTTLogitechManager: 0x7a887a440>, respondsToSelector=1
LOGI LOG: BTTHIDPPDevice: ✅ Calling delegate method...
LOGI LOG: BTTLogitechManager: Button released on LIFT VERTICAL ERGONOMIC MOUSE (controlId: 0x00FD)
LOGI LOG: BTTLogitechManager: Mapped controlId 0x00FD → button 10 (LIFT VERTICAL ERGONOMIC MOUSE) \[dynamic\]
LOGI LOG: BTTLogitechManager: Click tracking UP for LIFT VERTICAL ERGONOMIC MOUSE button 10: clickCount=2 (matched from DOWN)
LOGI LOG: BTTLogitechManager: Set device IDs: vendor=0x046D, product=0xB031, packed=0xB031046D
LOGI LOG: BTTLogitechManager: Created CGEvent: type=26, button=10, buttonNumber=10, clickCount=2, location=(-107.3,141.7)
LOGI LOG: BTTLogitechManager: ✅ Generated CGEvent for button 0x00FD
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x20
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x20, params=\[00 FD 00 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: ⚠️  Ignoring button event with address=0x20 (only processing address=0x00 to avoid duplicates)
LOGI LOG: BTTHIDPPProtocol: 🔍 INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x09, address=0x20
LOGI LOG: BTTHIDPPProtocol: 🔍 Checking 0 pending requests for match
LOGI LOG: BTTHIDPPProtocol: 📢 Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: 📨 Handling event for feature index 0x09
LOGI LOG: BTTHIDPPProtocol: 🔍 Feature index 0x09 → Feature ID 0x1B04
LOGI LOG: BTTHIDPPProtocol: ✅ Dispatching to event handler for feature 0x1B04
LOGI LOG: BTTHIDPPButtonManager: 🎯 handleButtonEvent CALLED! address=0x20, params=\[00 50 01 00 00 00 00 00\]
LOGI LOG: BTTHIDPPButtonManager: ⚠️  Ignoring button event with address=0x20 (only processing address=0x00 to avoid duplicates)
LOGI LOG:
LOGI LOG: ========================================
LOGI LOG: Connected Devices Summary:
LOGI LOG: ========================================
LOGI LOG:   - LIFT VERTICAL ERGONOMIC MOUSE (VID:0x046d PID:0xb031) Ready:YES Type:Mouse
LOGI LOG:
LOGI LOG: ========================================
LOGI LOG: G604 Scroll Slot Debug:
LOGI LOG: ========================================
LOGI LOG:   No G604 devices found
LOGI LOG: ========================================
LOGI LOG: End of Debug Information
LOGI LOG: ========================================

Could you check with v6.095 ? (might need to turn the mouse off and on again first)