Mozilla キーボード・プラン FAQ とクロスリファレンス

この FAQ とクロスリファレンスは、未使用のキーストロークを見つけたり、パターンを探したり、何が実現され何が実現されていないかを見たり、私たちの UI との整合をとったりするのに役に立つでしょう。私たちは開発者がこの仕様に従って作業することを希望します。そして、もしあなたがここにあること以外の何かを望むならば、この仕様に何が足りないかを教えてください。変更を提案する前に、私たちの現在のポリシーとその理由を明示したこの FAQ 全体を読んでください。

将来の拡張性のために、可能な限り多くのキーストロークを未使用にしておくことはよい考えだと思います。もしあなたがこの仕様書に余分なキーストロークを見つけたならば、スペースをもっと空けることができるよう連絡してください。いくつかのホットキーは、最終的にはそれを必要とする特別なユーザのために、特別なコンフィギュレーションファイルか、プレファランスに追いやることになるかもしれません。

付録: タブブラウザモード、サイドバー、リンクとフォームのナビゲーションに関する最新の設計

もくじ

クロスリファレンス

これは Mozilla のブラウザ、エディタ、メールニュース、ウィジットのすべてのグローバル・ホットキーの概要です。このドキュメントは下線付きのメニューのアクセラレータやそれに関することは扱いません。なぜなら、それらは i18n (訳注:国際化、Internationalizationの略)に含まれるからです。

変更の提案をする前に FAQ 全体を読んでください。

定義

  • キーバインディング: キーストロークとコマンドの結合を定義するひとかたまりのデータです。
  • モディファイヤ(修飾子): ほかのキーと組み合わせて使用されるキー、例えば Alt, Ctrl, Shift または Cmd (Appleキー)です。
  • ホットキー: ウィジット境界をまたがってバインディングするキーであり、カレントウィンドウでグローバルに動作することができます。
  • アクセラレータ: 現在のフォーカスにあるウィジットにより、その動作がローカルに定義されているキーです。
  • アクセルキー: ホットキーコマンドのために、そのプラットフォーム上で文字と数字キーを結合するのに使用されるモディファイヤです。
  • ショートカット: あいまいな単語であり、あらゆる種類のキーストロークコマンドの意味に取られます。この仕様書の中では使用されません。
  • アクセスキー: アクセレーターを定義するための HTML や XUL の属性です。通常、アクセスキーに対応するコマンド名の中の1文字が下線付きで表示されます。(訳注:日本語化されている場合、ファイル(F) のように表示されます。)

4つの主要なプラットフォーム

4つの主要なプラットフォームグループ毎にキーボード・コンビネーションを定義します。この仕様書は現在最初の3つのみを扱い、OS/2 には言及しません。いくつかの点で、OS/2 キーボード情報を省略するかもしれません。

  • Windows (BeOS を含む)
  • UNIX (Linux を含む)
  • Mac OS
  • OS/2 (これらのキーバインドは IBM によって設定されます)

モディファイヤキー・ポリシー

モディファイヤキーを使用する場面は何でしょうか?どのようなときに Ctrl/Shift/Alt/Cmd が使用されるのでしょうか?

"アクセル"キーはプラットフォームに一つだけ

ホットキーに関して、通常は1文字に対して1つのアクセラレータキーを用います。Mac では Cmd をデフォルトに、その他では Ctrl をデフォルトにします。関連するコマンドのために、アクセル文字の組み合わせが Shift キーとともに使用されます。XBL でキーストロークを定義する場合、modifier="accel" はそのプラットフォームにおける適切なキーにマッピングされます。

このただ1つのアクセルキーの制限にはいくつかの理由があります。第一に、Mac OS は Alt+文字の組み合わせがテキストに特殊な文字を入力するために予約されているために、アクセラレーションのためには Cmd キーのみを提供します。Mac OS のアプリケーションは Ctrl キーをコマンドのモディファイヤとして使用することは想定されていませんし、Mac ユーザはそのようなキーの組み合わせを使うよう言われると驚いてしまうものです。

UNIX システムは特別な問題、Mozilla のキーバインディングと競合するかもしれない伝統的な Emacs のキーバインディングをサポートする必要性、をもたらします。例えば、Emacs では Ctrl+A はキャレットを行の先頭に移動しますが、Mozilla では、Accel+A は「すべて選択」コマンドです。どちらが勝つべきでしょうか。4.7 (訳注:Netscape 4.7 のことか?)ではこれを Alt キーをデフォルトのアクセレータキーとすることで回避しました。しかしながら、これはデフォルトの Gnome や KDE 環境のみならず、多くの新規ユーザにとって期待に反するものでした。もし Unix システムのために第二のアクセルキーを考慮する場合、すでに Emacs のキーバインディングで使用されていないかを考慮すべきです。

最後の項目は HTML がアクセスキー属性を定義していることです、それはページの作者がウェブページのアクセラレーションキーを定義することを許します。通常それは下線付きの文字で表示されます。可能であれば、ひとつのモディファイヤキーがアクセスキーのために予約されているべきです。

このため、Windows プラットフォームで第二のアクセルキーとして Alt キーを使うことが好ましいとしても、これはこのバインディングのただ一人の受益者のためにとっておき、他の二つのプラットフォームのために、矛盾のないキーの組み合わせを見つける必要があるでしょう。今までのところ、すべてのプラットフォームで同時に動作する矛盾のないキーの組み合わせを見つけることは容易です。これはホットキーにおいて、一つの文字に対して、シフトの有無を別にして、ただ一つのモディファイヤーを仮定できることを意味します。

Mac OS では Ctrl キーの組み合わせは使わない

Mac ヒューマン・インターフェース・ガイドラインは開発者に対して Ctrl ではなく Cmd キーを使うことを要求しています。ホットキーとして Ctrl キーを使うことは多くの Mac ユーザを混乱させます。しかしながら、(キーボード定義機能が提供された場合には) Ctrl の組み合わせをユーザ定義のキーストロークとして提供することができます。

"Accel"キーを文字および数字キーと一緒に使う、ほかのキーに関しては明確なモディファイヤを定義する

この仕様書では、アクセルキーは Ctrl、Alt、Cmd キーの中で変更できるものとします。つまり、異なる文字に対して、どんなモディファイヤを使用するかを変更できます。ほかのすべてのキー(数字、ファンクションキー、ナビゲーションキー、デリートやバックスペースなどの編集キー)においては、この仕様書ではそれぞれのコマンドの組み合わせに対してどんなモディファイヤを使うかを明確に述べます。例えば、Alt+Left は常に「履歴のひとつ前のページに行く」を意味します。Ctrl との組み合わせ、これを一般的に Ctrl/Cmd (Mac) と呼びます、においては、これはこのコマンドでは Windows と UNIX では Ctrl が 使用され、Mac では Cmd が使用されることを表します。

Ctrl+Alt の組み合わせは使わない

国際キーボードにおいては、Ctrl+Alt はアクセントまたは他の特別な文字を入力するために使用されます。UK キーボードですら6通り(大文字を含めれば11通り): á, é, í, ó, ú (鋭アクセント母音)および EUR (ユーロ通貨記号 Ctrl+Alt+4)の Ctrl+Alt キーストロークを持ちます。

さらに、Ctrl+Alt+文字の組み合わせは伝統的に Windows におけるユーザアプリケーションの起動ホットキーを定義するために予約されています。これは規則として決まっているわけではありません。したがって、もし本当にキーを使うことなく起動するのであれば、おそらくこの方針は変えることができます。一貫性を保つため、またこれらを必要としていないので、現在は使用していません。

関連する機能を同じキーでグループ化する

例えば、私たちは Accel+Shift+文字を、可能であれば、Accel+文字に関係するコマンドに予約しようとします。これは、インターフェースをより洗練させ、またホットキーを覚えやすくします。

修飾された記号キーは避ける

世界中の多くのキーボードは、あなたが期待する記号をサポートしません(あるものはセミコロンでさえ持ちません)。また、二つの記号が二つのキーに割り当てられていることも仮定することはできません。例えば、コンマはピリオドとは異なるキーに割り当てられているかもしれないし、同じキーかもしれません。また、記号キーはあるキーボードではシフトキーを必要とするかもしれないし、別のキーボードでは必要としないかもしれません。よって、シフトしないキーのバインドはシフトキーが押されていると動作しないでしょうし、逆のケースもあります。そのため、ホットキーが国際化チームによって再設定される場合、あまり重要でないケースで記号との組み合わせを使用することは良いアイデアです。もしそれが機能しないとしても、失われることは多くはありません。ここに国際キーボードの配置集があります。

Emacs エディタのバインディングは常に Ctrl を使用する

Emacs バインディングは現在は UNIX プラットフォームでのみ有効です。いくつかの文字において、アクセルバインディングと ctrl(unix) バインディングが存在します。これら二つのバインディングが衝突する場合(Ctrl-A や Ctrl-H など) Emacs バインディングが有効になります。ほとんどの期間、バインディングはフォーカスに従います。つまり、フォーカスが編集エリアにある場合は編集バインディングが使用され、フォーカスがブラウザエリアにある場合はブラウザバインディングが使用されます。これに関する追加情報は以下のオープン・イシューにあります。

オープン・イシュー: デフォルトの UNIX アクセルキーは Ctrl

Netscape 4.7ではデフォルトのアクセルキーは Alt でした。Ctrl を使用しつづける利点は Gnome や KDE との一貫性です。Alt に変更する利点はより多くの Emacs キーが利用できることです。合理的な人々はこの件に同意しません。あなたがどのようにアクセスキーを変更するかは、カスタマイズ・ドキュメントを参照してください。そこには純粋な Emacs スタイルの制御を好むユーザのためにキーボード初期設定ファイルの作り方が述べられています。Akkana Peck はこの件の責任者です。もしどちらか一方が特に好きならば、mozilla-accessibility@mozilla.org にあなたの好みをメールしてください。

Macintosh キーボードの違い

Macintosh のすべてのキーボードが同じというわけではありません。例えば、古い Mac はファンクションキーを持ちませんし、新しい Mac は F1-F12 を持ち、極一部の Mac は F13-F15 を持ちます(F13-F15 は PC では通常 Print Screen, Break などのラベルがついています)。ファンクションキーが押された場合、Mac OS はユーザが定義した動作(マクロ)を使うことができます。これらの理由により、私たちはファンクションキーにだけ機能を割り当てるのを避けたいと思っています。もしその機能が重要もしくは一般的であれば、起動させる別の手段を持つべきです。

あるタイプの Mac は "insert", "end", "pageup", "del" などのキーを持ちません。バックスペースキーは "delete" とラベルされていて、アイコンによってメニューの中で表現されます。"enter" は数字キーパッドの中のキーであり、PC ユーザが "enter" と呼ぶものは "return" とラベルされています。分割された複数の "help" キーをもつものもあり、それ以外は "insert" キーの上に "help" を持ちます。"clear" キーを持つものもあります。Insert, Delete, Home, End などのキーの配置はキーボードごとに異なっているかもしれません。それはただの US 英語キーボードだけでありうるのです。言い換えれば、キーボードに対して多くを仮定しなければ、その分ユーザーを幸せにするのです。

Mac OS はキーボードによりメニューバーを移動する組み込みの機能を持っていません。Mac OS は Alt (オプション)と Alt+Shift 文字の組み合わせを、英語以外で必要とされる特殊文字の入力のために予約しています。

オープン・イシュー: OS X が横取りするキーは置き換えられるべきか?

OS X では、Cmd+M と Cmd+H はシステムによって、ウィンドウの最小化とウィンドウを隠すコマンドのために横取りされます。Mozilla と Netscape 4.7 はこれらを新規メールと履歴のために使用していました。私たちは Cmd+M は Mac OS X では Mozilla をクラッシュさせるとも聞いています。これらのコマンドは Mac では今や、そして永久に、プルダウンメニューからマウスを使うように格下げされるのでしょうか? OS X ではこれらのコマンドのために新しいキーを捜すべきでしょうか? 例外ケースとして Ctrl を使用するべきでしょうか? 私たちはこれらの問題を解決するためにキーボードコマンドを愛する熱心な Mac ユーザーを必要としています。

もう一つの重要な事実は、私たちは Accel+N の動作に関してすでにプラットフォーム UI ガイドラインに従っているということです。Windows と Mac OS の標準では Accel+N は新規ドキュメントを開いたり、アプリケーションごとに適切なウィンドウを開いたりします。例えば、Accel+N はナビゲーターでは新規ブラウザウィンドウを、コンポーザーでは新規空白ドキュメントを、メールニュースでは新規メッセージ編集を、アドレス帳では新規カードを開くべきです。もし異なるアプリケーションに直接ジャンプするキーボードコマンドが必要であれば、ユーザは Accel+数字ホットキーを使用するでしょう。

  • 変更に対する論点は、人々がすでに使っているものを変えようとしていることです。おそらく、最初からこのようにすべきでしょう。しかし、もしこれらの共通のことを足元から変えてしまったら、いったい何が起こるのでしょうか?
  • 変更に対する論点は、新規メッセージ編集のために Mac ユーザ用に後で変えてしまうような変なキーストロークを割り当てるよりは、今すぐ正しい行動を取るほうがよいということです。私たちはプラットフォーム標準に従い、Accel+N の変な使い方を取り除くべきです。

コンテンツウィンドウにおける現在および未来のタブキーの動作

現在、タブはページ内のすべてのリンクとフォーム要素をナビゲートします。

ファンクションキーに重要な機能を割り当てない

重要な機能ではファンクションキーの使用を避けてください。さもなくば Mac OS では別のキーを提供してください。それは Macintosh では一般にファンクションキーをユーザ定義動作に予約しているからです。またある種の Mac はファンクションキーをまったく持ちません。

潜在的に有害なキー

ある種のキーストロークの組み合わせは、何か別のタイプをしようとしてしばしば間違ってタイプされると報告されています。これらのキーは取り消し可能か無害な動作にのみ割り当てるべきです。

これは間違えやすいキーストロークの現在のリストです。

  • 修飾された Enter
  • 修飾されたスペース

誤ってタイプしやすいキーには即実行され、取り消しのできない、破壊的な動作を割り当てるべきではありません。例えば、もし Ctrl+Enter がメールを直ちに送信するために使用されていたならば、誰かが失礼なメールを、それを修正する機会を得る前に送信してしまうことでしょう。これを避けるために、Ctrl+Enter を「今送信しますか?」というダイアログ、それには今後同様の問い合わせを避けるためのチェックボックス付き、を表示するでしょう。

アクセスキーの衝突

ウェブページはキーボードアクセラレータを定義するためのアクセスキー属性を使うことができます。例えば、www.microsoft.com/enable では Alt+S はサイト検索を初期化します。しかしながら、Alt+S は Mozilla メニューバーの検索メニューを表示するためにも使用されています。

現在この点に関しては、私たちの解決策は Internet Explorer のやり方と同じです。もし衝突があれば、ウェブページのアクセスキーがキーを取ります。もしユーザが明示的にメインメニューに行きたければ、メニューアクセスキー(通常は Alt)をまずタイプし、次にアクセスキーに対応するキー(例えば S)をタイプするでしょう。

現在 UNIX では キー Alt はメニューアクセスとしては禁止しています。というのも、Alt+クリックが使われる場合があるからです。これを回避するために Alt キーによるメニューアクセスコードを、クリックをチェックするよう修正する必要があります。

キーボートの設定機能

現在では、あなた専用のキーボード設定を作ることが可能になっています。私たちは今なお Mozilla が特定のキーをハードコーディングしている何箇所かを修正する必要があります。例えば、TAB キーは nsEventStateManager.cpp の中でリンクとフォームの移動のためにハードコーディングされています。クロームの中で定義されているものの、.jar ファイルにパッケージされていない多くのキーがあります。私たちはこれらを簡単に修正する手段をまだ持ち合わせていません。

いくつかの点において、誰かがキーボード設定のフロントエンドを作る余地があります。現在の解決策はユーザがテキストファイルを編集することです。また、あらかじめ定義された設定ファイルを提供することが可能です(だれかボランティアはいませんか?)。例えば、誰かが Emacs, Opera または Lynx ユーザのために設定を提供できます。Opera と Lynx はブラウザ上に多くのシングルキーストロークコマンドを持っています。シングルキーバインディングはタイピングに障害をもつユーザにとっては非常にありがたいものです。それはまた制御キーを必要としないキーを使うことが要求されます。

ユーザが javascript と特定のキーを結合させることが可能です。これは、ユーザーがお気に入りの URL を特別なキーに対応させることを可能にします。私たちは、だれかが Mozilla にエンドユーザがマクロを生成する簡単な手法を作ってくれることをとくに望んでいます。

キーボード設定機能をどう使うか知りたい場合はカスタマイズのドキュメントを参照してください。

プログラマのためのサマリー

文字と数字キーの組み合わせに関して、主クロスリファレンス表には修飾子としてしばしばアクセル(accel)が出現します。XBL の中で "accel" を使う場合、ユーザがプレファレンスでそれを変更していても Mozilla は自動的に正しいキーを選択します。他のキー(ファンクション、記号など)に関しては、accel が別のキーに再割り当てされていても、それが常に使用されているキーであることを示すために、明示的に "Ctrl(Win+Unix) or Cmd(Mac)" と呼びます。このようなケースでも、わたしたちはMacに関しては Control ではなく Comand を好みます。それは Control はコンテキストメニューのために使用されているのと、ごく一部のエンドユーザプログラマが修飾キーとして使用しているからです。

明らかになった修飾キー

Mozilla XBL Windows Unix Mac
shift Shift Shift Shift
control Ctrl Ctrl Control
alt Alt Alt Option
meta
Windows Key
(無効)
Meta
Command
(Apple Key)
accel Ctrl Ctrl or Alt Command
主要なプラットフォームにおける Mozilla の修飾キーの名称

キーボードコーディング規則

  • 決してキーの名前をハードコーディングしないでください。ストリングバンドルを使ってください。これはまたローカライゼーションにおいても重要であり、例外はありません。
  • 重要な機能を非英数キー(記号、数字、ファンクションキー)だけで使えるようにしないでください。それらは、Mac や非 US キーボードでは存在しなかったりタイプしづらかったりするかもしれません。
  • 文字か数字を使った組み合わせは、XBL の中では "accel" か "shift,accel" を使ってください。
  • 他のキーの組み合わせに関して、Windows と Unix では "ctrl"、"alt"、"shift" を、Mac キーバインディングファイルでは "meta"、"alt"、"shift" を使ってください。

キーバインディングファイル

キーバインディングは Mozilla の中の多くの場所で定義されています。あなたの欲しいものは以下のリストの中、または LXR 使って見つけることができるでしょう。カスタマイズ文書を読んでください。

コンテント領域のバインディング

タスク固有のバインディング

ウィジットのバインディング

(訳注:これらのファイルは現在は存在しません。おそらくここに移動したものと思われます。)

情報へのリンク

キーボード UI メーリングリスト

一般的なキーボードに関する議論は Mozilla-Accessibility メーリングリストで行ってください。私たちは人々がキーボードプランを遵守することを望んでいます。もしこのプランと異なる Bugzilla のバグを見つけたならば、そのバグ上で、そしてメーリングリストで指摘してください。

フライデーミーティング

キーボードミーティングは毎週金曜 3 時に行われています。時には一般的なアクセスビリティについて話をします。あなたも参加することができます。もしミーティングの通知が必要であれば Aaron Leventhal - aaronleventhal@moonset.net にメールしてください。

 

Maintained by Aaron Leventhal and Sarah Liberman.