Activate 1 macro group for 1 action but also deactivate all the others for 1 action?

Hey Folks,

Looking to trigger a macro group for 1 action, but I can't figure out how to deactivate all the other groups temporarily. So they collide.

some more info:
I'm using an second keyboard (USB) and karabiner. So the trigger for this is USB device key, and also the triggers to trigger the items in that macro group are also on that same USB keyboard.
I have 2 sections on this keyboard (visually, half the keys are black and half the keys are white), I've mostly set it up so the left half is all global (app launches, global process launches, etc) whereas the right half is all local stuff, different in each app.
But on the left half (global) i would like to have 1 button that is "more apps", and you press it once and then you can press one button on the right half to trigger from amongst a second list of apps.
Perhaps i am doing this wrong, but the natural way i can think of to do this is to set up a macro group called "more apps", .... not sure what to put for the settings there, because you're allowed to use a hot key to trigger but not USB device trigger. so instead I leave that wide open (always active), ... then i make a global macro to "activate macro group 'more apps' for one action".
This is all set and great, EXCEPT, .... there is no option here to also DEactivate the other groups temporarily. So what happens is, i press the more apps button, and it activates the additional app buttons which are shared with the local actions for whatever app i'm currently in, and for some reason those are not being deactivated, so they collide. Can't find a way to do it! seems like there's got to be a way to accomplish this effect.
If i were using regular keys (for example if i used regular numpad keys for the additional apps,) the regular functions of those numbers (such as typing numbers) ARE in fact disabled during the temporary "more apps" macro group activation. but if i do it with USB keys, the local functions on that side of the keyboard remain active.
I think i over explained it, but hopefully you get what i mean ....
Would appreciate any insight here, perhaps there's another way to accomplish this.
Just want one of my app launch buttons to be a 'more apps' button, which temporarily converts the local action buttons into some more additional app launch buttons, until one is pressed, and then they would return to their local functionality. Thanks!!

Bill

If I understand your requirements correctly, then I think all you need is

  • two Macro Groups (MGs), each set to either "Show a Palette for one action" OR "Activated for One Action" when a hot key is pressed.
  • Place the Macros for the LEFT half of your KB keys in one MG, and the Macros for the RIGHT half in the other MG.
  • Set a different Hot key for each MG

==In this way ALL of the macros (keys) are INACTIVE until== you press the hot key for the MG they are in.

For example, I have two MGs that work like this:

MG#1

image
image

MG#2

image
image

Does that make sense for your use case?

For more info, see Macro Activation .

there are 2 problems with that for me: 1 is, that destroys the possibility of having anything be single key presses. every function would require 2 strokes in your method. The other problem is that it requires a hot key on the regular keyboard, and is not able to be triggered by USB device key (which is what that second keyboard is). Would strongly prefer to have everything on single key. (all the global, and all the local. the only ones needing 2 keys would be the overflow)
I'm quite surprised there's not a way to do this.
Imagine a keyboard of 50 keys ....... but one of those keys is like a mode switcher, and if you press that mode switcher key, all the other keys have different functions for one action. then they go back to normal. I would think this is essential ..... i can almost think of several other ways to get this to happen in keyboard maestro, but each method seems to just fall short.
For example, using the conflict palette would be totally awesome .... I would simply set all the apps in the "more apps" category to be the same button: the last app button, and then the conflict palette shows up. The only problem is, as far as i know, you can't choose what keys you use to activate the things on the conflict palette once it pops up. From what i can tell, it has to be a regular keyboard stroke, and it has to be the first letter of the item. OR is there actually a way to set that, and can i set it to USB device key?

Another way that ALMOST gets this job done would be like if i could use a Prompt for User Input. but that actually falls short in 2 ways because i still probably wouldn't be able to use USB device key for the user input, AND, the other problem with that is you have to hit enter when you're done. Would be very nice if i could get a user prompt which only asks for 1 character of input and then automatically executes and closes the prompt ones any button is pressed.

Another solution that is almost appealing is to use a command modifier. but instead of a command modifier, i would have to set it to that 'more apps' button, (which is on the USB device) and also, would strongly prefer not to have to hold it down, but instead engage in modifying capabilities when pressed and released, and then it will modify the next key pressed only. Tried to rig that up but it just kept falling short and not quite working right. and there was no clean way to get it to release the modifier once the action was selected.

There's got to be a way to do this. Like a mode switcher button that changes the function of ceratain keys for one action. Not adding an additional piggyback function for one action, but actually changes a key function, for one action. i seem to be skirting all around the right solution but not getting it.
thanks for your help, I hope maybe you might see what I'm getting at....
thanks

bill

Are you aware of the Activate/Deactivate Macro Group action? This has many options, and you could create a macro (triggered by a single hot key) that will activate, deactivate, toggle, etc. For example, you could have any number of Groups that you include in a set called Supergroup A, and any number of other groups that you include in a set called Supergroup B. Using multiple Activate/Deactivate actions within the macro could toggle both supergroups, so that if A is activated, everything in B is deactivated. Invoking the macro again would deactivate everything in A and activate everything in B. There are many possibilities. By the bye, Supergroup is not a KM construct. I'm using that word just to indicate a particular set (of your choosing) of KM Macro Groups.

Did you examine the option on the Macro Group for when to show a palette?

image

If you choose the "Shows/Hides a halette when", the ONE keystroke will activate the Palette, and the macros in that Group. Then you need only ONE keystore for all of its macros UNTIL you close the palette.

So I have:

2019-07-22_04-32-32%20(1)
2019-07-22_04-32-32%20(3)

2019-07-22_04-32-32%20(4)
2019-07-22_04-32-32%20(5)

You can use any keyboard key or USB Device key to activate the Palettes or Macros.

Will that work for you?

precisely the reason this is not working for me is that this is not accepting USB device key.
In fact, when doing regular triggers for regular macros, USB device input is not accepted when it is asking for "hot key." you have to change it from "hot key" to "USB device key", or "device key", and then it will accept the USB device input.

so in the screenshot you showed, where you can checkbox "The hot key" is pressed, <--- that right there needs to be changed to "USB device key", just the way you can change it in when making a normal trigger for a macro. but it appears this is not allowed here.
Can't find a way to set this to a USB device input. works fine on regular triggers, although you do have to change the popup menu from "the hot key" to "USB device key".
I surely double explained that, but hopefully it makes sense.
This would be the solution, if i were able to get USB device key there.
thanks

Bill

That is correct, the Show/Hide palette accepts ONLY a Hot Key.
You can make a request that it be changed, but for now you will need to use the tool you have.

I assume you have a normal keyboard, so surely it would not be too hard come up with two keystrokes that you could use for this.

But here is a direct solution for you. Create Macro outside of either of those Macro Groups, and use a USB Device Key to Show/Hide the palette of the desired MG:

image

Pressing the key gives this:
image

Will that work for you?

That looks enticing, but back to the original issue: the normal function of the app keys is not deactivated. so for example, in your case on that palette, if you then press 3 on the USB device (supposed to trigger macro 1 on your palette) it now brings up a new conflict palette because USB button 3 already had a function before .... which is the entire reason for the need for this special menu!
thanks for your help!

I'm sorry, but you have lost me.

In the beginning you said:

What I suggested last does exactly that. NONE of the macro groups are active UNTIL the palette for a specific group is activated/shown.

That is NOT possible if ALL of the macros triggered by your USB keys are in Macro Groups that require a palette to be active.

Have you actually tried the method I suggested above:

I have a similar situation that I don't think is solved by this solution.

I have set up my keypad to have multiple modes, each with a different set of bindings in their own subgroup, and I assign a key to cycle between modes by activating/deactivating each mode's group (one mode has all groups deactivated, which allows me to use the keypad for numbers). This "keypad mode" key is a global key. So far so good.

Now I want to implement a keypad-meta key within each mode that allows me to hit a single keystroke on the keypad (e.g., meta - keypad 6) to do a special function within the keypad mode - standard meta key behavior. The meta key is a global key that deactivates the keypad mode and activates a subgroup for one action, where that subgroup is keypad-mode specific (keypad mode 1 has one meta key subgroup, keypad mode 2 has another meta key subgroup, etc.). So far, so good.

The problem is I don't know how to automatically reactivate the relevant keypad mode after the meta keypad macro finishes. I could explicitly end each meta- keypad macro with "(re-)activate current keypad mode", but that seems kinda kludgy. Since any meta-keypad macro may have its own keystrokes, I can't trigger on any keys. An arbitrary timer seems error-prone and a global "reactive current key mode" key defeats the purpose of the meta key.

Any ideas?