Key sequence not working anymore?

Describe the bug

I'm not sure of the exact conditions of it.. but I previously had a key sequence recorded: "Ctrl + Option + Left + Up" which would trigger resizing/moving the window to the top left corner of the screen; and it seems it has stopped working for some reason.

I think it was working earlier today, but I since have transferred a number of my older triggers to a new 'Old Individual Chat Configs' preset, which I then disabled:

image

And I created a new 'Conditional Activation Group' to combine a number of triggers/configs that were previously manually duplicated across individual apps, into a single group:

You can see the old key sequence that moves the window is disabled here, and I created a new one to show a HUD overly to try and debug things (which also doesn't work). The A + A + A sequence there is also for debugging, and it seems to trigger fine.

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

Magic Keyboard

Screenshots

N/A

Device information:

  • Type of Mac: MacBook Pro, 16-inch, 2019 (Intel)
  • macOS version: Ventura 13.1 (22C65)
  • BetterTouchTool version: Version 4.022 (2238)

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

Found these other issues related to key sequences not working, but they may not share a root cause:

Based on the other issues, I also checked if 'secure input' was stuck on, which it doesn't seem to be:

image

I just recorded a new sequence in the conditional activation group as a test Ctrl + Option + Left + Up, and assigned it to show a debug overlay, which seemed to trigger correctly.

I'm wondering if there is a bug where multiple sequences that match are conflicting, and thus not running/silently failing; potentially combined with a bug where the sequence defined in the other preset (which was active inside the preset) is still being taken into account as a 'duplicate' even though that entire other preset is disabled?


Edit:

To further test that theory, I duplicated my new test sequence, gave it a different overlay postion/message, and then tried triggering it:
image

Debug1:

Debug2:

After configuring that, running the sequence again seemed to only trigger 'Debug1', not 'Debug2'; which seems to imply that if there is a duplicate sequence, then the 'first' (not exactly sure how 'first' is defined) of those will trigger, and the rest will be silently ignored.

If that's true, then my theory is that the first trigger for the main sequence I defined is now in the disabled preset; and so perhaps it is still being considered the 'active first' (thus blocking any other 'duplicates'), but then since it's in a disabled preset, nothing happens?

I just fiddled around with some things some more, I think I did the following:

  • Re-enabled the other preset group
  • Manually disabled the key sequences within that preset group, as well as all the new ones I had created
  • Re-enabled the original key sequence in the 'separate' preset group, tested that it worked, which it seemed to
  • Copied that sequence to my new conditional activation group, and disabled the old one. Test if it worked, which it didn't
  • Disabled that copied sequence, created a new sequence with the same keys and a debug overlay, tested that it worked, it did.

So in addition to my above theories about bugs; I wonder if there is some issue with copying a key sequence (possibly specifically copying from another preset), and it not registering properly when that happens? An additional 'snippet of context' that makes me wonder that, is the note displayed on the copied sequence trigger saying "Please Select a Trigger" (which isn't there on the 'source' trigger in the other preset that I copied from):

image


Edit: Another bit of weirdness.. on the 'debug sequence' that I just had working to show a hud overlay, I copied the named action from the old broken sequence, and pasted it in, to replace the hud overlay. In this screenshot, you can see on the left that the trigger is being shown correctly, but on the right, it claims to still be showing the hud overlay as the action:

[
  {
    "BTTGestureNotes" : "Debug",
    "BTTTriggerType" : 624,
    "BTTTriggerTypeDescription" : "Please Select a Trigger ",
    "BTTTriggerClass" : "BTTTriggerTypeKeySequence",
    "BTTPredefinedActionType" : 248,
    "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)",
    "BTTGenericActionConfig" : "Move\/Resize: Top Left (width=35%, height=55%)",
    "BTTNamedTriggerToTrigger" : "Move\/Resize: Top Left (width=35%, height=55%)",
    "BTTEnabled2" : 1,
    "BTTAlternateModifierKeys" : 0,
    "BTTRepeatDelay" : 0,
    "BTTUUID" : "4A0CDEE9-B585-4E45-9F1E-30F32D9D1C2D",
    "BTTNotesInsteadOfDescription" : 0,
    "BTTEnabled" : 1,
    "BTTModifierMode" : 0,
    "BTTOrder" : 0,
    "BTTDisplayOrder" : 0,
    "BTTKeySequence" : {
      "BTTPauseBetween" : 0.29999999999999999,
      "BTTKeyCount" : 8,
      "BTTKeySequenceDownKeys" : [
        {
          "BTTKEYCode" : 59,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ],
      "BTTKeySequenceMixedKeys" : [
        {
          "BTTKEYCode" : 59,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 59,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ],
      "BTTKeySequenceUpKeys" : [
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 59,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ]
    }
  }
]

Edit2: I added another action to the left hand side and removed it, and then the right hand side updated with the proper action. So maybe it's just not refreshing properly when I paste the action in?

Adding a debug HUD when the named action is triggered, I can see that it seems to be getting executed, even though the window doesn't end up moving:

Yet when I change it to a new named trigger I recently created (height 75% instead of 55%) it seems to trigger and move the window fine:

image

The old sequences were set up to trigger the 55% named action, so I wonder if that is part of a 'conflict'?

Sequence with 55%:

[
  {
    "BTTGestureNotes" : "Debug",
    "BTTTriggerType" : 624,
    "BTTTriggerTypeDescription" : "Please Select a Trigger ",
    "BTTTriggerClass" : "BTTTriggerTypeKeySequence",
    "BTTPredefinedActionType" : 248,
    "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)",
    "BTTGenericActionConfig" : "Move\/Resize: Top Left (width=35%, height=55%)",
    "BTTNamedTriggerToTrigger" : "Move\/Resize: Top Left (width=35%, height=55%)",
    "BTTEnabled2" : 1,
    "BTTAlternateModifierKeys" : 0,
    "BTTRepeatDelay" : 0,
    "BTTUUID" : "4A0CDEE9-B585-4E45-9F1E-30F32D9D1C2D",
    "BTTNotesInsteadOfDescription" : 0,
    "BTTEnabled" : 1,
    "BTTModifierMode" : 0,
    "BTTOrder" : 0,
    "BTTDisplayOrder" : 0,
    "BTTKeySequence" : {
      "BTTPauseBetween" : 0.29999999999999999,
      "BTTKeyCount" : 8,
      "BTTKeySequenceDownKeys" : [
        {
          "BTTKEYCode" : 59,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ],
      "BTTKeySequenceMixedKeys" : [
        {
          "BTTKEYCode" : 59,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 59,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ],
      "BTTKeySequenceUpKeys" : [
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 59,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ]
    },
    "BTTTriggerConfig" : {
      "BTTHUDText" : "Debug Top Left",
      "BTTShowHUD" : 1
    }
  }
]

Sequence with 75%:

[
  {
    "BTTGestureNotes" : "Debug",
    "BTTTriggerType" : 624,
    "BTTTriggerTypeDescription" : "Please Select a Trigger ",
    "BTTTriggerClass" : "BTTTriggerTypeKeySequence",
    "BTTPredefinedActionType" : 248,
    "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)",
    "BTTGenericActionConfig" : "Move\/Resize: Top Left (width=35%, height=75%)",
    "BTTNamedTriggerToTrigger" : "Move\/Resize: Top Left (width=35%, height=75%)",
    "BTTEnabled2" : 1,
    "BTTAlternateModifierKeys" : 0,
    "BTTRepeatDelay" : 0,
    "BTTUUID" : "4A0CDEE9-B585-4E45-9F1E-30F32D9D1C2D",
    "BTTNotesInsteadOfDescription" : 0,
    "BTTEnabled" : 1,
    "BTTModifierMode" : 0,
    "BTTOrder" : 0,
    "BTTDisplayOrder" : 0,
    "BTTKeySequence" : {
      "BTTPauseBetween" : 0.29999999999999999,
      "BTTKeyCount" : 8,
      "BTTKeySequenceDownKeys" : [
        {
          "BTTKEYCode" : 59,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ],
      "BTTKeySequenceMixedKeys" : [
        {
          "BTTKEYCode" : 59,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 59,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ],
      "BTTKeySequenceUpKeys" : [
        {
          "BTTKEYCharacter" : " ←",
          "BTTKEYCode" : 123,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCharacter" : " ↑",
          "BTTKEYCode" : 126,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 58,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        },
        {
          "BTTKEYCode" : 59,
          "BTTKEYRequired" : 1,
          "BTTKEYTime" : 699064768
        }
      ]
    },
    "BTTTriggerConfig" : {
      "BTTHUDText" : "Debug Top Left",
      "BTTShowHUD" : 1
    }
  }
]

Edit: Actually.. this last bit was a red herring it seems.. it looks like the 55% named action got disabled somewhere in all of my testing/debugging.. so re-enabling that causes that part of things to work again now (it would be a useful UX addition to show a note on the 'call named action' settings, if the selected action is disabled/etc)

Now that I have a working config again, I went back to test one of my original theories; that the key sequence being 'enabled' in the alternative preset that I have 'disabled' still gets run/conflicts with the key sequence in the 'main' preset.

  • When the 'old' sequence trigger is enabled and the 'old' preset is disabled, my main trigger doesn't work properly
  • When the 'old' sequence trigger is disabled and the 'old' preset is disabled, my main trigger works properly
  • When the 'old' sequence trigger is disabled and the 'old' preset is enabled, my main trigger works properly