#author("2021-08-26T05:43:11+00:00","default:src128","src128")
#author("2022-07-14T05:00:27+00:00","default:src128","src128")
&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だといけるようだが)。
-標準入力を使う場合「With input from Text」を選ぶと、そこに記述した内容を1行づつ読み込むことができる。[[How to Use Execute Shell Script -- With Input From - Questions & Suggestions - Keyboard Maestro Discourse:https://forum.keyboardmaestro.com/t/how-to-use-execute-shell-script-with-input-from/13628/3]]

***マクロ間のパラメーター引き渡しサンプル1 [#mfba317c]

変数を介さず"with Parameter"で値を渡すことができる。呼び出された側ではTriggerValueで参照できる。

-呼び出し側。
#ref(m1.jpg)
-呼び出され側。
-変数を使わない場合TriggerValueで参照できる。
#ref(m2.jpg)
-結果

***マクロ間のパラメーター引き渡しサンプル2 [#x0f479ad]

2つのパラメータTestParam1、TestPram2に設定して引き渡す。

-呼び出し側。
&attachref(m3.jpg);

-呼び出され側。
&attachref(m4.jpg);

*Tips [#m2339ca8]

**設定を同期する [#ta891166]
-「File > Start Syncing Macro」で同期元、同期先どちらの設定も可能。
**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%といったキーワードも利用可能。


**メニューを利用してマクロ実行 [#m8e1e0fd]
-トリガーでGlobal Macro Palette Triggerを選ぶと常に小さなアイコンが表示され、そこからマクロを実行することができる(Global Macro Palette Triggerを設定したマクロが一覧表示される)。
-アクションでShow Palette of Macroを選ぶと、指定したグリープに含まれるマクロを表示し、それらをマウスで選択できる。パレット上のマクロは一文字ずつ文字をタイプすることで絞り込まれる。
-Show Palette of Macroで表示できないグループがあったが不具合かどうかは不明。
-macro paletteに関しては[[Frequently Asked Questions [Keyboard Maestro Wiki]:https://wiki.keyboardmaestro.com/Frequently_Asked_Questions#How_do_I_get_more_than_one_macro_palette]]も参考に。


*トラブルシューティング [#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を再起動するとよいかも。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS