Hello Peter (@peternlewis)
I recently stumbled across these Questions in my mind after reading elsewhere what a heavy impact a lot of Enable/Disable Macro/Macro Groups possibly could have when you have a lot of them acting.
- why is there no Dedicated Activate Macro Action and no Condition that checks the Activated/Deactivated Status?!
It would be nice to have these features because it would have less impact on the Workflow when a lot of conditional switching between available Macros is going on as for example on my Macs for example. I tend to be alwaya sure thar only the Macros I am working with in the specific cext are enabled or ative for use. the same goes for the Macro Groups whats not needed is always disabled.
For example my Main Palette for KM that is triggered by a BetterTouchTool Gesture:
the Macro that displays me this Palette and the Containing Callers for Dedicated Tasks are not enabled until I use the BetterTouchTool Trigger to enable this Palette via AppleScript Code. Every Macro on this Palette also enables its dedicated SubMacro only when the Macro is triggered. The called SubMacro disables then before doing its work the Pacros of the Palette then the Palette and as a final the Palette caller.
I think that should give an example of my Workflow. Now - back to the Topic.
For Scripting it would also be nice if these features were available - speaking of an activate & deactivate as well as a toggle command for Macros and Macro Groups not only the currently available enabled and disabled commands. And commands to test for the activated, deactivated or toggled status.
Another great thing to have would be these Tokens for the Text Condition Statements:
-
Getting Information about Active or Inactive Macro Groups:
-
%ActivatedMacroGroups%
==> For Building a list of Active Macro Groups containing Name & UUID allowing fo custom Delimiter per Line -
%ActivatedMacroGroupsByName%
==> Bding a List of Active Macro Groups only using theit Names -
%ActivatedMacroGroupsByUUID%
==> Bding a List of Active Macro Groups only using theit UUIDs -
%DeactivatedMacroGroups%
==> For Building a list of Inactive Macro Groups containing Name & UUID allowing fo custom Delimiter per Line -
%DeactivatedMacroGroupsByName%
==> Bding a List of Inactive Macro Groups only using theit Names -
%DeactivatedMacroGroupsByUUID%
==> Bding a List of Inactive Macro Groups only using theit UUIDs
-
-
Getting Infortion about Active or Inactive Macros:
-
%ActivatedMacros%
==> For Building a list of Active Macros containing Name & UUID allowing fo custom Delimiter per Line -
%ActivatedMacrosByName%
==> Bding a List of Active Macros only using theit Names -
%ActivatedMacrosByUUID%
==> Bding a List of Active Macros only using theit UUIDs -
%ActivatedMacrosByNameInGroupNamed%
==> Bding a List of Active Macros only using theit Names of Provided Group Name -
%ActivatedMacrosByUUIDInGroupNamed%
==> Bding a List of Active Macros only using theit UUIDs of Provided Group Name -
%DeactivatedMacros%
==> For Building a list of Inactive Macros containing Name & UUID allowing fo custom Delimiter per Line -
%DeactivatedMacrosByName%
==> Bding a List of Inactive Macros only using theit Names -
%DeactivatedMacrosByUUID%
==> Bding a List of Inactive Macros only using theit UUIDs -
%DeactivatedMacrosByNameInGroupNamed%
==> Bding a List of Inactive Macros only using theit Names of Provided Group Name -
%DeactivatedMacrosByUUIDInGroupNamed%
==> Bding a List of Inactive Macros only using theit UUIDs of Provided Group Name
-
-
Getting Information about Enabled or Disabled Macro Groups:
-
%EnabledMacroGroups%
==> For Building a list of Enabled Macro Groups containing Name & UUID allowing fo custom Delimiter per Line -
%EnabledMacroGroupsByName%
==> Bding a List of Enabled Macro Groups only using theit Names -
%EnabledMacroGroupsByUUID%
==> Bding a List of Enabled Macro Groups only using theit UUIDs -
%DisabledMacroGroups%
==> For Building a list of Disabled Macro Groups containing Name & UUID allowing fo custom Delimiter per Line -
%DisabledMacroGroupsByName%
==> Bding a List of Disabled Macro Groups only using theit Names -
%DisabledMacroGroupsByUUID%
==> Bding a List of Disabled Macro Groups only using theit UUIDs
-
-
Getting Infortion about Eabled or Disabled Macros:
-
%EnabledMacros%
==> For Building a list of Enabled Macros containing Name & UUID allowing fo custom Delimiter per Line -
%EnabledMacrosByName%
==> Bding a List of Enabled Macros only using theit Names -
%EnabledMacrosByUUID%
==> Bding a List of Enabled Macros only using theit UUIDs -
%EnabledMacrosByNameInGroupNamed%
==> Bding a List of Enabled Macros only using theit Names of Provided Group Name -
%EnabledMacrosByUUIDInGroupNamed%
==> Bding a List of Enabled Macros only using theit UUIDs of Provided Group Name -
%EnabledMacrosByNameInGroupByUUID%
==> Bding a List of Enabled Macros only using theit Names of Provided Group UUID -
%EnabledMacrosByUUIDInGroupByUUID%
==> Bding a List of Enabled Macros only using theit UUIDs of Provided Group UUID -
%DisabledMacros%
==> For Building a list of Disabled Macros containing Name & UUID allowing fo custom Delimiter per Line -
%DisabledMacrosByName%
==> Bding a List of Disabled Macros only using theit Names -
%DisabledMacrosByUUID%
==> Bding a List of Disabled Macros only using theit UUIDs -
%DisabledMacrosByNameInGroupNamed%
==> Bding a List of Disabled Macros only using theit Names of Provided Group Name -
%DisabledMacrosByUUIDInGroupNamed%
==> Bding a List of Disabled Macros only using theit UUIDs of Provided Group Name -
%DisabledMacrosByNameInGroupByUUID%
==> Bding a List of Disabled Macros only using theit Names of Provided Group UUID -
%DisabledMacrosByUUIDInGroupByUUID%
==> Bding a List of Disabled Macros only using theit UUIDs of Provided Group UUID
-
-
Getting Information for Seecte Macros Or Macro Groups
-
%MacroGroupSelection%
==> Returns the Name & UUID & ToggleUUID of the selected Macro Group as an array of Elements including "Palette" if configured as Palette & "Menu" if configured to display its own Menu in the MenuBar -
%MacroGroupSelections%
==> Returns the Same as%MacroGroupSelection%
but as a List because it is to use with multiple Macro Groups selected -
%MacroSelection%
==> Returna the selected Macro's Name & UUID as an array of objects -
%MacroSelections%
== Returns the same s%MacroSelection%
but as a List because it is to use with multiple Macros selected
Also on my Whishlist would be a Macro Collection Condition and Macro Groups Collection Condition for the For Each Avtion that is designed to work with the massives List of the above Tokens.
Here a Token for Window management related tasks - useful for people who have more than one Editor Window open at a time
%KMWindowTitleForWindowIndex%
==> Returns the Tite of the Editor Window specified by its Index Number
Another Token Collection To help creating Unique Macro Names or help with other Tasks like Getting the Macro Group of a Macro - and even an enhancement for use with the New Two requested Collection Conditions:
-
%MacroUUIDsForName%
==> Tended to create a List of all Macros using their UUIDs matching exactly the Name provided or possible other parameters like contains the provided text -
%MacroGroupsForMacroName%
==> Tended to create a List of all Groups using their Names matching exactly the Name provided or possible other parameters like contains the pvided text -
%MacroGroupNameForMacroUUID%
==> Tended to give back the Group Name for one particular provided MacroUUID -
%MacroGroupNamesForMacroUUIDs%
==> Tended to give back the Group Names for a List of provided MacroUUIDs but when more than one Match on a Group then display as an array of the provided UUID and the Group Name per line -
%MacroGroupUUIDForName%
==> Gives Back the UUID of a provided Name or a String Match via Parameter -
%MacroGroupUUIDsForName%
==> Gives Back the UUIDsin a List of a provided Name or a String Match via Parameter -
%MacroGroupToggleUUIDForName%
==> Gives Back the ToggleUUID of a provided Name or a String Match via Parameter -
%MacroGroupToggleUUIDsForName%
==> Gives Back the ToggleUUIDs in a List of a provided Name or a String Match via Parameter
Speaking of Functions there are some Keyboard Maestro related ones, too
-
an
KMWINDOWINDEXFORWINDOWTITLE()
Function: ==> Returns 1 for the Frontmost Editor Window or the only one if only one Window is open and no Title is defined -
an
KMEDITORWINDOWSCOUNT()
Function: ==> Returns how many Editor Windows are open -
a
SELECTEDMACROGROUPSCOUNT()
Function: ==> Returns how many Macro Groups are selected -
a
SELECTEDMACROSCOUNT()
Funtion: ==> Returns how many Macros are selected -
an
ACTIVATEDMACROGROUPSCOUNT()
Function: ==> Returns how many Macro Groups are activated -
an
DEACTIVATEDMACROGROUPSCOUNT()
Function: ==> Returns how many Macro Groups are deactivated -
an
ACTIVATEDMACROSCOUNT()
Function: ==> Returns how many Macros are activated -
an
DEACTIVATEDMACROSCOUNT()
Function: ==> Returns how many Macros are deactivated -
an
ENABLEDMACROGROUPSCOUNT()
Function: ==> Returns how many Macro Groups are enabed -
an
DISABLEDMACROGROUPSCOUNT()
Function: ==> Returns how many Macro Groups are disabled -
an
ENABLEDMACROSCOUNT()
Function: ==> Returns how many Macros are enabled -
an
DISABLEDMACROSCOUNT()
Function: ==> Returns how many Macros are disabled
KM Has a Wonderful Feature Called Show or Hide deactivated Macro Groups.
On my Wish list is to have this also for Macros. But It would also be great to have an Action for that - which lets us choose which Groups and which Macros. The Action should have an option for All Macros, All Macro Groups, Selected Macros, Selected Macro Groups, and with String definition options. and as Main Options these three: Show, Hide & Toggle.
Not to forget the Macro Groups which are Disabled on Particular Macs when Syncing is enabled. I want to be able to hide themfrom the List, too
Maybe some Tokens to work with conditions:
-
%ShownDisabledMacroGroups%
==> For Displaying a List of All Shown Disabled Macro Groups -
%ShownDisabledMacroGroupsOnMac%
==> For Displaying a List of All Shown Disabled Macro Groups on a Particular Mac providing the Name or UUID of the Mac -
%HiddenDisabledMacroGroups%
==> For Displaying a List of All Hidden Disabled Macro Groups -
%HiddenDisabledMacroGroupsOnMac%
==> For Displaying a List of All Hidden Disabled Macro Groups on a Particular Mac providing the Name or UUID of the Mac
For better use of all or at least many of the above requested features here is one thing that would be awsome to have:
-
A Text Field in these Actions
-
Enable Macro Group
-
Disable Macro Group
-
Toggle Macro Group
-
Enable Macro
-
Disable Macro
-
Show Macro Grouop
-
Hide Macro Group
-
Activate Macro Group
-
( the above requested Activate Macro Action as well )
-
Since this Request is a pure Keyboard Maesto Editor based Request and maybe a lot of could eventually be scripted - even when simple or complex - I want to say something .... maybe there are a lot of users who want to have as less Scripting as possible in their Macros - may it be because of no interrest in scripting or they have no clue or what ever. This is one of the reasons I made the request of all these features above.
Another Reason is my Last Feature Request where you told me about complex UI and maybe some Features wouldn't be Implemented because of this fact.
With this Feature Request I'll want to show you that it would be Possible to use the Existing UI and the maybe bigest change could be if yadd the two reested Collection Conditions.
Speaking of scripting - besides what I restqed above or new commands. It would be nice if you could implement as much as possible of these Tokens and Funtions and maybe try to make some of the existing ones available for scripting if they arent.
I am waiting now for your feedback now because this Request is now more than 200 lines of text.
Greetings from Germany and have a great day
Tobias