Toggle the enabled/disabled state of the selected macro(s) ā no matter what is selected in the Keyboard Maestro editor.
Run from an Execute an AppleScript action.
--------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2016/12/20 08:00
# dMod: 2016/12/20 08:08
# Appl: System Events & Keyboard Maestro Editor
# Task: Toggle the Enabled-Disabled state of the selected macros.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @System_Events, @Keyboard_Maestro, @Toggle, @Enabled, @Disabled, @State, @Selected, @Macros
# Note: Likely to fail on non-English language systems due to localization issues.
--------------------------------------------------------------------------------
tell application "System Events"
tell application process "Keyboard Maestro"
tell (first window whose subrole is "AXStandardWindow")
tell (first button whose accessibility description is "Enable or Disable Macro")
perform action "AXPress"
end tell
end tell
end tell
end tell
--------------------------------------------------------------------------------
Hereās how to automate the [Rename] contextual-menu item for the selected action.
If more than one action is selected then the contextual-menu pops open to allow you to type-select.
Run it from an Execute an AppleScript action.
-Chris
------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2017/05/22 14:45
# dMod: 2017/05/22 14:53
# Appl: Keyboard Maestro Editor
# Task: Select Rename in the contextual menu of the selected action.
# : If more than 1 action is selected bring up the contextual menu.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Keyboard_Maestro, @System_Events, @Select, @Rename, @Contextual_Menu, @Menu, @Selected, @Action
------------------------------------------------------------------------------
tell application "System Events"
tell application process "Keyboard Maestro"
tell window "Keyboard Maestro Editor"
tell group 1
tell splitter group 1
tell scroll area 3
set selectedGroups to groups whose selected is true
if selectedGroups ā {} then
set theAction to item 1 of selectedGroups
tell theAction
perform action "AXShowMenu"
tell menu 1
tell menu item "Renameā¦"
perform action "AXPress"
end tell
end tell
end tell
end if
end tell
end tell
end tell
end tell
end tell
end tell
------------------------------------------------------------------------------
EDIT: Never mind. Try to imagine the dumbest possible reason this might have failed to work.
This is really useful. I tried to modify it to work for āEnable/Disableā but I canāt get it to work. I put this where you have tell menu item "Renameā¦": if menu item "Disable" exists then tell menu item "Disable" perform action "AXPress" end tell else if menu item "Enable" exists then tell menu item "Enable" perform action "AXPress" end tell end if
Peter spent a lot of effort making Keyboard Maestro 8 more AppleScriptable. (Thank you Peter!)
And this makes many things easy to do that were difficult or impossible in previous versions of KM.
When Iām testing something in Keyboard Maestro or creating a new macro I almost always use (or at least start out with) the same test macro:
Generic-Test 01
Therefore I want to get to that macro quickly quite often.
Using the following script I can manage that spectacular feat with a keystroke.
The user is REQUIRED to provide names for their test-group and test-macro ā see User Settings in the script.
If the designated group or the macro donāt exist they will be created as necessary.
------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2014/08/21 21:37
# dMod: 2017/11/17 04:46
# Appl: Keyboard Maestro
# Task: Edit 'Generic Test 1' Macro of macro group 'Test Group'.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Keyboard_Maestro_8, @KM8, @Editor, @Edit, @Macro
------------------------------------------------------------------------------
try
---------------------------------------------------------------------------
# User Settings:
---------------------------------------------------------------------------
set macroGroupName to "Test Group"
set macroName to "Generic-Test 01"
---------------------------------------------------------------------------
tell application "Keyboard Maestro"
------------------------------------------------------------------------
# Make sure the designated macro group and macro exist.
# Create one or both of them as necessary.
------------------------------------------------------------------------
if (exists of macro group macroGroupName) = false then
set newGroup to make new macro group with properties {name:macroGroupName}
select newGroup
end if
if (exists of macro macroName) = false then
tell macro group macroGroupName
set newMacro to make new macro with properties {name:macroName}
select newMacro
return --Ā» script ends here IF a new macro is created.
end tell
end if
------------------------------------------------------------------------
# Select the macro group if necessary.
------------------------------------------------------------------------
if selected of macro group macroGroupName = false or length of (get selected macro groups) > 1 then
select macro group macroGroupName
end if
------------------------------------------------------------------------
# Select the macro for editing.
------------------------------------------------------------------------
editMacro macroName
------------------------------------------------------------------------
end tell
on error e number n
set e to e & return & return & "Num: " & n
if n ā -128 then
try
tell application (path to frontmost application as text) to set ddButton to button returned of ¬
(display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
default button "OK" giving up after 30)
if ddButton = "Copy Error Message" then set the clipboard to e
end try
end if
end try
------------------------------------------------------------------------------
When I write a macro for someone else and sometimes when Iāve accomplished a difficult bit of testing, I often want to save the final result in my āe_Examplesā macro group.
Itās named that way, so it sorts a the top of the groups starting with āeā. That way I can hit one keystroke to move the focus in the editor to the group pane and then āeā to get to that group.
I used to have to copy my new creation and then go through the above rigamarole to get to the examples group and then paste.
Now with Keyboard Maestro 8 I can move the selected macros with an AppleScript and one keystroke.
------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2017/11/17 05:58
# dMod: 2017/11/17 06:04
# Appl: Keyboard Maestro
# Task: Move the Selected Macros to a user-designated macro group.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Keyboard_Maestro_8, @KM8, @Move, @Selected, @Macros, @Designated, @Group
------------------------------------------------------------------------------
try
---------------------------------------------------------------------------
# User settings:
---------------------------------------------------------------------------
set moveToGroupName to "e_Examples"
---------------------------------------------------------------------------
tell application "Keyboard Maestro"
set macroSelectionList to selected macros
if macroSelectionList = {} then
error "No macros are selected!"
end if
# Disable any macros that are enabled.
repeat with theMacro in macroSelectionList
if enabled of theMacro is true then
set enabled of theMacro to false
end if
end repeat
move macroSelectionList to macro group moveToGroupName
end tell
on error e number n
set e to e & return & return & "Num: " & n
if n ā -128 then
try
tell application (path to frontmost application as text) to set ddButton to button returned of ¬
(display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
default button "OK" giving up after 30)
if ddButton = "Copy Error Message" then set the clipboard to e
end try
end if
end try
------------------------------------------------------------------------------
Since Iāve made it easier to file things in my e_Examples group, I thought Iād make it easier to access it for searching.
This AppleScript will take you straight to the designated group name in the Keyboard Maestro editor.
------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2017/11/17 01:09
# dMod: 2017/11/17 01:19
# Appl: Keyboard Maestro
# Task: Select the macro group "e_Examples".
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @KM8, @Keyboard_Maestro_8, @Keyboard_Maestro_Editor, @Select, @Macro, @Group, @e_Examples
------------------------------------------------------------------------------
try
---------------------------------------------------------------------------
# User Settings:
---------------------------------------------------------------------------
set macroGroupName to "e_Examples"
---------------------------------------------------------------------------
tell application "Keyboard Maestro"
if macro group macroGroupName exists then
select macro group macroGroupName
else
error "Cannot select macro group " & macroGroupName & " ā it is missing!"
end if
end tell
on error e number n
set e to e & return & return & "Num: " & n
if n ā -128 then
try
tell application (path to frontmost application as text) to set ddButton to button returned of ¬
(display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
default button "OK" giving up after 30)
if ddButton = "Copy Error Message" then set the clipboard to e
end try
end if
end try
------------------------------------------------------------------------------
I think this macro goes well with your other macro that brings focus to the Macros section of the group :
--------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2015/07/25 03:06
# dMod: 2015/07/25 03:14
# Appl: Keyboard Maestro & System Events
# Task: Set Focus to Macro List
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @System_Events, @Keyboard_Maestro, @Focus, @Macro_List
--------------------------------------------------------
try
tell application "System Events"
tell application process "Keyboard Maestro"
tell window "Keyboard Maestro Editor"
tell scroll area 2 of splitter group 1 of group 1
set focused to true
end tell
end tell
end tell
end tell
on error e number n
set e to e & return & return & "Num: " & n
if n ā -128 then
try
tell application (path to frontmost application as text) to set ddButton to button returned of ¬
(display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
default button "OK" giving up after 30)
if ddButton = "Copy Error Message" then set the clipboard to e
end try
end if
end try
--------------------------------------------------------
Not sure what the best way to combine these macros together is, perhaps this?
try
--------------------------------------------------------
# User Settings:
--------------------------------------------------------
set macroGroupName to "e_Examples"
--------------------------------------------------------
tell application "Keyboard Maestro"
if macro group macroGroupName exists then
select macro group macroGroupName
else
error "Cannot select macro group " & macroGroupName & " ā it is missing!"
end if
end tell
on error e number n
set e to e & return & return & "Num: " & n
if n ā -128 then
try
tell application (path to frontmost application as text) to set ddButton to button returned of ¬
(display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
default button "OK" giving up after 30)
if ddButton = "Copy Error Message" then set the clipboard to e
end try
end if
end try
try
tell application "System Events"
tell application process "Keyboard Maestro"
tell window "Keyboard Maestro Editor"
tell scroll area 2 of splitter group 1 of group 1
set focused to true
end tell
end tell
end tell
end tell
on error e number n
set e to e & return & return & "Num: " & n
if n ā -128 then
try
tell application (path to frontmost application as text) to set ddButton to button returned of ¬
(display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
default button "OK" giving up after 30)
if ddButton = "Copy Error Message" then set the clipboard to e
end try
end if
end try
--------------------------------------------------------
Is there an update for this for Keyboard Maestro 9? I recently upgraded and this broke. It looks like it is a long press on the back carrot or long press on the command button and I'm not quite getting this to work.
--https://forum.keyboardmaestro.com/t/moving-the-focus-in-the-keyboard-maestro-editor/4184/17
--------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2016/08/11 22:43
# dMod: 2016/08/11 23:33
# Appl: System Events & Keyboard Maestro Editor
# Task: Open Recently Run Macro Button's Menu
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @System_Events, @Keyboard_Maestro, @Editor, @Open, @Recently, @Run, @Menu
--------------------------------------------------------------------------------
tell application "System Events"
tell application process "Keyboard Maestro"
set frontmost to true
tell window "Keyboard Maestro Editor"
tell group 3
tell button 1
perform action "AXShowMenu" -- Open Recently Run Macros Menu
end tell
end tell
end tell
end tell
end tell
--------------------------------------------------------------------------------
From what I can tell using UI Browser it should be group 4 now and button 1 for the Used (command) icon.
I should have mentioned that I did see that the window name had updated to show the macro you are on.
It seems like the problem is that the window needs me to long press to get the dropdown. I tried what I thought was the solution and and even did a test solution on the macro I had in front and it still didn't click long enough to get the dropdown.
# Script does NOT work
# Wrong window name.
# Wrong button name.
activate application "Keyboard Maestro"
tell application "System Events"
tell process "Keyboard Maestro"
button "ā" of group 3 of window "Keyboard Maestro Editor ā Keyboard Maestro - Show Most Recently Executed Macro v4 - (2) Choose From Recent Macros"
end tell
end tell
I'm not sure how this holds the button and works but it does so thanks @JMichaelTX
--------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2016/08/11 22:43
# dMod: 2016/08/11 22:53
# Appl: Keyboard Maestro Editor & System Events
# Task: Open the Macro Edit History Menu Button of the KM Editor.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @System_Events, @Keyboard_Maestro, @Editor, @History
# Vers: 1.00
--------------------------------------------------------
# REF: https://forum.keyboardmaestro.com/t/moving-the-focus-in-the-keyboard-maestro-editor/4184/16
--------------------------------------------------------
tell application "System Events"
tell application process "Keyboard Maestro"
tell (first window whose subrole is "AXStandardWindow")
tell button 1 of group 3
# Open the History Button Menu.
perform action "AXShowMenu"
end tell
end tell
end tell
key code 125 -- Select the first menu item.
end tell
--------------------------------------------------------