ДИНАМИЧЕСКАЯ ПРОГРАММНАЯ КЛАВИАТУРА
DYNAMIC PROGRAMMED KEYBOARD

УРОВЕНЬ ТЕХНИКИ
В настоящий момент доступны много различных типов мобильных вычислительных устройств, как правило, обеспечивающих большое количество вычислительной мощности в маленьком корпусе. Одной проблемой, с которой столкнулись мобильные устройства, однако, является ввод данных. Пользователи приучены к вводу данных через клавиатуры, которые могут быть большими и громоздкими, часто более крупными, чем непосредственно мобильное вычислительное устройство. Некоторые мобильные вычислительные устройства решают эту проблему при использовании программной клавиатуры, которая является клавиатурой, отображаемой на дисплее мобильного устройства и которая позволяет пользователю выбирать клавиши, которые выводятся на экран (например, используя стилус, палец пользователя и т.д.). К сожалению, вследствие отсутствия физически разделенных клавиш и часто небольшого размера программных клавиатур, для пользователей остается трудным выбирать клавиши на программных клавиатурах.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Эта сущность изобретения приводится, чтобы ознакомить в упрощенной форме с набором принципов, которые далее описываются ниже в Подробном Описании. Эта сущность изобретения не предназначена, чтобы идентифицировать главные особенности или существенные особенности заявленного объекта изобретения, и при этом оно не предназначено быть использованным, чтобы ограничить контекст заявленного объекта изобретения.
Здесьобсуждается динамическая программная клавиатура. В соответствии с одним или более аспектами, ввод пользователем принимается через программную клавиатуру; программная клавиатура включает в себя множественные клавиши. Информация, описывающая текущую среду ввода для программной клавиатуры, получается, и производится определение, какая одна или более клавиш из множественных клавиш имелась в виду, чтобы быть выбранной вводом пользователя. Это определение делается, основываясь, по меньшей мере, частично на текущей среде ввода.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Одинаковые числа используются на всем протяжении чертежей, чтобы ссылаться на одинаковые признаки.
Фиг.1 - блок-схема, иллюстрирующая пример вычислительного устройства, реализующего динамическую программную клавиатуру в соответствии с одним или более воплощениями.
Фиг.2 иллюстрирует пример устройства отображения, отображающего программную клавиатуру в соответствии с одним или более воплощениями.
Фиг.3 иллюстрирует пример системы, реализующей динамическую программную клавиатуру в соответствии с одним или более воплощениями.
Фиг.4 - блок-схема, иллюстрирующая пример процесса для динамической программной клавиатуры в соответствии с одним или более воплощениями.
Фиг.5 иллюстрирует пример вычислительного устройства, которое может быть сконфигурировано, чтобы реализовать динамическую программную клавиатуру в соответствии с одним или более воплощениями.
ПОДРОБНОЕ ОПИСАНИЕ
Здесь обсуждается динамическая программная клавиатура. Пользовательский интерфейс программной клавиатуры отображается для пользователя. Также получается различная информация, описывающая текущую среду ввода для пользовательского интерфейса программной клавиатуры. Эта информация, описывающая текущую среду ввода, может включать в себя, например, информацию, описывающую текущий тип данных, вводимый пользователем (например, адрес электронной почты, почтовый индекс, город и т.д.); информацию, описывающую язык, обычно используемый пользователем; данные, обычно вводимые пользователем; материальная операционная среда (например, на столе, при ходьбе, в движущемся автомобиле и т.д.); символы и/или слова вблизи поля ввода данных и т.д. Эта информация, описывающая текущую среду ввода данных пользователем, используется, чтобы обнаружить, какая клавиша(и) программной клавиатуры имелась в виду, чтобы быть выбранной пользователем, когда принимается ввод данных пользователем. Динамическая программная клавиатура может таким образом помочь скорости ввода данных пользователем и удовлетворенности пользователя.
Фиг.1 - блок-схема, иллюстрирующая в качестве примера вычислительное устройство 100, реализующее динамическую программную клавиатуру в соответствии с одним или более воплощениями. Вычислительное устройство 100 может быть любым из множества различных устройств. Например, вычислительное устройство 100 может быть настольным компьютером, мобильной станции, устройством развлечения, абонентской установкой, коммуникативно-связанной с устройством отображения, телевизором, беспроводным телефоном, цифровой камерой, игровой приставкой, автомобильным компьютером и т.д. Таким образом, вычислительное устройство 100 может варьироваться от полноресурсного устройства с значительной памятью и процессорными ресурсами (например, персональные компьютеры, игровые приставки) до малоресурсного устройства с ограниченными памятью и/или ресурсами обработки данных (например, традиционные абонентские установки, переносные игровые приставки).
Вычислительное устройство 100 включает в себя модуль управления 102 программной клавиатурой и предсказывающий модуль 104 клавиатуры. Модуль управления 102 программной клавиатурой генерирует программную клавиатуру 108 для отображения пользователю. Программная клавиатура 108 является пользовательским интерфейсом, отображенным на устройстве отображения. Программная клавиатура 108 включает в себя множественные клавиши, которые могут быть выбраны пользователем, как более подробно обсуждено ниже. Вычислительное устройство 100 может включать в себя компонент отображения, через который программная клавиатура 108 может быть отображена, или альтернативно может вывести сигнал или данные на другое устройство или компонент, через который программная клавиатура 108 может быть отображена.
Программная клавиатура 108 включает в себя множественные клавиши, которые могут быть расположены в любом множестве различных раскладок и могут соответствовать любому множеству различных буквенно-цифровых символов, иероглифов, групп символов или слов (например, "http://", "www." и т.д.), других символов и т.д. Одной примерной раскладкой для клавиш является раскладка QWERTY, хотя другие раскладки могут быть альтернативно обеспечены. Кроме того, программная клавиатура 108 является динамической. Эта динамическая сущность относится к свойству предсказывающего модуля 104 клавиатуры, меняющегося с течением времени, и/или пользовательскому интерфейсу, отображаемому как программная клавиатура 108, меняющаяся с течением времени. Как более подробно обсуждено ниже, это изменение может включать в себя изменение расположения клавиатуры; изменения в различных буквенно-цифровых символах или символах, соответствующих клавишам, изменение в чьем расположении на программной клавиатуре 108 соответствуют каким клавишам, изменениям логики области нажатия и т.д.
Программная клавиатура 108 отображается на устройство отображения, и ввод пользователя также вводится через это устройство отображения. В одном или более воплощениях дисплей, выводящий на экран программную клавиатуру 108, представляет сам или соединяется с сенсорным экраном или сенсорной панелью, через которую вводы пользователя могут быть введены касанием пользователя, или приближением в непосредственной близости к областям дисплея, которые отображают клавиши программной клавиатуры 108. Это касание или непосредственная близость могут делаться, используя стилус, перо, палец и т.д. В других вариантах осуществления используются другие указывающие устройства, а не сенсорный экран или сенсорная панель. Может использоваться любое множество других указывающих устройств, чтобы перемещать указатель и вводить ввод, используя программную клавиатуру 108, включая соответственные указывающие устройства, такие как мышь, ползунок, сенсорная панель, шаровой манипулятор и т.д. Другие типы указывающих устройств также могут использоваться, включая абсолютно разъединенные указывающие устройства, такие как перьевые планшеты. Эти различные указывающие устройства обычно включают в себя одну или более кнопок или другой механизм(ы) выбора, который может быть приведен в действие пользователем, чтобы выбрать определенное расположение программной клавиатуры 108 (например, пользователь может нажать кнопку мыши, когда указатель располагается на требуемой области программной клавиатуры 108). Не нужна никакая отдельная материальная клавиатура с материальными клавишами, которые соответствуют программной клавиатуре 108, через которую вводится ввод пользователя.
Фиг.2 иллюстрирует в качестве примера устройство отображения 200, отображающее программную клавиатуру 202 в соответствии с одним или более воплощениями. Программная клавиатура 202 может быть, например, программной клавиатурой 108 из Фиг.1. Нужно принимать во внимание, что примерная компоновка и буквенно-цифровые символы, соответствующие клавишам программной клавиатуры 202, являются только примером, и что может использоваться любое множество различных компоновок и/или соответствующих символов или обозначений, как обсуждено выше. В примере Фиг.2 программная клавиатура 202 не занимает всю область отображения устройства 200 отображения, оставляя место для другой информации, которая будет отображена пользователю устройства 200. Кроме того, программная клавиатура 202 может занять всю (или почти всю) область отображения устройства 200 отображения. Программная клавиатура 202 может также дополнительно включать в себя механизм пользовательского интерфейса для скрытия и показа выполняемых функций, позволяя клавиатуре 202 быть скрытой от представления в определенные моменты.
Как обсуждено выше, любой из множества различных указывающих устройств может использоваться, чтобы ввести ввод на программной клавиатуре 202. Как пример указывающего устройства Фиг.2 иллюстрирует стилус 204, который пользователь может использовать для касания или нависания над определенной клавишей клавиатуры 202. Когда пользователь касается определенной области клавиатуры 202 (со стилусом 204 или указателем, которым управляет другое указывающее устройство) или перемещает стилус 204 (или другой указатель) по определенной области клавиатуры 202, то автоматически обнаруживается определенная клавиша, которую пользователь намеревался выбрать касанием или перемещением стилуса или другого указывающего устройства. Способ, которым выполняется это автоматическое обнаружение, базируется, по меньшей мере, частично на текущей среде ввода, как обсуждено более подробно ниже.
В одном или более воплощениях устройство 200 отображения включает в себя сенсорный экран или сенсорную панель, разрешающую пользователю касаться или близко перемещать стилус, различные области устройства 200 отображения, чтобы позволить пользователю вводить ввод пользователя. Такой сенсорный экран или сенсорная панель могут быть электромагнитным устройством ввода данных, емкостным устройством ввода данных, резистивным устройством ввода данных, устройством ввода данных поверхностной акустической волны, оптическим устройством ввода данных обработки изображений и т.д. Такие сенсорные экраны или сенсорные панели известны специалистам в данной области техники. Нужно иметь в виду, что, если используются другие указывающие устройства (такие как мышь, перьевой планшет и т.д.), то устройство 200 отображения не должен включать в себя сенсорный экран или сенсорную панель.
Возвращаясь к Фиг.1, модуль управления 102 программной клавиатуры также получает вводные данные 110 пользователя. Ввод 110 пользователя ссылается на выбор определенного расположения(й) программной клавиатуры 108. Этот выбор может быть сделан, используя стилус, перо, палец, указатель, которым управляет указывающее устройство и т.д., как обсуждено выше. Ввод данных 110 пользователя обычно представлен модулем 102 как набор из одной или более координат (например, координат X-Y, координат X-Y-Z и т.д.), идентифицирующих расположение(я) программной клавиатуры 108, которые были выбраны пользователем. Как обсуждалось выше, этот выбор может включать в себя касание или перемещение в непосредственной близости от сенсорного экрана или сенсорной панели или другие вводы от других указывающих устройств. Координаты X и Y относятся соответственно к горизонтальному и вертикальному расположениям поверхности ввода (например, поверхности сенсорного экрана, сенсорной панели, перьевого планшета и т.д.). Координата Z представляет расстояние от поверхности ввода и может использоваться, чтобы определить, завис ли пользователь над частью поверхности ввода.
В одном или более воплощениях ввод 110 пользователя является потоком данных (например, потоком координат X-Y, потоком координат X-Y-Z и т.д.). Этот поток данных включает в себя одну или более входную траектории, одну или более траекторию спуска пера и выходную траекторию. Входная траектория обращается к потоку координат прежде, чем манипулятор достигнет поверхности (или прежде, чем механизм выбора будет приведен в действие пользователем). Траектория спуска пера обращается к месту на поверхности, которую достигает указывающее устройство (или где располагается указатель, когда механизм выбора приводится в действие пользователем). Часто есть единственная траектория спуска пера, хотя могут быть получены множественные траектории спуска пера (например, если пользователь возвращает перо в тот момент, когда оно достигает поверхности). Выходная траектория обращается к потоку координат в тот момент, когда манипулятор покидает поверхность (или после того, как механизм выбора приводится в действие пользователем).
Предсказывающий модуль 104 клавиатуры получает ввод 110 пользователя от модуля управления 102 программной клавиатурой. Предсказывающий модуль 104 клавиатуры определяет, основываясь и на вводе 110 пользователя, и на информации, описывающей текущую среду ввода для программной клавиатуры 108, какую именно одну или более клавиш программной клавиатуры 108 пользователь намеревался выбрать с вводом 110 пользователя. Как обсуждено более подробно ниже, эта текущая среда ввода описывает различные аспекты среды, в которой программная клавиатура 108 выводится на экран, такие как текущий тип данных, вводимых пользователем (например, адрес электронной почты, почтовый индекс, город и т.д.), язык, обычно используемый пользователем программной клавиатуры 108, данные, обычно вводимые пользователем программной клавиатуры 108 и т.д.
В одном или более воплощении предсказывающий модуль 104 клавиатуры также определяет, основываясь на вводе 110 пользователя и/или информации, описывающей текущую среду ввода для программной клавиатуры 108, изменения, которые нужно сделать с программной клавиатурой 108. Эти изменения могут быть изменением в расположении клавиатуры и/или изменением в различных буквенно-цифровых знаках или обозначениях, соответствующих клавишам, как обсуждено более подробно ниже.
Фиг.3 иллюстрирует в качестве примера систему, реализующую динамическую программную клавиатуру в соответствии с одним или более воплощениями. Система 300 может быть, например, вычислительным устройством 100 из Фиг.1. Система 300 включает в себя модуль управления 302 программной клавиатуры (который может быть модулем управления 102 программной клавиатуры из Фиг.1) и предсказывающий модуль 304 клавиатуры (который может быть предсказывающим модулем 104 клавиатуры из Фиг.1). Модули 302 и 304 могут быть реализованы как часть того же самого устройства или могут быть реализованы как различные устройства. Кроме того, каждый из модулей 302 и 304 непосредственно может быть реализован единственным устройством или, как вариант, множественными устройствами.
Модуль управления 302 программной клавиатурой генерирует программную клавиатуру 308 и принимает ввод 310 пользователя (аналогично программной клавиатуре 108 и вводу 110 пользователя из Фиг.1). Ввод 310 пользователя являются выбором, сделанным пользователем программной клавиатуры 308, выбором, являющимся выбором определенного одного или большего количества положений программной клавиатуры 308. Этот выбор может быть сделан различными способами, такими как касание дисплея пальцем, пером, стилусом и т.д., перемещением указателя по расположению программной клавиатуры, перемещением пера или стилуса близко к дисплею и т.д. Этот выбор включает в себя одну или более входную траекторию, одну или более траекторию спуска пера, и выходную траекторию, как обсуждено выше. Модуль управления 302 программной клавиатуры может представить ввод 310 пользователя любым множеством различных способов.
В одном или более воплощениях ввод 310 пользователя представлены как набор одного или большего количества координат X-Y. Набор координат X-Y идентифицирует определенное расположение программной клавиатуры 308 в 2-мерном пространстве. Определенное расположение программной клавиатуры 308 определено быть исходным положением (например, нижний левый угол программной клавиатуры 308, центр программной клавиатуры 308 и т.д.), и значения X-Y представляют собой расположения вдоль оси X и оси Y относительно исходного положения.
Кроме того, в одном или более воплощениях дисплей, на котором выводится на экран программная клавиатура 308, поддерживает ось Z. Эта ось Z перпендикулярна 2-мерному пространству координат X-Y. Такие дисплеи могут обнаружить, например, стилус, близко расположенный, но не касающийся дисплея. Расстояние между стилусом и дисплеем записывается как значение Z. Таким образом, при использовании с такими дисплеями, ввод 310 пользователя представлен как набор из одной или более координат X-Y-Z.
Кроме того, в одном или более воплощениях значение дополнительного времени T записывается для ввода пользователя. Значение времени T ссылается на продолжительность выбора пользователя, такую как количество времени, которое стилус пользователя касался определенного места X-Y клавиатуры 308, количество времени, которое стилус пользователя был на определенном расстоянии Z от определенного места X-Y клавиатуры 308, количество времени, которое указатель был отведен (парил) над определенным местом X-Y клавиатуры 308, и т.д. Таким образом, в таких воплощениях ввод 310 пользователя представлен как набор из одного или более X-Y-T или координат X-Y-Z-T. Значение времени T - ввод в предсказывающий механизм 320 клавиатуры и может использоваться, чтобы сделать лучшие прогнозы для текстового ввода, требуемого пользователем, как обсуждено более подробно ниже.
Кроме того, в одном или более воплощениях, множественные положения клавиатуры 308 могут быть выбраны одновременно. Эти множественные положения могли быть, например, двумя или больше положениями, выбранными одновременно (например, используя два пальца), такие как клавиша "Shift" плюс клавиша буквы, клавиша "Control" плюс клавиша буквы и т.д. Эти множественные положения могли также быть перемещением из одного положения в другое (например, сенсорная клавиатура 308 со стилусом в одном положении, сдвинуть стилус через дисплей и затем поднять стилус в другом положении), и т.д. В таких ситуациях ввод 310 пользователя представлен как набор нескольких координат (например, X-Y, X-Y-Z, X-Y-T, X-Y-Z-T и т.д.). Одна или более координат дополнительно также включают в себя параметр траектории, который идентифицирует направление, в которое стилус (или палец, перо и т.д.) перемещается вдоль устройства отображения, или когда в контакте с устройством отображения, или располагался близко к устройству отображения (например, расстояние Z от устройства отображения). В некоторых воплощениях, установив подобное оборудование, пользователи обычно имеют больше погрешностей в наведении на цель в вертикальном направлении и более точны в горизонтальном направлении.
Предсказывающий модуль 304 клавиатуры получает ввод 310 пользователя от модуля управления 302 программной клавиатурой и определяет, основываясь и на вводе 310 пользователя, и на информации, описывающей текущую среду ввода для программной клавиатуры 308, какую одну или более клавиш программной клавиатуры 308 намеревался выбрать пользователь с вводом 310 пользователя. В одном или более воплощениях предсказывающий модуль 304 клавиатуры также определяет изменения, чтобы сделать их в программной клавиатуре 308, базируясь, по крайней мере, частично на текущей среде ввода. Индикация этих изменений отправляется модулю управления 302 программной клавиатуры, который соответственно изменяет отображение программной клавиатуры 308.
Предсказывающий модуль 304 клавиатуры включает в себя предсказывающий механизм 320 клавиатуры, модуль 322 определения режима работы, модуль 324 словарей языка, модуль 326 определенной пользователем лексики, модуль 328 отображения контекста, модуль 330 определения языка, модуль 332 n-грамм статистики слова и фразы. Каждый из модулей 322-332 обеспечивает предсказывающему механизму 320 клавиатуры различную информацию относительно текущей среды ввода для программной клавиатуры 308. Предсказывающий механизм 320 клавиатуры поочередно использует эту информацию относительно текущей среды ввода, чтобы изменить программную клавиатуру 308 (например, раскладку, или символы, или обозначения, соответствующие определенным клавишам) и также определить, которую именно одну или более клавиш программной клавиатуры 308 пользователь намеревался выбрать с вводом 310 пользователя.
Предсказывающий механизм 320 клавиатуры выводит показания 340 о том, какую клавишу пользователь предполагает выбрать с определенным вводом пользователя. Эти показания 340 обычно используются, чтобы обновить пользовательский интерфейс программной клавиатуры 308, и могут также быть представлены для другого компонента (не показан) для использования как ввода символа(ов). Эти показания 340 могут также быть возвращены одному или более из модулей 322-332, чтобы помочь в определении текущей среды ввода. Например, как обсуждено более подробно ниже, модуль 326 определенной пользователем лексики может контролировать слова, которые вводятся пользователем.
Кроме того, в одном или более воплощений предсказывающий механизм 340 клавиатуры также выводит предсказанную строку ввода 360, которая является прогнозом механизмом 340 из определенного слова или фразы, которую вводит пользователь. Вывод этого предсказания позволяет пользователю выбирать опцию "автозаполнение", где предсказанное слово или фраза вводятся без пользователя, уже не должного больше вводить символы слова или фразы. Предсказанная строка 360 ввода обеспечивается для модуля управления 302 программной клавиатурой или какого-либо другого компонента системы (не показан) так, чтобы предсказанное слово или фраза могли быть показаны пользователю. Пользователь может выбрать это показанное предсказанное слово или фразу различными способами через программную клавиатуру 308, такими как, выбор клавиши "Ввод", выбор клавиши "автозаполнение", выбор определенного символа в предсказанном слове или фразе и т.д. Нужно отметить, что пользователь может также дополнительно выбрать только часть предсказанного слова или фразы.
Модуль 322 определения режима работы определяет режим работы устройства, в котором выводится на экран программная клавиатура 308. Режим работы может включать в себя, например, материальное положение и/или географическое положение устройства. Материальное положение ссылается на физическое описание того, как используется устройство. Это описание физических свойств может включать в себя, например, является ли устройство стационарным или движущимся, ориентируется ли устройство в определенном направлении и т.д. Материальное положение может быть определено различными способами, например, быть указанным пользователем устройства, используя датчики движения в устройстве, основанном на периферийных устройствах или других компонентах, основанном на связи с беспроводной базой или точкой доступа и т.д.
Географическое положение ссылается на географическое описание того, где располагается устройство. Географическое расположение может быть определено различными способами, такими как заданные пользователем устройства, используя устройства глобальной системы позиционирования (GPS), основываясь на адресе (например, адресе протокола Интернет (IP)), присвоенного устройству и т.д.
о
Информация, описывающая режим работы устройства из модуля 322 определения режима работы, может использоваться предсказывающим механизмом 320 клавиатуры множеством различных способов. Например, предсказывающий механизм 320 клавиатуры может предполагать, что более трудно точно идентифицировать определенную клавишу, когда устройство перемещается, а не является стационарным, таким образом, механизм 320 может присвоить бльшие области программной клавиатуры 308 определенным клавишам, когда устройство перемещается скорее, чем когда устройство является стационарным. Эти большие области могли соответствовать более крупным клавишам, отображающимся на программной клавиатуре 308, или большим областям нажатия для определенных клавиш, как обсуждено более подробно ниже.
Модуль 324 словарей языка делает один или больше специфичных для языка словарей доступным для предсказывающего механизма 320 клавиатуры. Предсказывающий механизм 320 клавиатуры может автоматически попытаться идентифицировать определенные слова или фразы, которые вводятся пользователем так, чтобы мог быть определен следующий знак (или другой символ), который, вероятно, будет введен пользователем. Например, если пользователь вводит "uni", предсказывающий механизм 320 клавиатуры может автоматически идентифицировать, что пользователь пытается ввести слово "unit", таким образом, следующий вводимый символ пользователем, вероятно, будет буквой "t". Предсказывающий механизм 320 клавиатуры может использовать различную информацию от различных модулей 322-332, чтобы попытаться идентифицировать определенные слова или фразы, которые вводятся пользователем, одним из которых обычно является определенный язык, используемый пользователем. Одна порция информации обеспечивается для предсказывающего механизма 320 клавиатуры модулем 324 словарей языка, чтобы помочь в создании определения, является ли словарь слов и/или фраз для языка(ов), обычно используемого пользователем.
Язык(и), обычно используемый пользователем, может быть идентифицирован различными способами. Например, язык(и) может быть указан пользователем, может быть язык по умолчанию, основанный на местоположении, где продается система 300 (например, если бы система 300 была продана во Франции, то язык по умолчанию был бы французским), может быть основан на предыдущих вводах пользователем (например, если бы большая часть предыдущих вводов была на английском языке, то язык был бы английским), может быть получен из другого модуля (такого как модуль 330 определения языка, обсужденный более подробно ниже) и т.д.
Модуль 326 определенной пользователем лексики собирает и поддерживает информацию относительно слов (или других данных, таких как числа, символы и т.д.), которые обычно вводятся пользователем. Эта информация может собираться и храниться множеством различных способов. В одном или более воплощений сохраняются слова, вводимые пользователем, и соответствующая частота, указывающая, как часто те слова вводятся. Эта частота может быть, например, счетчиком слов, который постепенно увеличивается каждый раз, когда слово вводится, коэффициентом, указывающим, как часто слово встречается относительно других слов, сохраняемых модулем 326 и т.д. Кроме того, пользователь или администратор (например, для корпорации, в которой работает пользователь) могут дополнительно установить новый пользовательский словарь, добавляющий их слова, как они вводятся пользователем (и/или дополнительно включая в себя слова по умолчанию и частоты для пользователя).
Кроме того, слова, которые отслеживаются или сохраняются модулем 326, могут устаревать с течением времени так, чтобы слова, используемые с той же самой частотой, но более давно, были идентифицированы как реже использующиеся пользователем, чем слова, которые вводились совсем недавно. Это устаревание может быть выполнено различными способами, таким как, поддержка записи того, когда определенное слово использовалось (например, в минутах, часах, днях и т.д.), изменяя (например, уменьшая) частоту, соответствующую слову, которое не использовалось для, по меньшей мере, порогового количества времени и т.д.
Как обсуждено выше, предсказывающий механизм 320 клавиатуры может автоматически попытаться идентифицировать определенные слова или фразы, которые вводятся пользователем. Одна порция информации, обеспеченная для предсказывающего механизма 320 клавиатуры модулем 326 определенной пользователем лексики, является информацией относительно слов (или других данных), которые обычно вводятся пользователем.
Модуль 328 отображения контекста поддерживает отображение определенных полей, в которых пользователь может ввести данные в типы данных, которые допустимы для каждого определенного поля. Например, если поле - поле почтового индекса, то достоверные данные могли бы быть числами, но не буквами. Посредством другого примера, если поле - поле адреса электронной почты, то достоверные данные могли быть буквами, числами и некоторыми символами (таким как "@"), но не другими символами (такими как"!" или "#").
Модуль 328 отображения контекста может идентифицировать определенные поля, выводимые на экран для пользователя наряду с программной клавиатурой 308 в любом множестве различных способов. Например, данные, выводимые на экран, могут анализироваться, и определенные поля идентифицироваться (например, поле с меткой "почтовый индекс" или "код почтового индекса", поле с меткой "электронная почта" или "адрес электронной почты" и т.д.). В другом примере различные теги или идентификаторы могут быть включены в данные, выводимые на экран наряду с программной клавиатурой 308, эти теги или идентификаторы указывают модулю 328 отображения контекста на определенные выводимые на экран поля. В другом примере, входные поля могут явно объявить свое существование как свой "тип" или законные входные ограничения через прикладной программный интерфейс (API) операционной системы в системе 300.
Допустимые типы данных для определенных полей могут быть идентифицированы различными способами. В одном или воплощениях допустимые типы данных для определенных полей предварительно запрограммированы или иначе идентифицированы для модуля 328 отображения контекста. Например, различные теги, идентификаторы или другие метаданные, соответствующие данным, выводимым на экран наряду с программной клавиатурой, могут идентифицировать допустимые типы данных для определенных полей, или другие удаленные устройства можно получить доступ, чтобы получить допустимые типы данных для определенных полей. Посредством другого примера API операционной системы в системе 300 может быть вызван, чтобы получить допустимые типы данных для определенных полей. В других воплощениях один или более допустимых типов данных для определенных полей могут быть автоматически идентифицированы модулем 328 отображения контекста. Например, модуль 328 отображения контекста может узнать, что определенный тип данных не допустим для определенного поля, если пользователь пытается ввести данные этого типа, и погрешность возвращается пользователю программой или другим компонентом, обрабатывающим ввод.
Информация об отображении контекста от модуля 328 отображения контекста может использоваться предсказывающим механизмом 320 клавиатуры множеством различных способов. В одном или более воплощений предсказывающий механизм 320 клавиатуры решает, что определенные типы данных, которые не допустимы для определенного поля, не предназначены, чтобы быть выбранными с вводом 310 пользователя. Например, если определенное поле признает только числа, то предсказывающий механизм 302 клавиатуры может решить, что клавиша, которую намеревался выбрать пользователь, будет цифровой клавишей на программной клавиатуре 308, который является самой близкой к вводу 310 пользователя. Как другой пример, если определенное поле признает только числа, то предсказывающий механизм 320 клавиатуры может указать модулю управления 302 программной клавиатуры, что программная клавиатура 308 должна включать в себя только числа и никаких букв.
Как вариант, предсказывающий механизм 320 клавиатуры может решить, что определенные типы данных, которые допустимы, пользователю легче выбрать, чем другие типы данных. Например, если обозначение является допустимым обозначением для определенного поля, но обозначения "!" и "#" не допустимы для того поля, тогда логика нажатия, реализованная предсказывающим механизмом 320 клавиатуры, может увеличить вероятность, что будет выбран символ "@". Эта вероятность может быть увеличена различными способами, таким как, делая нажатие для символа "@" больше, чем для символов "!" и "#". Область нажатия на программной клавиатуре 308 для определенной клавиши обращается к положениям программной клавиатуры 308, которые соответствуют определенной клавише. Так как символы "!" и "#" расположены по обе стороны от символа "@" на многих клавиатурах, то изменение размера нажатия облегчает для пользователя выбор символа "@" касанием программной клавиатуры 308 или вблизи с символом "@". Использование нажатий и логики нажатий, реализованные предсказывающим механизмом 320 клавиатуры, обсуждаются более подробно ниже.
Модуль 330 определения языка идентифицирует язык, используемый пользователем системы 300. Язык может быть идентифицирован различными способами, такими как указание языка пользователем или модулем 330, автоматически идентифицирующим язык. Модуль 330 может автоматически идентифицировать язык, например, получая доступ к языку по умолчанию для системы 300 (например, как записано операционной системой), получая доступ к модулю 328 отображения контекста, чтобы идентифицировать типы данных и их соответствующего языка (например, если обозначения иероглифов - допустимый тип данных, то язык может быть автоматически идентифицирован как японский язык) и т.д.
Язык, идентифицированный модулем 330 определения языка, может быть языком, обычно используемым пользователем системы 300, или либо может быть языком, используемым пользователем системы 300 для определенной записи, сделанной пользователем. Например, если пользователь ввел частичное слово (например, "uni"), то модуль 330 определения языка может автоматически обнаружить язык, вводимый пользователем. Это может быть самостоятельным определением (например, базируемый только на частичном слове) или как вариант может быть в соединении с другой информацией (например, языком(ми), обычно используемым пользователем системы 300).
Модуль 332 n-грамм статистики слова и фразы идентифицирует слова или фразы, которые более вероятны, чем другие, основанные на частичных вводах. Он может включать в себя, например, идентификацию слова, основанного на частичном вводе слова, и идентификацию фразы, основанной на единственном (или многократном) вводе слова. В одном или более воплощениях эта идентификация основана на фактических словах (например, из словаря, предоставленного модулем 324 словарей языка). Например, если вводится слово "соединенные", то модуль 332 может указать, что слово "штаты" более вероятно, чем слово "работа".
В других воплощениях эта идентификация модулем 332 основана на правилах грамматики или других правилах. Например, два глагола обычно не примыкают друг к другу, поэтому, если глагол вводится как первое слово, модуль 332 может указать, что следующее слово во фразе вряд ли будет глаголом. Как другой пример, модуль 332 может решить, что фраза "Соединенные Штаты Америки" часто вводится пользователем системы 300, таким образом, модуль 332 может решить, что, если "Соединенные Штаты" были введены пользователем, то затем "Америки" более вероятно во фразе, чем другие словосочетания.
Информация, идентифицирующая вероятные слова или фразы от слова и модуля 332 n-грамм статистики слова и фразы, может использоваться предсказывающим механизмом 320 клавиатуры множеством различных способов. Аналогично обсуждению выше модуля 328 отображения контекста, информация, идентифицирующая вероятные слова или фразы, может использоваться, чтобы решить, что определенные слова, буквы или другие символы не имеются в виду, чтобы быть выбранными с вводом 310 пользователя и таким образом не разрешить запись таких слов, букв или других символов, или альтернативно могут изменить нажатия, облегчающие для пользователя выбор определенных слов, букв или других символов.
Предсказывающий механизм 320 клавиатуры принимает информацию, описывающую текущую среду ввода от различных модулей 322-332, как обсуждено выше. Предсказывающий механизм 320 клавиатуры использует эту информацию, описывающую текущую среду ввода, чтобы изменить расположение и/или буквенно-цифровой знаки или символы, соответствующие клавишам программной клавиатуры 308, и/или определить, какую клавишу пользователь намеревался выбрать с конкретным вводом пользователя. Предсказывающий механизм 320 клавиатуры повторяет это изменение и/или определение после каждого выбора клавиши(ей), сделанного пользователем. Текущая среда ввода может измениться после каждого выбора клавиши(ей) пользователем, и новая текущая среда ввода может быть принята во внимание предсказывающим механизмом 320 клавиатуры после каждого выбора клавиши(ей) пользователем.
Как обсуждено выше, информация, описывающая текущую среду ввода, может указать, что определенные вводы более вероятны, чем другие. В одном или более воплощений эта информация используется, чтобы изменить раскладку программной клавиатуры 308. Например, информация может использоваться, чтобы изменить раскладку программной клавиатуры 308 от раскладки QWERTY к раскладке цифровой клавиатуры, включать в себя только определенные клавиши из раскладки QWERTY и т.д.
В других воплощениях информация, описывающая текущую среду ввода, используется, чтобы изменить какой-либо буквенно-цифровой знак или другие символы, соответствующие клавишам программной клавиатуры 308. В ответ на такое изменение программная клавиатура 308 показывает новые соответствующие знаки или символы для тех ключей, а не ранее выведенные на экран знаки или символы, и выбор одной из тех клавиш имеет результатом ввод данных пользователем выведенного на экран соответствующего знака или символа. Например, строка клавиш программной клавиатуры 308 может быть изменена от соответствия числам на соответствие символам. В другом примере определенные клавиши могут быть изменены, чтобы соответствовать определенным специфическим знакам и/или символам языка.
В других воплощениях информация, описывающая текущую среду ввода, используется, чтобы изменить поверхности клавиш программной клавиатуры 308. В ответ на такое изменение, программная клавиатура 308 показывает различные поверхности для клавиш. Например, клавиши, которые являются вероятными и/или возможными будущими буквами слов, которые вводятся, могут быть выделены. Как другой пример, клавиши для букв, которые не имели бы результатом слово (основанное на уже введенных буквах), могут быть недоступны, чтобы помочь в визуальном наведении и уменьшить усилие пользователя.
В других воплощениях информация, описывающая текущую среду ввода, используется, чтобы определить, какую клавишу пользователь намеревался выбрать с определенным вводом пользователя. Предсказывающий механизм 320 клавиатуры, включая в себя логику нажатия, использует текущую среду ввода наряду с вводом 310 пользователя, чтобы идентифицировать, какую определенную клавишу на программной клавиатуре 308 пользователь намеревался выбрать.
Один способ, которым предсказывающий механизм клавиатуры может использовать текущую среду ввода и ввод 310 пользователя, должен изменить размеры нажатых целей для определенных клавиш. Как обсуждено выше, каждая клавиша на программной клавиатуре 308 может иметь соответствующую область нажатия, и предсказывающий механизм 320 клавиатуры может присвоить область нажатия каждой клавише. Эта область нажатия для определенной клавиши обращается к местам на программной клавиатуре 308, которые соответствуют этой определенной клавише. Область нажатия для определенной клавиши может быть изменена - область нажатия может быть увеличена в размере предсказывающим механизмом 320 клавиатуры так, чтобы больше мест на программной клавиатуре 308 соответствовало этой определенной клавише, или может быть уменьшена в размере предсказывающим механизмом 320 клавиатуры так, чтобы меньше мест на программной клавиатуре 308 соответствовало этой определенной клавише. Увеличение области нажатия для клавиши, таким образом, обычно облегчает для пользователя выбор этой клавиши, в то время как уменьшение области нажатия для клавиши обычно делает более трудным для пользователя выбор этой клавиши.
Нужно отметить, что это может дать результат в ситуациях, когда область нажатия для одной клавиши больше чем прилегающая клавиша и фактически распространяется на часть дисплея, занятую прилегающей клавишей. Например, предположим, что предсказывающий механизм 320 клавиатуры решает, что буква "d", вероятно, будет следующим вводимым пользователем символом. Область нажатия для буквы "d" может быть увеличена, в то время как область нажатия для прилегающей буквы "f" может быть уменьшена. Область нажатия для буквы "d" может включать в себя места, в которых клавиша для буквы "f" фактически выводится на экран на программной клавиатуре 308. Таким образом, в этом примере, если пользователь должен был нажать место с краю клавиши для буквы "f", предсказывающий механизм 320 клавиатуры решает, что буква "d" - клавиша, которая имелась в виду, чтобы быть выбранной пользователем. Такие места могут встречаться по множеству различных причин, таких, как ходьба пользователя, делающего вводы (когда пользователю более трудно точно нажать требуемую клавишу).
Кроме того, предсказывающий механизм 320 клавиатуры может сделать некоторые клавиши на программной клавиатуре 308 недействительными. Таким образом, предсказывающий механизм 320 клавиатуры не указывает, что недействительная клавиша имелась в виду, чтобы быть выбранной из определенного ввода пользователя независимо от того, каков этот определенный ввод пользователя. Например, если символ "!" определен быть недопустимым, то предсказывающий механизм 320 клавиатуры не указывает, что символ "!" имелся в виду, чтобы быть выбранным из определенного ввода пользователя независимо от того, какой этот определенный ввод пользователя.
k
Предсказывающий механизм клавиатуры 320 может определить, как изменить раскладку и/или буквенно-цифровые знаки или символы, соответствующие клавишам программной клавиатуры 308, и/или определить, какую клавишу пользователь намеревался выбрать из определенного ввода пользователя множеством различных способов. В одном или более воплощениях предсказывающий механизм 320 клавиатуры является обучаемой системой, которая обучается с различными вводами (сочетания ввода 310 пользователя и всевозможной информации, описывающей текущую среду ввода). Эта тренировка предполагает обеспечение механизма 320 различными вводами и правильным ответом так, чтобы механизм 320 мог изучить то, какие ответы должны быть даны в ответ на различные вводы. Начальная тренировка обычно выполняется разработчиками предсказывающего механизма 320 клавиатуры, и дополнительная тренировка может быть выполнена во время работы системы 300. Эта дополнительная тренировка может быть выполнена, например, основываясь на обратной связи, дающей механизму 320 указания, был ли определенный вывод 340 правильным. Любая из множества различных обучающих систем может использоваться, включая системы искусственного интеллекта и другие системы, основанные на статистике. Например, такие обучающие системы могут включать в себя искусственную нейронную сеть, систему байесовского вывода, алгоритм-ближайших соседей и т.д.
Кроме того, предсказывающий механизм 320 клавиатуры может быть реализован как другие системы. Например, механизм 320 может быть реализован, используя любое множество систем статистического анализа, чтобы оценить ввод 310 пользователя, и всевозможную информацию, описывающую текущую среду ввода. Как другой пример, механизм 320 мог быть реализован, используя другие различные правила, критерии или коэффициенты, примененные к вводу 310 пользователя, и всевозможную информацию, описывающую текущую среду ввода.
Таким образом, можно видеть, что программная клавиатура 308 является динамической. В одном или более воплощениях программная клавиатура 308 меняет раскладки и/или буквенно-цифровые знаки или символы, соответствующие клавишам, образуя при этом динамическую программную клавиатуру. Кроме того, в одном или более воплощений то, какую клавишу пользователь намеревался выбрать из определенного ввода, может изменяться, образуя при этом динамическую программную клавиатуру. Такие изменения, относительно того, какую клавишу пользователь намеревался выбрать из определенного ввода, могут быть выполнены с выводом или без вывода индикации пользователю относительно таких изменений.
Фиг.4 - блок-схема, поясняющая в качестве примера процесс 400 для динамической программной клавиатуры в соответствии с одним или более воплощениями. Процесс 400 выполняется системой, такой как система 300 из Фиг.3, и может быть реализован в программном обеспечении, встроенном микропрограммном обеспечении, аппаратных средствах или сочетаниях перечисленного. Процесс 400 показан как ряд действий, которые указывают операции, выполняемые одним или более устройствами, и не обязательно ограничиваются режимами, показанными для того, чтобы выполнить операции соответствующими действиями. Процесс 400 является примером процесса для динамической программной клавиатуры; дополнительные обсуждения динамической программной клавиатуры включены здесь со ссылкой на другие чертежи.
Первоначально, ввод пользователя принимается через программную клавиатуру (действие 402). Этот ввод пользователя является определенным одним или более положений программной клавиатуры, как обсуждено выше. Кроме того, получается информация, описывающая текущую среду ввода (действие 404). Эта информация может быть любым множеством различных типов информации, таких как информация, обсужденная выше в отношении модулей 322-332 из Фиг.3.
Конкретная одна или более клавиш, которые имелись в виду, чтобы быть выбранным вводом пользователя, определяются (действие 406), основываясь, по крайней мере, частично на информации, полученной в действии 404. Индикация одной или более клавиш, которые было решено выбрать пользователем, выводится (действие 408). Индикация предсказанной строки ввода также дополнительно выводится (действие 410). Кроме того, в одном или более воплощениях программная клавиатура изменяется (действие 412), основываясь, по крайней мере, частично на информации, полученной в действии 404. Это изменение может, например, изменять раскладку и/или изменять буквенно-цифровые знаки или символы, соответствующие клавишам программной клавиатуры, как обсуждено выше.
Фиг.5 иллюстрирует пример вычислительного устройства 500, которое может быть сконфигурировано, чтобы реализовать динамическую программную клавиатуру в соответствии с одним или более воплощениями. Вычислительное устройство 500 может быть, например, вычислительным устройством 100 из Фиг.1.
Вычислительное устройство 500 включает в себя один или более процессоров или процессорных блоков 502, один или более читаемых компьютером носителей 504, который может включать в себя один или более компонентов 506 памяти и/или хранилища, одно или более устройств 508 ввода-вывода (I/O), через которое получается ввод 110 пользователя из Фиг.1 (или ввод 310 пользователя из Фиг.3), и шина 510, которая позволяет различным компонентам и устройствам связываться друг с другом. Читаемые компьютером носители 504 и/или устройство(а) 508 ввода-вывода могут быть включены в вычислительное устройство 500 как его часть либо могут быть связаны с ним. Шина 510 представляет собой один или больше из нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт, и процессорную или локальную шину, использующую любую из множества шинных архитектур. Шина 510 может включать в себя проводные и/или беспроводные шины.
Компонент 506 памяти/хранилища представляет собой один или более компьютерных носителей информации. Компонент 506 может включать в себя энергозависимые носители (такие как оперативная память (RAM)) и/или энергонезависимые носители (такие как постоянная память (ROM), флэш-память, оптические диски, магнитные диски и т.д.). Компонент 506 может включать в себя фиксированные носители (например, RAM, ROM, фиксированный жесткий диск и т.д.), так же как и съемные носители (например, карта флэш-памяти, съемный жесткий диск, оптический диск и т.д.).
Методы, обсуждаемые здесь, могут быть реализованы в программном обеспечении, с инструкциями, выполняемыми процессором(ми) 502. Нужно принимать во внимание, что различные инструкции могут быть сохранены в различных компонентах вычислительного устройства 500, таких как процессор 502, в различной кэш-памяти процессора 502, в другой кэш-памяти устройства 500 (не показано), на других компьютерных носителях информации и т.д. Кроме того, нужно принимать во внимание, что место, где инструкции хранятся в вычислительном устройстве 500, может меняться с течением времени.
Одно или более устройств 508 ввода-вывода позволяют пользователю вводить команды и информацию в вычислительное устройство 500 и также позволяют информации быть представленной пользователю и/или другим компонентам или устройствам. Эта информация, представленная пользователю, может включать в себя программную клавиатуру 108 из Фиг.1 или программную клавиатуру 308 из Фиг.3. Примеры устройств ввода данных включают в себя клавиатуру, устройство, управляющее курсором или указателем (например, мышь, сенсорная панель, ползунок, перьевой планшет и т.д.), микрофон, сканер, сенсорный экран, сенсорная панель и т.д. Примеры устройств вывода включают в себя дисплей (например, монитор или проектор), динамики, принтер, сетевую плату и т.д.
Различные методы могут быть описаны здесь в общем контексте программного обеспечения или программных модулей. Обычно, программное обеспечение включает в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют определенные задачи или реализуют определенные типы абстрактных данных. Реализация этих модулей и методов может быть сохранена на читаемых компьютером носителях или передаваться через них. Читаемый компьютером носитель может быть любым доступным носителем или носителями, к которым может получить доступ вычислительное устройство. Как пример и, не ограничиваясь им, читаемый компьютером носитель может содержать "компьютерные запоминающие устройства" и "средства связи".
"Компьютерные запоминающие устройства" включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым методом или технологией для хранения информации, таким как читаемые компьютером инструкции, структуры данных, программные модули или другие данные. Компьютерные запоминающие устройства включают в себя, но не ограничиваются, RAM, ROM, EEPROM, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другие оптические накопители, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие устройства магнитного хранения, или любой другой носитель, который может использоваться, чтобы хранить требуемую информацию и к которому компьютер может получить доступ.
"Средства связи" обычно воплощают читаемые компьютером инструкции, структуры данных, программные модули или другие данные в модулированном сигнале, такие как несущая волна или другой транспортный механизм. Средства связи также включают в себя любые носители доставки информации. Термин "модулированный сигнал" означает сигнал, который имеет одну или больше его характеристик, установленную или измененную таким способом, чтобы закодировать информацию в сигнале. Как пример и, не ограничиваясь им, средства связи включают в себя соединенные проводом носители, такие как проводная сеть или прямое соединение проводом, и беспроводные носители, такие как акустические, радиочастотные, инфракрасные и другие беспроводные носители. Сочетания любого вышеупомянутого также включены в область читаемых компьютером носителей.
Обычно, любая из функций или методик, описанных здесь, может быть реализована, используя программное обеспечение, встроенное микропрограммное обеспечение, аппаратные средства (например, фиксированную логическую компоновку), ручную обработку или сочетание этих реализаций. Термины "модуль", "функциональность" и "логика", использующиеся здесь, обычно представляют собой программное обеспечение, встроенное микропрограммное обеспечение, аппаратные средства или их сочетания. В случае программной реализации модуль, функциональность или логика представляют собой программный код, который исполняет указанные задачи, когда выполняется на процессоре (например, центральном процессоре или центральных процессорах). Программный код может быть сохранен в одном или более читаемых компьютером запоминающих устройств, дальнейшее описание которых может быть найдено со ссылкой на Фиг.5. Функции методов динамической программной клавиатуры, описанные здесь, независимы от платформы, означая, что методы могут быть реализованы на множестве коммерческих вычислительных платформ, имеющих множество процессоров.
Хотя содержание было описано на языке, определенном для конструктивных деталей и/или методологических действий, нужно понимать, что содержание, определенное в прилагаемой формуле изобретения, не обязательно ограничивается определенными функциями или действиями, описанными выше. Скорее, определенные функции и действия, описанные выше, раскрываются как формы в качестве примера реализации формулы изобретения.