BTT Is Causing Glitchy Click and Drag in Games

When BTT is running, click and drag with the left mouse button exhibits glitchy/hitchy movement when the click and drag first starts. It's almost like the mouse position is teleporting instead of smoothly moving to the target location. It's very noticeable in games like WoW where you have to click and drag to orbit the camera, and it's really interfering with my game experience.

I thought this was a game bug at first, but when game support asked me to test it out without other programs running in the background, it became clear BTT was causing the issue.

Here's a video of the problem in action. I start by showing the issue with BTT running, then quit BTT, show it again where you can see smooth mouse action, and then re-enable BTT and you can see the issue come back immediately. When the mouse cursor disappears it means I'm holding the button down.

Video Link: https://youtu.be/5c4SU57c-_Q

It's also worth noting that to my knowledge I don't have any BTT triggers configured for mouse movement:

Device information:

  • Type of Mac: 15" M1 Pro MacBook Pro, running in clamshell connected to a Dell U2720Q with a bluetooth dongle plugged into the USB hub of the monitor.
  • macOS version: 14.1.2 (23B92)
  • BetterTouchTool version: 4.333 (43333)

some games might not implement the macOS accessibility api correctly.
For such cases, try to disable these:

That seems to have worked. Thanks! If I were to file a bug report to the game developer, what would you want me to say?

These games seem to do something in response to macOS Accessibility API requests, which seems to cause issues. Instead they should just ignore the macOS Accessibility API completely.
BetterTouchTool uses the Accessibility API to check whether the clicked/dragged element is a window.

Disabling it can be done calling these methods in the game's window object (if the game is using NSWindow's, otherwise it might require more low level code):

   [self accessibilitySetOverrideValue:@"" forAttribute:NSAccessibilityRoleAttribute];
    self.accessibilityElement = NO;
1 Like