This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
Scripting_the_Keyboard_Maestro_editor [2017/09/20 16:41] JMichaelTX [1. Get Current Macro Object] Revise script |
Scripting_the_Keyboard_Maestro_editor [2018/04/14 19:02] (current) JMichaelTX Removed script from Section 4 because it won't even compile. |
||
---|---|---|---|
Line 5: | Line 5: | ||
The Keyboard Maestro Scripting Definition (sdef) describes all the support, and you can open in in the Script Editor to see more details. Here are some examples of what you can do: | The Keyboard Maestro Scripting Definition (sdef) describes all the support, and you can open in in the Script Editor to see more details. Here are some examples of what you can do: | ||
- | ===== 1. Get Current Macro Object ===== | + | FIXME Just adding this until I can provide a more complete script. |
+ | |||
+ | ===== 1. Selecting Lists of Objects in KM8 ===== | ||
+ | |||
+ | The `selection` property will return whatever is selected, and has focus, in the Keyboard Maestro editor. So this could be any of these: action, macro, macro group. Here is how to get the selection, and determine the type (class) of the object that is selected: | ||
+ | |||
+ | ```applescript | ||
+ | tell application "Keyboard Maestro" | ||
+ | |||
+ | --- First Select an Action, Macro, or Macro Group | ||
+ | -- in the KM Editor, then run this script | ||
+ | |||
+ | set kmList to selection | ||
+ | set kmClass to class of item 1 of kmList | ||
+ | |||
+ | -->Based on selection, will return one of these: | ||
+ | -->action, macro, macro group | ||
+ | |||
+ | end tell | ||
+ | |||
+ | ``` | ||
+ | |||
+ | |||
+ | ```applescript | ||
+ | tell application "Keyboard Maestro" | ||
+ | set selList to selection | ||
+ | set macroList to selected macros | ||
+ | set grpList to selected macro groups | ||
+ | end tell | ||
+ | ``` | ||
+ | |||
+ | |||
+ | ===== 2. Get Current Macro Object ===== | ||
```applescript | ```applescript | ||
Line 17: | Line 49: | ||
| | ||
if ((count of macroList) = 1) then | if ((count of macroList) = 1) then | ||
- | set oMacro to first macro whose selected is true | + | set oMacro to item 1 of macroList |
else | else | ||
error "Multiple Macros are selected. Select only ONE and re-execute this script." | error "Multiple Macros are selected. Select only ONE and re-execute this script." | ||
Line 31: | Line 63: | ||
``` | ``` | ||
+ | ===== 3. Macro Groups ===== | ||
- | ===== 2. Get and Create Variety of Editor Objects ===== | + | **Disable a Macro Group** |
+ | <code applescript> | ||
+ | tell application "Keyboard Maestro" | ||
+ | set enabled of macro group "Macro Group Name" to false | ||
+ | end tell | ||
+ | </code> | ||
- | ```applescript | + | **Edit a Macro Group** |
- | tell app "Keyboard Maestro" | + | |
- | properties of group "Enabled" | + | <code applescript> |
- | properties of smart group "Enabled" | + | tell application "Keyboard Maestro" |
+ | editMacro "Macro Group Name or UID" | ||
+ | end tell | ||
+ | </code> | ||
- | make new smart group with properties {name:"Enabled", search strings:{"enabled:yes"}} | + | **Get the list of currently selected macro groups** |
- | set search strings of smart group "Disabled" to {"enabled:no"} | + | |
- | + | ||
- | set enable of macro group "Turn Off" to false | + | |
- | set name of macro 1 to "Great!" | + | <code applescript> |
+ | tell application "Keyboard Maestro" | ||
+ | set groupList to selected macro groups | ||
+ | end tell | ||
+ | </code> | ||
- | tell macro group "New Stuff" to make new macro | + | ===== 4. Get and Create Variety of Editor Objects ===== |
- | + | ||
- | set color of action 1 of macro "Bright" to "red" | + | |
- | + | ||
- | select action 1 through 3 of action 2 of macro "Working" | + | |
- | set selection to global macro group | + | FIXME [JMichaelTX: This script removed pending review & update]. |
- | move first action of macro "Source Macro" to end of actions of macro "Dest Macro" | ||
- | |||
- | move macro "Macro33" to macro group "Test4" | ||
- | move (every macro of macro group "Test4" whose name starts with "Macro3") to macro group "Test3" | ||
- | move macro 2 of macro group "Test3" to macro group "Test4" | ||
- | delete second action of macro "Target Macro" | + | ===== 5. Create Macro Group and Macros ===== |
- | + | ||
- | duplicate every macro group whose name starts with "Test" | + | |
- | set m to duplicate action 1 of macro "Macro33" to after action 2 of macro "Macro32" | + | Before you use a macro group you probably want to check if it exists. The following example tests for the macro group's existence, based on a Keyboard Maestro input variable containing the macro group name -`macroGroup`. |
- | duplicate (selected macros) to macro group "Test4" | + | (This test is case-insensitive. For example macro group "Firefox" could also be specified as "firefox".) |
- | | + | |
+ | ```applescript | ||
+ | tell application "Keyboard Maestro Engine" | ||
+ | set macroGroup to getvariable "macroGroup" | ||
+ | if (macroGroup = "") then error "[ERROR]" & linefeed & "Invalid Macro Group Name. KM Variable \"" & "macroGroup" & "\" was empty or undefined." | ||
+ | end tell | ||
+ | |||
+ | tell application "Keyboard Maestro" -- Editor | ||
+ | if exists macro group macroGroup then | ||
+ | return true | ||
+ | else | ||
+ | return false | ||
+ | end if | ||
end tell | end tell | ||
``` | ``` | ||
- | ===== 3. Create Macro Group and Macros ===== | ||
Here is a full example that creates a macro group called "Multiple Clipboards" and then creates 9 macros with hot Control-C and action to copy the clipboard to a named clipboard with name "Clipboard N" (where N is 1-9) and another set of 9 macros with hot key Control-V and action to paste from the named clipboard "Clipboard N" | Here is a full example that creates a macro group called "Multiple Clipboards" and then creates 9 macros with hot Control-C and action to copy the clipboard to a named clipboard with name "Clipboard N" (where N is 1-9) and another set of 9 macros with hot key Control-V and action to paste from the named clipboard "Clipboard N" |