キー送信の構文#
まずショートカットから#
キーを送るに ^c を貼り付けると Windows で Ctrl+C を、#c を貼り付けると Mac で Command+C を送ります。記録をクリックして組み合わせを押し、完了をクリックしても構いません。Lua は ms.keys(sequence) で同じ構文を使います。
文字は通常、US キーボードの位置のキーを表します。abc は A、B、C を順に押します。大文字の ABC でも Shift は付きません。Shift+A には +a を使います。Unicode や固定テキストはテキストとエスケープとクリップボードの使用例を参照してください。
修飾キーとグループ#
| プレフィックス | Windows | Mac |
|---|---|---|
^ | Ctrl | Control ⌃ |
% | Alt | Option ⌥ |
+ | Shift | Shift ⇧ |
# | Win | Command ⌘ |
プレフィックスは、次のキーか括弧のグループに適用されます。^+t は Ctrl+Shift+T を送ります。^(ac) は Ctrl を A と C の両方に適用します。^ac は Ctrl を A だけに適用します。グループは入れ子にでき、括弧は対応させてください。グループの修飾キーは各キー動作に個別に付くため、キーの間も修飾キーが押され続けると期待しないでください。末尾に単独の修飾プレフィックスだけではキー押下になりません。修飾キー自体を送る必要があるときは、たとえば {CTRL} を使ってください。
Lua の ms.is_keys_pressed は、両プラットフォームで照会時点の全キーと修飾キーの和集合を確認します。^ac は Control、A、C が同時に押されていることを要求します。プレフィックスはどちらかの側で満たされ、明示的な {LCTRL}/{RCTRL} は側を保持します。繰り返しは無視され、SLEEP・テキスト・マウス・ホイールのステップがあると false を返します。過去に押したキーの並びは認識しません。
キー名、繰り返し、待機#
Enter には {ENTER} を使います。キー名の大文字小文字は区別されません。{LEFT 3} は Left を 3 回押します。正の回数はキーを繰り返し、0 以下の回数は 1 回にフォールバックします。{SLEEP 100} は 100 ms 待ちます。0 以上の整数が必要です。キー名と引数の間はスペースで区切ります。
例:Windows の ^c{SLEEP 100}^v はコピーし、少し待ってから貼り付けます。Mac では #c{SLEEP 100}#v です。
次の表は、パーサーが受け付けるキー名(別名と番号付きの F キー・テンキーの全キーを含む)を列挙します。ASCII の 1 文字(対応する US 句読点を含む)も波括弧の中に書けます。たとえば {a} や {+} です。
| キー名 | 意味 |
|---|---|
{ENTER}, {RETURN} | Enter |
{ESC} | Escape |
{TAB} | Tab |
{BACKSPACE} | Backspace |
{SPACE} | Space |
{CAPSLOCK} | Caps Lock |
{INSERT}, {INS} | Insert(Windows 専用) |
{DELETE}, {DEL} | Delete/前方削除 |
{HOME}, {END} | Home/End |
{PGUP}, {PGDN} | Page Up/Page Down |
{UP}, {DOWN}, {LEFT}, {RIGHT} | 方向キー |
{PRTSC} | Print Screen(Windows 専用) |
{BREAK} | Break(Windows 専用) |
{MEDIA_NEXT}, {MEDIA_PREV}, {MEDIA_STOP}, {MEDIA_PLAY}, {MEDIA_PLAY_PAUSE} | メディアキー(キー列では Windows 専用) |
{VOLUME_MUTE}, {VOLUME_DOWN}, {VOLUME_UP} | 音量キー(キー列では Windows 専用) |
{CTRL}, {ALT}, {SHIFT} | Control/Alt(Mac では Option)/Shift |
{LCTRL}, {RCTRL}, {LSHIFT}, {RSHIFT}, {LALT}, {RALT} | 左右の修飾キー。Alt は Mac では Option |
{LWIN}, {WIN}, {RWIN} | Windows キー。Mac では Command |
{F1}, {F2}, {F3}, {F4}, {F5}, {F6}, {F7}, {F8}, {F9}, {F10}, {F11}, {F12}, {F13}, {F14}, {F15}, {F16}, {F17}, {F18}, {F19}, {F20}, {F21}, {F22}, {F23}, {F24} | ファンクションキー。Mac は F1~F20 に対応 |
{N0}, {N1}, {N2}, {N3}, {N4}, {N5}, {N6}, {N7}, {N8}, {N9} | テンキーの数字 0~9 |
{MOUSE_LEFT}, {MOUSE_RIGHT}, {MOUSE_MIDDLE}, {MOUSE_X1}, {MOUSE_X2} | マウスクリック(Windows 専用) |
{MOUSE_WHEEL}, {MOUSE_HWHEEL} | ホイール。例:{MOUSE_WHEEL 120}、{MOUSE_HWHEEL -120}(Windows 専用) |
{SLEEP} | 待機。例:{SLEEP 100}、ミリ秒 |
マウスボタンとホイール#
Windows は {MOUSE_LEFT}、{MOUSE_RIGHT}、{MOUSE_MIDDLE}、{MOUSE_X1}、{MOUSE_X2} をクリックとしてサポートします。{MOUSE_LEFT 2} は 2 回クリックします。ポインターは移動しません。
{MOUSE_WHEEL 120} は 1 目盛り上へスクロールし、-120 は下へスクロールします。{MOUSE_HWHEEL 120} は右へ、-120 は左へスクロールします。引数は繰り返し回数ではなく、符号付きのホイール差分です。これは注入入力の慣例で、録画されたジェスチャーのホイールステップとは符号が異なります。
Mac はこれらのトークンを解析しますが、入力の実行時にマウスとホイールの動作をスキップします。ms.keys で Mac のクリックやスクロールを合成することはできません。
テキストとエスケープ#
テキスト優先モードは Lua の ms.keys(s, true) だけで使えます。キーを送るエディターは常にキーモードです。通常の文字は Unicode テキストになりますが、^、%、+、#、括弧、開き波括弧は引き続き構文として解釈されます。波括弧の中の 1 文字は、テキスト優先モードでもキー動作のままです。
テキスト優先モードの中でショートカットを送るには、キーを波括弧で囲みます。^{c} は Ctrl+C を、#{c} は Command+C を送ります。このモードで波括弧なしの ^c はテキストの c を出力し、修飾キーを破棄します。通常のキーモードで ms.keys("^c") を別に呼ぶこともできます。
| 文字 | キー列での書き方 |
|---|---|
^ | {^} |
% | {%} |
+ | {+} |
# | {#} |
( | {(} |
) | {)} |
{ | {{} |
} | }(波括弧なし) |
バックスラッシュはキー列のエスケープ文字ではありません。引用符付きの Lua 文字列では 1 つのバックスラッシュに "\\" と書くか、長括弧文字列を使ってください。構文記号を含む任意のテキストには、クリップボードの方法で両方のエスケープを避けられます。
よく使うショートカット#
これらは、操作先のアプリケーションとオペレーティングシステムのショートカット設定に依存します。
| 目的 | Windows のキー列 | Mac のキー列 |
|---|---|---|
| コピー | ^c | #c |
| 貼り付け | ^v | #v |
| 切り取り | ^x | #x |
| すべて選択 | ^a | #a |
| 元に戻す | ^z | #z |
| 新しいタブ | ^t | #t |
| タブを閉じる | ^w | #w |
| 閉じたタブを開き直す | ^+t | #+t |
| 次のタブ | ^{TAB} | ^{TAB} |
| 前のタブ | ^+{TAB} | ^+{TAB} |
| アプリの切り替え | %{TAB} | #{TAB} |
| 前後のデスクトップ | #^{LEFT} / #^{RIGHT} | ^{LEFT} / ^{RIGHT} |
| 領域のスクリーンショット | #+s | #+4 |
| デスクトップの表示 | #d | {F11} |
| タスク マネージャー/アクティビティモニタ | ^+{ESC} | アプリを開くで com.apple.ActivityMonitor |
| 画面のロック | #l | ^#q |
Ctrl+Alt+Del を送れない理由#
Ctrl+Alt+Del は Windows の Secure Attention Sequence です。Windows はこのシーケンスに対する通常の合成入力を無視するため、^%{DEL} ではセキュリティ画面を開けません。タスク マネージャーには ^+{ESC} を、ロックには #l を使ってください。サインアウトには shutdown /l を含むコマンドを実行の動作を使います(セッションが終了します)。
制限とプラットフォームの注意点#
共有パーサーには、文字列長や繰り返し回数の全体的な上限はありません。繰り返し回数と待機時間は符号なし 32 ビット、ホイール差分は符号付き 32 ビットで保存されます。範囲外の値は変換時に折り返すことがあるため、実際的な小さい値を使ってください。不正なキー名や必須引数の不足はパースエラーになり、エディターは入力中に検証します。
Windows はワーカースレッドでシーケンスを実行し、{SLEEP ms} のあいだスリープします。Mac はタイマー駆動のバッチで入力を送ります。Mac では 16,384 バイトを超える動作文字列が拒否されます。解析済みの Lua 入力では、上限は 16,384 動作と、テキスト動作ごとに 16,384 バイトです。待機キューは 64 項目まで保持し、超過した入力は破棄されてログに記録されます。
Mac では F1~F20、テンキーの数字、マッピングされたナビゲーションキーが使えます。Insert/INS、PRTSC、BREAK、F21~F24、メディア/音量トークン、マウス/ホイールトークンは非対応でスキップされます。メディアと音量にはメディアとシステムを使ってください。ms.keys_down と ms.keys_up は Windows 専用です。Lua APIを参照してください。