概要
keypress
、keydown
、keyup
のイベントを管理できるjQueryプラグインです。大きな特徴はふたつ。
まずひとつ目は、要素単位で設定できること。通常キーボード系のイベントはinput
等の入力系要素かdocument
で発生しますが、jQuery.gpKeyは任意の要素で発生したものとして管理する事ができます。
もうひとつは、キーごとの操作をわかりやすく設定できること。例えば”Ctrl+S”を拾う場合は"^s"
という文字列と処理内容をセットにして指定します。
キーボード操作のあるウェブアプリでの利用を想定しています。
ダウンロード
基本的な使い方
要素をクリックすると反応するようになり、また要素外をクリックした場合は反応しないようになります。
var type; // "press", "down" or "up" $(elem).gpKey(type, { "a": function() { /* code for "A" */ }, "^a": function() { /* code for "Ctrl + A" */ }, "&a": function() { /* code for "Alt + A" */ }, "A": function() { /* code for "Shift + A" */ }, "^&A": function() { /* code for "Ctrl + Alt + Shift + A" */ }, ... });
デモ
デモ1 : 基本的なもの
- 領域をクリックすると、操作対象になります。
- 操作対象になっているものは、それぞれ指定のキーを押すと反応します。
- フォーカスが外れた際に表示が戻ります。
デモ2 : 箱を動かす
- 対象にした枠の中の箱を、矢印キーで移動できます。
- Shiftキーを押しながらだと、一気に移動します。
デモ3 : ウィンドウっぽいの
- Altキーと各キーで、メニューっぽいのを選択します。
- 一覧っぽいのをクリックすると項目選択します。Ctrl+クリックで複数選択になります。
- Ctrl+Aで一覧っぽいのの項目を全選択します。
- Escキーでウィンドウっぽいのを非表示にします。
リファレンス
.gpKey(type, commands)
初期化。
type
… {String} イベントタイプ。"press"
、"down"
、"up"
のいずれか。commands
… {Object} コマンドとハンドラー(実行する関数)の組み合わせ。それぞれ別項参照。
.getKey(type, commands)
コマンドの管理。
上書きで登録する。ハンドラーとしてnull
を与えると、コマンドを削除する。
type
… {String} イベントタイプ。"press"
、"down"
、"up"
のいずれか。commands
… {Object} コマンドとハンドラー(実行する関数)の組み合わせ。それぞれ別項参照。
// 初期化 $(elem).gpKey('down', { "a": fn1, "b": fn2 }) // 再設定 $(elem).gpKey('down', { "a": fn3, // 上書き "b": null, // 削除 "c": fn4 // 追加 });
.gpKey("trigger", type, command)
登録されているハンドラーを実行する。
type
… {String} イベントタイプ。"press"
、"down"
、"up"
のいずれか。command
… {String} コマンド。別項参照。
.gpKey("focus")
操作対象にする。
.gpKey("blur")
操作対象でなくす。
jQuery.gpKey.initialize()
初期処理を行う。
2度目以降は何もしない。 .gpKey()
実行時には自動的に呼ばれる。
jQuery.gpKey.ctrl()
Ctrlキーが押されていれば、true
を返す。
事前にjQuery.gpKey.initialize()
か .gpKey()
を実行しておく必要がある。
jQuery.gpKey.alt()
Altキーが押されていれば、true
を返す。
事前にjQuery.gpKey.initialize()
か .gpKey()
を実行しておく必要がある。
jQuery.gpKey.Shift()
Shiftキーが押されていれば、true
を返す。
事前にjQuery.gpKey.initialize()
か .gpKey()
を実行しておく必要がある。
コマンド
入力キー
- 英字キー
"a"
…"z"
- 数字キー
"0"
…"9"
- 仕様未確定。(
"zero"
…"nine"
にするかも。)
- ファンクションキー
"f1"
…"f12"
- 矢印キー
"left"
"up"
"right"
"down"
- 操作キー
"backspace"
"tab"
"enter"
"escape"
"space"
"delete"
装飾キーの表現
- Ctrlキーが押されている場合、
"^"
を加える。- Macのcommandキーも同一視する。
- Altキーが押されている場合、
"&"
を加える。 - Shiftキーが押されている場合、コードが大文字になる。
- 例 :
"a"
→"A"
、"enter"
→"ENTER"
- 大文字と小文字が混じるのは駄目。
- 数字キーは未対応。どうしよう……?
- 例 :
- CtrlとAltの両方の場合は、Ctrlの記号
"^"
が先。
例
操作 | コマンド |
---|---|
A | "A" |
Ctrl + A | "^a" |
Alt + A | "&a" |
Shift + A | "A" |
Ctrl + Alt + A | "^&a" |
Ctrl + Alt + Shift + A | "^&A" |
1 | "1" |
F1 | "f1" |
Shift + F2 | "F2" |
Alt + F4 | "&f4" |
Enter | "enter" |
(該当なし) | "Enter" |
Shift + Enter | "ENTER" |
Ctrl + BackSpace | "^backspace" |
ハンドラー
コマンドに応じて実行される関数。this
はDOMノードオブジェクト。以下の引数を持つ。
[event]
… {Event} イベントオブジェクト。.trigger()
で実行した場合はundefined
。
focus.gpkey
イベント
操作対象になった際に発火する。
blur.gpkey
イベント
操作対象でなくなった際に発火する。
gpkey
クラス
.gpKey()
を実行した要素に付加されるクラス。
gpkey-current
クラス
要素が操作対象になった際に付与されるクラス。操作対象でなくなった際には除去される。
その他
ライセンス
- 個人 : MIT License
- 無償で利用できます。
- 転載や改造、再配布が可能です。
- コード内に記載の著作権表示は変更できません。
- どのような問題が発生しても、一切の保証はありません。
- 商用 : 要問い合わせ
個人利用時に連絡は不要ですが、もしご連絡頂ければ、利用実績として掲載させて頂くかもしれません。
対応ブラウザー
- IE 6+
- Firefox
- Chrome
- Safari
- Opera