#author("2018-04-02T14:47:16+09:00","default:wikiwriter","wikiwriter") &tag(KeyboardMaestro); *目次 [#qc839591] #contents *関連ページ [#h87eca54] *参考情報 [#mfca405b] -[[TextExpander から Keyboard Maestro へ移行した – with a Christian Wife:http://blog.withachristianwife.com/2016/11/29/use-keyboard-maestro-as-text-expansion/]] -[[[Keyboard Maestro] “Insert Text by Pasting” 問題 – with a Christian Wife:http://blog.withachristianwife.com/2016/12/23/insert-text-by-pasting-problem-in-km/]] *ペースト [#r8cf43d3] **テキストペースト時にカーソルポジションを指定 [#kd1fa855] - "%|%"がカーソル位置に該当する。ただしMacroの戻り値として文字列を返し、そこに %|%が含まれているような場合、うまくいかない模様。 *マクロ [#y58495f1] **サブマクロを呼び出す [#mbad0b06] -[[action:Execute a Macro [Keyboard Maestro Wiki]:https://wiki.keyboardmaestro.com/action/Execute_a_Macro]]にあるように、Execute Macroアクションを使用する。 **パラメータの受け渡し [#n6b566bd] -呼び出し先がシェルスクリプトの場合、クリップボード経由でわたしたり、またはKM変数でわたすことができる。 -クリップボードの場合、呼び出し先では普通にpbpasteで内容を読み込む。 -KM変数の場合、呼び出し先で例えばTestParamに"あいうえお"をセットしておき、Macroをwith Parameterで「TestParam」を選んで引き渡す。複数の場合「TestParam1, TestParam2」とカンマ区切りでいける模様。[[Can I create a "structure" type of variable? - Questions & Suggestions - Keyboard Maestro Discourse:https://forum.keyboardmaestro.com/t/can-i-create-a-structure-type-of-variable/3557/2]] -呼び出し先のシェルスクリプトでは、$KMVAR_パラメータ名でアクセスできる。 echo $KMVAR_TestParam -ただしシェルスクリプトの場合、リードオンリーで、値を返すため書き換えてもだめ(AppleScriptだといけるようだが)。 ***サンプル1 [#mfba317c] -呼び出し側。 #ref(m1.jpg) -呼び出され側。 -変数を使わない場合TriggerValueで参照できる。 #ref(m2.jpg) -結果 *Tips [#m2339ca8] **TextExpander代わりに使用する [#wba5dca9] -トリガーとしてTypedStringを利用する。 -Insert Text by Pastingで文字列を挿入する(Typeだと遅い)。 -実行後クリップボードが汚れるのが嫌な場合、Delete Past Clipboard アクションをパラメータ0で実行する **ChromeのURLやタイトルを取得する [#lb29a361] -%ChromeURL%や、%ChromeTitle%で取得可能。Insert Text by Pastingを使用すればテキスト編集エリアなどにペーストできる。 **Clipboardに文字列をコピーする [#c1ee23b0] -例えばスクリプトを実行するまえにClipboardに引数をコピーしたい場合がある。 -"Set Clipboard to Text"アクションを利用すれば良い(名前から受ける印象とことなり、システムクリップボードにテキストをセットするアクション)。%ChromeURL%といったキーワードも利用可能。 *トラブルシューティング [#wd030457] **マクロを実行するとエラー発生 [#e55f8551] -通知メッセージに表示されるがそれだけでは判別できない場合、Engine.logを確認する。[[How to "see" complete error message in Notification Centre - macro failed - Questions & Suggestions - Keyboard Maestro Discourse:https://forum.keyboardmaestro.com/t/how-to-see-complete-error-message-in-notification-centre-macro-failed/5241/4]] -Help > Open Logs Folderでフォルダを開ける。以下でも可能。 open ~/Library/Logs/Keyboard\ Maestro -"[NSConcreteFileHandle writeData:]: Broken pipe"のようなメッセージが表示されている場合、スクリプトとの連携がうまくいっていないようなのでMacを再起動するとよいかも。