今回は、ページの拡大に使用するショートカットキーの変更について解説します。
問題となるショートカットキーは Ctrl + '+' (Mac では Cmd + '+') と定義されていますが、'+' はほんどのキーボードレイアウトでは Shift キー無しでは入力できません。
開発中だった beta 5 では、Shift キーが押されていると、Ctrl + Shift + 「Shift キーが押されていない場合の文字」というショートカットキーしか処理できませんでした。これにより、世界中に無数にある様々なキーボードレイアウトでの利用に、多くの問題がありました。今回の記事では、それらを解決するための仕様変更の内容についてもあわせて紹介します。これは、DOM の keypress イベントの仕様 (charCode
プロパティの値と Gecko 内部のハンドリング仕様) を変更したことが原因ですので、Web アプリケーション、XUL アプリケーション、拡張機能の開発者の方々には大きな影響があります。ご注意ください。
日本のユーザの方の環境と言語を考えると、以下のパターンのどれかに入ると思います。
- 日本語キーボードで、日本語版の Firefox を使う
- 日本語キーボードで、英語版の Firefox を使う
- 英語キーボードで、日本語版の Firefox を使う
- 英語キーボードで、英語版の Firefox を使う
これらの環境での、Firefox 3 でのショートカットキーの一覧を表にすると次のようになります。Macユーザの方は Ctrl キーを Cmd キーに読み替えてください。
日本語版 | 英語版 | |
---|---|---|
日本語キーボード |
|
|
英語キーボード |
|
|
日本語キーボードでは、'+' を入力するには Shift + ';'、英語キーボードでは Shift + '=' という違いがあります。
Firefox 3 では原則、Ctrl + 「文字の入力できるキーの組み合わせ」でショートカットキーが使えるようになりましたので、Ctrl + 「'+' の入力できるキーの組み合わせ」でページを拡大できる、という訳です。しかし、それだけでは以下のような表になってしまいます。
日本語キーボード | Ctrl + Shift + ';' |
---|---|
英語キーボード | Ctrl + Shift + '=' |
ですが、Shift キーが常に必要というのは不便なので、英語版 Firefox では以前から、Ctrl + '=' で利用可能なようにショートカットキーを追加で定義していました。そのため、最初の表で、日本語版、英語版共に、Ctrl と「'=' の入力できるキーの組み合わせ」で利用可能になっています。
Firefox 3 日本語版では、日本語キーボードのために追加で Ctrl + ';' も利用可能にしました。このため、最初の表のように非常に多くのキーの組み合わせで利用可能になっています。
もし、日本語版、英語版以外の Firefox 3 をご利用になる場合、日本語版とはまた別のショートカットキーの追加定義が行われている可能性があります。
Windows 版 Firefox 2 ではバグにより、Shift キー無しで利用できていたため、 Windows で Firefox 2 を利用されていた方が、Windows の 日本語版 Firefox 3 を利用される場合にのみ変更がありません。
もし、インストールしている拡張機能が、なんらかの機能のために Shift キーを押さないと入力できない文字をショートカットキーに設定していた場合、そのショートカットキーの動作に影響があるかもしれませんのでご注意ください。ご利用中の拡張機能になんらかの問題がある場合、その拡張機能の開発者の方に問い合わせていただきますように、お願いします。
それでは、 以下は Web 開発者の方のための解説です。
Firefox 3 は、beta 5 以降に keypress イベントのハンドリング仕様に関して非常に大きな変更を入れる必要があり、大規模な修正が入りました。このため、一部の Web アプリケーションで beta 5 の時には問題無かったキーハンドリングが、最終版では問題が生じている可能性があります。
具体的には、Ctrl、Alt、Meta (Win では Windows、Mac では Cmd) キーと文字を入力するキーとの組み合わせのショートカットキーを keypress イベントで charCode
プロパティ値を利用してハンドリングしている場合です。
詳しい情報は MDC の Gecko Keypress Event で説明されています。Web アプリケーションの開発者の方は「DOM keypress イベントの charCode」セクションに、XUL アプリケーションや拡張機能の開発者の方は「内部キーハンドリングのための代替 charCode」セクションに目を通していただけるよう、お願いします。
これらの問題に対する、開発者の方にとって最も簡単な解決策は、ショートカットキーや、アクセスキーの「文字」に英数字以外の記号を指定しないことです。英数字以外の文字はキーボードレイアウトによって、入力のしやすさが大きく変わるので、利用を避けることをお奨めします。