ウィンドウ上からのキー入力に応答するには、keysetとkey要素で次のように記述します。
<keyset> <key modifiers="shift" key="a" oncommand="Func()" /> </keyset>
対象とするのが印刷可能ではないキーならば、key属性ではなくkeycode属性を用います。keycode 属性
<keyset> <key keycode="VK_F1" /> </keyset>
このkeycode属性には印刷可能なキーも'VK_A'のように定義されていますが、これらをkeycode属性に指定しても機能しません。印刷可能なキーならば、それはkey属性で指定しなければなりません。また定義にない値をkeycode属性に指定すると、すべての印刷可能なキーに対して応答してしまいます。
修飾キーは、modifiers属性に下表の値を指定します。複数の修飾キーを組み合わせるには、スペースまたはカンマで区切って'control,shift'
のように並べます。
値 | 対応する修飾キー |
---|---|
control※1 | Ctrl |
shift | Shift |
alt | Alt |
accel | ユーザーの環境によって異なります。
|
割り当てたキーがすでに使用されている場合、その割り当ては無視されます。よってFirefoxのショートカットを事前に確認すべきです。
キーの割り当てを動的に行うならば、次のようにスクリプトで属性を設定します。
var key = document.createElement( 'key' ); key.setAttribute( 'modifiers', 'shift' ); key.setAttribute( 'key', 'a' ); key.setAttribute( 'oncommand', 'Func()' );
このときoncommand属性は本来、
key.addEventListener( 'command', Func, true );
のようにイベントリスナで登録すべきですが、このように記述してもリスナは呼び出されません。Creating a key element dynamically • mozillaZine Forums
ショートカットキーをブラウザ上で機能させるには、それを定義するXUL要素をブラウザにオーバーレイさせる必要があります。そのときブラウザ (chrome://browser/content/browser.xul) では、keysetのid属性が'mainKeyset'として定義されているため、オーバーレイする側でもこれと同じidを指定するか、さもなくば何も指定せずにおきます。これと異なるidを指定した場合、オーバーレイしたショートカットは機能しません。id="mainKeyset" on XUL keyset, yes or no? • mozillaZine Forums
<keyset id="mainKeyset"> <key modifiers="shift" key="a" oncommand="Func();" /> </keyset>
このブラウザで定義されているkeysetのid属性は、DOM Inspectorでchrome://browser/content/browser.xulを開き、[Find Nodes]で対象をTagとして[keyset]を検索することで確認できます。How can I see all the assigned keyboard shortcuts, including those from my installed add-ons? | Firefox Support Forum | Mozilla Support