来週の初VJでは、ちいさなワイヤレスキーボード(文字入力の方)をつかって、Max/MSP Jitterのプログラムを操作しようと思っています。ライブのときは、少なからず緊張したり焦ったりするので、普段はしないミスをしてしまうことがありますね。そんなパニックを避ける為に、できることはなるべくプログラムで書いておきたいと思います。
Maxで、キーの入力を受け取るには、HIDかkeyオブジェクトを用いますが、今回はバックグラウンドでの処理を必要としないので、keyオブジェクトを使っています。しかし、Macのキーボードが日本語入力モードになっていると、キーの入力を受け付けてくれません(SuperColliderでは受け付けてくれます、さすが!)。そこで、Maxパッチの起動時に強制的に英字入力モードに切り替わるようにしました。
手法としては、英字入力にしてくれるショートカットキー「control + shift + ; 」を押せばよいので、そのようなシステムスクリプトを書き、それをaka.shellエクスターナルオブジェクトを用いて呼び出せば完了。あぁ、AppleScript、大好きです。愛してます。他にもっと簡単な方法があるような気もしますが、もしあれば教えてください。では、素敵な週末を。
スクリプトは次の通り。
// ————————-
-- システム環境設定の「ユニバーサルアクセス」の「補助装置にアクセスできるようにする」にチェックをいれオンにしておく。
tell application "System Events"
-- tell application process "Finder"
tell process "Finder"
delay 0.1
-- press control + shift + ; to switch to English key
-- keystroke (ASCII character 41) when i need to use only keystroke
key down control
key down shift
key code 41
key up shift
key up control
end tell
end tell
// ————————-
Maxパッチは、次の通り。aka.shellは、ここにあります。osaコマンドを使えばAppleScript(システムスクリプト)をshellで使うことができます。 http://www.iamas.ac.jp/~aka/max/#aka_shell

ちなみにSCのキー入力は、こんな感じviewを使います。これも他に新しいやりかたがあるのかな…
(
w = SCWindow.new;
c = SCSlider(w,Rect(0,0,100,30));
c.keyDownAction = { arg view,char,modifiers,unicode,keycode;
[char, modifiers, unicode, keycode].postln;
};
w.front;
)
Posted: 10月 1st, 2011 under 日記?.
Comments: none