今日の他人クエストは、キーストロークを発生させる(コンピュータのキーボードを押すことを再現する)にはどうするか?でございました。しかも、MaxからAbleton Liveをコントロールしたいらしくって、セッションビューでのクリップの選択を左右上下キーで移動して、returnキーで再生・停止したいってわけです。外部コントロールが充実しているLiveですが、これはMIDIコントロールできないようです(Mackie Controlプロトコルならできるみたいだけど、面倒そう…)。
解決策:AppleScriptでSystem Eventsを使う。
LiveはAppleScript対応じゃないんですけど、これくらいならSystem Eventsでできちゃいます。例えば、Liveで右キーを押すのは次のようなスクリプトね。
tell application "Live"
activate
end tell
tell application "System Events"
key code 124
end tell
124ってのが右キーのキーコードで、keyオブジェクトなら2番目のアウトレットから出力される数値です。汎用的に使うには、アプリケーション名やキーコードを引数にして渡せるようにすればイイですね。
後は、このスクリプトをファイル保存しておいて、tap.applescriptオブジェクトかosascriptコマンド入りのaka.shellオブジェクトでMaxから呼び出せばオッケイでございます。
ちなみに、System Eventsを使うには、ユニバーサルアクセス環境設定の「補助装置を使用可能にする」をオンにしておく必要があります。また、key codeコマンドではcommandキーなどの併用も指定できるし、文字列を入力するにはkeystrokeコマンドも使えますね。このあたりは、他のアプリを操作するのに役立ちそう。
ピンバック: 2061:Maxオデッセイ