Опубликован: 10.04.2013 | Доступ: свободный | Студентов: 485 / 17 | Длительность: 16:52:00
Специальности: Программист
Лекция 4:

Многоточечные жесты

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Стандартные сочетания клавиш

Последнее, что мне хотелось бы включить в раздел, посвященный клавиатуре – это таблица командных сочетаний клавиш, которые вы можете поддерживать в своем приложении. Это дополняет набор эквивалентов языка касаний, и вы, возможно уже привыкли пользоваться многими из них. Это полезно рассмотреть, так как приложения должны быть доступны для использования исключительно с помощью клавиатуры, и реализация сочетаний клавиш, наподобие этих – это один из шагов к удовлетворении данного требования и позволяет пользователям клавиатуры более эффективно использовать ваше приложение.

Таблица 4.6.
Действие или команда Сочетание клавиш
Перемещение фокуса 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. Этот пример позволит вам увидеть полный набор возможностей платформы рукописного ввода, в том числе – распознавание рукописного текста.

Пример работы с платформой рукописного ввода содержит множество команд на панели приложения. Зеленый текст "Hello" в верхнем левом углу был создан после выделения рукописного "Hello" и использования команды Recognition (Распознавание)

Рис. 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-х, стали значительным вкладом в их дело).

Пример отлично распознает мой небрежный текст, написанный мышью

Рис. 4.7. Пример отлично распознает мой небрежный текст, написанный мышью

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >