keymacro4Mac のバックアップソース(No.8)


[[AppleScript入門>AppleScript]] > 簡易キーボードマクロ for Mac OS X 

#title("簡易キーボードマクロ for Mac OS X")

#ref(https://farm3.staticflickr.com/2634/3971523437_03103a985e.jpg)

[[Photo by Doña Tecla via Flickr:https://www.flickr.com/photos/64119933@N00/3972290332]]

Javascript / AppleScriptで作成した、簡易キーボードマクロというか、人間の替わりにキー入力を再現するプログラムです。

ちょいとMacで仕事をすることになり、こういうのが必要になったんだけど、手ごろなが見つからなかったので作ってみました。

AppleScriptのスクリプトエディタでは、Javascriptも動くので、それを利用しています。

決して、多機能ではありません。

もっと良い方法があれば、ぜひ教えてください。> [[@ycatch:https://twitter.com/y_catch]]

#contents

* 用途 [#f739524f]

ブラウザの選択中のフォームに、指定した複数行のテキストを自動的に入力します。

キー入力の様子を動画キャプチャするために作成したので、1文字ずつ入力していくようになっています。

* 対象アプリ [#hea0eec7]

対象アプリを切り替えるには、browser変数に代入する値を下記に変更してください。

- Google Chrome (デフォルト)
- Safari
- Terminal

 var browser = "Google Chrome"; // Set your browser "Safari"

* スクリプトコードの配布先 [#o6a799a7]

下記から、スクリプトエディタへコピペで貼り付けしてください。

-[[Gist:https://gist.github.com/ycatch/eaef63716906d73b350a]]

* 起動する [#dd4c6953]

- ブラウザを起動して、フォームを選択しておきます。
- スクリプトエディタを立ち上げます。
- Javascriptを選択しておきます。
- 入手したスクリプトコードをスクリプトエディタに貼り付けます。
- スクリプトを実行します。

* マクロの書き方 [#o408a556]

- キー入力したい文字列は、スクリプトコードのcode_line変数に配列として記述しておきます。
- 各行はシングルクォートで囲み、行ごとにコンマで区切ります。

** サンプル [#qadd7cf3]

 var code_lines = [
 	'/* hello world */',
 	'/* |konnnitiha^| world */',
 	'print("hello world")']

スクリプトコードを実行すると、次のように入力されます。

 /* hello world */
 /* こんにちは world */
 print("hello world")

** コマンド [#b99e7a0d]

次の文字を含めておくと、各キーの入力を再現します。

- 「|」 日本語変換ON/OFF
- 日本語変換ONのとき
-- 「_」 変換する
-- 「^」 変換を確定する
-- 「$」 下向き矢印
-- 「>」 右向き矢印
--  「%」 delete
--  「\」 TAB
-- 「=」 ウェイト

** 動作について [#w50cf5b3]

入力する文字によって、通常のキーボード入力と異なる動作をする場合があります。
そんな場合は、そのキーをキーコードで入力するように、コードを修正してみてください。

また、不足しているキーがあるとか、機種によってキーコードが違うとか、なんてことがあれば、いい感じに改良してください。

** 参考:Macのキーコード [#p0223df5]

- 空白キー    49 
- 改行キー    76
- タブキー    48

- 英数キー    102
- かなキー    104

-[[Hys.LOG : Mac のキーコード 2012 (Full Keyboard):http://hyslog.com/blog/2012/06/25/569]]

* カスタマイズ [#w3c530ef]

** 文字入力のスピード [#b6733a57]

下記に秒単位で設定します。

 var key_delay = 0.08;

** 改行のスピード [#o9d667bb]

下記のdelayの数値を直接修正します。

 	delay(0.5);
 	if (j < len -1) {
 		sys.keyCode(76);	// Enterキー
 	}


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS