Confused by new modifier based visibility options

I must admit that, despite several experiments, I can't figure out how the new modifier key options work. There seem to be too many negatives and I can't quite get my head around what the "Show if some modifiers keys are pressed, but NONE of these:" and "Show if NO modifier key OR if NONE of these are pressed:" actually do.

TBH, my requirements are quite simple: I'd like to be able to say "show this button no matter what modifier key is pressed (or if no keys are pressed)" i.e. always visible, all the time, never invisible. An option to "show if any of these keys are pressed" would be nice. I just don't see how to turn the existing options round to achieve that (and I've spent over thirty years crafting Boolean expressions in everything from FORTRAN to C++).

Any tips?

Hehe yes, they are a bit complicated but I couldn't get it added in an easier way without completely breaking existing setups.

For your requirement you don't need to set anything, that's the default. By default setting nothing will show the buttons always, unless you also configure some buttons with modifiers, in which case only the buttons with modifiers will be shown when the defined modifier key is pressed.

The new modifier settings settings are only necessary if you want to add/remove buttons to the currently visible set, without completely replacing it. Usually you should either use the (old) "Only show when all of these modifier keys are" pressed OR a combination of the other two (new) options.

I will soon add documentation for all that.

OK, not seeing it.

If I choose "Only show while all these modifiers are pressed", and leave the checkboxes blank, then it just reverts to the "select modifier key based visibility" selection. If I select all the checkboxes, then it only shows up if all the keys are pressed.

If I select "Show if some modifier keys are pressed but NONE of these" and leave the checkboxes blank, then it only shows up when NO modifiers are pressed. If I check them all, it never appears (as you'd expect).

If I select "Show if NO modifier key is pressed..." and leave the checkboxes blank, it onnly shows up when no modifier is pressed. If I tick all the checkboxes - same thing, it only shows up when no key is pressed.

"Always show this button while BTT touchbar is visible..." doesn't seem to work, either.

"Also show in any Touch Bar group..." is working, though.

FYI, I'm on version 2.689 (995)

I know sort of what's happening. Where there are modifier key combinations that I haven't used (e.g. control + command), then the buttons stay visible. The problem occurs when I have other buttons assigned to a modifier, but I want one or two of the global buttons to ALWAYS be visible. For example an escape key - I want that to appear no matter what, but I'd rather not have to duplicate for every modifier key combination that I may use. It should just be there, and anything else I define with, say, CMD modifier, should be in addition to it, not replace it.

Ah if you want that behavior you indeed need the new modifier options, because that wasn't possible previously.

However you'd need to configure it a bit different. Here is a short example preset that shows a global button that's always visible and another that only shows when shift is pressed:
test_modifiers.bttpreset (2.7 KB)

This can not be used in combination with "only show if all these modifiers are pressed" because that option (default behavior) hides everything else.

That's not what bothers me.

This shows my problem: I have a "global" button (and NOTHING ELSE) - all I've done is create and name it. So far, so good, it shows up all the time, for all combinations of modifier keys.

Now create another button and set it to show with CMD (i.e. "show only when all modifiers are pressed" setting with cmd ticked).

"global" still shows up with all modifier combinations except CMD. The new button shows up and "global" disappears. I want "global" to stay there and the new one to appear alongside it.

test.bttpreset (8.4 KB)

that's exactly what my test preset does (only for shift), or not?

the "show when all these modifier are pressed" option will always hide everything else, this is ehy you can't use it for your usecase

No. When I press shift, global disappears.

No, wait. I've just re-imported it and now it does stay there. Odd. It didn't before.

oh maybe something went wrong with the export then! (I was in a bit of a hurry). Will check again when I'm back home in about 2 hours)

Ah, I see the difference. That's going to be a lot of alteration to change all of the buttons I have on modifier keys.

At the moment I have them all on "show if all these modifiers are pressed". From this I have to convert all of those to "show if some modifiers..." and select the ones I don't want it to appear for.

And, of course, the two are not equivalent if I want something to appear only when two keys are pressed (the former is an AND, the latter is an OR).

yup, unfortunately for now there is no other way :slight_smile: (apart from duplicating the triggers)

The new ui will allow multi selection, which will make it easier to update many items at once

Duplicating triggers is what I'm trying to avoid :thinking:...

What does "Always show this button while BTT TouchBar is visible" do? I ask because it seems to be exactly what I'm after, but it doesn't appear to have any effect that I can see.

it makes a button show even if global ones are hidden due to app specifics being available.

Maybe I could make that option also show buttons in the modifier case, but it currently doesn't do that.

I think I found a good solution how I can integrate a "show alyways" option without performance issues.

I also renamed a few options to make stuff clearer. Will upload new alpha in a few minutes.

//edit would be great if you'd test v2.691 alpha

1 Like

That seems to have done the trick. I've had a quick play about with it, and it looks to be exactly what I'm after: one instance of a trigger that appears all the time. This is especially useful with a script widget, so that you don't have multiple copies to update the script on.

Thanks for the excellent work and response, Andreas.