catch.jp blog

デジタルをわかりやすく。

2017-6-14

簡易キーボードマクロ for Mac OS X

Category: Programming   

※「catch.jp-wiki」から移動したページです。

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

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

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

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

もっと良い方法があれば、ぜひ教えてください。

用途

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

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

対象アプリ

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

  • Google Chrome (デフォルト)
  • Safari
  • Terminal
var browser = "Google Chrome"; // Set your browser "Safari"

スクリプトコードの配布先

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

起動する

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

マクロの書き方

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

サンプル

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

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

/* hello world */
/* 世界の皆さん、こんにちは */
print("hello world")

変換より、キーボードマクロの動作が早すぎる場合は、「_=^=」とウエイトを入れてください。

コマンド

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

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

Rubyのブロック変数指定で「|」を使用する場合は、コード中で別の記号(\)に置き換えてください。

動作について

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

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

参考:Macのキーコード

カスタマイズ

文字入力のスピード

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

var key_delay = 0.08;

改行のスピード

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

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