この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2014年5月)

2014年5月30日

Bug-org 1009388 Support DOM3 Events' virtual modifier "Accel" for getModifierState()
初回投稿日時: 2014年05月30日11時47分45秒
カテゴリ: Events Firefox Mozilla Core Mozilla32 バグ修正
SNS: (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の仕様で改善されると思いますが、当面は、プラットフォーム毎に決め打ちで表示するしかないかと思います。

関連するかもしれないエントリ

bug-org 1009388を含むエントリ