Bug-org 1009388 Support DOM3 Events' virtual modifier "Accel" for getModifierState()
初回投稿日時: 2014年05月30日11時47分45秒
カテゴリ: Events Firefox Mozilla Core Mozilla32 バグ修正
SNS:
Tweet (list)
以前から、W3Cに提案していた、ショートカットキー用のモディファイアが押されているかどうかを確認する機能が、承認されて、草案に盛り込まれたので早速実装しました。
D3Eのキー名に、"Accel"
という、仮想モディファイアキー名が追加されています。これは、KeyboardEvent.key
に設定されていることは無い、特殊なキー名で、KeyboardEvent.getModifierState()
や、MouseEvent.getModifierState()
でのみ利用可能で、具体的には、if (event.getModifierState("Accel")) {
のように利用できます。
.getModifierState("Accel")
は、そのユーザの環境で、ショートカットキーに利用されるモディファイアキーが押されている場合にtrue
を返します。例えば、デフォルト設定のFirefoxでは、Windows版とLinux版は、Ctrlキーが押されている時、Mac版ではcommandキーが押されている時にtrue
となります。また、ui.key.accelKey
設定値と連動していますので、主にLinux版で、ユーザが224(Metaキー)や、91(Winキー)にカスタマイズしている場合、その値が返ります(Windows版やMac版でカスタマイズされていることは、ほとんど無いでしょう)。
このAPIは、アドオン開発者や、Webアプリが独自のショートカットキーを実装する場合に非常に便利に使えると思います。具体的な利用方法は、MDNで公開しているサンプルを参照してください。
しかし、Webアプリでこの機能を利用する場合にひとつだけ問題があります。それは、どのキーが"Accel"
にマッピングされるのか、知りようが無いということです。このため、ユーザに、適切にショートカットキーの一覧を表示することはできません。これは、次のレベルのDOM Eventsの仕様で改善されると思いますが、当面は、プラットフォーム毎に決め打ちで表示するしかないかと思います。