• 追加された行はこの色です。
  • 削除された行はこの色です。
  • KeyBinding へ行く。

* 概要 [#l4c75cc7]

キーバインド定義XMLはキーイベントに対する処理を定義するXML文書です。特定のレイアウトや、そのレイアウトに配置された特定の部品がフォーカスされている状況に対して、キーイベント処理を定義します。

** キーバインド処理の指定方法 [#qdd8533b]

キーイベント処理はキー操作、実行タイミング、処理内容の組み合わせで指定します。

*** キー操作 [#v748a889]
キー操作を表す文字列です。"CTRL+C" のように複数のキーの組み合わせを指定可能です。

*** 実行タイミング [#x57b30c2]
"onkeydown", "onkeypress", "onkeyup" のいずれかのタイミングを指定します。デフォルトは "onkeydown" です。

*** 処理内容 [#xc253cb5]
以下のいずれかの処理を実行します。また、複数の処理を指定して順番に実行することも可能です。
+ フォーカスの移動 (前/後, 先頭/末尾)
+ フォーカスの設定
+ 部品の状態変更 (有効/無効, 表示/非表示)
+ 部品のイベント実行
+ JavaScript 関数の実行


** 導入手順 [#r10fc803]

以下の手順で、キーバインド定義XMLを導入できます。

+ 画面遷移定義XMLの設定
+ キーバインド定義XMLの作成

*** 1. 画面遷移定義XMLの設定 [#tef9b8c1]
-画面遷移定義XMLにて、loadLayoutより後にキーバインド定義XMLの読み込みを記述します。
~キーバインド定義XMLの読み込みには、loadKeyBindingタグを使用します。

***定義例 [#x10c4c9c]
#code(xml){{
<?xml version="1.0" encoding="UTF-8"?>
<transitionDef>
  <init>
    <loadLayout xmlFile="login.xml" target="divMaskat" show="true" />
    <loadJS fileName="test.js" />
    <loadKeyBinding url="login_k.xml" />
  </init>
</transitionDef>
}}

*** 2. キーバインド定義XMLの作成 [#e0d4a43e]
-キーバインド定義XMLは、キーバインド処理の設定ファイルです。
-マスカットのレイアウト単位に、キーバインド定義XMLを作成してください。
~
~以下の例では、ログインフォームのレイアウトで [Enter] キーをフォーカス遷移に使用します。ただし、フォーカスが送信ボタンにある場合は例外としてボタンの onclick イベントを実行します。

***定義例 [#b94820f6]
#code(xml){{
<?xml version="1.0" encoding="UTF-8"?>
<keybinding layout="loginLayout">
  <default>
    <bind key="Enter">
      <move-focus type="next" />
    </bind>
  </default>
  <component id="submitButton">
    <bind key="Enter">
      <maskat-event type="onclick" target="submitButton" />
    </bind>
  </component>
</keybinding>
}}

- マスカットフレームワーク 2.0 までと同様に、部品クラスで handleKeyEventメソッドをオーバーライドし、部品の種類ごとのキーイベント処理を定義することも可能です。


** 記述可能なタグ [#k4a2bb01]

- [[bind>KeyBinding/Bind]]
- [[component>KeyBinding/Component]]
- [[default>KeyBinding/Default]]
- [[disable>KeyBinding/Disable]]
- [[enable>KeyBinding/Enable]]
- [[function>KeyBinding/Function]]
- [[hide>KeyBinding/Hide]]
- [[keybinding>KeyBinding/Keybinding]]
- [[maskat-event>KeyBinding/Maskat-event]]
- [[move-focus>KeyBinding/Move-focus]]
- [[set-focus>KeyBinding/Set-focus]]
- [[show>KeyBinding/Show]]

** キーバインド定義XML における注意事項 [#r4302367]

*** IEでの制限事項 [#udfe6207]
IEでは、Altキーを押した場合、メニューバーにフォーカスが移ってしまいます。そのため、Altキーは利用しないことを推奨します。

#pre{{
例:
Alt+Aにアラートをキーバインドした場合、実際にAlt+Aで開いたアラートを閉じると、
メニューバーの「お気に入り」が開いてしまう。
}}

*** テンキーでのキーバインド [#f9202102]
テンキーでの入力ではキーバインド処理は実行されません。