Key Manipulator を使用する¶
Key Manipulator を使用して、ユーザーがアプリケーションをナビゲートするために使用できるキーを設定します。たとえば、デフォルトのフォーカスナビゲーションキーをオーバーライドして特定のキーでノードにフォーカスを設定したり、キーを設定してポップアップタイプのウィンドウを開閉したり、フォーカスチェーン内でフォーカスを移動したりできます。
Key Manipulator トリガーを使用する¶
Key Manipulator トリガーを使用して、ユーザーがキーを押したり離したりしたときに反応します。たとえば、デフォルトでのフォーカスナビゲーションキーをオーバーライドし、特定のキーを使用してノードにフォーカスを設定したり、オーバーレイを表示または非表示にしたり、フォーカスチェーン内でフォーカスを移動させたりすることができます。デフォルトのキーボードナビゲーションキー を参照してください。
Key Manipulator には次のトリガーがあります。
Key Pressed トリガーは、ユーザーがキーボードの特定のキーを押したときに作動します。
Key Released トリガーは、ユーザーがキーボードの特定のキーを離したときに発動します。
Key Canceled トリガーは、ユーザーがキー押下ジェスチャーをキャンセルしたときに発動します。
Key Manipulator トリガーを使用するには、
Key Manipulator を追加して設定します。
特定のキーから入力を受け取りたいノードを選択します。
例えば、特定のキーを持つオーバーレイを非表示にするには、そのオーバーレイを表すノードを選択します。オーバーレイを非表示にすると、Kanzi はフォーカスを以前にフォーカスされていたユーザーインターフェース要素に移動します。フォーカスの使用 を参照してください。
Node Components Alt を押しながら右クリック Input Manipulators で、Key Manipulator を選択します。
Key Manipulator を使用して、ノードがキーからの入力に反応するように設定します。
Key Manipulator セット内で:
ノードが反応するキーに Logical Key を設定します。
例えば、ユーザーが Enter キーを押したときにオーバーレイを非表示にするには、Logical Key を Enter に設定します。
(オプション) Key Modifiers をノードが反応するようにしたい修飾キーに設定します。
例えば、ユーザーが Ctrl キーと Logical Key プロパティで設定したキーを押したときにノードが反応するように設定するには、Key Modifiers を Control に設定します。
Node Components に Key Manipulator トリガーの1つを追加します。
例えば、Node Components Alt を押しながら右クリック Triggers で、Message Trigger > Key Input > Key Pressed を選択します。
ユーザーがキーを押したときにオーバーレイを閉じるには、Key Pressed トリガーでオーバーレイを非表示にするアクションを作成します。オーバーレイを作成する を参照してください。
(オプション) Key Pressed トリガーがキー押下のリピートをどのように処理するかを設定するには、トリガー内で Is Repeat メッセージ引数の値に対するトリガー条件を定義します。Is Repeat メッセージ引数は、キー押下がユーザーがキーを押し続けたことによるリピートであるかどうかを示します。
例えば、ユーザーが同じキーを押したときにオーバーレイを開閉するように設定する場合、Key Pressed トリガーで Trigger Condition を作成し、条件に次を設定します。
A
Type of A から Message argument へ
Message Argument から Is Repeat へ
Operation から = へ
B
Type of B から Fixed へ
Fixed Value を無効にする
この条件を使用して、最初のキー押下を処理するトリガーを設定します。これにより、アプリケーションユーザーがキーを押し続けても、オーバーレイが繰り返し開閉されることはありません。
ユーザーが Key Manipulator (Enter)で設定したキーを押すと、Key Pressed トリガーがアクションを開始し、オーバーレイを閉じて、以前にフォーカスされていたユーザーインターフェース要素にフォーカスを設定します。
API でキーマニピュレーターを使用する¶
A キーの押下とリリースを処理するには:
auto keyManipulator = KeyManipulator::create(getDomain());
anyNode->addInputManipulator(keyManipulator);
keyManipulator->setKey(LogicalKey::A);
auto onKeyPressed = [](auto&)
{
// Handle the key press.
};
anyNode->addMessageHandler(KeyManipulator::KeyPressedMessage, onKeyPressed);
auto onKeyReleased = [](auto&)
{
// Handle the key release.
};
anyNode->addMessageHandler(KeyManipulator::KeyReleasedMessage, onKeyReleased);
左 Ctrl 修飾キーをキージェスチャとして処理するには:
keyManipulator->setKey(LogicalKey::LeftControl);
Shift A キーで構成されるキー ジェスチャーを処理するには:
keyManipulator->setKey(LogicalKey::A, KeyModifier::Shift);
左 Alt および左 Ctrl 修飾キーを処理するには、左 Alt キーを修飾キーとして設定します。
keyManipulator->setKey(LogicalKey::LeftControl, KeyModifier::LeftAlt);
キー押下の順序は重要です。最初にLeft Ctrl を押してからLeft Alt を押すのは、最初にLeft Alt を押してからLeft Ctrl を押すのと同じキー操作にはなりません。Left Ctrl + Left Alt のキー操作を処理するには:
keyManipulator->setKey(LogicalKey::LeftAlt, KeyModifier::LeftControl);
詳細については、KeyManipulator クラスを参照してください。