Keyboard/Mouse: Device Specific shortcuts

Recently I got myself a Logitech MX Master 3 mouse that has a tiny "Gesture" button that without the default software sends a Cmd + Tab shortcut in macOS.

I wanted to remap this to do something else with BTT, but when I added the shortcut to the list of keyboard shortcuts, it worked with the normal keyboard too, so I was essentially breaking the Cmd+Tab app switcher.

Changing the Trigger Condition to "Works on keyboards of the same type as used for recording" didn't help. I think it's because the mouse might be representing itself as a normal HID keyboard too.

Would it be possible to filter out the device that triggered the shortcut and make it available ONLY if it was triggered by the mouse in my case?

Thanks! :slight_smile:

The behavior for "works on keyboards of the same type" has recently been improved. Possibly try to update to version 3.333. You might need to re-record the shortcut though.

I am testing it with 3.333. The update popup reminded me that I could try using BTT to make use of the button :slight_smile:

I tried re-recording it - didn't work.
Toggled the Show HUD overlay option to get the "Save" button to activate and press it - still didn't work.

For what is worth, the shortcut is triggered on all the keyboard in the system - the internal MacBook keyboard, an external USB Apple keyboard and the mouse.

Weird. Maybe Logitech is doing something special here. I also have a MX Master 3 - I didn't even realize there was a gesture button :joy: - just found it.

I'll have a look, but not yet sure whether this can be fixed.

I also have a MX Master 3

One of the rare cases where a customer issue might be reproducible on a developer machine :star_struck:

Here's what I get from ioreg about the mouse, if it might help:

| |   +-o IOHIDUserDevice  <class IOHIDUserDevice, id 0x1008614f4, registered, matched, active, busy 0 (395 ms), retain 11>
| |     | {
| |     |   "HIDVirtualDevice" = No
| |     |   "Transport" = "Bluetooth Low Energy"
| |     |   "PhysicalDeviceUniqueID" = "B2641B35-681E-43D1-95A0-59B6136C671B"
| |     |   "HIDDefaultBehavior" = Yes
| |     |   "Product" = "MX Master 3"
| |     |   "Manufacturer" = "Logitech"
| |     |   "MaxInputReportSize" = 20
| |     |   "RequiresTCCAuthorization" = Yes
| |     |   "Privileged" = Yes
| |     |   "VendorIDSource" = 2
| |     |   "ReportDescriptor" = <05010906a1018501050719e029e71500250175019508810295067508150026a400050719002aa4008100c005010902a10185020901a1009510750115002501050919012910810205011601f826ff07750c95020930093181061581257f75089501093881069501050c0a38028106c0c00643ff0a0202a101851175089513150026ff000902810009029100c0>
| |     |   "MaxOutputReportSize" = 20
| |     |   "DeviceUsagePairs" = ({"DeviceUsagePage"=1,"DeviceUsage"=6},{"DeviceUsagePage"=1,"DeviceUsage"=2},{"DeviceUsagePage"=1,"DeviceUsage"=1},{"DeviceUsagePage"=65347,"DeviceUsage"=514})
| |     |   "IOUserClientClass" = "IOHIDLibUserClient"
| |     |   "IOCFPlugInTypes" = {"7DDEECA8-A7B4-11DA-8A0E-0014519758EF"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin","FA12FA38-6F1A-11D4-BA0C-0005028F18D5"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin"}
| |     |   "CountryCode" = 0
| |     |   "VendorID" = 1133
| |     |   "VersionNumber" = 19
| |     |   "PrimaryUsage" = 6
| |     |   "LocationID" = 1753404115
| |     |   "ProductID" = 45091
| |     |   "SerialNumber" = "F4EA99799C5EA5FC"
| |     |   "Elements" = ({"ReportID"=0,"ElementCookie"=1,"CollectionType"=1,"Type"=513,"VariableSize"=0,"Elements"=({"VariableSize"=0,"UnitExponent"=0,"IsRelative"=No,"UsagePage"=7,"Max"=1,"IsArray"=No,"Type"=2,"Size"=1,"Min"=0,"Flags"=2,"ReportID"=1,"Usage"=224,"ReportCount"=1,"Unit"=0,"HasNullState"=No,"ReportSize"=1,"HasPreferredState"=Yes,"IsNonLinear"=No,"ScaledMin"=0,"IsWrapping"=No,"ScaledMax"=1,"ElementCookie"=13},{"VariableSize"=0,"UnitExponent"=0,"IsRelative"=No,"Usa$
| |     |   "ReportInterval" = 8000
| |     |   "PrimaryUsagePage" = 1
| |     |   "IOGeneralInterest" = "IOCommand is not serializable"
| |     |   "DeviceOpenedByEventSystem" = Yes
| |     |   "MaxFeatureReportSize" = 1
| |     |   "InputReportElements" = ({"ReportID"=1,"ElementCookie"=314,"Size"=64,"ReportCount"=1,"Type"=1,"VariableSize"=0,"UsagePage"=0,"ReportSize"=64,"Usage"=0},{"ReportID"=2,"ElementCookie"=315,"Size"=64,"ReportCount"=1,"Type"=1,"VariableSize"=0,"UsagePage"=0,"ReportSize"=64,"Usage"=0},{"ReportID"=17,"ElementCookie"=316,"Size"=160,"ReportCount"=1,"Type"=1,"VariableSize"=0,"UsagePage"=0,"ReportSize"=160,"Usage"=0})
| |     | }
| |     |
| |     +-o IOHIDInterface  <class IOHIDInterface, id 0x1008614f6, registered, matched, active, busy 0 (394 ms), retain 9>
| |     | | {
| |     | |   "Transport" = "Bluetooth Low Energy"
| |     | |   "PhysicalDeviceUniqueID" = "B2641B35-681E-43D1-95A0-59B6136C671B"
| |     | |   "HIDDefaultBehavior" = Yes
| |     | |   "Manufacturer" = "Logitech"
| |     | |   "Product" = "MX Master 3"
| |     | |   "MaxInputReportSize" = 20
| |     | |   "DeviceUsagePairs" = ({"DeviceUsagePage"=1,"DeviceUsage"=6},{"DeviceUsagePage"=1,"DeviceUsage"=2},{"DeviceUsagePage"=1,"DeviceUsage"=1},{"DeviceUsagePage"=65347,"DeviceUsage"=514})
| |     | |   "VendorIDSource" = 2
| |     | |   "MaxOutputReportSize" = 20
| |     | |   "ReportDescriptor" = <05010906a1018501050719e029e71500250175019508810295067508150026a400050719002aa4008100c005010902a10185020901a1009510750115002501050919012910810205011601f826ff07750c95020930093181061581257f75089501093881069501050c0a38028106c0c00643ff0a0202a101851175089513150026ff000902810009029100c0>
| |     | |   "CountryCode" = 0
| |     | |   "VendorID" = 1133
| |     | |   "VersionNumber" = 19
| |     | |   "IOServiceDEXTEntitlements" = ("com.apple.developer.driverkit.transport.hid")
| |     | |   "IODEXTMatchCount" = 1
| |     | |   "PrimaryUsage" = 6
| |     | |   "LocationID" = 1753404115
| |     | |   "ProductID" = 45091
| |     | |   "SerialNumber" = "F4EA99799C5EA5FC"
| |     | |   "ReportInterval" = 8000
| |     | |   "PrimaryUsagePage" = 1
| |     | |   "MaxFeatureReportSize" = 1
| |     | | }
| |     | |
| |     | +-o AppleUserHIDEventDriver  <class AppleUserHIDEventService, id 0x1008614f8, registered, matched, active, busy 0 (0 ms), retain 11>
| |     |   | {
| |     |   |   "PrimaryUsagePage" = 1
| |     |   |   "IOUserClientClass" = "IOHIDEventServiceUserClient"
| |     |   |   "VersionNumber" = 19
| |     |   |   "VendorID" = 1133
| |     |   |   "HIDPointerResolution" = 26214400
| |     |   |   "Product" = "MX Master 3"
| |     |   |   "SerialNumber" = "F4EA99799C5EA5FC"
| |     |   |   "Transport" = "Bluetooth Low Energy"
| |     |   |   "HIDKeyboardSupportedModifiers" = 18751743
| |     |   |   "IOServiceDEXTEntitlements" = "com.apple.developer.driverkit.family.hid.eventservice"
| |     |   |   "Manufacturer" = "Logitech"
| |     |   |   "IOUserServerCDHash" = "837dfd6b41cb14f15e8b7102faeebd206d631957"
| |     |   |   "ProductID" = 45091
| |     |   |   "DeviceUsagePairs" = ({"DeviceUsagePage"=1,"DeviceUsage"=6},{"DeviceUsagePage"=1,"DeviceUsage"=2},{"DeviceUsagePage"=1,"DeviceUsage"=1},{"DeviceUsagePage"=65347,"DeviceUsage"=514})
| |     |   |   "RegisterService" = No
| |     |   |   "HIDScrollResolution" = 589824
| |     |   |   "IOPowerManagement" = {"CapabilityFlags"=0,"MaxPowerState"=2,"CurrentPowerState"=0}
| |     |   |   "IOUserServerName" = "com.apple.driverkit.AppleUserHIDEventDriver"
| |     |   |   "ReportInterval" = 8000
| |     |   |   "HIDPointerButtonCount" = 16
| |     |   |   "VendorIDSource" = 2
| |     |   |   "IOMatchedPersonality" = {"IOProbeScore"=1,"IOUserClass"="AppleUserHIDEventDriver","IOProviderClass"="IOHIDInterface","IOClass"="AppleUserHIDEventService","CFBundleIdentifier"="com.apple.AppleUserHIDDrivers","CFBundleIdentifierKernel"="com.apple.iokit.IOHIDFamily","IOUserServerCDHash"="837dfd6b41cb14f15e8b7102faeebd206d631957","DeviceUsagePairs"=({"DeviceUsagePage"=1,"DeviceUsage"=1},{"DeviceUsagePage"=1,"DeviceUsage"=2},{"DeviceUsagePage"=1,"DeviceUsage"=6},{"D$
| |     |   |   "HIDEventServiceProperties" = {"HIDMouseKeysOptionToggles"=0,"JitterNoClick"=1,"ActuateDetents"=1,"Dragging"=0,"HIDSlowKeysDelay"=0,"JitterNoMove"=1,"FlipLeftAndRightEdgeGestures"=No,"HIDTrackpadScrollAcceleration"=20480,"HIDInitialKeyRepeat"=250000000,"TrackpadThreeFingerHorizSwipeGesture"=2,"TrackpadThreeFingerDrag"=No,"MTGestureConfiguration"={"Version"=1,"Behaviors"=()},"MTGestureConfigurationOverride"={"Version"=1,"Behaviors"=({"BehaviorID"=1})},"HIDPointer$
| |     |   |   "CFBundleIdentifier" = "com.apple.AppleUserHIDDrivers"
| |     |   |   "HIDKeyboardKeysDefined" = Yes
| |     |   |   "IOCFPlugInTypes" = {"7DDEECA8-A7B4-11DA-8A0E-0014519758EF"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin","FA12FA38-6F1A-11D4-BA0C-0005028F18D5"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin"}
| |     |   |   "IOProviderClass" = "IOHIDInterface"
| |     |   |   "IOUserClass" = "AppleUserHIDEventDriver"
| |     |   |   "LocationID" = 1753404115
| |     |   |   "IOClass" = "AppleUserHIDEventService"
| |     |   |   "CFBundleIdentifierKernel" = "com.apple.iokit.IOHIDFamily"
| |     |   |   "PrimaryUsage" = 6
| |     |   |   "CountryCode" = 0
| |     |   |   "HIDServiceSupport" = Yes
| |     |   |   "IOGeneralInterest" = "IOCommand is not serializable"
| |     |   |   "IOMatchCategory" = "IODefaultMatchCategory"
| |     |   |   "HIDKeyboardSupportsEscKey" = Yes
| |     |   |   "IOProbeScore" = 1201
| |     |   | }
| |     |   |

Thanks! I think I can see the problem. Should be fixable, but I'll need to think about the best way. It's very likely that I'll implement it because now that I know about the existence of this button I really want to use it :smiley:

Actually it turned out to be a bug in BTT.

Should be fixed in the new build I just triggered (will be online in 5 minutes).

That fixed it! :slight_smile: Thank you so much for the quick fix! Enjoy the newly found button! :tada:

1 Like

Hi,

Is there any way to use the thumb gesture button like the Logitech software offers?

That is to say, additionnally to the action on simple press (which is already possible with BTT), to also have a different action when holding the button + moving the mouse up, another action when holding the button + moving the mouse down, etc ?

Imprint | Privacy Policy