User Tools

Site Tools


Scripting_the_Keyboard_Maestro_editor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Scripting_the_Keyboard_Maestro_editor [2017/09/20 16:29]
JMichaelTX ADD example to get current macro
Scripting_the_Keyboard_Maestro_editor [2018/04/14 19:02]
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 ```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"​ 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
 +
 +tell application "​Keyboard Maestro"​
 +  #    Ver 1.1    2017-09-20
 +  ​
 +  set macroList to every macro whose selected is true
 +  ​
 +  --- Make Sure Only ONE Macro is Selected ---
 +  ​
 +  if ((count of macroList) = 1) then
 +    set oMacro to item 1 of macroList
 +  else
 +    error "​Multiple Macros are selected. ​ Select only ONE and re-execute this script."​
 +  end if
 +  ​
 +  --- Now We can Get/Set Macro Properties ---
   ​   ​
-  set oMacro to first macro whose selected is true 
   set macroName to name of oMacro   set macroName to name of oMacro
   ​   ​
Line 19: Line 63:
 ``` ```
  
-===== 2Get and Create Variety of Editor Objects ​=====+===== 3Macro Groups ​=====
  
 +**Disable a Macro Group**
  
-```applescript +<​code ​applescript> 
-tell app "​Keyboard Maestro"​+tell application ​"​Keyboard Maestro"​ 
 +   set enabled of macro group "Macro Group Name" to false 
 +end tell 
 +</​code>​
  
-   ​properties of group "​Enabled"​ +**Edit a Macro Group**
-   ​properties of smart group "​Enabled"​+
  
-   make new smart group with properties {name:"Enabled", search strings:​{"​enabled:​yes"​}} +<code applescript>​ 
-   set search strings of smart group "Disabled" ​to {"​enabled:​no"​} +tell application ​"Keyboard Maestro
-   ​ +  ​editMacro ​"Macro Group Name or UID
-   set enable of macro group "Turn Off" to false+end tell 
 +</​code>​
  
-   set name of macro 1 to "​Great!"​+**Get the list of currently selected ​macro groups**
  
-   tell macro group "New Stuff" ​to make new macro +<code applescript>​ 
-      ​ +tell application ​"Keyboard Maestro
-   ​set ​color of action 1 of macro "​Bright"​ to "​red"​ +   ​set ​groupList to selected ​macro groups 
-   ​ +end tell 
-   select action 1 through 3 of action 2 of macro "​Working"​+</​code>​
  
-   set selection to global macro group+===== 4. Get and Create Variety of Editor Objects =====
  
-   move first action of macro "​Source Macro" to end of actions of macro "Dest Macro"​ +FIXME [JMichaelTX: ​ This script removed pending review & update].
-  +
-   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" 
-  ​ 
-   ​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"+===== 5. Create Macro Group and Macros ===== 
 + 
 +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`. 
 + 
 +(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
  
-   ​duplicate (selected macros) to macro group "Test4+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"
Scripting_the_Keyboard_Maestro_editor.txt · Last modified: 2018/04/14 19:02 by JMichaelTX