Of course you can already turn KM inside out, and distribute macros as Javascript code to systems which have KM installed.
(Each macro becomes an array of JS objects,
[{
"MacroActionType": "SpeakText",
"Rate": "Default",
"IsDisclosed": true,
"TimeOutAbortsMacro": true,
"Text": "This is a simple example",
"IsActive": true
}, {
"MacroActionType": "PlaySound",
"Volume": 74,
"IsDisclosed": true,
"TimeOutAbortsMacro": true,
"IsActive": true,
"Path": "/System/Library/Sounds/Glass.aiff",
"DeviceID": "SOUNDEFFECTS"
}]
executed by some variant of a function like this:
// jsoDoScript :: Object (Dict | Array) -> IO ()
const jsoDoScript = jso => {
const strPath = tempFilePath('tmp.plist');
return (
Application('Keyboard Maestro Engine')
.doScript((
$(Array.isArray(jso) ? jso : [jso])
.writeToFileAtomically(
$(strPath)
.stringByStandardizingPath,
true
),
readFile(strPath)
)),
true
);
};