Apple Script でキー入力

Apple Script を勉強してます。AquaSKKアンインストーラを作って以来なので、かなりご無沙汰です。とりあえず、キー入力を生成するための Handler から作ってみました。

on emit(input_string)
	tell application "System Events"
		tell application "TextEdit" to activate
		-- キー入力を生成する
		repeat with ch in input_string
			keystroke ch
		end repeat
	end tell
end emit

-- トグル変換のテスト
emit("Katakanaq")

repeat with 変数 in 文字列 でループが作れるのはお手軽ですね。リストも同じように処理できるようです。


keystroke コマンドは文字列も受け付けるので、本当はループじゃなくても良いのですが、AquaSKK *1が処理スピードに負けてとりこぼすことがあったので、keystroke をループで呼び出し、息抜き delay を作り出してます。実際に動かして見ると「ぬらららら」という感じで、なかなか気持ち悪いです。


Ctrl-j や Ctrl-g などのコンビネーションも keystroke コマンドでカバーできます。

on send_ctrl(key)
	tell application "System Events"
		tell application "TextEdit" to activate
		keystroke key using control down
	end tell
end send_ctrl

-- Ctrl-j を生成
send_ctrl("j")

あとは、テキストエディットの中身を取得して、期待値と比較して、違ったら文句を言う、という一連の処理を Handler にまとめて、順次テストケースを適用していけば良さそうです。先が見えてきました。

そう言えば

昨日の Oz Meets Jazz で、今年の 1/13 にマイケル・ブレッカーが死去したことを知りました。ピアノトリオが大好物で吹き物系はあまり聴かない僕でも、 Wide Angles だけは持っています。なんとはなしに HMV で試聴した時、Broadband のアフリカンテイスト溢れるテーマに心沸き立つような興奮を感じ、そのままレジへと向かったのでした。御冥福をお祈りします。

*1:というか Text Service Manager かな?