Многоточечные жесты
Стандартные сочетания клавиш
Последнее, что мне хотелось бы включить в раздел, посвященный клавиатуре – это таблица командных сочетаний клавиш, которые вы можете поддерживать в своем приложении. Это дополняет набор эквивалентов языка касаний, и вы, возможно уже привыкли пользоваться многими из них. Это полезно рассмотреть, так как приложения должны быть доступны для использования исключительно с помощью клавиатуры, и реализация сочетаний клавиш, наподобие этих – это один из шагов к удовлетворении данного требования и позволяет пользователям клавиатуры более эффективно использовать ваше приложение.
Действие или команда | Сочетание клавиш |
---|---|
Перемещение фокуса | Tab |
Назад (Навигация) | Кнопка "Назад" на специальных клавиатурах; клавиша backspace , везде, кроме текстовых полей; Alt+стрелка влево |
Вперед (Навигация) | Alt+стрелка вправо |
Вверх | Alt+стрелка вверх |
Отмена/Выход из режима | ESC |
Перемещение по элементам в списке | Клавиши-стрелки (и Tab) |
Быстрое по элементам списка к соедующей группе, если выделение не следует автоматически за фокусом | Ctrl+клавиши-стрелки |
Масштабирование (семантическое и оптическое) | Ctrl+"+" b Ctrl+ "-" |
Быстрое перемещение к именованному элементу коллекции | Начало ввода текста |
Перемещение на большое расстояние | Page up/down ( должно работать в пользовательском интерфейсе, поддерживающем сдвиг в горизонтальном и вертикальном направлениях) |
Следующая позиция табуляции или группа | Ctrl+Tab |
Предыдущая позиция табуляции или группа | Ctrl+Shift+Tab |
N-ная позиция табуляции или группа | Ctrl+N (1-9) |
Открыть панель приложения (Windows обрабатывает это автоматически) | Win+Z |
Контектстное меню | Клавиша контекстного меню |
Открыть дополнительную панель/выбрать элемент меню | Enter |
Перейти куда-либо/активировать | Enter (в выделении) |
Выбрать | Пробел |
Выбрать смежные элементы | Shift+клавиши-стрелки |
Закрепить элемент | Ctrl+Shift+! |
Сохранить | Ctrl+S |
Поиск | Ctrl+F |
Печать | Ctrl+P (вызывает Windows.Graphics.Printing.PrintManager.showPrintUIAsync) |
Копировать | Ctrl+C |
Вырезать | Ctrl+X |
Вставить | Ctrl+V |
Новый элемент | Ctrl+N |
Открыть адрес | Ctrl+L или Alt+D |
Вращение | Ctrl+"," и Ctrl+"." |
Проигрывание/Пауза | Ctrl+P (только медиа-приложения) |
Следующий элемент | Ctrl+F (конфликтует с Поиском) |
Предыдущий элемент | Ctrl+B |
Перемотка назад | Ctrl+Shift+B |
Перемотка вперед | Ctrl+Shift+F |
Рукописный ввод
Помимо встроенной программной клавиатуры и панели для рукописного ввода, приложениям может понадобиться предоставить пользователю поверхность, которая может непосредственно принимать данные указателя в виде рукописного ввода (ink). Под этим я подразумеваю больше, чем использование элемента canvas и обработку событий MSPointer для рисования или создания растровых изображений. Рукописные штрихи – это структура данных, которая поддерживает реально вводимую информацию (в том числе – сведения о нажиме, угле наклона сенсора, скорости, если аппаратное обеспечение это поддерживает), что позволяет выполнять распознавание рукописного ввода и другие виды высокоуровневой обработки информации, которые невозможны при работе с растровыми данными. Работа с рукописным вводом, другими словами, напоминае работу с процессом рисования изображения, а не работу с готовым изображением, и это возможно для всех типов указателей ввода.
Поддержка рукописного ввода в WinRT располагается в пространстве имен Windows.UI.Input.Inking (http://msdn.microsoft.com/library/windows/apps/windows.ui.input.inking.aspx). Это API не зависит от конкретного презентационного фреймворка, не предоставляет она и средств визуализации: она имеет дело лишь с управлением структурами данных, которые приложение может вывести самостятельно, на поверхности для рисования наподобие canvas. Вот базовые функции этого API:
- Создание экземпляра управляющего объекта с помощью команды new Windows.UI.Input.Inking.InkManager().
- Назначение атрибутов рисования путем создания объекта Windows.UI.Input.Inking.InkDrawingAttributes и установки атрибутов штриха, таких, как color, fitToCurve (в противоположность прямым линиям, проводимым по умолчанию), ignorePressure, penTip (Windows.UI.Input.Inking.PenTipShape.circle или rectangle), и size (объект Windows.Foundation.Size со свойствами height и width).
- Для элементов ввода, прослушивание событий MSPointerDown, MSPointerMove, и MSPointerUp, которые обычно нужны для целей визуализации. eventArgs.currentPoint это объект Windows.UI.Input.PointerPoint, который содержит идентификатор указателя, координаты точки и свойства наподобие pressure, tilt, и twist.
- Передача объекта PointerPoint методам управляющего объекта processPointerDown, processPointerUpdate, и processPointerUp.
- После события processPointerUp, управляющий объект рукописного ввода создает объект Windows.UI.Input.Inking.InkStroke для проведенного штриха. Штрихи можно получить посредством метода getStrokes управляющего объекта и вывести так, как нужно.
- Жесты высокого уровня могут быть непосредственно конвертированы в объекты InkStroke и переданы управляющему объекту посредством метода addStroke. Объекты штрихов можно удалять с использованием метода deleteStroke.
Управляющий объект, кроме того, предоставляет методы для распознавания рукописного текста на основе содержащихся в нем штрихов, сохранения и загрузки данных и обработки различных режимов, таких, как рисование и стирание штрихов. Полную демонстрацию этого вы можете найти в примере "Ввод: рукописный ввод" (http://code.msdn.microsoft.com/windowsapps/Ink-App-sample-61abaec3), который показан на рис. 4.6. Этот пример позволит вам увидеть полный набор возможностей платформы рукописного ввода, в том числе – распознавание рукописного текста.
Рис. 4.6. Пример работы с платформой рукописного ввода содержит множество команд на панели приложения. Зеленый текст "Hello" в верхнем левом углу был создан после выделения рукописного "Hello" и использования команды Recognition (Распознавание)
SDK так же включает в себя пример "Ввод: упрощенный рукописный ввод" (http://code.msdn.microsoft.com/windowsapps/Input-simplified-ink-sample-11614bbf) для демонстрации сценария, ориентированного на распознавание рукописного текста, как показано на рис. 4.7. Вам следует знать, что это пример, который вовсе не поддерживает касания – он ограничен мышью и пером и использует для активации команд клавиатурные сокращения вместо панели приложения. Взгляните на функцию keydown в файле simpleink.js для того, чтобы увидеть список команд вида "Ctrl + другая клавиша". Клавиша пробел активирует распознавание введенного текста, клавиша backspace очищает рабочую область. Как вы можете видеть на рисунке, я могу думать, что распознавание рукописного текста работает очень хорошо! (Это говорит мне о том, что образцы рукописного текста, которые я передал команде инженеров Microsoft где-то в середине 1990-х, стали значительным вкладом в их дело).