Iroha.KeyEquiv

概要

キーボード操作による処理呼び出しを簡単に行うための機構を提供します。

動作確認ブラウザ

(fixme)

実装ファイル配置

(fixme)

HTML への組み込み

(fixme)

AutoSetup

(fixme)

動作例

Shift キーを押しながら A キーを押してみてください。

キーコンビネーション指示子

概要

Shift キーを押しながら A キーを押す」というようなキーコンビネーションの表記法。あるいはこの表記法を用いた文字列のこと。

この表記法は、同時に押すキーの組み合わせを記述するものであり、 「Q , W , E , R , T , Y の順でキーを押していく」というような事は記述できません。そもそも Iroha.KeyEquiv 自体、そのような逐次キー押下を取り扱う実装が(現時点では)ありません。

記述例

キーコンビネーション指示子中のそれぞれの文字(キー表現記号)は、それぞれが任意のキーに対応します。

正規化

Iroha.KeyEquiv は、与えられたキーコンビネーション指示子を以下のルールで正規化し、取り扱っています。

  1. キーコンビネーション指示子中の重複する文字をひとつに集約
  2. キーコンビネーション指示子中の文字をソート

キー表現記号

キーコンビネーション指示子中で使える文字(キー表現記号)は、以下の 4 種類に大別されます。

アルファベットキー
キー表現記号キー(Event.keyCode)
AA65
BB66
CC67
:::
ZZ90

大文字小文字の区別はありません。

半角数字キー
キー表現記号キー(Event.keyCode)
0048
1149
2250
:::
9957

通常の数字キーと、テンキーパッド部の数字キーの区別はありません。

特殊キー
キー表現記号キー(Event.keyCode)
|Tab9
#Enter13
!Esc27
<37
{38
>39
}40
修飾キー
キー表現記号キー(Event.keyCode)
$Shift16
%Ctrl17
~Alt , Option18
&Windows , Command(ブラウザ毎に異なる)

注意事項

ブラウザ個別の制限事項

WinIE

Windowsキー の押下を判別することはできません。

MacIE

Command キーの押下を判別することはできません。

Ctrl キーの押下判別(の反応)が鈍く、さらに、単独で押下された時しか判別できません。( MacIE の GUI に由来する制限)

Gecko 系

Windows キー (Windows) 、 Command キー (Mac) の押下を判別することはできません。

Safari

修飾キーのみの押下を判別することはできません。つまり、修飾キー以外のキーとの組みあわせた時しか判別できません。

Opera

修飾キーのみの押下を判別することはできません。つまり、修飾キー以外のキーとの組みあわせた時しか判別できません。

Shift キー以外の修飾キーは、他ブラウザと比較しても珍妙な取り扱いがされてしまっており、 Iroha.KeyEquiv はそれを吸収しきれません。使用しないほうが良いでしょう。

(fixme) 2009年6月現在、この項の内容は古くなっています。現在は状況が変わっている可能性が大きいです。

コンストラクタ・メソッド解説

Iroha.KeyEquiv(コンストラクタ)

クラスメソッド

Iroha.KeyEquiv.create(node)
引数名説明任意性
nodejQuery|Element|String基底要素ノード(キーイベントを拾う要素)。またはそれを見つけるためのセレクタ文字列。無指定時は document.documentElement が与えられたものとみなす。任意

与えた要素ノードを基底要素ノードとする新規インスタンスを返す。ただしその要素ノードから作られた既存インスタンスがすでにあるなら、それを返す。

返値: Iroha.KeyEquiv インスタンス

Iroha.KeyEquiv.getKeyAlias(keyCode)
引数名説明任意性
keyCodeNumber特殊キーのキーコード必須

特殊キーの別名記号をキーコード指定により得る。該当するものがなければ空文字列 "" が返る。

返値: String インスタンス

インスタンスメソッド

Iroha.KeyEquiv#addKey(keys, func, aThisObject)
引数名説明任意性
keysStringキーコンビネーション指示子必須
funcIroha.KeyEquiv.callbackkeys に指定したキーコンビネーションが押されたときに呼び出される(コールバックされる)関数・メソッド必須
aThisObjectObjectfunc 中で "this" キーワードが使用されている場合に、それが指し示すもの(オブジェクト)。
無指定時、 "this""window" を指し示すことになります。
任意

何らかの処理と、それを呼び出すためのキー操作(キーコンビネーション)の対応付けを行います。

返値: String正規化済みのキーコンビネーション指示子)

Iroha.KeyEquiv.fireKey(keys)
引数名説明任意性
keysStringキーコンビネーション指示子必須

任意のキーコンビネーションに対応付けられている処理の呼び出しを、実際のキーボード操作無しに行います。

返値:なし

Iroha.KeyEquiv.getKeyName(keys)
引数名説明任意性
keysStringキーコンビネーション指示子必須

キーコンビネーション指示子を与えると、それを人間にとって読みやすい形式へ変換したものが返ります。

たとえば Iroha.KeyEquiv.getKeyName("$%A") とすると、["Shift", "Ctrl", "A"] が得られます。

返値: Array(人間にとって読みやすい形式のキー表記文字列からなる配列)

Iroha.KeyEquiv.callback(Fuction)

Iroha.KeyEquiv.addKeyEquiv() の引数 func に与える関数・メソッド(高階関数)のこと。実際は、引数 func には既存の関数オブジェクトを直接与えることになるので、これをどうこうして使う事は無い。単に(コールバックされた際に与えられる引数の)説明をするためだけの存在。

Iroha.KeyEquiv.callback(e, keys, keyNames)
引数名説明
eEventDOM Event オブジェクト
ただし Iroha.KeyEquiv.fireKey() によってコールバックされた時は {} です。
keysString正規化済みのキーコンビネーション指示子
keyNamesArray人間にとって読みやすい形式のキー表記文字列からなる配列
written by Koji Kasugai (kojika@necomesi.jp) 2012-11-26