Sticky SHIFT and CTRL keys after using as BetterTouchTool modifier keys

Describe the bug
I've set up global shortcuts with SHIFT and one-finger tap, and CTRL and one-finger tap. After using these shortcuts a few times, macOS thinks that SHIFT key and CTRL key is continuously held down. Hence if you type "a", it thinks you typed SHFT A. This does not happen on first use with BetterTouchTool, but at some point later.

I have to log out of my user account and log back in to fix this behavior.

Affected input device (e.g. MacBook Trackpad, Magic Mouse/Trackpad, Touch Bar, etc.):

  • iMac Late 2015
  • Magic Mouse 2
  • Magic Keyboard 2

If applicable, add screenshots to help explain your problem. (You can just paste or drag them here)

Device information:

  • Type of Mac: iMac 5K, Late 2015
  • macOS version: 10.12.6
  • BetterTouchTool version: 2.525 (I upgraded to the latest Alpha Version to see if it has the same problem, and it does. The regular latest version also has this bug.)

Additional information (e.g. StackTraces, related issues, screenshots, workarounds, etc.):

Logging out and back in to my user account fixes the stuck SHIFT or CTRL key. It's not a hardware/keyboard issue.

Note: Before bug reporting, please make sure you have the latest version of BetterTouchTool and that you have already tried to restart your system :-). If you encounter a crash, please attach a crash log from the macOS from the "User Diagnostic Reports" section.

This usually happens if events get lost due to time outs or other issues. This again happens usually if too many apps try to process these events. Can you think of any other app that needs to listen globally to mouse/keyboard events you have running? (A good indicator is apps that are listed in System Preferences => Security & Privacy => Privacy => Accessibility)

That makes sense. I have a few apps listed in the Privacy tab, but only three of those are always running:

Dropbox, TextExpander, and Divvy.

Is any of these known or likely to cause a conflict with BetterTouchTool?

Is there a workaround for the sticky key issue, other than having to log out? Is there a way to "reset" the sticky key status?

Textexpander sounds most likely, but I haven't had reports of a conflict with it yet.

You could try to set up an action that triggers the predefined action e.g. "Shift Up" or "CMD Up". However I'm not 100% sure whether that will work, it depends a bit on which layer the key got stuck.

I'm having the same problem too. All of a sudden, cmd key will become sticky. As soon as I close BTT, the problem is gone.

I have Alfred 4, Bartender 3, BetterSnapTool, BTT, and Dropbox in Privacy -> Accessibility to allow them to control my computer. However, since the issue goes away by closing BTT, I believe I can assume the problem comes from BTT.

I had GoldenChaos as my default preset, and I thought the problem is with a preset shortcut to make my cmd key sticky, so I deleted it and used AquaTouch as my preset. Do these two presets have keyboard mapping to make any keys sticky?

And, I got the same sticky cmd key problem twice as I type this message now. The problem seemed to happen after I pressed a subset of {shift, ctrl, option, and cmd} keys--I pressed on them and pressed them with {space, arrow, tab} keys to switch tabs, activate Alfred (mapped cmd+space to activate it), switch languages, and so on--but I'm not sure what combination exactly.

Pretty annoying to have to reopen BTT all the time :frowning:

AquaTouch or GoldenChaos don't affect the modifier keys as far as I know. Are these the only presets you have enabled or do you have something additional?

I was able to reproduce the problem! Sticky cmd key happens only in Chrome and not another app, and it happens right after I press Option+right, which explains why the problem constantly appears when I'm typing (to use Option+right to move the cursor by word). However, there are no Keyboard Shortcuts and Key Sequences set up for Chrome in BTT.

I only have AquaTouch now. I also disabled all keyboard shortcuts for "All Apps" and all 4 for "Media KeyShortcuts" that came with AquaTouch:

Following up on this. If I can't find the issue, Is there a way to configure BTT keyboard to set my option+right key in Chrome to "move right by 1 word," thus overriding the current unknown issue?

I am having the same problem, and I am evaluating BTT (free trial).
BTT is very promising, HOWEVER I've been frustrated for over an hour to automate a simple modifier+alpha: The very common, Cmd-A, to Select-All.

I created this sequence:

Modifier key: Cmd down
Delay 0.2s
Type "a"
Delay 0.2s
Modifier key: Cmd up
Delay 0.2s

After this hotkey runs, another hotkey pastes a string.

I tried triggering this with a mouse click (fail) and F4 (fail).
I even changed the F4 trigger to be "Trigger on key up" so that NO key is depressed when the above sequence runs.

I am running TypeIt4Me also on this macbook pro.

I have experience with other automation tools (selenium, headless Chrome, AppleScript, AutoHotKeys on Windows, etc) and so far BTT cannot do a simple Cmd-A. Ug!
Paste a string works well though, but I need to do Cmd-A before pasting, and when I do the Cmd-A sequence before pasting, this is when the modifier keys get stuck. And then I have to Reset BTT to regain control of my Mac.

What can I try? If I can resolve this, I think BTT will do a lot for me.

for simple shortcuts don’t create any sequence, just use the standard „send keyboard shortcut“ action (the very top one in the list of predefined actions)

1 Like

Thank you for the reply. Ah, I thought "send keyboard shortcut" required me to configure a shortcut key (with its own sequence). I didn't know it can be used to simply send a cmd-a ! In hindsight, it makes sense BTT has an easy way to send one modifier+keystroke.

I managed to come up with my own workaround, which is more complicated but actually works (but is slower because of the delay cmds). I used "Run AppleScript (blocking)" to send the cmd-a :sweat_smile:

# Do cmd-a in Safari.
tell application "Safari" to activate
delay 0.5
tell application "System Events"
	key code 0 using command down # ctrl-a
	delay 0.2
end tell