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の仕様で改善されると思いますが、当面は、プラットフォーム毎に決め打ちで表示するしかないかと思います。