アクティブなキーボード制御を必要とする少なくとも2つのプロジェクトを念頭に置いています。 したがって、私は座ってjQueryの便利で美しいプラグインを作成しました。これはLGPLの無料ライセンスの下で公開されています。
最初は、jQueryをほとんど使用せずに作成しましたが、開発のほぼ終わりに、すべてをプラグインとして書き直しました。 実際、私はプロジェクトでこのフレームワークを積極的に使用しているため、より便利です。 jQueryを使用せずに作業する人のために、以前の作業を残しましたが、提出する必要があります。 誰かがそれを美しくすれば、誰もが彼に感謝すると思う。
これは私の最初のjQueryプラグインなので、健全な批判を歓迎します。 おそらく私は何か間違ったことを書いた-パッチの形での修正は受け入れられます。
例
$( document )
. keyboard ( '5' , function () {
alert ( '5' );
})
. keyboard ([ 'ctrl' , 'alt' ], function () {
alert ( 'ctrl alt' );
})
. keyboard ([ 'x' , 'c' , 'v' ], function () {
alert ( 'just xcv' );
}, true /* If only this keys are active */ );
$( 'textarea' ). keyboard ( 'ctrl enter' , sendmsg );
//
$( document ). keyboard ( 'ctrl alt' );
私の意見では、すべてが非常にシンプルで明白です。
3番目のパラメーターはブール値-単一です。 1(true)が送信された場合、必要なキー以外のキーが押されたかどうかを確認するためのチェックが行われます。 たとえば、「ctrl-enter」が選択されています。 ユーザーが「ctrl-alt-enter」をつまむ。 このパラメーターがない場合、アクションが実行されます;パラメーターがtrueの場合、アクションは実行されません。
渡されたパラメーターまたは配列要素のタイプが数値である場合(数値を含むストリングではない場合)、event.keyCodeと見なされます。
エントリ「['key1'、 'key2']」および「 'key1 key2'」は同等です
未解決の問題
1.ユーザーが押されたキー(たとえば、「シフト」)を保持している場合、他のキーが押されると、このキーでハングアップするアクション(この場合は「シフト」)が実行されます。 これは3番目のパラメーターをtrueに設定することによりますが、より美しいソリューションを考え出す必要があります。
参照資料
Googleコードプロジェクト
デモ次のバージョンの議論
アーカイブのソースには、jQueryを使用しない私の成果があります