KeyPressMatcher (クラス)
public final KeyPressMatcher {inherits KeyPressDescriptor, Serializable}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GUI.BASE.

通常、メニュー アクセラレータで使用される KeyPress の型を記述する具象 KeyPressDescriptor

注意事項

クロス プラットフォーム開発に関する情報も含む、利用可能な修飾子の説明は、KeyPressMatcher.default を参照してください。

ユーザーが "Ctrl+Shift+Home" を押すとメッセージがポップアップ表示される、KeyPress 用のイベント ハンドラを次に示します。


{let kpd:KeyPressDescriptor =
    {KeyPressMatcher "Ctrl+Shift+Home"}
}
{Fill
    width=3cm,
    height=2cm,
    background="blue",
    {on e:PointerPress at f:Fill do
        {f.request-key-focus}
        {e.consume}
    },
    {on FocusIn at f:Fill do
        set f.background = "green"
    },
    {on FocusOut at f:Fill do
        set f.background = "red"
    },
    {on e:KeyPress do
        {if {kpd.matches? e} then
            {popup-message "Matched key event"}
        }
    }
}

コンストラクタ
default:KeyPressMatcher を初期化します。
コンストラクタ public {KeyPressMatcher.default
value:char = 0,
shift?:bool = false,
ctrl?:bool = false,
alt?:bool = false,
menu?:bool = false,
command?:bool = false,
...:String
}

プロパティ
description:このオブジェクトによって要求されるキーと修飾子を表す文字列を返します。
アクセサ public KeyPressMatcher.description:String

メソッド
matches?:この KeyPressDescriptor が、指定された KeyPress と一致するかどうかを判断します。
public {KeyPressMatcher.matches? kp:KeyPress}:bool
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {KeyPressMatcher.default
value:char = 0,
shift?:bool = false,
ctrl?:bool = false,
alt?:bool = false,
menu?:bool = false,
command?:bool = false,
...:String
}

KeyPressMatcher を初期化します。

value: KeyPressMatcher の "value"。
shift?: KeyPressMatcher の "shift?" フラグ。
ctrl?: KeyPressMatcher の "ctrl?" フラグ。
alt?: KeyPressMatcher の "alt?" フラグ。
menu?: KeyPressMatcher の "menu?" フラグ。
command?: KeyPressMatcher の "command?" フラグ。
...: ... 引数は、空か一つの文字列となります。文字列がなければ、設定されたキーワード引数は、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+HomeA-C-xAlt+Ctrl+LeftCtrl+Az があります。 文字列全体に大文字を使用した場合は無視されます。ただし、文字列の最後のセグメント(最後に '+' または '-' 文字がある場合)、その後に続く部分文字列が 1 文字の場合は、文字の大文字と小文字が重要になるので除きます。したがって、Homehome はどちらも Home キーに対応する記述子を指定しますが、zZ は異なる記述子を指定します。つまり、一方は、小文字の z と一致し、もう一方は大文字の Z と一致します。
文字列とキーワード引数を指定する場合、文字列内の情報は、以下の意味でキーワード引数で指定された情報を置き換えます。value キーワード引数は、文字列で指定された文字で置き換えられます。他のキーワード引数で指定した属性の最終的な値は、キーワードで指定した値と文字列で指定した値の論理 OR になります。したがって、以下の KeyPressMatcher オブジェクトはすべて同じ操作を実行します。:
  1. {KeyPressMatcher "Ctrl+A"}
  2. {KeyPressMatcher "Ctrl+A", ctrl?=false}
  3. {KeyPressMatcher "Ctrl+A", ctrl?=true}
  4. {KeyPressMatcher "A", ctrl?=true}
  5. {KeyPressMatcher "A", ctrl?=true, value='B'}
キーワード引数の記述が文字列で指定した内容と一致しない場合、たとえば上記の (2) と (5) は、間違いと見なす必要があり、このAPIの今後の実装では例外をトリガする可能性があります。



プロパティ詳細
description (アクセサ)
アクセサ public KeyPressMatcher.description:String

このオブジェクトによって要求されるキーと修飾子を表す文字列を返します。

説明

この文字列は、同じ方法で作成されたオブジェクトであっても、異なるプラットフォーム上で異なる可能性があります。例えば、{KeyPressMatcher "Shift+Accel+A"} の説明は、Windows と Linux 上では、"Ctrl+Shift+A" ですが、Macintosh 上では、Command と Shift のシンボルが文字 A の前につきます。この可変性は、Accel 修飾子を使用していない時でも発生する可能性があることに注意してください。他の修飾子もシンボルによって置き換えられる可能性があるからです。
導入: バージョン 6.0





メソッド詳細
matches? (メソッド)
public {KeyPressMatcher.matches? kp:KeyPress}:bool

この KeyPressDescriptor が、指定された KeyPress と一致するかどうかを判断します。

kp: 確認する KeyPress

説明

このメソッドは、kp が KeyPressMatcher.default に指定された記述と一致する場合に true を返します。KeyPressMatcher の値と修飾フラグは、kp の対応するプロパティと比較されます。

KeyPress イベント kp と一致する、指定された KeyPressMatcher の場合は、非 shift 修飾フラグが正確に一致していなければなりません。この条件を満たす場合は、次の 3 つのケースがあります。

- KeyPressMatcher の値が文字で、KeyPressMatcher での修飾フラグが少なくとも 1 つ true である場合は、shift 修飾フラグが正確に一致する必要があり、大文字と小文字の区別なく値が一致しなければなりません。

- KeyPressMatcher の値が文字で、KeyPressMatcher での修飾フラグがまったく true でない場合は、値が正確に一致しなければなりません。

- その他の場合には、値が正確に一致しなければならず、kp.shift? が "有効" な場合 (KeyPress.shifty? の箇所で説明したように、kp.shifty? が true の場合) は、KeyPressMatcher のシフト修飾子が kp.shift? と一致しなければなりません。