このガイドでは、現在 Blockly に実装されているデフォルトのキーボード ナビゲーションの使用方法について説明します。
キーボード ナビゲーションの使用
キーボード ナビゲーションを正常に行うには、ユーザーが次のタスクを実行できる必要があります。
- ワークスペース内を移動する
- ワークスペースでブロックを接続する
- ワークスペースにブロックを追加する
- ブロックの接続を解除
- ツールボックスを操作する
- フライアウトを操作する
- フライアウトからブロックを挿入する
以下では、Blockly のデフォルトのキーボード ナビゲーションでこれらのタスクを行う方法について説明します。
キーボード ナビゲーションの有効化
キーボード ナビゲーションを有効または無効にするには、Shift+Ctrl+K キーを押します。キーボード ナビゲーションが最初に有効になると、点滅する赤い線がワークスペースに表示されます。これがカーソルです。ユーザーの現在地と、ユーザーがワークスペース内を移動すると最新情報が表示されます。
Enter キーを押すと、ユーザーのマーカーを表す青い線が現在地に作成されます。マーカーは、ブロック挿入のターゲット位置を示します。ワークスペース内でカーソルを動かしても更新されません。
デフォルト カーソルの使用
ワークスペースは、入力、フィールド、接続、ブロック、ワークスペース座標で構成されます。デフォルトのカーソルは、すべてのコンポーネントを異なるレベルに分割することで、ワークスペース内を移動します。
レベル間を移動するには、A キーと D キーを使用します。レベル内を移動するには、W キーと S キーを使用します。
Workspace レベル
Shift+Ctrl+K を押してキーボード ナビゲーション モードを開始します。これにより、カーソルがワークスペースまたはワークスペースの最初のブロックに移動します。カーソルがブロック上にある場合は、A を 2 回押してワークスペース レベルに移動します。ワークスペース上でカーソルを移動するには、Shift+WASD キーを押します。スタックレベルに移動するには、D キーを使用します。
スタックレベル
スタックレベルでは、W キーと S キーを使用して、ワークスペース上のブロックのスタック間を移動できます。このレベルでは、カーソルはスタック内のすべてのブロックを囲む赤い実線の長方形で表示されます。選択したスタック内の最初のブロックに移動するには、D キーを使用します。
ブロックとコネクション・レベル
このレベルには、ブロックと、そのブロック上のすべての外部接続が含まれます。デフォルトのカーソルは、前の接続または出力接続がある場合はブロックをスキップするように設定されています。どちらも存在しない場合、以下に示すようにカーソルがブロックに移動します。
考えられる 3 つの外部接続を以下に示します。
ブロックレベルと接続レベルでは、W キーと S キーを使用して外部接続を移動できます。このレベルでは、現在の接続の輪郭が赤色で点滅してカーソルが表示されます。最初のフィールドまたはブロックの入力に移動するには、D キーを押します。
フィールドと入力レベル
このレベルでは、ブロックのすべてのフィールドと入力が保持されます。フィールドと入力の表示例を以下に示します。
このレベルでは、W キーと S キーを使用して、現在のブロックの編集可能なフィールドと入力間を移動できます。フィールドの場合、カーソルは赤色の塗りつぶしの長方形になります。入力の場合、カーソルは点滅する赤いパズルのピースになります。カーソルが入力にある場合は、D キーを押して、接続されたブロックに移動します。
フィールドにカーソルを合わせ、Enter キーを押して編集します。
Workspace でブロックをつなぐ
- WASD キーを使用して、移行先の接続に移動します。
- Enter キーを使用して接続をマークします。
- WASD キーを使用して有効な接続ポイントに移動する
- I キー(挿入用)を使用して 2 つのブロックを接続します
ワークスペース上でのブロックの移動
通常 Blockly では、ブロックをワークスペースに移動し、目的の位置にドラッグして離します。キーボード ショートカットを使用すると、目的の場所をマークして、移動するブロックに移動してから移動するように指示できます。
- Shift+WASD キーを使用して、ワークスペース上の位置に移動します。
- Enter キーを使用して、ワークスペース上の場所にマークを付けます。
- WASD キーを使用して、移動するブロックに移動します。
- I キーを使用して、マークした場所にブロックを移動します。
ブロックのデタッチ
通常、Blockly では、下位のブロックを選択して親ブロックからドラッグすることで、2 つのブロックを切り離します。キーボード ショートカットを使用すると、解除する接続にカーソルを合わせた状態で X キーを押すことで、ブロックを切断できます。
- WASD キーを使用して、切断する接続に移動します。
- X を使用して接続を切断する
ツールボックスからブロックを挿入する
- T キーを押してツールボックスを開きます。
- カテゴリ間を移動するには W キーと S キーを使用します
- D キーを押すと、フライアウト内のブロックに移動します。
- W キーと S キーを使用してブロック間を移動します
- Enter キーを押して、フライアウトからブロックを挿入します
テスト
ユーザーが興味を持つ可能性が高い 4 つの主な領域は次のとおりです。
- キーマッピング: どのキーをどのアクションにマッピングするか。
- スクリーン リーダー/ロギング/警告のテキスト: スクリーン リーダーがカーソルの位置やエラー、警告を読み上げる方法。
- ワークスペースのナビゲーション: ワークスペース上のさまざまなブロック、フィールド、入力、接続の移動方法。
- カーソルの外観: カーソルとマーカーの表示形式。
これらの API の使用方法について詳しくは、Blockly Keyboard Navigation の Codelab をご覧ください。
テストしたいと思われる領域が他にある場合は、フォームにご記入ください。
よくある質問
Q: キーボード操作に矢印キーを使用しなかったのはなぜですか?
A: スクリーン リーダーは通常、矢印キーを使用します。干渉する意図がないため、WASD 鍵を使用することにしました。
ただし、ユーザーごとにニーズが異なるため、キーマッピングを簡単に変更する方法を作成することを強くおすすめします。
Q: かなり複雑に見えますが、なぜ別のレイヤが必要なのですか?
A: キーボード ナビゲーションについて考えるとき、さまざまなブロック、接続、フィールド、入力、ワークスペース座標間を移動するための構造化された方法が必要でした。
内部的には、これを抽象構文ツリー(AST)で表現します。デフォルトのカーソル実装はこのモデルからそれほど離れていません。これは、デベロッパーが基盤となるアーキテクチャをより深く理解できるようにするためのものです。他にもエンドユーザーにとってわかりやすいcursorsがあります。
制限事項
ブロック以外のコンポーネント(ゴミ箱、ズームボタン、フライアウト ボタンなど)への移動はまだサポートされていません。制限事項の詳細については、オープン キーボード ナビゲーションのbugsのリストをご覧ください。