В этом руководстве основное внимание уделяется тому, как использовать навигацию с помощью клавиатуры по умолчанию, как она в настоящее время реализована в Blockly.
Использование навигации с помощью клавиатуры
Для успешной навигации с помощью клавиатуры пользователь должен иметь возможность выполнять следующие задачи:
- Перемещайтесь по рабочему пространству
- Соедините блоки в рабочей области
- Добавьте блок в рабочую область
- Отсоединить блоки
- Навигация по набору инструментов
- Навигация по всплывающему меню
- Вставка блоков из всплывающего меню
Ниже объясняется, как стандартная клавиатурная навигация Blockly выполняет эти задачи.
Включение навигации с помощью клавиатуры
Пользователь может включать и отключать навигацию с помощью клавиатуры, нажав Shift + Ctrl + k . При первом включении навигации с помощью клавиатуры в рабочей области появляется мигающая красная линия. Это курсор. Он показывает текущее местоположение пользователя и обновления по мере его перемещения по рабочей области.
При нажатии Enter в текущем месте создается синяя линия, обозначающая маркер пользователя. Маркер отображает целевое местоположение для вставки блока. Он не обновляется при перемещении курсора по рабочей области.
Использование курсора по умолчанию
Рабочая область состоит из входных данных, полей, соединений, блоков и координат рабочей области. Курсор по умолчанию перемещается по рабочему пространству, разделяя все компоненты на разные уровни.
Для перемещения между уровнями используйте клавиши A и D. Для перемещения по уровню используйте клавиши W и S.
Уровень рабочей области
Войдите в режим навигации с помощью клавиатуры, нажав Shift + Ctrl + k . При этом курсор помещается в рабочую область или в первый блок рабочей области. Если курсор находится на блоке, переместите его на уровень рабочей области, дважды нажав A. Для перемещения курсора по рабочей области используйте Shift + WASD . Для перехода на уровень стека используйте клавишу D.
Уровень стека
На уровне стека вы можете перемещаться между стопками блоков в рабочей области с помощью клавиш W и S. На этом уровне курсор представлен сплошным красным прямоугольником вокруг всех блоков в стопке. Чтобы перейти к первому блоку в выбранной стопке, используйте клавишу D.
Уровень блоков и соединений
Этот уровень содержит блок и все внешние соединения блока. Курсор по умолчанию настроен на пропуск блока, если имеется предыдущее или выходное соединение. Если ни один из них не существует, курсор переместится в блок, как показано ниже.
Ниже показаны три возможных внешних подключения.
На уровне блока и соединения вы можете перемещаться по внешним соединениям с помощью клавиш W и S. На этом уровне курсор представлен мигающим красным контуром текущего соединения. Чтобы перейти к первому полю или вводу в блоке, нажмите D.
Поля и уровень ввода
Этот уровень содержит все поля и входные данные, которые есть в блоке. Примеры того, как выглядят поля и входные данные, показаны ниже.
На этом уровне вы можете перемещаться по редактируемым полям и вводам текущего блока с помощью W и S. Для поля курсор представляет собой сплошной красный прямоугольник. Для ввода курсор представляет собой мигающий красный кусочек головоломки. Когда курсор находится на входе, нажмите D , чтобы перейти к подключенному блоку.
Когда курсор находится на поле, нажмите Enter , чтобы отредактировать его.
Соединение блоков в рабочей области
- Перейдите к целевому соединению с помощью клавиш WASD.
- Отметьте соединение с помощью клавиши Enter
- Перейдите к допустимой точке подключения с помощью клавиш WASD.
- Соедините два блока, используя клавишу I (для вставки)
Перемещение блока в рабочей области
Обычно в Blockly вы перемещаете блок в рабочую область, поднимая его, перетаскивая в нужное положение и отпуская. С помощью сочетаний клавиш вы отмечаете целевое местоположение, переходите к блоку, который хотите переместить, а затем приказываете ему переместить.
- Перейдите к позиции на рабочем пространстве с помощью клавиш Shift + WASD.
- Отметьте это место в рабочей области с помощью клавиши Enter.
- Перейдите к блоку, который хотите переместить, с помощью клавиш WASD .
- Переместите блок в отмеченное место с помощью клавиши I.
Отсоединение блоков
Обычно в Blockly вы отключаете два блока, поднимая нижний блок и перетаскивая его от родительского блока. С помощью сочетаний клавиш вы отключаете блоки, нажимая X при наведении курсора на соединение, которое вы хотите разорвать.
- Перейдите к соединению, которое хотите разорвать, с помощью клавиш WASD .
- Разорвите связь с X
Вставка блока из панели инструментов
- Нажмите клавишу T , чтобы открыть панель инструментов.
- Используйте клавиши W и S для перемещения по категориям.
- Нажмите клавишу D , чтобы перейти к блокам во всплывающем меню.
- Перемещайтесь по блокам с помощью клавиш W и S.
- Нажмите клавишу Enter , чтобы вставить блок из всплывающего меню.
Экспериментирование
Мы считаем, что есть четыре основные области, в которых людям может быть интересно поэкспериментировать:
- Сопоставление клавиш : какие клавиши должны соответствовать каким действиям.
- Текст для программ чтения с экрана/Журналирование/Предупреждения : как программа чтения с экрана должна считывать расположение курсоров, а также любые ошибки или предупреждения.
- Навигация в рабочей области : как пользователь перемещается по различным блокам, полям, вводам и соединениям в рабочей области.
- Внешний вид курсора : как должны выглядеть курсор и маркер.
Дополнительную информацию о том, как использовать эти API, см. в лаборатории кода Blockly Keyboard Navigation .
Если у вас есть другие области, с которыми вы хотите поэкспериментировать и с которыми мы могли бы помочь, заполните форму .
Часто задаваемые вопросы
Вопрос: Почему вы не использовали клавиши со стрелками для навигации по клавиатуре?
О: Программы чтения с экрана обычно используют клавиши со стрелками. Мы не хотели в это вмешиваться и поэтому решили использовать клавиши WASD .
Однако мы понимаем, что у всех разные потребности, поэтому настоятельно рекомендуем создать простой способ изменения сопоставления клавиш .
Вопрос: Это кажется довольно сложным, зачем нам нужны разные слои?
О: Размышляя о навигации с помощью клавиатуры, нам нужен был структурированный способ перемещения по различным блокам, соединениям, полям, вводам и координатам рабочей области.
Внутренне мы представляем это с помощью абстрактного синтаксического дерева (AST). Реализация курсора по умолчанию не сильно отклоняется от этой модели. Это сделано намеренно, чтобы дать разработчикам лучшее понимание базовой архитектуры. Существуют и другие курсоры , которые могут быть проще для понимания конечному пользователю.
Ограничения
Мы пока не поддерживаем переход к неблочным компонентам (например, корзине, кнопкам масштабирования и всплывающим кнопкам). Дополнительную информацию об ограничениях см. в списке ошибок навигации при открытой клавиатуре.