Введение
Программный компонент
Виртуальная клавиатура — это программный компонент, позволяющий вводить символы без использования физических клавиш. Взаимодействие с виртуальной клавиатурой происходит преимущественно через сенсорный экран, но также может осуществляться иным способом в виртуальной или дополненной реальности.
Мобильные устройства
Виртуальные клавиатуры широко используются как способ ввода текста на экране в устройствах, не имеющих физической клавиатуры, или где для неё нет места, например, в карманных компьютерах, персональных цифровых помощниках (PDA), планшетных компьютерах или мобильных телефонах с сенсорным экраном. Текст обычно вводится либо нажатием на клавиши виртуальной клавиатуры, либо вводом с помощью скользящих движений пальца по экрану. Виртуальные клавиатуры также применяются как функции программного обеспечения эмуляции для систем, имеющих меньше кнопок, чем стандартная компьютерная клавиатура.
ПДК
Четыре основных способа ввода текста в КПК были: виртуальные клавиатуры, управляемые стилусом, внешние USB-клавиатуры, клавиатуры с распознаванием рукописного ввода и распознавание жестов. Многие ранние КПК не были изначально ориентированы на виртуальные клавиатуры. Подход Microsoft к мобильной операционной системе заключался в имитации полноценной клавиатуры, что привело к несколько перегруженной раскладке. Основной проблемой, с которой сталкивались первые КПК, была поддержка технологии мультитач, и, как следствие, проблемы с удобством использования для пользователя.
Первый iPhone
Когда Apple представила первый iPhone в 2007 году, отсутствие физической клавиатуры казалось недостатком. Однако Apple внедрила технологию мультитач в новое устройство, что позволило решить проблемы удобства использования, свойственные КПК.
Внедрение и использование
Обе наиболее распространенные мобильные операционные системы — Android и iOS — предоставляют сообществу разработчиков возможность создавать собственные виртуальные клавиатуры.
Android
SDK Android предоставляет "InputMethodService". Этот сервис обеспечивает стандартную реализацию метода ввода, от которого можно наследовать и настраивать конечные реализации, позволяя сообществу разработчиков Android создавать собственные раскладки клавиатуры. InputMethodService поставляется вместе с представлением клавиатуры (Keyboard View). Хотя InputMethodService можно использовать для настройки ввода с клавиш и жестов, класс Keyboard загружает XML-описание клавиатуры и сохраняет атрибуты клавиш. В результате на устройстве Android можно установить различные версии клавиатуры, и клавиатура является просто приложением, среди наиболее популярных – Gboard и SwiftKey; активация возможна через простое действие в меню настроек Android.
iOS
Apple также предоставляет сообществу возможность разрабатывать собственные клавиатуры, но не предоставляет доступа к словарю или общим настройкам клавиатуры. Более того, iOS автоматически переключается между системной и собственной клавиатурами, если пользователь вводит текст в поле ввода. UIInputViewController является основным контроллером представления для расширения приложения, реализующего собственную клавиатуру. Этот контроллер предоставляет различные методы для реализации собственной клавиатуры, такие как пользовательский интерфейс, получение дополнительного лексикона или изменение основного языка клавиатуры.
Автоматическая коррекция и проверка орфографии
Платформа Android предоставляет фреймворк проверки орфографии, который позволяет реализовать и использовать проверку правописания непосредственно в приложении. Этот фреймворк является одним из API текстовых служб, предлагаемых платформой Android. На основе предоставленного текста, объект сессии возвращает варианты исправлений, сгенерированные системой проверки орфографии. В iOS используется класс UITextChecker – объект, предназначенный для проверки строки (обычно текста документа) на наличие опечаток, широко известный как автокоррекция Apple. UITextChecker использует лексикон для конкретного языка при проверке орфографии. Можно настроить его на игнорирование определенных слов при проверке конкретного документа, а также он способен запоминать новые слова, добавляя их в лексикон. Пользователи могут добавлять пользовательские словари с разрешенными терминами, которые автокоррекция будет воспринимать как обычные слова, и задавать "алиасы" или "текстовые сокращения", когда ввод определенной текстовой строки приводит к ее замене на целевую строку или появлению целевой строки в качестве предложения. В первом случае, эти слова не заменяются другими терминами, но могут быть исправлены на другие варианты. Также может быть предусмотрена возможность исключения нежелательных предложенных исправлений.
Предложения слов
Различные научные работы в начале 2000-х годов показали, что даже до изобретения смартфонов, предсказание слов на основе вводимого текста помогало увеличить скорость набора. На ранних этапах разработки этой функции клавиатуры предсказание в основном опиралось на статические словари. Google реализовал метод предсказания в 2013 году в Android 4.4. Основным стимулом для этого развития послужили сторонние разработчики клавиатур, такие как SwiftKey и Swype. В 2014 году Apple представила iOS 8, включающую новую функцию предсказательного ввода текста под названием QuickType, которая отображает варианты предсказания слов над клавиатурой по мере ввода.
Набор жестов
iOS и Android позволяют разработчикам заменять системную клавиатуру на собственные приложения-клавиатуры. Это привело к появлению новых функций, таких как ввод жестами, который был внедрён в официальную клавиатуру Android после использования в сторонних клавиатурах. Исследования, проведённые компанией Google, подтвердили, что ввод жестами увеличивает скорость набора текста на 22% и снижает количество ошибок почти до нуля. Google также продемонстрировал, что метод ввода жестами полезен и на смарт-часах. Их научные исследования в основном базируются на работах И. Скотта Маккензи и материалах о моделировании касаний пальцами с использованием закона Фиттса.
Тактильная обратная связь
Тактильная обратная связь обеспечивает тактильное подтверждение успешного нажатия клавиши, то есть пользователь слышит и чувствует "щелчок" при нажатии. Используя гистерезис, можно еще точнее имитировать ощущение от физической клавиши. В этом случае ощущается первоначальный "щелчок" при нажатии виртуальной клавиши, а затем, при уменьшении давления пальца после срабатывания клавиши, возникает дополнительный звук и ощущение "возврата", как будто физическая клавиша возвращается в исходное положение. Это поведение описано в статье Алекса Онишчака и Скотта Маккензи 2004 года "Сравнение двух методов ввода для клавиатур мобильных устройств", в которой впервые была представлена тактильная обратная связь с гистерезисом для виртуальной клавиатуры.
Специальные типы клавиатуры
Клавиатуры необходимы в различных цифровых сферах. Виртуальные клавиатуры нужны не только для смартфонов, но и для устройств, создающих виртуальные миры, например, очки виртуальной или дополненной реальности, должны обеспечивать возможность ввода текста.
Виртуальная оптическая клавиатура
Оптическая виртуальная клавиатура была изобретена и запатентована инженерами IBM в 1992 году. Она оптически обнаруживает и анализирует движения руки и пальцев человека, интерпретируя их как действия на физически несуществующем устройстве ввода, подобном поверхности с нарисованными клавишами. Таким образом, она позволяет эмулировать неограниченное количество типов устройств ввода, управляемых вручную, таких как мышь или клавиатура. Все механические устройства ввода могут быть заменены такими виртуальными устройствами, оптимизированными для конкретного приложения и физиологических особенностей пользователя, сохраняя при этом скорость, простоту и однозначность ручного ввода данных. Одним из примеров этой технологии является "Selfie Type" – технология клавиатуры для мобильных телефонов, разработанная компанией Samsung Electronics. Она была разработана для использования фронтальной камеры (камеры для селфи) для отслеживания движений пальцев пользователя, позволяя печатать на "невидимой клавиатуре" на столе или другой поверхности перед телефоном. Она была представлена на выставке Consumer Electronics Show 2020 и ожидалось, что будет запущена в том же году, но этого не произошло.
Клавиатуры дополненной реальности
Основная идея виртуальной клавиатуры в среде дополненной реальности – предоставить пользователю возможность ввода текста. Распространенный подход заключается в отображении плоской клавиатуры в дополненной реальности, например, с использованием Unity TouchScreenKeyboard. Microsoft HoloLens позволяет пользователю выбирать буквы на клавиатуре, перемещая головой. Другой подход был исследован корейской лабораторией KJIST U VR Lab в 2003 году. Их предложение заключалось в использовании носимых устройств для отслеживания движения пальцев, чтобы заменить физическую клавиатуру виртуальной. Они также пытались предоставить пользователю аудиовизуальную обратную связь при нажатии клавиши. Основная цель состояла в том, чтобы предоставить пользователю более естественный способ ввода текста, основанный на привычных ему действиях. Magic Leap 1 от Magic Leap реализует виртуальную клавиатуру с использованием дополненной реальности.
Клавиатуры виртуальной реальности
Задача, как и в дополненной реальности, состоит в том, чтобы предоставить пользователю возможность ввода текста в полностью виртуальной среде. Основная проблема заключается в том, что большинство систем дополненной реальности, представленных на рынке, не отслеживают движения рук пользователя. Поэтому многие из доступных систем предлагают возможность указывать на буквы. В сентябре 2016 года Google выпустила приложение виртуальной клавиатуры для VR-гарнитуры Daydream. Для ввода текста пользователь может указывать на отдельные буквы с помощью контроллера Daydream. В феврале 2017 года Logitech представила экспериментальный подход к переносу своих клавиатур в виртуальную среду. Используя Vive Tracker и игровую клавиатуру Logitech G, можно точно отслеживать каждое движение пальцев, не используя перчатки. 50 таких комплектов были отправлены избранным разработчикам, что позволило им, в сочетании с комплектом разработчика Logitech BRIDGE, протестировать и поэкспериментировать с новой технологией.