キーボード ユーザー インターフェイス設計のガイドライン
Microsoft Corporation
April 2002
日本語版最終更新日 2002 年 7 月 31 日
適用対象
Microsoft® Win32® アプリケーション
Microsoft Active Accessibility®
要約 : Microsoft Windows アプリケーションのキーボード ユーザー インターフェイス (UI) を設計するためのガイドラインについて解説します。
目次
概要
アクセシビリティにおけるキーボード UI の役割
キーボード UI 設計の基本
キーボード UI を設計する
入力フォーカスの場所
キーボード UI の Windows システム パラメータ
その他のリソース
Windows のショートカット キー
概要
ここでは、Microsoft Windows® アプリケーション向けのキーボード ユーザー インターフェイス (UI) を設計するためのガイドラインについて解説します。キーボード UI を使用すると、キーボードのみを使って、またはキーボードとマウス (あるいはその他のポインティング デバイス) の組み合わせを使ってアプリケーションをナビゲートし、UI 要素を操作することができます。このガイドラインでは、障害のあるユーザーに対して高いアクセシビリティを提供するキーボード UI を設計するための概要を説明します。
アクセシビリティにおけるキーボード UI の役割
適切に設計されたキーボード UI は、ソフトウェア アクセシビリティに重要な意味を持ちます。キーボード UI を使えば、視覚に障害のあるユーザーや身体に障害のあるユーザーもアプリケーションを操作し、その機能を使用することができます。マウスを操作することが困難なユーザーは、キーボード拡張ツール、スクリーン キーボード (ソフト キーボード)、画面表示拡大機能、スクリーン リーダー (音声化ユーティリティ)、および音声入力ユーティリティなどの支援技術を必要とする場合があります。これらのテクノロジはすべてアプリケーションのキーボード UI に依存します。
多くの支援技術では、ユーザーが標準のキーボード入力デバイスを使用しない場合でも、キーボード UI をプログラム内部で使用します。支援技術には、操作を容易にすることを目的としたユーザー設定のキーボード ショートカットを備えたものもありますが、ユーザーの混乱を防ぐために、支援技術およびアクセシビリティのすべての点を考慮したキーボード UI 設計における整合性と標準化を図ることが重要です。
Windows の UI は、入力操作の柔軟性を最大限に高めることを目的に設計されています。コントロール パネルの [ユーザー補助のオプション] では、固定キー機能、フィルタ キー機能、切り替えキー機能、およびマウス キー機能などのキーボード機能拡張ツールが提供されています。ユーザーは、これらのツールを使ってキーボードでアプリケーションを操作することができます。しかし、これらのキーボード機能拡張ツールは、適切に設計されたキーボード UI によるアクセシビリティに取って代わるものではありません。
キーボード UI 設計の基本
適切に設計されたアプリケーションには 2 つの基本条件があります。
- キーボードが唯一の入力デバイスである場合も使用可能なアプリケーションであること。
- 機能的でユーザー フレンドリであること。
以下のセクションでは、実際にキーボード UI を設計する前に確認しておくべき項目について説明します。
キーボード UI 設計のルール
効果的なキーボード UI を設計するには、以下の設計ルールに従います。
- すべての機能をキーボードから使用できるようにし、キーボード インターフェイスを文書化する。
マウスを使って実行できるタスクをキーボードからでも実行できるようにすることが推奨されます。また、キーボード UI を製品マニュアルおよびオンライン ヘルプで文書化します。入力フォーカスの場所 (UI の中で入力対象となっている位置) が視覚的に明確であることに加えて、プログラミングの面でも提供されていることを確認します。
詳細については、「入力フォーカスの場所」を参照してください。
- キーボード ナビゲーションをすばやく簡単に実行できるようにする。
シンプルなキーボード ナビゲーション メソッドを提供します。キーボード ナビゲーション メソッドは、マウスによるナビゲーション メソッドと同様に簡単である必要があります。一般的なタスクや繰り返し実行されるタスクには、プログラミングおよびカスタマイズが可能なショートカット メソッドを提供します。マウスなしでアプリケーションのキーボード UI 設計をテストし、操作が簡単であることを確認します。
詳細については、「キーボード UI を設計する」を参照してください。
- ユーザーが予期しないキーボード UI の変更を避ける。
あるタスクを実行するために必要なキーストロークがアプリケーションの状態に応じて変更するようなことは避けます。たとえば、コマンドのアクセス キー (下線が付いたホット キー) は、選択やモデルの状態に関係なく常に同一である必要があります。
- 整合性のあるキーボード ナビゲーション モデルを提供する。
アプリケーションに標準のキーボード ナビゲーション モデルとの整合性を持たせ、システムの問題を防ぎます。入力フォーカスが不意に移動しないようにします。
詳細については、「標準のキーボード ナビゲーションへの準拠」を参照してください。
- 整合性のあるキーボード ショートカットを提供する。
複数のアプリケーション間でキーボード UI が統一されていれば、新しいアプリケーションの操作方法を学習する時間が短縮されます。アプリケーションが、[スタート] メニューを開く Windows ロゴ キー (
) に代表されるようなシステム全体のショートカット キー (コマンド実行に使用するキーまたはキーの組み合わせ) に影響を与えるようなことは避けるべきです。また、一般的に広く使用されているショートカット キーの割り当て (コピー操作を行う Ctrl + C や行った処理を元に戻す Ctrl + Z など) に従う必要があります。
ただし、このことは、すべてのショートカット キーを標準化したり、常に同じショートカット キーをサポートしたりする必要があるということを意味するものではありません。たとえば、すべてのアプリケーションにおいて、印刷を実行する一般的な Ctrl + P キーの組み合わせがサポートされている必要はありません。
詳細については、「ショートカット キーの割り当て」および「Windows のショートカット キー」を参照してください。
- 複数キーの同時入力を避ける。
補助キーである Shift、Ctrl、Alt、および Windows ロゴ キーを除き、ユーザーがアプリケーションで複数のキーを同時に押す必要のある操作を避けます。Windows オペレーティング システムの固定キー機能を使えば、ユーザーはキーを 1 つずつ順番に押すことによって擬似的に複数のキーの組み合わせによる入力を行うことができます。
ラップトップ コンピュータにある Fn キーなどの OEM 固有の機能キーは補助キーとしてサポートされません。
- Windows でサポートされているユーザー補助のオプションやエミュレートされた入力デバイスとの競合を避ける。
アプリケーションが、Windows でサポートされている固定キー機能、フィルタ キー機能、切り替えキー機能、およびマウス キー機能などのキーボードおよびマウスのユーザー補助機能と競合することを避けます。エミュレートされた入力デバイスからの入力は、標準デバイスからの入力と同じである必要があります。アプリケーションは、キーボードまたはマウスをエミュレートするデバイス (スクリーン キーボードやシリアルキー デバイスなど) からの入力を処理できる必要があります。
詳細については、「GetAsyncKeyState」(英語) および「キーのステータスの取得」を参照してください。
キーボード UI 設計の一般的な問題および制限
アプリケーションの機能は、すべてキーボードから実行できることが理想的です。しかし、理想と現実が常に同じであるわけではありません。キーボード操作によっては、複雑で厄介なステップをユーザーに強要することになる場合もあります。また、キーボードから機能を実行できるようにするには、プログラミングの面で困難な場合もあります。
キーボード UI 作成に関する問題点と課題を以下にまとめます。
- ダイアログ ボックスでのナビゲーション順序の不整合
ナビゲーションの順序は論理的で、使用言語の方向に沿っていることが必要です。既存のダイアログ ボックスに新しいコントロールを追加すると、順序の論理性が乱れる場合があります。コントロールのグループでは、各コントロールの間のナビゲーションが系統的に順序立っている必要があります。
- 各オプション ボタンにおける入力フォーカスの停止
選択した項目のみに入力がフォーカスされている必要があります。また、ユーザーが矢印キーを使用して他のオプションを選択できる必要があります。
- ペインとビューの間のナビゲーションの不整合または欠落
ペインとビューは、1 つのウィンドウを分割して複数の種類の情報を表示するために使用します。ペインとビューの間のナビゲーションは論理的で、キーボード ユーザーが利用できる必要があります。
- カスタム ツリー コントロールでのナビゲーションの不整合
ツリー コントロールは Windows のナビゲーション モデルであり、キーボード モデルは一般的にコモン コントロール ライブラリから使用することができます。カスタム ツリー コントロールは論理的で、標準のナビゲーション モデルに沿っていることが必要です。
- 適切に設計されていないカスタム コントロール
異なるコントロールを組み合わせて作成した新しいコントロールに、既存のコントロールに似た外観と操作性を設定することが容易な場合もあります。入力フォーカスはユーザーに対して視覚的に明確にし、開発者に対してはプログラム内部で明確にしておくことが必要です。コントロールを開発する際は、Microsoft Active Accessibility Dynamic Annotation API を使用してください。
- キーボード UI の競合
標準キーと補助キーを組み合わせることにより、さまざまな形でショートカット キーを割り当てることができます。しかし、これは、多くの支援技術に見られるように、専用機能にグローバル キー シーケンスを使用するアプリケーションと競合する原因となることもあります。競合を防ぐため、ショートカット キーには Windows のグローバル キー シーケンスや共通のシーケンスを使用しないでください。
支援技術の中でもキーボード UI は非常に多様性があるので、アプリケーションのショートカット キーと競合する可能性があります。したがって、重要なキーストロークのみにカスタム ショートカット キーを提供し、一般的に使用されるキーは避けてください。たとえば、多くのスクリーン リーダー (音声化ユーティリティ) では、スピーチ レビュー プロセスを中止するために Ctrl キーが使用されています。このため、新しく割り当てたショートカット キーとカスタマイズ可能なキーのテストを行い、システムおよび他のアプリケーションとの競合を防ぐ必要があります。
- マウス操作のためのキーボード UI
ユーザーは、キーボードまたは別の入力デバイスから擬似的にマウス操作を行うツールを使用できます。しかし、これらのツールは、適切に設計されたキーボード インターフェイスに取って代わるものではありません。たとえば、単純なドラッグ アンド ドロップ操作でも 40 以上の複雑なキーストロークが必要となる可能性があり、視覚に障害のあるユーザーがキー操作で実行することは困難である場合や不可能である場合があります。
多岐にわたってマウスを使用するアプリケーションでは、論理描画オブジェクトとコントロール コマンドを使用することにより、効果的なキーボード UI を提供することができます。ピクセル単位でコントロールを制御するのではなく、選択したオブジェクトに "回転"、"反転"、"移動" などのコマンドを使用することにより、効果的かつ論理的なナビゲーションを実現できます。
一般的に使用されるショートカット キーの詳細については、「Windows のショートカット キー」を参照してください。
キーボード UI を設計する
キーボード UI を設計するための基本ルールを理解したら、ユーザーがどのようにキーボード UI を使用してアプリケーションをナビゲートし、機能および UI 要素を操作するかを考えます。
標準のキーボード ナビゲーションへの準拠
適切なキーボード インターフェイスを作成する場合、一般的に使用される他のアプリケーションやコントロールと互換性があり、ユーザーが慣れたキーボード インターフェイスをモデルにすることが推奨されます。次のセクションでは、キーボード UI の設計にあたって考慮すべき標準のキーボード ナビゲーション方法について説明します。
論理的な順序のナビゲーション
ユーザーが UI 要素を移動またはナビゲートする順序は、論理的で、UI の表記に使用されている言語に整合するものでなければなりません。適切に設計された UI におけるナビゲーションの順序は、最も一般的に使用されるコントロールから始まり、使用言語の読む方向に沿っています。たとえば、英語で表記されている UI のダイアログ ボックスでは、ナビゲーションの順序は左から右へ、および上から下へ移動します。
Windows アプリケーションでは、ある UI 要素から別の UI 要素へ入力フォーカスを移動するために Tab キーを使用します。領域を選択してアクティブにしたり、コントロールやコマンドを有効にしたりするには、Space や Enter キーを使用します。Shift + Tab キーを押すと、逆のナビゲーション順序で入力フォーカスが移動し、矢印キーを押すと該当する方向に要素グループ内の入力フォーカスが移動します。入力フォーカスの詳細については、「入力フォーカスの場所」を参照してください。
図 1 は、コントロールのグループでのナビゲーション順序を示したものです。[既定のプリンタ] と [ファイル] の 2 つのオプション ボタン、および [OK] と [キャンセル] の 2 つのコマンド ボタンがあります。[ファイル] オプション ボタンは独立したコントロールです。また、テキスト ボックスは依存コントロールで、[ファイル] オプションが選択されたときだけ使用されます。
このようなコントロールのナビゲーション順序は、常に選択したオプション ボタンから始まります。この例の場合、[ファイル] から始まり、その依存コントロールの順に進みます。次に、[OK] コマンド ボタンなどのフォーム内の別のコントロールに移動します。ナビゲーションの順序を正しく割り当て、適切なタイミングと論理的なシーケンスでコントロールを使用できるようにすることが重要となります。
.gif)
図 1. コントロール グループのナビゲーション順序
選択されていないオプション ボタンに依存するコントロールをすべて無効化 (淡色表示) してナビゲーション順序をわかりやすくします。オプション ボタンを選択すると、選択したオプションに依存するコントロールが有効になります。しかし、依存コントロールを持つオプション ボタンが選択されたときに最初の依存コントロールに自動的に入力フォーカスが移動するような設計は、ユーザーが混乱する原因となるので避けるべきです。
ウィンドウ ペインの切り替え
ウィンドウが 2 つ以上のペインに分割されている場合、キーボード ユーザーは Tab キーまたは Shift + Tab キーを使ってペイン間を移動できます。1 つのペインにある要素グループ内で入力フォーカスを移動するには、矢印キーを使用します。1 つのウィンドウにアクティブな UI 要素が多く存在する場合、各ペインで階層的な配置を行うことを考慮してください。
ウィンドウ内でペインを移動するには、以下のキーストロークを使用します。
- Tab キー : アクティブなペインがウィンドウ内の他のコントロールによって使用されていない場合のみ、次の領域に入力フォーカスを移動します。
- Ctrl + Tab ショートカット キーまたは F6 ファンクション キー : 入力フォーカスを次のペインまたはパレットに移動します。
- Ctrl + F6 キー : 関連するウィンドウ グループまたはマルチ ドキュメント インターフェイス (MDI) ウィンドウで次のウィンドウに入力フォーカスを移動します。
階層的ナビゲーションのショートカット キーは、アプリケーション固有で、独特のキーボード インターフェイスを提供するので文書化する必要があります。
フィールドの移動
ダイアログ ボックスやフォームのコントロールのナビゲートは、連続的で中断のないものにすることが重要です。また、ユーザーが値を変更する必要やエラー メッセージが表示されることがないようにします。しかし、これは、ユーザーが別の UI 要素にナビゲートする際に入力内容を検証するコントロールの場合、実現が困難な場合もあります。その場合、フォームまたはコントロールでは以下のルールのいずれかに従う必要があります。
- ナビゲート中、ユーザーに対してコントロールの初期値の変更を要求しない。終了時に検証を行うコントロールはすべて、有効な値で開始される必要があります。たとえば、[送信] ボタンをクリックするまで、ユーザーは新しい値を適用する必要なくコントロール間で入力フォーカスを移動できなければなりません。
- ユーザーが値を変更し入力フォーカスをコントロール以外の UI 要素に移動するときにのみコントロールの値の検証を実行する。フィールドからフィールドへの移動では、値は変更されません。
- ユーザーが [OK] をクリックした場合、または変更を送信する同等のコマンドを選択したときに、検証を実行するフィールドに移動する。この場合、ユーザーが操作をキャンセルできるようにしておくか、既定値の復元を行うコマンドを選択できるようにしておく必要があります。
文字列検索によるナビゲーション
項目の一覧内で入力フォーカスを移動するために文字列検索を使用するユーザーに対しては、アプリケーションからのフィードバックが必要となります。文字列検索ナビゲーションでは、ユーザーが目的の項目の最初の文字をいくつか入力して、ナビゲートします。文字列検索バッファの文字を表示する方法は 2 つあります。
- 部分一致に基づいて入力フォーカスを項目に移動すると、入力フォーカス インジケータが項目全体ではなく、検索文字列の周囲に表示され、何が入力されたかを示す。
- 入力フォーカスの隣にポップアップ ヒントを表示して文字列検索バッファの内容を表示する。
ユーザーが検索ナビゲーションを正確に完了できるように、アプリケーションはフィードバックを提供する必要があります。この種類のフィードバックを確実に提供するためには、以下のガイドラインを使用します。
- 文字列検索バッファがクリアされた場合 (入力が中断した場合、または BackSpace キーを押した場合)、入力フォーカス インジケータが項目全体の周囲に表示される。
- バッファの内容に該当する項目がない場合、バッファはクリアされて PlaySound 関数が呼び出され、無効な入力であることを示す既定のサウンドが出力されます。
- ユーザーが別の操作を行った場合 (マウス クリック、文字キー以外のキーを押してコントロールからの移動、または手動で別の項目への入力フォーカスの移動などを行った場合)、バッファを空にする。
文字列検索ナビゲーションの詳細については、「オートコンプリートの提供」を参照してください。
UI 要素のインタラクティブ操作
適切に設計されたキーボード UI では、ユーザーがすべての UI 機能と要素をインタラクティブに操作することができます。以下のセクションでは、アプリケーションにおけるキーボード アクセスを提供する上で考慮すべき機能とタスクについて説明します。
メニューおよびダイアログ ボックスへのアクセス
メニューとダイアログ ボックスは、Windows オペレーティング システムで最も一般的で、標準化された UI 要素です。メニューは関連コマンドを一覧にまとめたもので、ダイアログ ボックスは重要な機能をウィンドウにまとめたものです。ユーザーがキーボードの Alt キーを使ってメニューの開閉を行えるようにしてください。メニューが長すぎたり不便になったりしないように、ユーザーが完全な一覧を要求するまではほとんどのコマンドを非表示にするよう設定します。
ウィンドウの分割
多くのアプリケーションでは分割バーがサポートされていて、ユーザーはウィンドウを複数のペインに分割することができます。キーボード操作によって分割バーの配置および調整ができることを確認する必要があります。キーボード操作による分割バーの操作を提供する一般的な方法は、分割バーを追加、削除、および移動するメニュー コマンドを用意することです。これらのコマンドは、[ウィンドウ] または [表示] メニュー、またはショートカット メニューに配置します。たとえば、Microsoft Word では、[ウィンドウ] メニューの [分割] コマンドを使用して分割バーの配置および削除を行うことができます。
要素のサイズと位置の調整
ほとんどのウィンドウには [移動] および [サイズ変更] コマンドがあり、UI 要素とオブジェクトの位置やサイズを調整することができます。これらのコマンドは "システム" または "コントロール" メニューにあります。Alt + Space キーを使ってアクセスできるコントロール メニューは、タイトル バーの左端に表示されます。ユーザーはキーボードを使用してコントロール メニューの操作を実行できます。これらのコマンドは、メニュー バーまたはオブジェクトのショートカット メニューのアプリケーション固有のオブジェクトに対して提供することもできます。
[サイズ変更] コマンドは、論理的または数値的な操作が可能であればより強力になります。たとえば、Microsoft Excel では、[書式] メニューを使って列や行の幅を論理的または数値的に変更することができます。リスト ビューでは、 Ctrl と + (テンキーのプラス記号) を同時に押すと、セルの内容に合わせてすべての列の幅を調整できます。
複雑な属性の制御
適切に設計されたキーボード インターフェイスでは、オブジェクトのプロパティ シートの値を調整することにより、オブジェクトを操作することもできます。図 2 に Microsoft Visual Basic® フォームの横に表示されるプロパティ シートを示します。[OK] ボタンの左端を調整する場合、キーボードを使用してプロパティ シートの [Left] プロパティを変更できます。
.gif)
図 2. Visual Basic プロパティ シート
ツール バーへのアクセス
ツール バーはマウス ユーザーにとって強力な UI ソリューションですが、通常、キーボードからアクセスすることはできません。そのため、アプリケーションを作成する際には、ツール バーと同等または同様の機能がメニュー、キーボード ショートカット、またはツール ボタンから実行できるように配慮してください。たとえば、印刷はツール バーの [印刷] ボタン、または Ctrl + P ショートカット キーのいずれかで実行することができます。
Microsoft Office にはカスタマイズ可能で、キーボード アクセスが可能な包括的なツール バー インターフェイスが装備されています。
タブ コントロールへのアクセス
ダイアログ ボックスに多くのオプションまたは UI 要素がある場合、タブ コントロールを使用してカテゴリ別に構成することができます。タブ コントロールを使えば、図 3 に示すようにコントロールを複数のページに分割できます。各タブにアクセスするには、Ctrl + Tab、Ctrl + PageUp、および Ctrl + PageDown などのショートカット キーを使用します。一般的に、タブ コントロールはアクティブな UI 要素のナビゲーション順序内に配置されます。入力フォーカスがコントロールにあるとき、ユーザーは矢印キーを使用して異なる要素間を移動することができます。各要素へのアクセス順序は、ユーザーが混乱しないように論理的にする必要があります。
.gif)
図 3. オプション ダイアログ ボックスのタブ コントロール
コントロールのタイミング設定
キーボード UI では、タイミングの修正、タイムアウトの無効化、またはシステム全体でのタイミング設定共有のオプションが利用できる必要があります。これらのオプションによって敏速な動作が困難なユーザーもコントロールにアクセスできるようになります。
ユーザーは、コントロール パネルの [キーボード] や [ユーザー補助のオプション] などを使って、複数の異なるキーボード動作を設定することができます。Windows ベースのアプリケーションでは、ユーザーによるキーボード オプションの設定をサポートする必要があります。設定を参照するには、SystemParametersInfo 関数を使用します。
詳細については、「キーボード UI の Windows システム パラメータ」を参照してください。
ヒントの表示
ヒントは、ユーザーがカーソルをボタンまたは UI コントロール上に置くと表示されるポップアップ テキストです。ヒントには、キーボード ユーザーにも表示する必要のある重要な情報が含まれています。ユーザーが入力フォーカスを一定の時間 UI コントロールに置いたときにヒントを表示するには、マウスのタイミング メトリックス (SPI_GETMOUSEHOVERTIME) を使用します。
ショートカット キーとアクセス キーの作成
キーボード ユーザーは、個別キーとキーの組み合わせをショートカットとして使用し、メニューを迂回してコマンドを実行することができます。これらのキーはショートカット キーまたはアクセス キーと呼ばれ、主にマウスを使用するユーザーでも、ショートカット キーによる操作は画面のオブジェクトをマウスでクリックするよりも速く、また必要とする労力が少ないことはお分かりいただけると思います。以下に、ショートカット キーとアクセス キー作成方法のガイドラインを示します。
ショートカット キーの割り当て
ショートカット キーは単独キー、または複数のキーの組み合わせで、ユーザーは頻繁に実行するアクションに対してキーボードを使用してすばやくアクセスできます。たとえば、アプリケーション キー (
) を押すと、ユーザーはショートカット メニューを呼び出して項目の移動やコピーを実行できます。図 4 に示すように、Windows エクスプローラのフォルダに入力フォーカスがあるときに、このキーを押すとショートカット メニューが開き、ユーザーは効率的にファイルを別の場所に移動したり送ったりすることができます。これは、マウスのドラッグ アンド ドロップと同じような働きをします。
.gif)
図 4. Windows エクスプローラとショートカット メニュー
ショートカット キーを作成する場合、一般的に Ctrl キーと文字キーの組み合わせ、およびファンクション キー (F1 ~ F12) が最良の選択です。たとえば、[切り取り]、[コピー]、および [貼り付け] コマンドのキーボード操作は、それぞれ Ctrl + X、Ctrl + C、Ctrl + V です。
キーボードのデザインは言語ごとに異なるため、別の言語では使用できない文字、またはシステムによって予約されているショートカットの組み合わせを使用することは避けてください。自国以外の国/地域でも使用するアプリケーションの場合は、ショートカット キーをカスタマイズ可能にすることが推奨されます。たとえば、言語によっては、テキストに太字 (Bold) を適用する操作に Ctrl + B というニーモニック的な意味を持たせることが不適切な場合もあることを考慮する必要があります。
ショートカット キーの設計時には、以下のガイドラインを使用します。
- シンプルで一貫したキーの組み合わせを割り当てる。
- ショートカット キーのカスタマイズを可能にする。
- 広範囲に影響するアクションでは Ctrl キーと組み合わせたショートカットを使用する (現在のドキュメントを保存する操作に Ctrl + S キーを使用するなど)。
- 標準のショートカット キーのアクションを拡張または補足するアクションには、Shift キーとその他のキーの組み合わせを使用する。たとえば、Alt + Tab のショートカット キーを使うと、現在実行されている複数のアプリケーションのウィンドウを順番に移動できます。また、Shift + Alt + Tab キーの組み合わせでは、現在実行中のもので最後にアクセスしたアプリケーションから順番に、現在表示されているアプリケーションのウィンドウまで移動できます。
- ボタン コントロールの選択やチェック ボックス コントロールの切り替えなど、コントロールの既定のアクションに Space キーを使用する。これは、マウスの左クリック (または主ボタンのクリック) と同様です。
- 可能な場合、ダイアログ ボックスの既定のアクションに Enter キーを使用する。
- 操作の中止またはキャンセルに Esc キーを使用する。
- ショートカットには、修正文字や大文字と小文字が区別される文字は使用しない。
- ショートカット キーには、@、£、$、{、}、[、]、¥、~ (ティルダ記号)、|、^、'、<、> の文字は使用しない。
- アクセス キーと競合する可能性があるため、Alt キーと文字キーの組み合わせは使用しない。さらに、システムでは特殊な入力用に多くの特定のキーの組み合わせが使用されます。たとえば、日本語のシステムでは、Alt キーと ~ (ティルダ記号) の組み合わせによって入力エディタが起動します。
- システムの言語によっては、Ctrl + Alt の組み合わせが、英数文字を生成する AltGr キー (右側の Alt キー) として認識されるため、Ctrl キーと Alt キーの組み合わせは使用しない。
- システムによって予約または設定されている組み合わせ、および他のアプリケーションで一般的に使用されている組み合わせは割り当てない。
- Windows ロゴ キーは、非システム レベルの機能の補助キーとして使用しない。
ショートカット キーの詳細については、「Windows のショートカット キー」を参照してください。
アクセス キーの選択
アクセス キーは、Alt キーと組み合わせて使用される英数字のキーで、コントロールを起動します。図 5 で示すように、アクセス キーは一般的で視覚的にも目立ちます。これらのアクセス キーは、メニューまたは UI コントロールで下線付きの文字として表示されます。
.gif)
図 5. メニュー アクセス キー
一般的に、アプリケーションの操作に慣れるに従って、多くのユーザーはアクセス キーを使用して一般的な操作のスピードアップを図る傾向があります。この傾向は、支援技術のユーザーではさらに顕著になります。たとえば、スクリーン リーダーでは UI が順番に提供されるため、ユーザーはシステムで選択されている UI 要素を読んだり聞いたりして認識することができます。この複雑なプロセスにおいて、グループに多くのコントロールが存在する場合は特にアクセス キーが便利です。
Microsoft Win32 アプリケーションでは、アクセス キーに割り当てる文字の前にアンパサンド (&) を配置することにより、コモン コントロールのアクセス キーを割り当てることができます。日本語の場合は、"設定(&S)" のようにコマンド名の後にアクセス キーを示す英文字が丸かっこ内に表示されます。HTML ドキュメントやアプリケーションでは、ACCESSKEY および TabINDEX 属性を指定してショートカット キーやナビゲーションの順序を指定することができます。
アクセス キーによるアクセシビリティ ソリューション提供を確実にするには、以下の設計ルールを参照してください。
- アクセス キーを容易に見つけることができるようにする。
アクセス キーは、ユーザーが容易に見つけることができる必要があります。たとえば、"Settings" (設定) のように、コントロールのラベルのできるだけ最初に近い文字をアクセス キーに指定します。アクセス キーとして指定する場合、以下の英文字が推奨されます。
- ラベルの最初または 2 番目の単語の最初の文字
- ラベル内の明瞭な子音または母音
- w や m などの幅が広い文字、および大文字
アクセス キーに割り当てた場合に見にくくなる文字を使用することは避けます。アクセス キーとして見にくい文字には、以下のものがあります。
- p、g、q、および y などの下に伸びる文字
- 下に伸びる文字の横にある文字
- i や l などの 1 ピクセル幅しかない文字
- アクセス キーの重複を避ける
アクセス キーの割り当ては一意にします。アクセス キーが重複すると、ユーザーが混乱する原因になります。やむを得ない場合はアクセス キーを重複して割り当てることもできますが、ユーザーのキーボード操作を妨げないように配慮します。標準メニューやリスト ビュー コントロールなど、コントロールによっては、同じスコープ内で重複アクセス キーによって入力フォーカスをコントロールから別のコントロールに移動できるものもあります。
ラベル内に使用できる文字がない場合は、コントロールの名前を変更するか、"次へ(>)" のようにラベルには含まれていない文字を追加します。コマンドの使用頻度によっては、UI コントロールに割り当てられたアクセス キーを非表示にすることもできます。
- 既定のボタンやダイアログ ボックス テンプレートのボタンにはアクセス キーを使用しない。以下に詳細を説明します。
- "OK"、"完了"、および "キャンセル" コマンド ボタンにはアクセス キーを設定しない。ダイアログ ボックスの既定のアクションでは通常、"OK" や "完了" を Enter キーに設定し、"キャンセル" を Esc キーに設定します。
- "OK"、"キャンセル"、および "適用" ボタンなどのダイアログ ボックス テンプレートのボタンにはアクセス キーを設定しない。この理由は、特定ページのコントロールと競合する可能性を避けるためです。
これらのボタンをダイアログ ボックスのタブに配置すること、および既定とエスケープ アクションをそれぞれ Enter と Esc キーに割り当てることは、許容範囲内の解決策です。
アクセス キーの下線
Microsoft Windows 2000 より前のバージョンの Windows オペレーティング システムでは、下線付きのアクセス キーが常に表示されていました。Windows 2000 以降のバージョンでは、アクセス キーを使用しない場合はこれらを非表示にすることができます。
アプリケーションで標準メニューやダイアログ ボックスを使用する場合、この処理は自動的に行われます。ただし、メニューやダイアログ ボックスなど、独自のカスタム コントロールを使用するアプリケーションでは、この処理を適切な形で明示的に行う必要があります。アクセス キーの下線の場所を決定するときは、以下の点を考慮してください。
- アクセス キーの下線を表示するようにシステム パラメータを設定する。
ユーザーは、[Control Panel] で下線の既定値の設定を調整することができます。システム パラメータでアクセス キーの下線を常に表示するように設定してあると、アプリケーションではアクセス キーの下に下線が常に表示されます (既定の設定値では、下線は非表示です)。
これらの設定に関する詳細については、「Platform SDK」(英語) にある 「SystemParametersInfo」関数 (英語) の SPI_GETMENUUNDERLINES または SPI_SETMENUUNDERLINES パラメータを参照してください。
- キーボードによるメニューやダイアログ ボックスのインタラクティブ操作
ユーザーは、以下の操作を実行できます。
- Alt、F10、または Shift + F10 キーを押してメニューにアクセスする。
- マウスを使用してメニューを開き、キーボードを使用して別のメニューに移動する。キーボードを使用してメニューを操作すると、その後はメニューが閉じられるまですべてのアクセス キーの下線が表示されます。
- キーを押して別のコントロールをアクティブにする (Tab キーを使って入力フォーカスを次のコントロールに移動する、または Space キーを使ってオプション コントロールを選択するなど)。アクセス キーの下線は、ユーザーがダイアログ ボックスまたはコンテナを閉じるまで表示状態である必要があります。
カスタマイズ可能なキーボード UI を提供する
多様なアクセシビリティのニーズに応えるため、アプリケーションのキーボード UI は簡単にカスタマイズできる必要があります。キーボード UI に以下の機能を含めることにより、このカスタマイズ機能を提供することができます。
- カスタム ショートカット キー
ユーザーは、頻繁に使用するコマンドに新しいショートカット キーを独自に設定することができます。また、既定のショートカット キーを変更し、支援技術との競合を回避することもできます。
- カスタム メニュー
ユーザーは、独自のコマンドを追加することができます。さらに、複数のレベルがあるメニューの選択を可能にします。
- カスタム マクロのキーボード ショートカット
アプリケーションのカスタム マクロに個人用のキーボード ショートカットの設定を可能にすることもできます。ユーザーは、単一のキー操作で複数のコマンドを実行することができます。
コンボ ボックスやリスト ビューなど、システム全体のコントロールでは自動的に完全なキーボード アクセシビリティがサポートされます。ただし、以下の場合はカスタム キーボード インターフェイスを提供するようにしてください。
- カスタム ウィンドウ クラスまたはコントロールを作成する場合
- 標準ウィンドウまたはコントロールの通常の動作を変更する場合
- ダイアログ ボックスなど、ウィンドウやコントロールにキーボード ナビゲーションを設定する場合
- ユーザー入力やコマンドに音声認識テクノロジを使用する場合
- マークアップ言語を使用してコントロールを作成する場合
- ユーザー入力やコマンドにクライアント側スクリプトまたはプラグインを使用する場合
カスタム キーボード UI は、同様のアプリケーションとの整合性があることを完全にテストする必要があります。変更されたコントロールは、標準コントロールの動作と同等のキーボード動作をサポートする必要があります。
選択のアンカーと拡張
適切に設計されたキーボード UI では、一覧から 2 つ以上の項目の選択や、テキストの複数の段落の反転表示などの拡張選択を行うことができます。拡張選択の開始ポイントは、アンカーと呼ばれます。入力フォーカスの最終ポイントはデスティネーションと呼ばれます。Shift キーを押しながらカーソルを移動してテキストの段落を反転表示するなどの拡張選択を行うと、アンカーとデスティネーションの間にあるすべての項目が選択された状態になります。通常、Ctrl キーが同時に押されていなければ、他の項目は選択されません。
単独の選択を行うコントロールでは、Space キー、Ctrl + 矢印キーの組み合わせ、または矢印キーがサポートされている必要があります。複数のリスト ビュー コントロールでは、選択、入力フォーカス、およびアンカー ナビゲーションを行うために、Space キーと補助キーおよび方向キーの組み合わせが使用可能である必要があります。
詳細については、「ダイアログ ボックスとコモン コントロールのショートカット キー」を参照してください。
連続的な拡張選択の例
ユーザーが実行できる拡張選択の一例として、連続的な拡張選択があります。Windows エクスプローラの詳細表示モードが、連続的、単独、または多元的な複数選択の例です。図 6 は、5 つのフォルダ (ラベル A から E) で構成される複数選択のリスト ビューです。図 6 の一覧のナビゲーションでアンカーから拡張選択を行うには、以下の手順を実行します。
- フォルダ A のみを選択して最初の入力フォーカスを決定します。
- 下矢印キーを押します。フォルダ A の選択が解除されます。代わりに、フォルダ B が選択された状態になり、アンカーおよび入力フォーカスが移動します。
- Shift キーを押したまま下矢印キーを押します。フォルダ B が選択されたままアンカーとして残った状態でフォルダ C も選択され、入力フォーカスが移動します (拡張選択操作によってフォルダ C が選択されたため、アンカーは移動しません)。
- Ctrl キーを押したまま下矢印キーを押します。フォルダ B と C は選択されたままの状態で、フォルダ B にアンカーが残ります。フォルダ D に入力フォーカスが移動します (Ctrl キーが押されていたため、現在、フォルダ D は未選択の状態です)。
- Ctrl キーを押したまま下矢印キーを押します。フォルダ B と C が選択されたままの状態でフォルダ B にアンカーが残り、フォルダ E に入力フォーカスが移動します。
- Shift キーを押したまま Space キー押して選択を拡張します。フォルダ B にアンカーが残った状態でフォルダ B、C、D、および E が選択されます。入力フォーカスはフォルダ E に残ります。
- Ctrl キーと Space キーを押してフォルダ E の選択を解除します。フォルダ B、C、および D は選択されたままの状態で、アンカーは入力フォーカスがあるフォルダ E に移動します。
- Ctrl キーを押したまま、上矢印キーを 2 回押します。フォルダ E にアンカーが残った状態でフォルダ C に入力フォーカスが移動します。このとき、フォルダ B から D は選択されたままです。
- Shift キーを押したまま Space キーを押します。アンカー位置 (未選択のフォルダ E) からフォルダ C に選択が拡張されます。フォルダ C、D、および E は選択されていますが、フォルダ B の選択は解除されます。
リスト ビューは柔軟性が高く、キーボード UI および支援技術と互換性があります。複数選択のリスト ボックスは、拡張選択のリスト ボックスと外見上はそれほど違いませんが、図 6 の右側に見られるようなオーナー描画チェック ボックスのスクロール リストとしてデザインすることも考えられます。場合によっては、キーボード ユーザーにとって、チェック ボックスによる表示および選択が簡単なことがあります。コモン コントロールでサポートされているウィンドウ スタイルを使用することができます (リスト ビューの LVS_EX_CHECKBOXES など)。Microsoft Active Accessibility を使用して、オーナー描画グラフィックの情報を含めることもできます。
.gif)
図 6. 複数選択の一覧
二次元の拡張選択の例
ユーザーが実行できるもう 1 つの拡張選択として、二次元の拡張選択があります。以下の表は、3 つの行と 4 つの列で構成される配列を表しています。
| (1,1) | (1,2) アンカー
Ctrl キーを押したときに入力フォーカスが開始されます。
| (1,3) | (1,4) |
| (2,1) | (2,2) | (2,3) Ctrl キーと矢印キーを使って入力フォーカスをここに移動します。
| (2,4) |
| (3,1) | (3,2) | (3,3) | (3,4) |
セル (1,2) を選択し、セル (2,3) を含むように選択を拡張するには、以下の 2 つの手順のいずれかを実行します。
- アンカーと現在の入力フォーカスを含む四角形の範囲にある項目をすべて選択します。この場合、セル (1,2)、(1,3)、(2,2)、および (2,3) が選択されます。表のグリッド コントロールなどのように行の右端が次の行の左端に接続していない場合は、この方法を使用します。
- アンカーから現在の入力フォーカスまでのすべての項目を選択します。項目は論理的順序で読み取られます (英語で表記されたダイアログ ボックスの場合は左から右、および上から下の順序)。セル (1,2)、(1,3)、(1,4)、(2,1)、(2,2)、および (2,3) が選択されます。右矢印キーを使って行の右端から次の行の左端に折り返す場合は、この方法を使用します。これは、ほとんどの編集コントロールでの一般的な動作です。ただし、連続的な拡張選択と似た "ブロック選択" をサポートする編集コントロールもあります。
不正な複数選択操作
ユーザーが、サポートされていない拡張や連続していない選択を実行しようとした場合 (一覧の最後の項目を超えてスクロールするなど)、エラー イベントによって警告音を出力する必要があります。また、不正な選択操作によって現在の選択が変更されるようなことは避けるべきです。たとえば、アプリケーションで 2 つの項目しか選択できないのにユーザーが 3 つ目の項目を選択しようとした場合、エラー イベントを発生させます。
アプリケーションによっては、選択拡張や分離を行うための補助キーを無視するものもあります。選択が意図したものと異なる場合や、項目がビュー外にスクロール アウトされた場合に、視覚に障害のあるユーザーが気づかないこともあるので、このことは操作性において致命的な問題になります。
不正な複数選択操作を防止するためには、以下のガイドラインを参照してください。
- 一覧の最後でフィードバックを提供する。
リスト ビューのアイコンやダイアログ ボックスのリスト コントロールなど、ユーザーが項目一覧をナビゲートするとき、一覧の最後に達したらユーザーに知らせる必要があります。
ユーザーが一覧の最後の項目を超えてナビゲートしようとした場合、アプリケーションでの入力フォーカスは移動せず、PlaySound 関数を呼び出して、不正な操作を知らせる既定の警告音を出力する必要があります。一般的には、ユーザーに対してフィードバックを行って処理を一時停止することが推奨されます。フィードバックを行わずに最初のオブジェクトに入力フォーカスを戻すという処理には問題があります。たとえば、視覚に障害のあるユーザーの場合、入力フォーカスが一覧の最初の項目に戻ったことに気付かない可能性があります。
- 警告イベントを起動する。
ユーザーが無効なキーまたはナビゲーション キーを押すと、入力フォーカスは移動せずに警告イベントが起動される必要があります。たとえば、挿入ポイントがテキスト フィールドの左端にあり、ユーザーが左矢印キーを押して入力フォーカスをさらに左に移動しようとした場合、アプリケーションの警告イベントを起動する必要がります。警告イベントが起動すると、PlaySound 関数が呼び出されて既定の警告音が出力されます。
オートコンプリートの提供
オートコンプリートとは、ユーザーが文字列をキーボードで入力し始めると自動的にテキスト文字列を完成したり、入力文字列に合致する候補を提供する機能です。アプリケーションでオートコンプリート機能をサポートする場合、以下の条件を満たすように注意してください。
- 利用可能な値または事前に定義された値の中から文字列を特定できる十分な情報が与えられるまで文字列を完成させない。
- 文字列が特定されると、既に入力された文字列の後に残りの文字列が表示され、選択された状態となる。この状態からユーザーが追加の文字を入力すると、オートコンプリート機能によって候補テキストは置き換えられます。この時点で、追加テキストの候補が表示されます。編集コントロールで部分的に選択された文字列の場合とまったく同じ動作を行うようにすることもできます。
キーのステータスの取得
キーまたはマウス ボタンのステータスを取得する場合、やむを得ない場合以外は GetAsyncKeyState 関数の使用は避けてください。GetAsyncKeyState はハードウェアに対するクエリを実行し、物理キーまたはボタンのステータスを特定しますが、プログラムによって押されたキーやユーザー補助ツールによってシミュレートされたキーは無視します。
可能な場合は、シミュレートされた入力も正しく反映する GetKeyState 関数を使用します。ただし、ユーザーが長過ぎる処理タスクを中断するためにキー入力を行った場合などの特定の条件下では GetAsyncKeyState を使用することも可能です。
マウスのドラッグ操作を処理するとき、マウス ボタンの解放を検知するために GetAsyncKeyState 関数を使用することは避けてください。代わりに、SetCapture 関数を使用してボタンアップのメッセージを待ちます。
GetAsyncKeyState 関数を使用すると、他の Windows 関数とメッセージを使用した場合とは異なる結果になる可能性があります。そうなると、アプリケーションの動作がシステム上の他のソフトウェアと不整合を起こす原因になります。
入力フォーカスの場所
ほとんどの支援技術では、入力フォーカスの場所が認識されます。たとえば、スクリーン リーダーでは、ユーザーが作業中のテキストまたはオブジェクトを特定するために入力フォーカスを使用します。また、画面拡大ユーティリティでは、パンまたはズームするオブジェクトを特定するために入力フォーカスを使用します。スクリーン キーボードなどのその他のユーティリティでは、入力フォーカスを使用して、選択されたオブジェクトが画面上に表示されるようにウィンドウを再配置します。
アクセシビリティの観点から、ユーザーに対しては視覚的に、また開発者に対してはプログラム内部で入力フォーカスを一貫して明確にする必要があります。Windows ベースのアプリケーションの標準コントロールでは入力フォーカスが適切にサポートされているので、通常、必要な追加作業はありません。ただし、オーナー描画カスタム コントロールでは、追加情報の表示または新しく追加された動作を処理するための作業が必要になります。
キーボード UI を設計する際は、以下の入力フォーカスのガイドラインを参照してください。
- 入力フォーカスを明確にする。
入力フォーカスを視覚的に明確なものにし、直感的で見つけやすくします。見にくいインジケータの使用は避けるか、見やすいインジケータに置き換えるオプションを提供します。Microsoft Windows XP では、サイズ システムで入力フォーカスを示す境界領域のサイズが変更可能で、設定値は SPI_GETFOCUSBORDERWIDTH および SPI_GETFOCUSBORDERHEIGHT に保存されます。カスタム コントロールには、DrawFocusRect 関数を呼び出すか、システム パラメータで設定されたサイズの線を描画します。
- 入力フォーカス インジケータを表示する。
ウィンドウが最初に開いたとき、またはアクティブになったときに入力フォーカス インジケータを表示します。
このガイドラインの例外については、「入力フォーカスの例外」を参照してください。
- アクティブなウィンドウだけで入力フォーカスを表示する。
ウィンドウが入力フォーカスを失ったときは、入力フォーカス インジケータを非表示にする必要があります。入力フォーカスがスクリーン外のコントロールに移動した場合、ウィンドウで入力フォーカスが表示されるように自動的にスクロールする必要があります。
- 一度に 1 つの入力フォーカス インジケータだけを表示する。
どの時点でも入力フォーカスがあるのは 1 つの場所だけです。ウィンドウに複数のペインがある場合、入力フォーカスがあるペインは 1 つだけです。他のペインにある入力フォーカス インジケータは非表示にする必要があります。
入力フォーカスがないウィンドウまたはペインで "非アクティブな選択" も表示する必要がある場合があります。しかし、非アクティブのウィンドウまたはペインで、入力フォーカス インジケータを表示することは避けてください。
- 入力フォーカスと選択したものを区別する。
通常、入力フォーカスと選択はリンクしていますが、この 2 つが区別して表示されるように UI を設計します。このように設計しておけば、必要な場合に複数選択や分離選択をサポートすることができ、入力フォーカスのないウィンドウやペインの非アクティブな選択を表示することもできます。たとえば、リスト ビューでは、選択した項目が強調表示され、その項目の周囲に点線の四角形が表示されます。
プログラムによる入力フォーカスの表示
Windows のコモン コントロールでは入力フォーカスが自動的に表示されますが、独自に開発したアプリケーションのカスタム コントロールやウィンドウの内容の入力フォーカスを表示するには、Microsoft Active Accessibility を使用する必要があります。アプリケーションでプログラムによる入力フォーカスの表示を行うには、以下の手順を実行します。
- オブジェクト (ウィンドウ全体ではない) に入力フォーカスが移動したら、NotifyWinEvent を呼び出します。
- 入力フォーカス オブジェクトにクエリを実行するために WM_GETOBJECT メッセージが使用されたら、これを処理する。
- Microsoft Active Accessibility IAccessible COM インターフェイスで表示されるカスタム UI 要素の IAccessible::get_accFocus プロパティをサポートします。詳細については、「Microsoft Active Accessibility」を参照してください。
入力フォーカスの例外
以下の状況では、選択したウィンドウで入力フォーカス インジケータを表示する必要はありません。
- 有効なアクションがメニューを開くことのみの場合など、キーストロークがウィンドウ領域全体に適用される状態のとき。
- ウィンドウを初めて開いたとき (Tab キーを押すとウィンドウ上の最初のオブジェクト上に入力フォーカスが表示されます)。ただし、以下の場合を除きます。
- Keyboard Preference フラグが設定されている場合。
- 複数のウィンドウにおいて、入力フォーカスが 1 つのウィンドウから以前にオブジェクト上の入力フォーカスを表示していた別のウィンドウに戻った場合。
- Tab キーを押すと、入力フォーカスがウィンドウの 2 番目の項目に移動する場合。
入力フォーカスのバリエーション
拡張選択や分離選択の場合、入力フォーカスの場所を見つけにくいことがあります。入力フォーカスが選択と同じ位置にある場合でも、互いに独立したものと考える必要があります。以下のトピックでは、この区別を明確にするための例を挙げます。
テキスト内の挿入バー
ユーザーがテキスト内に挿入バーを移動すると、通常、図 7 で示すようにシステム カーソルと呼ばれる点滅する縦線が表示されます。このカーソルは画面内のどこにでも配置することができ、形やサイズの変更、および必要な場合は非表示設定を行うことが可能です。アプリケーションによって挿入ポイントが描画される場合でも、カーソルは非表示で移動し、表示されたインジケータの場所と境界を示す四角形を追跡する必要があります。
.gif)
図 7. 点滅カーソルが置かれたテキスト
Windows 2000 オペレーティング システムとそれ以降のバージョンでは、SPI_GETCARETWIDTH でカーソルの幅を指定するシステム パラメータがサポートされています。この設定は、コントロール パネルの [ユーザー補助のオプション] で変更できます。挿入ポイントを描画するアプリケーションでは、システムの設定に従う必要があります。
カーソルの幅は、ベースとなる挿入ポイントから、選択したテキスト方向に向かって大きくします。この方向は、編集ボックスの方向やユーザーが入力する言語により異なります。右から左へ記述する言語をサポートしている Microsoft Windows および Office では、挿入ポイントの方向が小さなインジケータで示されます。
画面要素の境界を示す四角形をカバーするようにカーソルのサイズと位置を調整し、画面拡大ツールでオブジェクトのどの部分でもズームできるようにします。これでユーザーは正確なラベルとサイズがわかり、またアクセシビリティ ツールも正確なラベルとサイズを認識することができます。
システム カーソルのサイズおよび形を変更するには
- CreateCaret 関数を呼び出して、フォーカスのサイズと形を設定します。
- SetCaretPos 関数を呼び出して、選択したセル、アイコン、またはボタンなどの表示された入力フォーカス インジケータの場所にカーソルを移動します。
- 必要な場合、ShowCaret 関数を呼び出してカーソルを表示します。ShowCaret 関数を呼び出さずに、カーソルを非表示のままにしておくこともできます。
- 異なるサイズのオブジェクトに入力フォーカスが移動したら、DestroyCaret 関数を呼び出し、新しい入力フォーカス位置のサイズと場所を CreateCaret 関数で最初から設定し直す必要があります。
ウィンドウがアクティブでなくなったとき、または入力フォーカス インジケータがなくなったとき、表示されているインジケータを削除して DestroyCaret 関数を呼び出します。
入力フォーカスとオブジェクト選択
ユーザーが拡張選択を行うと、選択範囲の一方の端がアクティブまたは移動可能なデスティネーション (終点) になります。このデスティネーションによって入力フォーカスの位置が明確になります。
図 8 に示すように、選択範囲のアクティブなデスティネーションにある挿入ポイントを表示し、入力フォーカスの位置を明確にする必要があります。
.gif)
図 8. 選択範囲のアクティブなデスティネーションで挿入ポイントが表示されているテキスト
ラベルが隣接したビットマップやアイコンなどのオブジェクトにユーザーが入力フォーカスを移動すると、表示されているインジケータだけでなく、非表示でシステム キャレットまたはカーソルをオブジェクト上に配置する必要があります。
複数選択可能なグラフィック オブジェクトのグループ内に入力フォーカスがある場合、選択されたオブジェクトを強調表示し、フォーカスのあるオブジェクトを点線で表示する必要があります。選択されたオブジェクトに入力フォーカスがある場合、選択された他のオブジェクトで入力フォーカスがないものとは区別して表示する必要があるので、入力フォーカスのあるオブジェクトは強調表示と点線表示の両方の属性を持つことがあります。入力カーソルをプログラミングによって配置するには、オブジェクトをカバーするように非表示のシステム カーソルを配置する必要があります。
通常、分離選択は個別の項目でサポートされていて、文書でもサポートされている場合があります。入力フォーカスは 1 つのオブジェクトに配置され、入力フォーカスと選択を明確に区別して表示する必要があります。選択した項目は、選択の中または外に配置することができます。
ウィンドウレス カスタム コントロールの入力フォーカス
独自のウィンドウ ハンドルを持たないカスタム コントロール (ウィンドウレス カスタム コマンド ボタンなど) がある場合、入力フォーカスはコントロール全体に関連付けられます。非表示のシステム カーソルは、入力フォーカスを完全にカバーする必要があります。このようなコントロールに独立したコントロールとして動作する複数の UI コンポーネントが含まれる場合、入力フォーカスを個別のサブ コンポーネントに適切に配置する必要があります。
コントロールが独自のウィンドウ ハンドルを持つ場合、システム カーソルを使用して位置を特定する必要がないこともあります。コントロールがウィンドウレス コントロールである場合、「Microsoft Active Accessibility」で提供されているツールを使用して入力フォーカスをテストします。
詳細については、「カスタム複合コントロールの入力フォーカス」および「入力フォーカスの確認」を参照してください。
カスタム複合コントロールの入力フォーカス
リスト ボックスなどの複合 (コンポジット) コントロールでは、大型のコントロール内の個別要素に入力フォーカスが配置されます。複合コントロールでは、入力フォーカスがある要素の選択領域を示す四角形を表示して入力フォーカスの位置を示す必要があります。アプリケーションで項目の集合が単一のコントロールとして認識される場合もありますが、入力フォーカスを表示するために、各項目を個別のコントロール要素として扱う必要があります。
ドロップダウン リストは、編集ボックスとリスト ビューがある典型的なコンポジット コントロールです。ドロップダウン リストを開くと、図 9 に示すように入力フォーカスは強調表示された項目上に配置されます。
.gif)
図 9. ドロップダウン リスト ボックス
グリッド コントロールまたはスプレッドシートの入力フォーカス
通常、スプレッドシートやグリッド コントロールでは、数式バーではなくセルに入力フォーカスが配置されます。セルの太い境界線が入力フォーカスを示し、選択されたセルに点線の四角形を表示して入力フォーカスの位置を示す必要があります。ユーザーがセルの内容を編集する場合、セル内のテキストまたはグラフィックに応じて適切な入力フォーカスを示す必要があります。
マウス デバイスでのみ利用可能なオブジェクトの入力フォーカス
すべての機能にキーボードでアクセスできる必要がありますが、オブジェクトによってはマウスを使用しないと操作できないものもあります。マウスでオブジェクトを選択し、オブジェクトがキーボード入力を受け付ける状態になると、適切なシステム入力フォーカスで矩形領域を表示する必要があります。キーボード入力を受け付ける別のオブジェクトに入力フォーカスが移動した場合、入力フォーカスを解放します。
入力フォーカスの確認
テスト ツールを使用して入力フォーカスの位置とサイズを確認することができます。Microsoft Active Accessibility SDK に含まれる Inspect Objects (Inspect.exe) および Accessible Event Watcher (AccEvent.exe) を使用して、支援技術で表示されるカーソルとシステム入力フォーカスの位置をテストすることができます。
Microsoft 拡大鏡も、入力フォーカスとカーソルの利用性をチェックできる便利なツールですが、詳細情報を常に提供するわけではありません。公式なアプリケーション テストでは、Microsoft Active Accessibility SDK で提供されているツールを使用することをお勧めします。これらのツールを使えば、入力フォーカスの正確な位置とイベントを確認することができます。
キーボード UI の Windows システム パラメータ
Windows オペレーティング システムでは、アプリケーションとシステム自体の間でシステム全体のオプション設定を共有する多くのパラメータがサポートされています。システム全体の設定にアクセスするには、特定の SPI 値を持つ SystemParametersInfo 関数を呼び出します。この設定を使用するアプリケーションでは、WM_SETTINGSCHANGE メッセージを参照して適切に反応するか、必要に応じて設定を修正する必要があります。
オペレーティング システムには、多くのキーボード UI 関連のシステム パラメータがあります。システム パラメータ値の多くには、API による読み取りと書き込みプロシージャがありますが、ほとんどのシステム パラメータは [Control Panel] で制御されるため、通常、アプリケーションでは設定を読み取るだけです。システム パラメータとその API 名、および説明を以下の表にまとめます。
キーボード UI 関連のシステム パラメータ
| システム パラメータ | SPI 値 | 説明 |
| Keyboard Preference | SPI_GETKEYBOARDPREF | ユーザーのキーボード インターフェイスの設定を取得します。 |
| Access Key Underlines | SPI_GETKEYBOARDCUES | アクセス キーの下線の設定を取得します。 |
| | SPI_GETMENUUNDERLINES | アクセス キーの下線の設定を取得します。 |
| Focus Rectangle Border | SPI_GETFOCUSBORDERHEIGHT | フォーカス境界領域の高さの設定を取得します。 |
| | SPI_GETFOCUSBORDERWIDTH | フォーカス境界領域の幅の設定を取得します。 |
| Cursor Width | SPI_GETCARETWIDTH | システム カーソル幅の設定を取得します。 |
| Windows Accessibility Options および Keyboard Repeat | SPI_GETFILTERKEYS | [フィルタ キー機能] オプションの設定を取得します。 |
| | SPI_GETMOUSEKEYS | [マウス キー機能] オプションの設定を取得します。 |
| | SPI_GETSTICKYKEYS | [固定キー機能] オプションの設定を取得します。 |
| | SPI_GETTOGGLEKEYS | [切り替えキー機能] オプションの設定を取得します。 |
| | SPI_GETKEYBOARDDELAY | キー入力の待ち時間の設定を取得します。 |
| | SPI_GETKEYBOARDSPEED | キー入力の繰り返し頻度の設定を取得します。 |
| ToolTips | SPI_GETMOUSEHOVERTIME | ヒントが表示されるまでの時間設定を取得します。 |
注 : SPI_GETSERIALKEYS は、旧 Windows プラットフォーム (Windows バージョン 9.x) でのみサポートされているため、この表には含まれていません。シリアル キー デバイスからの入力は、標準キーボードやマウス入力デバイスからの入力と同じようにアプリケーションで認識される必要があります。
キーボード設定フラグについて
通常は非表示にされている一部のキーボード UI 要素、または非表示のキーボード UI 要素と共に省略されているキーボード メカニズムは、キーボード設定フラグ (SPI_GETKEYBOARDPREF) が設定された場合に表示される必要があります。[Control Panel] でユーザーが設定するフラグは、ユーザーがマウスよりもキーボードを頻繁に使用することをアプリケーションに認識させるので、必要に応じて追加サポートを提供しなければなりません。
その他のリソース
UI の設計および開発の詳細については、「User Interface」(英語) および『Microsoft Windows User Experience』(Microsoft Press、英語、ISBN: 0-7356-0566-1) を参照してください。
名前とカテゴリ別に支援技術ツールを検索するには、「Search for Assistive Technology」(英語) を参照してください。
Windows のショートカット キー
「キーボード UI を設計する」で説明したように、ショートカット キーに他のアプリケーションとの整合性を持たせる必要があります。このセクションでは、Windows で使用されているショートカット キーを説明します。他の Windows ベース アプリケーションの整合性を保つために、同様のショートカット キーを割り当てることが推奨されます。詳細については、「アプリケーションの一般的なショートカット キー」を参照してください。
注 : このセクションでは、一般的に使用されているショートカット キーの概要を紹介します。Microsoft ターミナル サービス クライアントを使用して Windows と接続している場合、設定によってはショートカット キーが異なる場合があります。一部のキーボード ショートカットでは、Windows ロゴ キー (
.gif)
) およびアプリケーション キー (
.gif)
) を含む Microsoft Natural® Keyboard または同等のキーボードが必要なものもあります。
システム全体のショートカット キー
| キー | 機能 |
.gif) | [スタート] メニューを開く、または閉じます。 |
| Ctrl + Esc | [スタート] メニューを開く、または閉じます ( キーと同じ)。 |
| Ctrl + Alt + Del | [Windows のセキュリティ] 画面または Windows タスク マネージャを表示します。 |
+ Break | [システムのプロパティ] ダイアログ ボックスを表示します。 |
+ D | デスクトップを表示します。 |
+ M | すべてのウィンドウを最小化します。 |
+ Shift + M | 最小化したウィンドウを元に戻します。 |
+ E | Windows エクスプローラで [マイ コンピュータ] を開きます。 |
+ F | ファイルまたはフォルダを検索します。 |
Ctrl + + F | コンピュータを検索します。 |
+ F1 | Windows のヘルプを表示します。 |
+ L | ネットワーク ドメインに接続している場合はコンピュータをロックします。ネットワーク ドメインに接続していない場合はユーザーを切り替えます。 |
+ R | [ファイル名を指定して実行] ダイアログ ボックスを開きます。 |
| Alt + Tab | 開いているウィンドウを切り替えます。Alt キーを押しながら Tab キーを押すと、以前に使用した別のウィンドウに移動できます。 |
| Alt + Shift + Tab | Alt + Tab と同様ですが、ナビゲーション方向が逆になります。Shift キーを操作してナビゲーションの方向を変えることができます。 |
| Alt + Esc | 開いたウィンドウの順番で入力フォーカスを移動します。Alt + Tab と比較してください。 |
| Alt + Shift + Esc | Alt + Esc と同様ですが、入力フォーカスが移動する順番が逆になります。Shift キーを操作してナビゲーションの方向を変えることができます。 |
| PrintScreen | 画面のイメージをコピーします。 |
| Alt + PrintScreen | 現在のウィンドウのイメージをコピーします。 |
| Alt (左側) + Shift | 入力言語またはキーボード レイアウトを切り替えます。ただし、切り替えや設定が可能なのは、コントロール パネルの [地域と言語のオプション] (オペレーティング システムによっては [地域のオプション]) で複数のキーボード レイアウトがインストールされている場合のみです。 |
| Ctrl + Shift | キーボード レイアウトまたは入力言語を切り替えます。ただし、切り替えや設定が可能なのは、コントロール パネルの [地域と言語のオプション] (オペレーティング システムによっては [地域のオプション]) で複数のキーボード レイアウトがインストールされている場合のみです。 |
| Ctrl または Alt (左側) + Shift + ~ (ティルダ記号) キー、数字 (0 ~ 9) キー、 またはアクサン グラーブ (`) キー | 入力言語のホット キーです (コントロール パネルの [地域のオプション] で複数のキーボード レイアウトがインストールされている場合に使用および設定できます)。 |
+ V | マイクのリスニング ステータスを切り替えます (音声認識)。 |
+ C | 認識したテキスト文字列を修正します (音声認識)。 |
+ T | 音声認識モードを切り替えます (音声認識)。 |
+ H | 手書き入力パッドを開いたり閉じたりします (手書き入力)。 |
+ 数字キー | OEM 向けに予約されています。 |
システム全体のユーザー補助のオプションおよびツール ショートカット キー
| キー | 機能 |
| Shift キー (右側) を 8 秒間押す | フィルタ キー機能のオン/オフを切り替えます。 |
| Alt (左側) + Shift (左側) + PrintScreen | ハイコントラストのオン/オフを切り替えます。 |
| Alt (左側) + Shift (左側) + NumLock | マウス キー機能のオン/オフを切り替えます。 |
| Shift を 5 回押す | 固定キー機能のオン/オフを切り替えます。 |
| NumLock を 5 秒間押す | 切り替えキー機能のオン/オフを切り替えます。 |
+ U | [ユーティリティ マネージャ] を開きます。 |
アプリケーションの一般的なショートカット キー
| キー | 機能 |
| F1 | アプリケーションのヘルプを表示します。 |
| Shift + F1 | 選択したコントロールの近くにヒント (コンテキスト依存のヘルプ) を表示します。 |
.gif) | 選択した項目のショートカット メニューを表示します。 |
| Shift + F10 | 選択した項目のショートカット メニューを表示します ( キーと同じです)。 |
| Ctrl + C | 選択した項目をコピーします。 |
| Ctrl + X | 選択した項目を切り取ります。 |
| Ctrl + V | 切り取った項目またはコピーした項目を貼り付けます。 |
| Ctrl + Z | 最後に行った操作を元に戻します。 |
| Ctrl + Y | 最後に行った操作を繰り返します。 |
| Esc | 現在のタスクをキャンセルします。 |
| Del | 選択した項目を削除します。 |
ナビゲーションおよび Window コントロールのショートカット キー
| キー | 機能 |
| Ctrl + F4 | 同時に複数のドキュメントを開くことのできるアプリケーションで、アクティブなドキュメントを閉じます。 |
| Alt + F4 | アクティブな項目を閉じる、またはアクティブなアプリケーションを終了します。 |
| Ctrl + Tab | 次のペインまたはパレットに移動します。 |
| Ctrl + Shift + Tab | 前のペインまたはパレットに移動します。 |
| F6 | 次のペインまたはパレットに移動します (Ctrl + Tab と同じです)。 |
| Shift + F6 | 前のペインまたはパレットに移動します (Ctrl + Shift + Tab と同じです)。 |
| Ctrl + F6 | 関連ウィンドウ (または MDI ドキュメント ウィンドウ) グループ内の次のウィンドウに移動します。 |
| Ctrl + Shift + F6 | 関連ウィンドウ (または MDI ドキュメント ウィンドウ) グループ内の前のウィンドウに移動します。 |
メニュー コントロール ショートカット キー
| キー | 機能 |
| Alt + Space キー | アクティブ ウィンドウのショートカット メニューを表示します。 |
| Alt + - (ハイフン) | アクティブな子ウィンドウ (MDI アプリケーション) のショートカット メニューを表示します。 |
| Alt | メニュー バーにアクセスし、メニュー モードを開きます。 |
| F10 | メニュー バーにアクセスし、メニュー モードを開きます (Alt キーと同じです)。 |
| Alt + 選択したメニューまたはダイアログ ボックスのアクセス キー | メニュー バーにアクセスし、アクセス キーに対応するメニューを開きます。 |
| アクセス キー | 対応するコマンドを実行します (メニュー モード)。 |
| 下矢印キー | メニュー項目を開いてフォーカスを 1 つ下の項目に移動します。フォーカスがメニューの 1 番下にある場合は 1 番上に移動します (メニュー モード)。 |
| 上矢印キー | メニュー項目を開いてフォーカスを 1 つ上の項目に移動します。フォーカスがメニューの 1 番上にある場合は 1 番下に移動します (メニュー モード)。 |
| 右矢印キー | 右隣のメニューを開くか、サブメニューを開きます (メニュー モード)。 |
| 左矢印キー | 左隣のメニューを開くか、サブメニューを閉じます (メニュー モード)。 |
編集ボックスのショートカット キー
| キー | 機能 |
| Home | カーソルを行の最初に移動します。 |
| End | カーソルを行の最後に移動します。 |
| Ctrl + A | すべて選択します。 |
| Ctrl + 右または左矢印キー | カーソルを次または前の単語に移動します。 |
| Ctrl + 下または上矢印キー | カーソルを次または前の段落の最初に移動します。 |
| Ctrl + Home | カーソルをドキュメントの最初に移動します。 |
| Ctrl + End | カーソルをドキュメントの最後に移動します。 |
| Shift + カーソル移動キー (矢印キー、Home、または End) | 選択を行うか、または選択を拡張します。 |
| Shift + Ctrl + カーソル移動キー | テキストの単語またはブロックを選択するか、選択を拡張します。 |
| Insert | 挿入モードを切り替えます。 |
ダイアログ ボックスとコモン コントロールのショートカット キー
注 : この表では、汎用ナビゲーションでの矢印キー、PageUp または PageDown、Home、および End キーの説明は省略しています。
| コントロールの種類 | キー | 機能 |
| 全般 | Tab | 次のオプションに移動します。 |
| | Shift + Tab | 前のオプションに移動します。 |
| ダイアログ ボックス | Alt + アクセス キー | 対応するコマンドまたはコントロールの実行/選択を行います。 |
| | Enter | ダイアログ ボックスの既定のコマンドまたは選択したコントロールのコマンドを実行します。 |
| | Space | 選択ステータスを切り替えるか、選択したオプションまたはコントロール コマンドを実行します。 |
| | 矢印キー | コントロールまたは項目のグループのフォーカスまたは選択を移動します。 |
| タブ コントロール | Ctrl + Tab | 次のタブに移動します。 |
| | Ctrl + Shift + Tab | 前のタブに移動します。 |
| | Ctrl + PageDown | 次のタブに移動します (Ctrl + Tab と同じです)。 |
| | Ctrl + PageUp | 前のタブに移動します (Ctrl + Shift + Tab と同じです)。 |
| | 矢印キー | コントロールにフォーカスがあるとき、タブ間を移動します。 |
| コンボ ボックス | F4 | アクティブな一覧の項目を表示または非表示にします。 |
| | Alt + 下または上矢印キー | アクティブな一覧の項目を表示または非表示にします (F4 キーと同じです)。 |
| | 英数字キー | 入力した検索文字に名前の最初の部分が一致する項目に選択を移動します。詳細については、「文字列検索によるナビゲーション」を参照してください。 |
| リスト ビュー | Space | 項目に新しい選択とアンカーを配置します。 |
| | Shift + Space キー | 項目のアンカーから選択を拡張します。 |
| | Ctrl + Space キー | 追加選択または選択解除を行い、選択した項目にアンカーを移動します。 |
| | 矢印キー | フォーカスを移動し、すべての選択と以前のアンカーを解除します。 |
| | Ctrl + 矢印キー | 選択やアンカーを移動せずに、フォーカスを移動します。 |
| | 英数字キー | 入力した検索文字にラベルの最初の部分が一致する項目に選択を移動します。詳細については、「文字列検索によるナビゲーション」を参照してください。 |
| | Ctrl + + (テンキーのプラス記号) | すべての列幅を内容に合わせて調整します。 |
| ツリー ビュー | * (テンキー) | 選択した項目のすべてのサブ項目を表示します。 |
| | + (テンキー) | 選択した項目のすぐ下にあるサブ項目を表示します。 |
| | - (テンキー) | 選択した項目グループのすぐ下にある項目を折りたたみます。 |
| | 右矢印キー | 選択した項目のすぐ下にあるサブ項目を表示します (+ キーと同じです)。 |
| | 左矢印キー | 選択した項目グループを折りたたみ、グループ リーフのルートにフォーカスを移動します。 |
| | Ctrl + 上矢印キー | 選択を変更せずにビューをスクロールします。 |
| | Ctrl + 下矢印キー | 選択を変更せずにビューをスクロールします。 |
| | 英数字キー | 入力した検索文字に名前の最初の部分が一致する項目に選択を移動します。詳細については、「文字列検索によるナビゲーション」を参照してください。 |
| 日時指定 | F4 | コントロールの下にカレンダーを表示します。 |
| | Alt + 下矢印キー | コントロールの下にカレンダーを表示します。 |
| | Alt + 上矢印キー | コントロールの下のカレンダーを非表示にします。 |
| | PageUp | カレンダーの次の月に移動します。 |
| | PageDown | カレンダーの前の月に移動します。 |
| | Ctrl + PageUp | カレンダーの次の年に移動します。 |
| | Ctrl + PageDown | カレンダーの前の年に移動します。 |
| チェック ボックス | Space | オプションの選択または選択解除 (オン/オフ) を行います。 |
| | - | オプションの選択を解除 (オフ) します。 |
| | + | オプションを選択 (オフ) します。 |
| スライダ | 矢印キー | 次の値にスライダを移動します。スライダ コントロール スタイル LBS_DOWNISLEFT を選択すると、スライダの方向を逆に設定できます。 |
| | PageUp と PageDown | 指定した増分でスライダを次の値に移動します。スライダ コントロール スタイル LBS_DOWNISLEFT を選択すると、スライダの方向を逆に設定できます。 |
Windows エクスプローラのショートカット キー
注 : 次の表はショートカット キーの一例で、すべてのショートカット キーを説明するものではありません。
| キー | 機能 |
| F2 | 選択した項目の名前を変更します。 |
| F3 | ファイルまたはフォルダを検索します。 |
| F4 | アドレス バーの一覧を表示します。 |
| F5 | アクティブ ウィンドウを更新するか、アクティブなウィンドウのドキュメントを再度読み込みます。 |
| F6 | ウィンドウまたはデスクトップ上の要素間でフォーカスを移動します。 |
| Alt + 右矢印キー | 表示されているページまたはフォルダから次のページまたはフォルダに移動します。 |
| Alt + 左矢印キー | 表示されているページまたはフォルダから前のページまたはフォルダに移動します。 |
| Alt + Enter | 選択した項目のプロパティを表示します。 |
| Shift + Del | 選択した項目をごみ箱に入れず、完全に削除します。 |
| Home | アクティブ ウィンドウの最初を表示します。 |
| End | アクティブ ウィンドウの最後を表示します。 |
| BackSpace | 1 つ上のレベルのフォルダを表示します。 |
Microsoft Office XP のショートカット キー
注 : 次の表はショートカット キーの一例で、すべてのショートカット キーを説明するものではありません。ショートカット キーの完全な一覧については、該当する Microsoft Office アプリケーションのオンライン ドキュメントを参照してください。
| キー | 機能 |
| Insert | 挿入モードを切り替えます。 |
| F6 | タスク ペインとドキュメント ウィンドウの間を移動します。 |
| Shift + F6 | タスク ペインとドキュメント ウィンドウの間を逆の方向で移動します。 |
| Ctrl + F6 | 複数のウィンドウが開いているとき、次のウィンドウに切り替えます。 |
| Ctrl + Shift + F6 | 複数のウィンドウが開いているとき、前のウィンドウに切り替えます。 |
| Ctrl + Tab | メニューとツール バーの間でフォーカスを移動します (メニュー モード)。 |
| F1 | アシスタント バルーンを表示します (Office アシスタントがアクティブな場合)。 |
| Alt + Shift + F10 | 入力フォーカスの近くにスマート タグのメッセージまたはメニューを表示します。 |
| Ctrl + O | [ファイルを開く] ダイアログ ボックスを表示します。 |
| Ctrl + N | 新規ドキュメントを作成します。 |
| Ctrl + F | [検索] ダイアログ ボックスを開きます。 |
| Ctrl + P | [印刷] ダイアログ ボックスを開きます。 |
| Ctrl + S | 入力フォーカスがあるドキュメントを保存します。 |
| Ctrl + A | すべて選択します。 |