hi6tsugu.com

KeyCommandJS

簡易コマンド実装ライブラリー

ダウンロード

リファレンス

KeyCommand.set(sequence, done)

コマンドを登録。
成功時はコマンド ID (number)、失敗時は undefined を取得。

sequence: string
シーケンスをキーごとに半角スペースで区切った文字列
done: function(keyStrings: string[])
キー入力がシーケンスと完全に一致したときに実行する処理

KeyCommand.set(sequence, { done, pass, fail, exclude, listen })

コマンドを詳細に登録。
成功時はコマンド ID (number)、失敗時は undefined を取得。

sequence: string
シーケンスをキーごとに半角スペースで区切った文字列
done: function(keyStrings: string[])
キー入力がシーケンスと完全に一致したときに実行する処理
pass?: function(keyStrings: string[], index: number)
キー入力がシーケンスの先頭から一致しているときに実行する処理。省略した場合は undefined
fail?: function(keyStrings: string[], index: number)
キー入力がシーケンスの先頭から一致しなくなったときに実行する処理。省略した場合は undefined
exclude?: string
フォーカスがあるときにキー入力とシーケンスの一致を判定しない要素。CSS セレクターで記述。省略した場合は :not(html):not(body)
listen?: boolean
コマンドの状態を設定するフラグ。有効にする場合は true、無効にする場合は false。省略した場合は true

KeyCommand.clear(id)

コマンドを削除。

id: number
コマンド ID

KeyCommand.enable(id)

コマンドを有効化。

id: number
コマンド ID

KeyCommand.disable(id)

コマンドを無効化。

id: number
コマンド ID

KeyCommand.reset(id)

キー入力とシーケンスの一致状況をリセット。

id: number
コマンド ID

KeyCommand.version()

バージョン (string) を取得。

シーケンスの使用可能キー

使用例

基本
KeyCommand.set('H E L L O', function () {
  alert('Hello!');
});
キー入力とシーケンスの一致状況に応じて動作
KeyCommand.set('↑ ↑ ↓ ↓ ← → ← → B A', {
  done: function (keyStrings) {
    alert('"' + keyStrings.join(' ') + '" is KONAMI command');
  },
  pass: function (keyStrings, index) {
    console.log('keyStrings[' + index + ']: ' + keyStrings[index]);
  },
  fail: function (keyStrings, index) {
    console.log('Fail...');
  }
});
1 回だけ動作
const id1 = KeyCommand.set('O N C E', function () {
  KeyCommand.clear(id1);
  alert('ONCE command has been cleared');
});
有効化と無効化
var id2 = KeyCommand.set('M O D E', function () {
  KeyCommand.disable(id2);
  KeyCommand.enable(id3);
  console.log('MODE command = disable / ESC key = enable');
});
var id3 = KeyCommand.set('ESC', {
  done: function () {
    KeyCommand.disable(id3);
    KeyCommand.enable(id2);
    console.log('MODE command = enable / ESC key = disable');
  },
  listen: false
});
特定の要素を除外
KeyCommand.set('SPACE', {
  done: function () {
    console.log('Focus on non-submittable element');
  },
  exclude: 'button, input, keygen, object, select, textarea'
});

注意事項

更新履歴

v2.20160829

v1.20140629