...: ... 引数は、空か一つの文字列となります。文字列がなければ、設定されたキーワード引数は、KeyPress イベントが一致させるために持っているプロパティを規定します。
文字列引数を指定する場合、その引数には、一連の修飾記述子や最終的な値記述子を
KeyPressValue.char-for-name で認識される該当文字の名前を使用して含めることができます。全ての要素は、
+ や
- で区切られる必要があります。次のテーブルは利用可能なキーの修飾子を示しています。
accel 修飾子は、複数プラットフォームのユーザーが慣れているインターフェイスを表示することを保証するのに便利です。; しかし、異なるプラットフォームでは異なるキーが予約されている可能性を覚えておかなければなりません。たとえば、Macintosh では、Command+Q が "アプリケーションを終了" メニュー コマンドに予約されていますが、他のプラットフォームでは Ctrl+Q を利用できます。
この理由から、異なるシステム用に代替のマッピングを設定しておく必要があります。(
platform-switch で認識できる)プラットフォーム名を含む四角いブラケットを使用してこの設定を行います。 たとえば、次の記述によって、Macintosh で Command+U、Windows で Ctrl+Q、他の全てのプラットフォームで Ctrl+W となります。:
Ctrl+w[mac:Command+u][win32:Ctrl+q]
他の正規の記述には、Shift+Home 、A-C-x 、Alt+Ctrl+Left 、Ctrl+A 、z があります。 文字列全体に大文字を使用した場合は無視されます。ただし、文字列の最後のセグメント(最後に '+' または '-' 文字がある場合)、その後に続く部分文字列が 1 文字の場合は、文字の大文字と小文字が重要になるので除きます。したがって、Home と home はどちらも Home キーに対応する記述子を指定しますが、z と Z は異なる記述子を指定します。つまり、一方は、小文字の z と一致し、もう一方は大文字の Z と一致します。
文字列とキーワード引数を指定する場合、文字列内の情報は、以下の意味でキーワード引数で指定された情報を置き換えます。
value キーワード引数は、文字列で指定された文字で置き換えられます。他のキーワード引数で指定した属性の最終的な値は、キーワードで指定した値と文字列で指定した値の論理 OR になります。したがって、以下の KeyPressMatcher オブジェクトはすべて同じ操作を実行します。:
- {KeyPressMatcher "Ctrl+A"}
- {KeyPressMatcher "Ctrl+A", ctrl?=false}
- {KeyPressMatcher "Ctrl+A", ctrl?=true}
- {KeyPressMatcher "A", ctrl?=true}
- {KeyPressMatcher "A", ctrl?=true, value='B'}
キーワード引数の記述が文字列で指定した内容と一致しない場合、たとえば上記の (2) と (5) は、間違いと見なす必要があり、このAPIの今後の実装では例外をトリガする可能性があります。