How Can I use the KM Action "Show Palette for one action"?

###How Can I use the KM Action "Show Palette for one action"?

I don't understand how this action can be effectively used.

After running a simple macro with only this action, the palette for the Macro group is shown. However, after selecting one action on the macro group palette, or cancelling (closing) the palette via ESC, the following behavior is put in place:

  1. That group is effectively deactivated, so now no macros from it can be run using their own triggers
  2. Triggering the macro again with this action also doesn't work, probably because of #1.

So, what would be the use case for this action?

IMO, when using the Activate Macro Group with "Show Macro Group for One Action" for a Group that is already activated, it should NOT deactivate the Group AFTER that one action, or after it is closed.

For more info, see the KM Wiki article: Activate Macro Group action

####My Macro:

I thought this would be the perfect solution to showing all of the macros in a group in a palette when I needed it, but also allowing execution of individual macros in the group when the group palette was not shown. But it does NOT work that way.

Just for reference, here's my Macro Group Setup:

I think I'm not understanding your question, but let me post this and see if it helps.

Consider the following:

When I press F1, the palette appears. It goes away when I do something. If I press F1 again, it appears again. Just like it should.

If your issue is that hotkeys on the macros in that group don't work unless the palette is visible, then that's the same issue we've talked about before, and the reason I wrote the Make Macro Alias macro. The original macros go in a non-palette group with hotkeys. Aliases to them go in the palette group.

I'm reasonably sure you know all this, so as I said, I suspect I didn't understand the question.

Yep, I understand that.

My issue is that, that would not be necessary IF the "Show Palette for one action" worked like I expected, like I would prefer it to.

###Let's start here:

  1. You have a Group that is always activated, and does NOT have a palette, like this one:

  2. You have a number of macros in that Group with hotkey triggers, which are always available when the Group conditions are met.
  3. One of the Macros (named "Show Palette for Evernote Macro Group") in that Group has just one Action: "Show Palette for one action", like this:


So, when I am using Evernote, and I don't remember all of my KM macros, I'd like to execute the "Show Palette for Evernote Macro Group" macro to give me a palette of them.

After selecting one of these macros, or pressing ESC to close the group palette, I'd like the status of the Evernote Group to remain what it was before, "Activated".

But this action, "Show Palette for one action" causes the Evernote Group to be deactivated.

####So, I'm asking for a change or enhancement to this KM action to provide the option to keep the Group activated after that "one action" (or ESC).

The way "Show Palette for one action" works now, I don't see any good use case for it, but maybe I'm missing something.

Make sense now?

Yes it makes sense.

If we ever got our wish to have “Active/Inactive” refer only to the palette, and “Enabled/Disabled” refer to whether the macros can be launched or not, this would also solve your issue, right?

Because that’s what I’m hoping for.

I'm not sure. But I suspect @peternlewis will never agree to that because of the basic concept in place that in order for a macro to be triggered, it must first be "active", as determined by the Group settings:

What I'm asking for is much simpler, much more constrained change: Just provide an OPTION on the "Show Palette for one action" Action. Adding an option will NOT break any existing macros.

1 Like

Now I get it. Makes total sense. You’ve got my vote!

1 Like

Show a Macro Group for One Action shows the macro group in a palette for one action (usually you triggering a macro in that group, but any single action will complete it). After this, the macro group is deactivated (and the palette is hence removed).

This is the same as if the Macro Group had been configured to Show for One Action, and you hit the hot key associated with the macro group. And that is the purpose of this action, to allow you to do that but with more flexibility.

Currently there is an invariant that a macro group that shows a palette is active if and only if the palette is visible.

I understand that some people want some different behaviour, but I am loath to break this invariant, and the complexities of activating macro groups are already out of control. I may change this at some point in the future, but it will require a lot of brain power to be expended by me to ensure that all cases work the way I want them to and also to avoid breaking existing behaviour in unpleasant ways.

The answer to your specific question, “I don’t understand how this action can be effectively used.” is, given a macro group that sometimes shows a palette (and hence, sometimes is active), this action allows you to control the activation with something other than the available options (eg a MIDI key for example).

This problem is that it is a one-time only execution. After the macro with "Show Palette for one action" is executed once, it cannot be executed again. How am I supposed to use it?

Also, the Group was already active before this macro/action ran. So, I am not following your invariant mandate for this action. Why should it deactivate a Group that was already active?

A palette is just another form of a menu. Why must the Group active status be tied to whether or the palette is visible? I can understand an option to do that, but it does not make sense to me for that to always be the case.

Sure it can. It just cannot be in the same macro group that was just deactivated. Like other global macros, it needs to be in a globally available macro group.

Before it ran, it was not a "Macro Group that displays a palette"

It is deactivated because explicitly requested it be deactivated when you specified "for one action".

I can't agree with the "explicit" part.

Nowhere on the action does it say to deactivate the macro group after showing the palette. It says "Show palette for action", so that is all that I expected to happen. It says "show palette", NOT "activate group". The disabling of the macro group was very unexpected.

Maybe it is just me, but I'd be surprised if other users are not surprised by the behavior as well.

No, it doesn’t.

That may well be the case.

####Feature Request

I guess my main point is to appeal to you to provide us with some means of showing a palette of all macros in a group without requiring that the palette be visible to trigger these macros.

I have 35 macros in my Evernote group. Of those, I use about 6 routinely, and have no problem remembering the hotkey triggers for them. But I can’t remember all 35 macros, much less the hotkeys for them. Being able to bring up a palette for all macros occasionally would be awesome.

While @DanThomas’ new alias macro helps, it still is a royal PITA to create 35 alias macros for a separate group, and maintain these as I add and change the actual macros in the main group.

Another issue with using the alias approach is that I can’t show the hotkey trigger in the alias macro, else it would execute twice. So the palette does NOT help me learn or remember the actual macro hotkey.

Thanks for considering this request.



Here’s an outside-the-box suggestion, which won’t help with palettes but may help with the more general difficulty of not remembering all the hotkeys. In similar situations, I give all the macros in the set a Status Menu trigger. So, if I don’t remember the hotkeys, I can trigger them that way – and the status menu dropdown shows the hotkeys, so I usually don’t even trigger the macro that way, just remind myself of the hotkey and then type it, to help me remember it the next time.

Not as convenient as the palette behavior you want, but maybe better than the palette behavior you have?

Along this line there is KeyCue which will show you all your Keyboard Maestro shortcuts and within which you can make a custom items section. Very simple and elegant if the primary issue is recalling an organized list of shortcuts.

Thanks, Peter.

Looks like this has come up before. I just discovered this by accident:

This could work, except that I have so many macros in the Status menu that I have set it up in a hierarchy, and I don't see any way to select/activate the "Evernote" group, when the Status menu is displayed from a macro:

I know this was mentioned before, but you haven’t said either way, so I’ll mention it again:

If you haven’t already tried KeyCue, it seems like exactly what you need. It shows KM hotkeys as well as app hotkeys, and you can ever customize it to show “custom” hotkeys if they can’t be found any other way.

They have a free demo version.

If you try it, a couple of things I discovered:

  1. Look at the other themes. I’m not a fan of the new default theme.
  2. Out-of-the-box, you hold down the Control key to see KM hotkeys. It’s very configurable.

Like I said, I think this is the ideal solution for your situation, and it’s not very expensive.

So, are you saying that KeyCue can be set to show ONLY those macros I have in a specific KM Group?

You can configure KeyCue so a certain key only displays "macro hotkeys", which are KM macro hotkeys, for our purposes.

It only shows KM hotkeys that are active right then - global hotkeys and hotkeys for the specific application you're in.

Here's a display:

There's other themes, of course.

Here's a display of everything non-KM, for Chrome: