WO2011113057A1 - Multimodal text input system, such as for use with touch screens on mobile phones - Google Patents

Multimodal text input system, such as for use with touch screens on mobile phones Download PDF

Info

Publication number
WO2011113057A1
WO2011113057A1 PCT/US2011/028387 US2011028387W WO2011113057A1 WO 2011113057 A1 WO2011113057 A1 WO 2011113057A1 US 2011028387 W US2011028387 W US 2011028387W WO 2011113057 A1 WO2011113057 A1 WO 2011113057A1
Authority
WO
WIPO (PCT)
Prior art keywords
user
input
zone
word
keys
Prior art date
Application number
PCT/US2011/028387
Other languages
French (fr)
Inventor
David Kay
Pim Van Meurs
Erland Unruh
Santosh Sharan
Gordon Kessler
Mayank Agarwal
Greg Sigel
Original Assignee
Nuance Communications, Inc.
Keisense , Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nuance Communications, Inc., Keisense , Inc. filed Critical Nuance Communications, Inc.
Priority to EP11754256.3A priority Critical patent/EP2545426A4/en
Priority to CN201180023649.XA priority patent/CN103038728B/en
Priority to JP2012557308A priority patent/JP5642809B2/en
Priority to KR1020147022010A priority patent/KR101477530B1/en
Priority to US13/583,840 priority patent/US9104312B2/en
Priority to KR1020127026175A priority patent/KR20130001261A/en
Publication of WO2011113057A1 publication Critical patent/WO2011113057A1/en
Priority to US14/749,621 priority patent/US20150293602A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3322Query formulation using system suggestions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0381Multimodal input, i.e. interface arrangements enabling the user to issue commands by simultaneous use of input devices of different nature, e.g. voice plus gesture on digitizer

Definitions

  • Certain mobile devices such as cell phones, smart phones and the like, require an even smaller keyboard to maintain the form factor common with such devices.
  • Some phones include a small key pad with physical buttons to distinguish each key on the keyboard, with which a user may use her thumbs to actuate the buttons.
  • Other devices use a touch screen that displays a similar sized keyboard. Both of these smaller keyboards are cramped and can provide for slower and/or error prone text entry.
  • touch screen devices have become increasingly popular, consumers continue to demand simpler ways to input text, such as for e-mail, text messaging, instant messaging, and other activities.
  • These touch screen keyboards may suffer from more problems than their small key pad counterparts.
  • the soft keys on the touch screen of such keyboards provide less tactile feedback to a user, which can lead to input errors, as well as other problems.
  • Figure 1 is a graphical representation of a communication interface between one or more remotely located devices and a centralized enterprise server;
  • Figure 2 is a flowchart of a process of creating a word choice in accordance with an embodiment of the disclosed technology
  • Figures 3 depicts a keyboard including various suggested word choices in accordance with an embodiment of the disclosed technology
  • Figure 4 illustrate a method of entering text in accordance with an embodiment of the disclosed technology
  • Figures 5A through 5I are screen shots illustrating user interface methods for inputting text under various implementations of the disclosed technology
  • Figure 6 is a block diagram illustrating a suitable computing system that may employ aspects of the disclosed technology
  • Figure 7A is a flowchart illustrating a process for creating a word choice list based on user input to a device
  • Figure 7B is a flowchart illustrating special function handling
  • Figure 8A is a flow diagram illustrating a process to determine input features, character sets and proximity weight sets from input data.
  • Figure 8B is a flow diagram illustrating a process to identify character sets and appropriate weights for input features;
  • Figures 8C through 8F are screen shots illustrating how a character selection sub-module may identify character sets for different types of input features
  • Figure 9A is a flow diagram illustrating a process to generate a word choice list
  • Figure 9B is a flow diagram illustrating a process for calculating matching metrics for words
  • Figure 10 is a graphical representation of a displayed keyboard, including zone output keys and a selected zone, constructed in accordance with an embodiment of the disclosed technology
  • Figure 11 is a flowchart depicting entry of a password by a user in accordance with an embodiment of the disclosed technology
  • Figure 12 is a flowchart diagram depicting receipt of a password at a receiving device in accordance with an embodiment of the disclosed technology
  • Figure 13 depicts the mapping of a numeric keypad to zone output keys on a QWERTY keyboard in accordance with an embodiment of the disclosed technology
  • Figures 14A and 14B depict selection of zones employing a pointing device in accordance with an embodiment of the disclosed technology
  • Figure 15 depicts a reduced zone configuration in accordance with the disclosed technology.
  • Figure 16 depicts an alternative zone definition scheme in accordance with an alternative embodiment of the disclosed technology.
  • the technology described herein relates to systems and methods for increasing the speed and accuracy with which a user can enter text into devices and in particular into mobile devices.
  • data representative of such text entry is transmitted to a centralized location via the Internet, wireless communication system, or other appropriate data transmission method to a remote centralized server.
  • FIG. 1 a first embodiment in accordance with the disclosed technology is shown.
  • the devices include cellular telephones, smart phones, netbooks or laptop computers or the like.
  • Each of these devices is preferably provided with a communication system, such as a standard Internet connection or other proprietary wireless or wired communication system, as is well known to one of ordinary skill in the art.
  • a communication system such as a standard Internet connection or other proprietary wireless or wired communication system, as is well known to one of ordinary skill in the art.
  • Such synchronizing communications may comprise for example, updating an enterprise email inbox or outbox when an email is sent or received.
  • each of these remote devices performs all major functions on the device and synchronizes information with the enterprise server, such as with the user of email as noted above.
  • certain functions previously limited to implementation on one or more of the remotely located devices are transferred to the enterprise server, thus providing a more similar user experience for all users of the enterprise system.
  • when entering text into one or more of the remotely located devices typically all functionality regarding text correction and auto suggestion and auto fill of text entry words is performed in accordance with information retained on the remotely located device. There exists, therefore, a problem related to updating of data and the like used in such selection, and in particular with potentially frequently updated information on an enterprise wide basis such as email addresses.
  • an email address list is updated for a particular enterprise across an entire group of enterprise users, such update may not be transmitted to one or more of the remotely located devices. If the enterprise is sufficiently large, it may not be practicable to download an entire email list to such a remote device. Thus, the remote device may maintain a local cache with a limited number of text entries, typically such entries determined in accordance with a locally-maintained address list or the like. If an email address is not found for a particular indicated individual, the user may be provided with the option of searching for the email address on a remote server, but this process requires additional steps to be performed by a user. There is further no automatic integration of such a system into the user experience of the individual enterprise user.
  • such a system may not employ any error tolerant text entry as the user must complete the text entry before asking for access to information stored on the enterprise server.
  • a method and apparatus that employ error tolerant text entry techniques at the remote device level, while using such error tolerant text entry results to select suggested text entry information from a centralized database location.
  • error tolerant text entry is provided to a user by providing the user with preferably nine, or other appropriate number of zones each comprising one or more keys. When a zone is selected, a predetermined number of keys comprising the zone are also selected.
  • innovative software is able to determine a desired selected word based upon the zone selection sequence, rather than needing each individual key to be selected. A more detailed description of one example of such a zone text entry method is described at US Patent Application Serial No. 12/500,675 filed July 10, 2009 titled METHOD AND APPARATUS FOR TEXT ENTRY, the contents thereof being incorporated herein by reference.
  • such zone key entry may be performed in the background without providing indications of such zones to a user.
  • a user may be encouraged to be as accurate as possible when typing, great accuracy is not necessary.
  • Other error tolerant text entry systems such as that described in co-assigned United States Patent Application No. 12/186,425 to Matthew Cecil, el al., filed June 14, 2007 entitled "A PROBABILITY-BASED APPROACH TO RECOGNITION OF USER-ENTERED DATA", the entire contents thereof being incorporated herein by reference, may also be employed.
  • more traditional text entry systems, and other known predictive text entry systems may be employed.
  • an error tolerant text entry system may be provided as described in U.S. Patent Application No. 12/500,675 referenced above.
  • a described zone entry text system may be employed on the remotely located device, even without having the complete word dictionary located on such remotely located device.
  • Such error tolerant text entry system may also maintain zone definitions in a manner not displayed to the user.
  • other error tolerant text entry systems may also be employed in accordance with the present disclosed technology.
  • a user first enters text in accordance with a provided text entry system accompanying a particular remotely located computing device at step 210.
  • a provided text entry system accompanying a particular remotely located computing device at step 210.
  • an initial text input processing step is performed to begin to determine possible letter sequences that may be intended by the user.
  • a dictionary search is not performed at this time, but rather locally on the remotely located computing device, information related to the text entry is determined to be used at a later time in a dictionary search.
  • one or more a dictionary search or other database search is performed by transmitting the predictive text entry information to the enterprise server.
  • it is not merely text keys entered that are transmitted, but rather such data as has been determined in accordance with the initial error tolerant text entry processing is transmitted.
  • all other keys defined to be in the zone with the selected key, whether these zones are fixed or dynamic, available to the user or not, are transmitted to the enterprise server for further processing in accordance with the disclosed technology.
  • the received predictive text entry information entered in any of the one or remote devices can be applied to any number of consistently maintained enterprise wide databases.
  • Figure 3 shows a keyboard 100 in which the keys are divided to be in a number of zone.
  • each time one or more keys indicating a particular zone is selected from the keyboard 100 all of the keys in the zone represented by the selected key are passed to the predictive text algorithm.
  • candidate words represented by the keys selected in each zone are determined locally and transmitted to the enterprise server.
  • a list of the zones selected by the user is send to the enterprise server to determine a list of possible candidate words.
  • the list of possible words is analyzed by the enterprise server to determine one or more suggestions of potential word selections to the user that are then displayed on a screen of the remotely located device, such as is shown in Figure 3 at 310.
  • These word suggestions 330 are based upon the entered key sequence, taking into account all of the keys at each entry associated with the zone of the selected key.
  • Word choice 340 depicts the most likely, or most common, word determined to be intended by the user as determined from one or more applicable databases located on the enterprise server.
  • step 250 Selecting a suggested word replaces the entered word with the selected suggestion at step 250. If none of the words are selected, processing passes back to step 210 in Figure 2 where further text entry is received from a user. Upon such additional text entry, the steps noted above are preformed again, thus providing potentially different words for user selection, or narrowing choices down for a user. Upon selection of one of the presented words by the user, such selected word is input to the remotely located computing device, and processing ends until the entry of another text sequence by the user.
  • the user can train the system to add words to its dictionary or the system can be set to add words automatically after a preset number of times that the word has been entered.
  • a dictionary not only can a dictionary be modified on an enterprise wide platform, entry of text by a particular user employing a remotely located computing device may result in the addition of such a text entry to a database or dictionary for subsequent use by any enterprise user.
  • local databases may also be maintained for text entries that need not be made available to the enterprise as a whole.
  • An exemplary predictive text algorithm is depicted in United States Patent Application No. 12/186,425 referenced above.
  • Such an algorithm utilized in accordance with the present disclosed technology addresses the predictive text requirements of the disclosed technology.
  • a user interface provided to a user on one or more of the remotely located computing devices will provide a character (or string of characters associated with one or more selected zones) to an algorithm at an enterprise location, and the algorithm will interpret that set of characters and return a result from the enterprise server to a user interface at the remotely located computing device in the form of one or more suggested word selections.
  • the enterprise server may return an indication of an inability to properly parse out a word selection, thereby indicating that the user has not yet entered enough letters as of yet.
  • user context, history or the like, in accordance with the particular individual user, or in accordance with the collective experience of the full set of enterprise users may be employed to aid in such suggested word selection.
  • the described predictive text algorithm may be employed, the present disclosed technology may be used with any appropriate text parsing or predictive text algorithm.
  • the predictive text algorithm uses a matrix of probabilities to the predictive text algorithm knows that for each character pressed, the user could have meant characters to the left, right, above or below, or the other characters in the zone indicated in as described above. Once the algorithm knows which characters are probable (based upon the keys associated with a selected key, the algorithm then runs a search against a dictionary preferably provided at an enterprise server location as accessible to a plurality of enterprise users, as is more completely described in the "425 application referenced above. Any words that match the string of probable characters are designated and then preferably scored based on distance between characters, frequency, probability, and any number of other characteristics that may be indicative of a user intention.
  • the system may also adopt over time to give a higher probability of selection to frequently used patterns of a particular user, or to particular groups of users in an enterprise setting.
  • the prediction mechanism may be personalized for a particular user, even if that user is selecting words from a common centralized enterprise dictionary or database.
  • Such personalization may comprise providing selections based upon a frequency of selection of words by a particular user during a predetermined preceding time period. Thus, the more a user uses a particular word, the more likely it may be to be selected again, and the more likely it will be suggested to the user. This personalization may be particularly useful in such a situation as when a user is entering an email address from a centralized, enterprise wide email list.
  • Such personalization need not be limited to a single person. Rather, entry of particular email addresses may be accumulated for a group of people or the like, thus allowing for a department or the like to generate a preferred list of email addresses. This selection may also be applied to standard words or other sequences that may be selected in accordance with a text entry system. Such personalization may provide a weighted selection system in which the words or email addresses that are selected most recently or frequently are provided first to a user followed by words selected at an earlier time, or less frequently.
  • the personalization of a user dictionary is not limited to words commonly or recently selected by a user.
  • the dictionary may also be customized based on recent behavior of the user. If a user is searching the internet for web pages devoted to particular topic, words from those web pages can be classified and added to the dictionary as more likely choices. For example, if a user is viewing web pages on their remote device associated with food and cooking, then when the user enters the keys "d i s e r t" the word search algorithm uses the recent history to suggest the word "dessert" before the word “desert.” Similarly, temporal and geographical considerations can be used by the text selection algorithm. For example, the GPS location of the remote device can be detected and sent to the enterprise server. If is known that a user is located in the mountains, then the text prediction algorithm is trained to suggest that a text entry of "how is the snor?" should be "How is the snow?” as opposed to "How is the show?"
  • information about the recent browsing history, current location, e-mails read, GPS location etc. is send to the enterprise server and maintained in a file associated with user in order to customize a dictionary or to aid in selecting likely words for the user based on their recent behavior.
  • a displayed keyboard represents a full QWERTY keyboard, but may comprise any other desired configuration.
  • Such keyboard may comprise a virtual keyboard, or a physical keyboard including hard keys associated with one or more letters to be provided for text entry.
  • the disclosed technology has been described as generally making reference to such a keyboard, any number of input devices, mechanisms, or schemes may be employed.
  • the disclosed technology is similarly applicable to text input on a traditional mobile phone with 9 or 12 key number pad or 4-way directional key.
  • the disclosed technology may be applicable to use of a scroll type wheel, such as that provided on an Apple Ipod ® device. In such a situation, it may be beneficial to define zones in a circular configuration so that movement along the scroll wheel results in movement along a circle of zone selection.
  • the disclosed technology may also be applied to a mobile or other device using a scrolling device, or otherwise comprising only one or two directional indication keys.
  • a scrolling device or one or two direction keys the predefined zones are preferably provided with a predefined sequence, such as perhaps left to right, then top to bottom, so that upon scrolling or utilizing a directional key, a user is forwarded through each of the predefined zones, highlighting or otherwise indicating the presently selected zone. Pressing in the scrolling device, or other method of selection allows a user to choose the zone, and then scrolling is employed to move to a next zone for selection.
  • the disclosed technology may further be applied to a projected keyboard where various sensing mechanisms determine where a user touches a projected keyboard. As the accuracy of such sensing is likely difficult to determine, allowing a user to select from a smaller number of larger zones would be quite beneficial.
  • a rapid text entry system and method leverage error tolerant predictive text algorithms.
  • a user can employ his familiarity with QWERTY keyboard (or other common keyboard layouts) and enter shorter microgestures of two or three letters that comprise less than an entire word. Shorter words can be entered with one such microgesture, while longer words may use two or more microgestures.
  • the text entry system described below overcomes at least one major drawback of prior systems namely, the requirement that the user enter the entire intended word entry without lifting his finger and thus provide a single trace for an entire intended word.
  • a text entry system notes a starting and ending location for each microgesture. Furthermore, if a bend is detected in the microgesture entered by the user, it is determined that a third, middle letter was intended. A number of different methods may be used to determine the intended middle letter. First, a location of the bend in the microgesture may be determined. Second, a direction moved from the starting position may be provided to a text parsing algorithm to help select among a number of possible next letter text entries, given the start and endpoint inputs. Alternatively, a recognition of the existence of such a bend may be determined, thus indicating that a middle letter was intended. The text parsing algorithm may then assist in determining such letter without any additional help, as if it had encountered a missing letter in a more traditional text entry system.
  • a first microgesture is determined, the selected letters are input to a text selection algorithm, and word suggestions and the like are provided to a user in a more traditional format. If no word is selected, a next tap of a key, or a next microgesture is determined to be part of text entry for a same, longer word.
  • users slide their fingers between a number of characters on the keyboard instead of lifting and pressing each intended letter to be entered. It has been determined that some users prefer such sliding to neighboring characters instead of tapping each character individually, because it is more convenient and reduces the potential for text entry error as compared to a traditional tap entry system where the user may tap the wrong key if required lift their finger and press each key in succession. Further, the user is able to avoid any type of repetitive stress issues, and may be able to enter text more quickly.
  • the user has the option and flexibility of entering text as he or she prefers. Such preferences may be based upon particular input device, particular word being entered, etc.
  • users are provided with a most flexible option and can choose to enter with microgestures, tapping, or a combination of both based on convenience.
  • Microgestures allow users to select 2 or 3 characters at a time with a single microgesture.
  • One further benefit of such microgestures is that users do not have to mentally or physically trace a complete path for a word before the predictive text algorithm begins suggesting corresponding words. Tracing a path for longer words can be confusing and difficult. Users tend to forget which characters of a word they have already entered and tend to misspell. Tracing paths for long words may also result in mental and/or physical fatigue. Further, because an apparatus receiving a path tracing an entire word must wait for completion of that word before processing the input data, it is not possible to provide automatic completion of such text entry, or suggestion of possible intended word entries. Thus, the user must complete tracing of the entire word, and only then can the system provide word suggestions.
  • microgeture input system of the disclosed technology is also useful to input text or words in languages whose alphabets do not fit onto a single keyboard and therefore require getting letters/characters from alternative/function/shift keyboards.
  • the system in accordance with one embodiment of the disclosed technology is able to auto-complete an input.
  • the ability to use such an auto-complete enables the user to enter only a partial word and choose from the suggestions provided. This enhances the user experience, helps in faster text entry, and even further improves over prior art systems requiring tracing of an entire word because a user will often be able to select a desired input word after simply entering a first microgesture.
  • the predictive text algorithm in accordance with the disclosed technology supports error tolerant input for gliding or tapping. The user can be sloppy in entering text and need not provide the exact character input to get the desired word.
  • a user need not tap each of the five letters, and indeed may employ one or more microgesture glides to enter the desired letters.
  • any glide or tap entered by the user may be maintained on the display for a period of time to provide sufficient feedback to the user to determine what was entered.
  • such maintenance of glide entry is useful only for the user and preferably may not play a role in determining user input (Of course, it would be possible to use such glide location to determine text input in an alternative embodiment of the disclosed technology.)
  • the trace shown in Figure 4 shows the path that a user may observe on the device, internally the text prediction algorithm in accordance with the disclosed technology is preferably different, only keeping track of the initial and last character of a glide entered by the user.
  • a middle character, if any, is deciphered using vectors associated with movement directions between the first and last letters of the glide, or less preferably, using an approximate location of a bend in the glide entered by the user. Therefore, in accordance with the disclosed technology, the inventive algorithm tries to find words from a database by using the first and last character input with a particular first glide and a middle character, if any. Based upon a determination of a bend in the glide, or use of a wildcard character assuming a three letter glider, the text prediction algorithm returns results. Further calculations may then be performed to filter words where the middle character does not meet the vector direction as drawn by the user.
  • error tolerant text entry may be provided, and thus, the user could trace “r-j-w” and still get “the” as a suggested word.
  • the letter “j” is located downward and to the right of the letter “r” and the letter “h” is located downward and to the right of the letter “t”. Since both vectors are in close proximity, the letter “h” will be chosen as the middle character.
  • the translational movements are preferably coded within a set of predetermined primary directions, these being a reduced set of all possible directions which can be taken between two consecutive key actuations.
  • One example of the reduced set would be the four directions: "up”, “down”, "left” and "right”.
  • the system preferably assigns one of the reduced sets. For example, if the actual direction of movement between two actuations is 10° off vertical, the transitional movement would be assigned, for example to "up”, this being the closest of the primary to a real 10° heading.
  • An exemplary predictive text algorithm for use in accordance with the microgesture text entry system of the present disclosed technology is described in United States Patent Application No. 12/186,425 referenced above.
  • Such an algorithm utilized in accordance with the present disclosed technology addresses the predictive text requirements of the disclosed technology.
  • the user interface will pass the algorithm a character (or string of characters associated with a particular jumper point and zone) and the algorithm will interpret that character (or characters) and return a result to the user interface in the form of one or more suggested word selections, or may return an indication of an inability to properly parse out a word selection thereby indicating that the user has not yet entered enough letters as of yet.
  • user context, history or the like may be employed to aid in such suggested word selection.
  • the present disclosed technology may be used with any appropriate text parsing or predictive text algorithm. As long as jump points can be associated with a number of different inputs, and these inputs can be differentiated from each other and used to select an intended input by a user, the disclosed technology may be employed.
  • the algorithm knows that for each character pressed the user could have meant characters to the left, right, above or below, or the other characters in the zone indicated in accordance with the disclosed technology as described above.
  • the algorithm knows which characters are probable (based upon the keys associated with a selected jumper point, or alternatively, a dynamic or other determination of user intention, i.e. which letters it is likely the user intended, even if a predefined zone is not provided, the algorithm then runs a search against a dictionary, as is more completely described in the '425 application referenced above. Any words that match the string of probable characters are designated and then preferably scored based on distance between characters, frequency, probability, and any number of other characteristics that may be indicative of a user intention.
  • the system can also adopt over time to give a higher probability of selection to frequently used patterns of a particular user.
  • the prediction mechanism may be personalized for a particular user.
  • the predictive algorithm of the proposed system may, in addition to relying upon a traditional dictionary, attempt to further determine user intention by determining the context of a particular text input, such as determining whether the input is for an email, chat, search, or the like, or whether the text input is taking place during a particular television show, or while a music application is playing a song. To the extent a user is likely to use different words and/or other language differences, such context determination may aid in the accuracy of the predictive text algorithm.
  • the algorithm may also receive information about information from stored content, the content of one or more databases, such as a user's contact list or the like, to improve the reliability of the prediction.
  • Such context may be stored within a device being used for text entry, or may be stored remotely in a database accessible over the Internet, or other available network.
  • the list of words is then sorted based on that score and returned to the user interface.
  • the disclosed technology uses the redundancy in the input language or the possible input functionalities to map approximate input into non-ambiguous input per the user intention.
  • device features and functionality may be considered when determining user input, thus perhaps taking into account device limitations when determining such input.
  • While a primary use for the method and system of the disclosed technology may be for small mobile devices or other small electronic devices such as cameras, personal assistants, netbooks and the like, such input system may be equally applicable for entry on, for example, set top boxes or television using a remote control, or other input device, such as a Wii® controller or the like.
  • a user may begin entry by pointing to a key (or zone), depressing a selection button, holding down the button while the user moves an indicator through a second letter (if desired) to a third and final letter of the microgesture, indicated by release of the selection button.
  • a more complete description of entry employing the zone input system and such a remote control in the '676 application previously incorporated herein by reference. Indeed, it is contemplated that the present disclosed technology may be applicable to any input scheme or technology noted in the '676 application, including but not limited to remote control, Wii® remote, hand gestures, or other entry technique.
  • Figure 5A illustrates a user interface suitable for receiving multi-modal user inputs (e.g., a mixture of taps, traces, hovers, other tactile inputs and/or non-tactile inputs) and outputting words.
  • the user interface described herein may form part of any system where it is desirable to convert user input into words, including, but not limited to, mobile phones, personal digital assistants, portable audio systems, laptop computers (including ultra-mobile personal computers), desktop computers, other computing systems, video game systems, televisions, and myriad other consumer and commercial electronic systems or appliances (including, e.g. refrigerators, kiosks, etc.)
  • the user interface comprises a touch screen or similar display that facilitates both tactile input from a user (e.g., by fingertip or by stylus) and visual output. As indicated by the illustrative axes, each point on the display may be described by a unique X-Y coordinate. Additionally, although not shown in Figure 5A, the user interface may receive other inputs, including inputs from a system accelerometer and/or pressure sensors in the touch screen, audio inputs, visual inputs, etc. Additionally, the user interface may produce other outputs, including other visual outputs, audio outputs, haptic outputs, etc.
  • the sample display shown in Figure 5A is for a wireless mobile device, and includes an upper horizontal portion 502 that provides certain system information, such as signal strength, wireless carrier name, time, battery strength, etc.
  • an application bar 504 below the upper horizontal portion 502 is an application bar 504 that includes some information and input buttons for an application, which in the depicted displays is an email application.
  • a text display portion or output area 506 displays text input by the user, which for example, may be associated with an application program.
  • a word suggestion portion or word choice area 508 (described below) displays suggested words to the user based on user input.
  • the user interface display includes at the bottom a virtual soft-key keyboard area 510 that is configured to display a virtual keyboard and receive tactile user input that indicates character selection from that virtual keyboard.
  • a virtual keyboard has multiple defined areas arranged in a particular layout on the display. Each defined area circumscribes a key. Except for special function keys, each key in the virtual keyboard is associated with one or more characters, as described in greater detail herein.
  • characters may include alphabetic letters (with or without diacritic markers such as accents), digits, characters or symbols that represent a phonetic or sub-word component, including Japanese kana, Korean jamos, and Chinese zhuyin, or another linguistic and non-linguistic characters such as digits, and punctuation that are contained in abbreviations, chat slang, emoticons, user IDs or URLs.
  • Special function keys in a virtual keyboard are associated with the performance of special functions related to the input of textual information (e.g., capitalization of a letter, deletion of characters).
  • Special function keys may include, but are not limited to, a shift key, delete key, numerical input key (e.g., to select a keyboard layout suitable for faster entry of numerical and symbolic characters), a multi-keyboard selection key (e.g., to select a different keyboard layout and/or virtual keyboard that supports a different character set), a return key, and a space key.
  • a user may provide different types of tactile input to the virtual keyboard area 510, as described in greater detail herein, in order to indicate his selection of a sequence of characters.
  • the user may intend for a set of his tactile inputs to collectively result in the formation of a particular intended word in the output area 506 shown in the user interface display (or at another output),
  • word denotes any type of linguistic object, including, but not limited to, a string of characters, word stem, prefix, suffix, phrase, sentence, abbreviation, chat slang, emoticon, user ID, URL or ideographic character sequence, emoticons or icons.
  • a user's raw tactile input to a virtual keyboard might result in an unintended word being added to the output area that is different than his intended word, if for example, the (1) user is sloppy or inaccurate with his tactile inputs, (2) the user misspells the word, (3) multiple keystrokes are required in order to select a particular character (e.g., if a diacritical marker is needed, or if the virtual keyboard has a half-QWERTY or 12-key layout, such as the one shown in Figure 1 H), (4) the intended word is particularly long, and/or (5) other reasons. Any of these factors may delay the user's entry of the intended word.
  • the disclosed user interface may provide user input received from the virtual keyboard area 510 (and other areas of the touch-sensitive display and/or other inputs) to a disambiguation system or module such as the disambiguation module disclosed herein.
  • the disambiguation module resolves the received user input to generate a suggested list of word choices (a "word choice list") that may be rank-ordered or otherwise organized in a logical fashion.
  • the user interface may then display a subset of the word choice list generated by the disambiguation module in the word choice list area 508 (e.g., in an ordered or grouped fashion). Within the word choice list area, one or more default words may be highlighted (e.g., "are" as shown in Fig.
  • the user may select a word displayed in the word choice area to indicate his intended word (e.g., by providing tactile input within the word choice list area; by depressing a point on the display at or near a special key, such as the space bar; or by providing other input indicative of selection).
  • the user may alternatively review additional results from the word choice list in the word choice list area (e.g., by scrolling or swiping within the word choice area) before selecting a word.
  • the user interface may then add the selected word to the output area 506 (or otherwise output the selected word).
  • the user interface display is described herein primarily as a touch- sensitive touch screen, one having skill in the art will appreciate that the user interface and disambiguation systems and methods described herein may be implemented instead using laser projection keyboards, muscle sensing keyboards, fabric keyboards, motion-sensitive video systems (such as the Nintendo Wii®), virtual reality systems, etc. since these systems are capable of displaying a virtual keyboard and translating user actions into positional information within the displayed keyboard that is analogous to the tactile input of a touch screen.
  • Figures 5B-G illustrate various types of user inputs that may be received by the suitable user interface shown in Figure 5A and analyzed by a disambiguation module to produce a word choice list that is displayed within the user interface.
  • tactile user inputs to a touch screen display are described herein in conjunction with a user's depressing the display with a fingertip.
  • the user may depress a touch screen by any suitable means, e.g., a finger, a stylus, or any other suitable input tool.
  • Figure 5B illustrates how the user interface may receive a series of taps and output a word choice list in response.
  • a tap consists of a user briefly depressing the touch screen at a localized point before lifting his finger.
  • the disambiguation module produces a word choice list, including the default choice "are.” This default choice illustrates how a disambiguation module may correct apparent user errors, since in the English language it is more like a user would intend to create the word "are” instead of the word "ade.”
  • Figure 5C illustrates how the user interface may receive a trace input from a user and output a word choice list in response.
  • a user depresses or places his finger on a point on the touch screen display, and while continually depressing the display, he traces a line within the display with his finger before eventually lifting his finger from the screen.
  • a trace input may be further broken into at least two different types of discrete features: corners and segments.
  • a "corner feature" results upon the occurrence of different types of events during a trace, including, but not limited to a user: (1) initially depressing the screen at the beginning of a trace, (2) lifting a finger off the screen at the end of the trace, and/or (3) abruptly changing direction during the trace. Each pair of corners then demarcates a segment feature that runs along the user's trace path between the two corners.
  • this single continuous trace may be broken into three distinct corner features (corner 1 , corner 2, corner 3) and two segment features (segment 1 extending between corners 1 and 2, and segment 2 between corners 2 and 3).
  • a disambiguation module may produce a word choice list, including the default word "how,” that is displayed to the user via the user interface.
  • FIG. 5D illustrates how the user interface may receive a hover input feature from a user.
  • a hover feature comprises any user input where the user gives special emphasis to a point within the display in a specified manner, which may include pausing a finger near a point, wiggling, encircling or scribbling a finger around a point, decelerating near a point during a trace, providing additional pressure at a point (e.g., as detected by a pressure-sensitive touch screen display), providing a second tap with another finger simultaneously during a trace, etc.
  • Figure 5D shows a hover feature occurring in conjunction with a trace feature, a hover feature may occur in other instances (e.g., in conjunction with a tap feature, e.g. if a tap depression extends beyond a threshold duration).
  • Multi-modal inputs multiple tactile features
  • the user interface described herein permits a user to input different types of input features in any order (e.g., to input a trace followed by two taps, followed by three traces, etc.). Furthermore, the user interface permits a user to pause after inputting a first feature (e.g., a trace), and then resume his input (e.g., to input a second trace or to input a tap). After a pause, a disambiguation module may utilize both the input features detected before the pause and after the pause in order to generate a word choice list.
  • a first feature e.g., a trace
  • resume his input e.g., to input a second trace or to input a tap.
  • a disambiguation module may utilize both the input features detected before the pause and after the pause in order to generate a word choice list.
  • Figure 5E illustrates how the user interface may receive an input from a user that comprises different types of tactile input features and, in response, displays a word list that is generated using all of the multiple input features.
  • the disambiguation module uses the totality of all of the input features (i.e., a first trace (consisting of three corners and two segments), a tap, and the second trace (consisting of two corners and one segment), the disambiguation module updates the word choice list so that the default word displayed in the user interface is "however.”
  • Multi-modal inputs Tactile input features and audio inputs
  • the user interface described herein also permits a user to mix multiple tactile inputs and audio inputs in a complementary fashion.
  • the user interface and/or disambiguation module may further comprise a voice recognition module configured to parse and/or disambiguate an audio input into words and/or word choice lists.
  • the user interface may permit a user to provide an audio input in order to select a word from a word choice list that was initially generated by tactile user input.
  • the user interface may permit a user to select, via tactile input (e.g., a trace input), a word from a word choice list, wherein the word choice list was generated by audio input (e.g., a word choice list generated using voice recognition software), free form handwriting input (e.g., a word choice list generated using handwriting recognition software) or another mode of input.
  • tactile input e.g., a trace input
  • the word choice list was generated by audio input (e.g., a word choice list generated using voice recognition software), free form handwriting input (e.g., a word choice list generated using handwriting recognition software) or another mode of input.
  • the user interface e.g., using a voice recognition module
  • the user interface generates a textual version of the user's sentence in the output area 506, but with an erroneous fourth word ("reconnaissance").
  • the user selects the erroneous word via a tactile input (e.g., a tap) in the keyboard area 510.
  • the user interface may optionally display a word choice list in the word choice area 508 consisting of the phonetically similar words reconnaissance, recognizable and recognition that is generated by a voice recognition module.
  • the user then traces out the correct word ("recognition") using the virtual keyboard as described previously. By analyzing the trace to determine which word choice it best matches, the system can recognize the user's intended word and correct the mistake.
  • the multimodal nature of the system means that words entered using any particular modality such as speech, tapping, hand writing, speech, etc., can be selected/reselected and corrected. In some modalities, the nature of the ambiguity may result in a single word having more than one word (phrase segment) as an alternative selection, or parts made of more than one word can have a shorter alternative selection. An example is when the user utters: "Do little” which may be recognized as “Doolittle” with alternates of "Do Little” and "Do let a”.
  • a first modality of disambiguation e.g. textual disambiguation or audio disambiguation
  • a first word choice list e.g. an N-best list
  • the members of which share a common characteristic e.g., similar character arrangements on a keyboard or a phonetic similarity.
  • the set of possible words that must be searched to disambiguate the second input e.g., the "dictionary" searched
  • the members of the first word choice list e.g., an N-best list.
  • the suitable user interface of Figure 5A shows a full QWERTY virtual keyboard that displays at most a single character in conjunction with each key.
  • all of the input, output and disambiguation functionalities described herein may be suitably implemented with a user interface that utilizes any style of keyboard layout, including keyboard layouts where a single key is displayed in conjunction with two or more characters.
  • Figure 5H shows a user interface that comprises a virtual keyboard with 12 primary keys arranged in a 4x3 configuration and 2 additional function keys to the side (a space key and a delete key). In such a layout, most of the primary keys are displayed in conjunction with 1-4 different characters.
  • a user In conventional systems that use a similar 12-key layout, a user must typically utilize multiple keystrokes to indicate certain characters (e.g., in conventional systems, four repeated keystrokes or a sustained depression of a key may be required to indicate the letter "i").
  • the disambiguation methods described herein permit a user to generate a word list that includes the intended word "imminent” with only a few traces and a tap.
  • multiple input features e.g., four sequential taps or a long hover over the "4GHI" key) are not required to select the initial letter of the intended word, "i.”
  • the user interfaces described herein do not require repeated or additional input features from a user to indicate repeated characters and/or repeated keystrokes.
  • a user need only input one tactile feature near the "O" key in order to produce the intended word in the generated word list, despite the occurrence of a repeated "oo" within the intended word.
  • the user need only indicate their selection of the "4GHI” button via a single input feature (e.g., a single tap or corner), since the same key is utilized for both the first letter ("h") and second letter ("i") in the intended word.
  • a single input feature e.g., a single tap or corner
  • Figure 51 illustrates an example of how context information may be used to provide more efficient text entry.
  • a user is searching for a contact name within a contacts application program.
  • she traces out a three-cornered trace.
  • the disambiguation module 213 may limit its word lookup to a dictionary that only comprises words (e.g., mostly proper nouns) in the user's contact list.
  • the disambiguation module may use more than just trace matching to rank the word choice list and to suggest a default name. For example, the disambiguation module may promote names that the user frequently enters or accesses, either in the contacts application program, in an email program, or in all application programs.
  • the disambiguation module may still promote the name "DAVID” if the user enters that name with a much higher frequency and/or recency than "DAN.”
  • Figures 5A-5I have emphasized tactile inputs such as taps, traces, hovers and multi-modal inputs related to virtual keyboards, one having skill in the art will appreciate that the disambiguation systems and methods described herein may also utilize other kinds of user inputs, including multi-touch inputs (e.g., two or more fingers upon a touch screen), accelerometer inputs (e.g. inputs that indicate acceleration of the larger system), handwriting/gesture inputs (e.g., free-form tactile input), and/or signals from input buttons.
  • multi-touch inputs e.g., two or more fingers upon a touch screen
  • accelerometer inputs e.g. inputs that indicate acceleration of the larger system
  • handwriting/gesture inputs e.g., free-form tactile input
  • signals from input buttons e.g., free-form tactile input
  • Figure 6 and the following discussion provide a brief, general description of a suitable computing environment in which the disclosed technology can be implemented. Although not required, aspects of the disclosed technology are described in the general context of computer-executable instructions, such as routines executed by a general-purpose data processing device, e.g., a server computer, wireless device or personal computer.
  • a general-purpose data processing device e.g., a server computer, wireless device or personal computer.
  • aspects of the disclosed technology can be embodied in a special purpose computer or data processor that is specifically programmed, configured, or constructed to perform one or more of the computer-executable instructions explained in detail herein. While aspects of the disclosed technology, such as certain functions, are described as being performed exclusively on a single device, the disclosed technology can also be practiced in distributed environments where functions or modules are shared among disparate processing devices, which are linked through a communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
  • LAN Local Area Network
  • WAN Wide Area Network
  • program modules may be located in both local and remote memory storage devices.
  • the disclosed technology is implemented as a sequence of program instructions that are stored in a non-transitory computer readable media or computer readable memory.
  • the instructions are executed by processor electronics to perform the functions described herein.
  • aspects of the disclosed technology may be stored or distributed on tangible computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media.
  • computer implemented instructions, data structures, screen displays, and other data under aspects of the disclosed technology may be distributed over the Internet or over other networks (including wireless networks), on a propagated signal on a propagation medium (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, or they may be provided on any analog or digital network (packet switched, circuit switched, or other scheme).
  • FIG. 6 illustrates a suitable data processing or computing system 600 in which a disambiguation module 613 may operate in order to provide the user interface functionality described herein.
  • the computing system may include a touch screen display 603, other input devices 608, an audio output component 604, other output devices 606, one or more processors or central processing unit (CPU) 601, and at least one memory 610, some or all of which may be carried or housed within a housing (not shown).
  • the computing system 600 may include one or more digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other logic/data processing circuitry.
  • DSPs digital signal processors
  • ASICs application-specific integrated circuits
  • FPGAs field programmable gate arrays
  • the input and output components may include a global positioning system (GPS), a digital camera, a wireless LAN (WiFi) interface, a motion sensor, accelerometer, a Bluetooth® interface, an external USB or similar port, a headphone or headset jack adapter, projection display, haptic output device (e.g., a vibrator), as well as other components or a communication elements.
  • GPS global positioning system
  • WiFi wireless LAN
  • the Bluetooth® interface may communicate with an external wireless communications component, such as a wireless headset, to not only receive audio input but also provide audio output.
  • the computing system 600 is a mobile phone, whereby the system also includes one or more radios coupled to the CPU 601 to permit wireless communications.
  • the output modalities of the system may include text-to-speech, audio, vibration, tactile, visual, etc. outputs. For instance the system can let the user know which input features, characters and/or letters have been recognized by adding a 'vibrate' or 'sound' feedback. Similarly, the system can provide the user with more detailed understanding of the features extracted and the level of uncertainty involved in its determinations.
  • the memory 610 may further comprise an operating system 611 , a disambiguation module 613, and one or more application programs (shown as application programs 1 through N 614-616).
  • the application programs can include word processing programs, slide presentation or image creation programs, email programs, SMS/MMS messaging programs, instant messaging programs, or other text- based communication or text-based document creation programs.
  • the disambiguation module 613 receives user input data from the operating system, including data related to a user's input with the touch screen 603, and uses the received input data to identify a user-selected word, which it may provide to an application program. For example, the disambiguation module 613 may receive a series of notifications from the operating system 611 of finger down events (when a user depresses a point on the touch screen), finger move events (e.g., when a user moves his finger while depressing the screen), and finger up events (e.g., when a user lifts their finger from the touch screen).
  • finger down events when a user depresses a point on the touch screen
  • finger move events e.g., when a user moves his finger while depressing the screen
  • finger up events e.g., when a user lifts their finger from the touch screen.
  • Each of the received notifications may include a time series of position data, e.g., an X-Y set of coordinates (x, y) with a timestamp t (i.e., the coordinates (x, y, t)), which reflect the user's tactile input to the touch screen 603.
  • the touch screen 603 comprises pressure sensors
  • the received notifications may include a time series of position and pressure data, e.g., a set of coordinates (x, y, t, p) that reflect the user's tactile input to the touch screen 603, including the applied pressure, p.
  • the operation system 611 may also provide other kinds of input data to the disambiguation module 613, including multi-touch inputs (e.g., additional sets of simultaneous coordinates (x, y, t) representing a second finger simultaneously contacting the touch screen), audio inputs (e.g., voice inputs), visual inputs, accelerometer inputs, location data, sensor data, etc.
  • multi-touch inputs e.g., additional sets of simultaneous coordinates (x, y, t) representing a second finger simultaneously contacting the touch screen
  • audio inputs e.g., voice inputs
  • visual inputs e.g., accelerometer inputs, location data, sensor data, etc.
  • the disambiguation module may additionally receive and process dynamic context data from the operating system and/or application program(s) in order to facilitate its word identification.
  • Context information is any information that may help inform the disambiguation module of the user's intent, and may include information such as sentence or word-pair context, language context, application-specific context (e.g. data fields/tags), user-specific context, location, time of day etc., as described in greater detail herein
  • the module may receive context information such as the last word selected by the user, other sentence-level context, the virtual keyboard layout utilized, the type of entry field into which the word will be entered (e.g., a "Contacts" field), location data (e.g.
  • the disambiguation module may receive an "N-best" list from another mode of input.
  • An N-best list is a rank-ordered list of suggested words, which may be capped at a fixed size (e.g., N).
  • an N-best list may be generated from another type of disambiguation application program or module, such as a list of words generated from a speech recognition program (e.g., a list of homophones) or a handwriting-recognition program.
  • the disambiguation module may receive a list of words used in the earlier email.
  • the disambiguation module may include a character selection submodule 618, a word list selection submodule 620, a keyboard mapping database 622, a vocabulary module 624, a user context database 626, an application context database 628 and a disambiguation parameter database 630. While depicted as separate modules, a single module, program or routine may incorporate two or more of the modules.
  • the character selection submodule 618 is configured to analyze received user input or input data to extract input features (or "input features"), e.g., taps, corners, segments, hovers, or other features.
  • the character selection submodule 618 is further configured to analyze the extracted input features using a language-independent keyboard mapping database 622 to produce an input sequence that comprises an ordered set of feature objects (e.g. rank ordered set of letters for a word being spelled).
  • Each feature object in the input sequence is associated with a set of characters associated with corresponding keys for one of multiple virtual keyboards or key layouts, a set of proximity weights, and one or more feature types.
  • the proximity weights reflect the likelihood that a user intended to effectuate a particular keystroke via a particular input feature (e.g., a tap, corner, segment, or hover). This likelihood may be based on the proximity between the location(s) of the input feature and the location of the key on the virtual keyboard.
  • the character selection submodule may utilize parameters, policies, and preferences retrieved from the disambiguation parameter database. Further details on aspects of the character selection submodule 618 may be found in the assignee's U.S. Patent Publication No. 2006/0274051 entitled "VIRTUAL KEYBOARD SYSTEMS WITH AUTOMATIC CORRECTION, and incorporated by reference herein.
  • the keyboard mapping database 622 permits the character selection submodule 618 to evaluate the likelihood that that a user intended to effectuate a particular keystroke by inputting a particular input feature. For each type of virtual key layout utilized by the system and displayed to the user on the touch screen, such as a full QWERTY (e.g. 28-key, 32-key, or more), 14-key half-QWERTY keyboard, 12-key "numeric" keypad, etc.
  • the keyboard mapping database 622 provides an area-to-key mapping that maps a particular key to a particular defined area or point on the touch screen display, and vice versa.
  • an area-key mapping may define the ⁇ key" using the set of four points of the display: ⁇ (x1 ,y1), (x2,y2), (x3,y3), (x4,y4) ⁇ .
  • an area-key mapping may define the "5JKL" key using the set of four points: ⁇ (x11 ,y11), (x22,y22), (x33,y33), (x44,y44) ⁇ .
  • mappings are possible, such as an x-y center location and radius to define a circle for the virtual keyboard and a map to a corresponding character for that virtual keyboard (where the circles may be intersecting).
  • the keyboard mapping database provides a key-character mapping that maps a particular key (e.g., the "E key") to one or more characters (or for special function keys, to a particular function), and conversely, maps characters to a particular key.
  • a key- character mapping may describe a one-to-many relationship, wherein a particular key is associated with more than one character, including characters that are not displayed on the virtual keyboard to the user of the touch screen.
  • an "E key” may be mapped to two or more of the following characters: E, e, e, e, e, e, E, ⁇ , ⁇ , e, E, e, E, e, E.
  • the "5JKL" key may be mapped to the following characters: 5, %, J, j, K, k, L, I.
  • a single area-key mapping may be related to more than one key- character mapping, e.g., to permit easier multi-lingual input via a single virtual keyboard layout.
  • the use of a keyboard mapping database 622 to disambiguate user input is described in greater detail herein.
  • keys may combine to form Romanization, transliteration or transcription inputs allowing the user to enter foreign characters using standard Latin- based keyboard. Users can type a word using the Latin-1 based keyboard the way it sounds, and the transliteration component will produce a word in its native script. For example typing "serodija" results in the Russian word “ceroflHfl”. One or more Latinl characters can combine to form one or more Russian characters.
  • These mappings can be implemented in a variety of ways, using state machines, or other commonly used methods. This translation, or transliteration layer adds a layer of mapping or additional submodule implemented as probabilities. In cases where there is a one to one mapping, the implementation is straightforward. When there are multiple interpretations, each mapping can be assigned a probability value. For example, in
  • the word list selection submodule 620 is configured to receive the input sequence generated by the character selection submodule.
  • the word list selection submodule 620 may analyze the input sequence using a variety of other inputs in order to generate a rank-ordered or otherwise structured word choice list, such as those shown in Figures 5A-5I.
  • the other inputs that the word list selection submodule 620 may use include data from the vocabulary module 624, parameters retrieved from the disambiguation parameter database 630, received dynamic context data, and context data retrieved from the user context database 626 and the application context database 628.
  • the word list selection submodule 620 is described in greater detail herein.
  • the vocabulary module 624 provides one or more dictionaries that define a set or logical group of words.
  • an "American-English” dictionary may define a logical group of words in common usage by English-speaking Americans
  • an "American-English-Msg” dictionary may define a logical groups of words (including emoticons) commonly used by English-speaking Americans in text and multimedia messages (e.g. SMS, MMS or similar messages).
  • the vocabulary module 624 may also provide additional language information, such as static or dynamic frequency information within a particular logical group of words (e.g., within a particular language) and/or particular context.
  • the additional language information may include frequency information in accordance with a linguistic model, which may include one or more of: frequency of occurrence of a word in formal and/or conversational written text; frequency of occurrence of a word when following certain preceding word or words; proper or common grammar of the surrounding sentences; frequency of the word being utilized as a left-stem or right-stem (or prefix or suffix), etc.
  • transition probabilities may be assigned to particular transitions, linking one class of prefixes to likely stems or stems with one or more classes of suffixes while rejecting prefixes with other words in the dictionary which would form illegal words.
  • the word work may have high transition probabilities with suffixes -er, -ers, -ing, -s and -ed, which often form valid words.
  • the disambiguation module does not need to change its dictionary if the user changes his keyboard configuration. Furthermore, by using a keyboard mapping database 622, the disambiguation module may be utilized within any system regardless of the keyboard layout.
  • the disambiguation parameter database 630 may store various parameters, policies, and preferences for performing interaction or input feature extraction, character selection and/or word selection.
  • the disambiguation parameter database may include parameters and policies that aid in the selection and application of distance functions, proximity metrics, matching metrics and postprocessing steps, all of which are described herein.
  • the user context database 626 and the application context database 628 may provide context information to the character selection submodule 618 and/or the word list selection submodule 620 to inform its processing; these submodules may also receive dynamic context information from an application program and/or the operating system.
  • the entry of text, the selection amongst alternatives, contextual information and multiple modalities are managed by the disambiguation module.
  • the system may use inputs from the user, the context of the application, external sensors and context resources and disambiguation, and correction approaches to determine the user's intent as noted herein. Based on an understanding of the user's intent, the system maintains the context and state of the application, and manages the composition of inputs and synchronization across multiple input modalities.
  • the system can produce multimodal output to be presented to the user.
  • the interaction, the business logic and the context and state may be managed through an interaction script or more complex state machines (State Chart XML or SCXML) or languages which are used for the control of user interfaces such as XHTML+Voice Profile or SALT.
  • State Chart XML or SCXML complex state machines
  • languages which are used for the control of user interfaces such as XHTML+Voice Profile or SALT.
  • the user context database 626 may include any historical information relating to the user's prior character and/or word selection behavior, such as previous words utilized by the user, the frequency of words entered by the user, and common phrases employed by the user.
  • user context information include: word pairs entered by a user, a user's unique vocabulary in a specific application (text messaging vs. email, for example), a user's level of 'sloppiness' (increasing the character region size) while entering text into the system, etc.
  • user context information may reflect how frequently a user selects words from a particular language or what language the user primarily uses.
  • the user context database 626 may track the relative frequency with which the user selects French words versus English words in order to determine the user's "primary language," and then words from that dictionary may be preferred or presented first over words from the other dictionary.
  • some user context information may be reflected in a user-specific dictionary and/or other data structures in the vocabulary module 624.
  • the user context database 626 may also provide user-specific policies and parameters that may override default disambiguation parameters stored in the disambiguation parameters database 230.
  • the application context database 628 may permit the disambiguation module 613 to access historical information related to character or word selection within a particular application program.
  • the application context database 628 may also provide application-specific dictionaries and/or application-specific policies and parameters that may override default disambiguation parameters stored in the disambiguation parameters database 630.
  • Context can also come from text fields in which the information is supposed to be entered.
  • the disambiguation module may be designed to integrate with specific types of application programs that define application-specific fields, tags or labels that may be associated with a particular word entry.
  • the text-field of a form (“Name" or "Email" may be a label that could be utilized to provide context information.
  • the application context database 628 may then correlate a user's historical word entries with application-specific field(s) to provide additional context information.
  • the system may define, in the application context database, application-specific fields and rules (e.g., grammar rules, matching metrics and/or post-processing rules) that reflect how the field information and other context information may be utilized during word selection. These rules may even specify that word suggestions for a particular field can depend on what words a user has entered in other fields. [00121]
  • the system informs the disambiguation module of the intended textual information of the field (name, phone number, date, email address, password) and/or provides it with a grammar which describes the information.
  • the disambiguation module may remember what words users have entered in particular field(s).
  • the disambiguation module would predict that the shipping address field would contain his work address.
  • the disambiguation module would predict his home address in the shipping address field.
  • Other contextual information includes environmental parameters, such as time of day, location, calendar entries, user settings, application settings and system settings.
  • the character selection submodule 618 and/or the word list selection submodule 620 may keep the user context database 626 and/or the application context database 228 current by providing notifications about a user's present behavior. For example, the word list selection submodule 620 may return information to these databases when a user selects a word from a word selection list.
  • the disambiguation module 613 may also receive additional dynamic context data from the operating system and/or an application program.
  • the disambiguation module may additionally comprise voice recognition software configured to disambiguate speech or audio inputs, as described herein.
  • Figure 7A shows a process 700 for disambiguating a series of user input data that may correspond to multi-modal user input in order to permit the selection of a word from a word choice list.
  • the process 700 is performed by the disambiguation module 613 and begins at block 710, when the disambiguation module 613 waits for and receives input data before proceeding to block 730.
  • the disambiguation module 613 receives input data in the form of one or more user input notifications or input events from the operating system, but it may also receive input data from other processes, such as an application program.
  • the disambiguation module may wait for and receive from the operating system a finger down notification, a finger move notification, and/or a finger up notification, each of which is accompanied by a set of (x,y,t) or (x,y,t,p) coordinates, where x is the x- position of a user's finger on the display, y is the y-position of the user's finger, t is the time or a clock reference for those inputs, and p is an optional pressure measurement (for a pressure sensitive screen).
  • the disambiguation module 613 may also wait for other forms of input data, such as voice inputs, accelerometer input, external sensor data, location information.
  • the disambiguation module 613 may receive additional dynamic context data, e.g., from the operating system and/or an application program. For example, it may receive information about the type of application program or the context in which the user is entering text (e.g., the type of field in which the user is typing, e.g., a date field versus a name field).
  • additional dynamic context data e.g., from the operating system and/or an application program. For example, it may receive information about the type of application program or the context in which the user is entering text (e.g., the type of field in which the user is typing, e.g., a date field versus a name field).
  • the period of time that the disambiguation module waits for and receives user input data may vary. For example, in one implementation, the disambiguation module may wait to receive an entire group of notifications corresponding to (1) a finger down notification, (2) the next finger up notification, and (3) all of the finger move notifications that occur in between these first two notifications, before proceeding to block 730. In some other implementations, at block 710, the disambiguation module 613 may continuously analyze incoming user input data to identify other types of logical groupings in the user input data and may proceed to block 730 only when a logical group is received in its entirety.
  • the disambiguation module may continuously analyze received notifications as they arrive to determine if an input feature (e.g., a tap, a corner, a hover, etc.) or special function has occurred (using, e.g., the techniques described herein at block 802 and block 730, respectively) and when a logical group of input data that corresponds to a single input feature or special function is detected, processing of that logical group may then proceed at block 730.
  • an input feature e.g., a tap, a corner, a hover, etc.
  • special function e.g., the techniques described herein at block 802 and block 730, respectively
  • the disambiguation module determines whether the user has provided input that indicates that the disambiguation module should perform a special function, such as word selection, character deletion, or a function related to a special function key (e.g., shift, caps lock, keyboard selection key, etc.). As shown in Figure 7A, if a special function is indicated, processing proceeds to block 780, where the disambiguation module performs the special function in accordance with the process shown in Figure 7B (described herein), before the process proceeds to block 740. Otherwise, if input data does not indicate a special function, the process proceeds directly to block 740.
  • a special function such as word selection, character deletion, or a function related to a special function key (e.g., shift, caps lock, keyboard selection key, etc.).
  • the disambiguation module utilizes the character selection submodule 618 to identify what input features (e.g., taps, corners, segments, hovers, audio inputs, etc.), if any, are indicated by the received input data. Furthermore, at block 740, the disambiguation module utilizes the character selection submodule to generate a feature object for each identified input feature.
  • a feature object includes a character set, a set of feature types, and a proximity weight set. The character selection submodule may perform these tasks in accordance with the processes shown in Figure 8A-8B.
  • the character selection submodule may also characterize each identified input feature using one or more feature types. For example, the character selection submodule may characterize each input feature as a tap, a corner, a segment, a hover, etc. Additionally, the character selection submodule may also determine whether an identified input feature is an "intentional input feature" (or "intentional feature”).
  • An intentional input feature is an input feature that appears more likely to correspond to an intended keystroke by a user as compared to other types of input features. If a feature is not an intentional input feature, it is instead characterized as an "incidental input feature" (or “incidental feature”).
  • intentional input features may be treated differently (e.g. weighted higher) than incidental features, as described herein.
  • the disambiguation module treats all taps and all corners as intentional input features, since these features indicate a distinct and abrupt change in the user's input behavior.
  • the disambiguation module may treat all taps, corners and hovers as "intentional" input features.
  • the disambiguation module may further refine which input features are characterized as intentional or incidental by employing other factors described herein. Characterization of input features is described in greater detail herein with respect to Figure 8A.
  • the disambiguation module may make no distinction and may treat all input features as intentional.
  • the disambiguation module may increment an estimated input length variable (L) to reflect the number of new intentional input features, if any, that were identified at block 740. As described herein, the disambiguation module may later use the estimated input length L to pre-filter dictionaries or for other purposes when generating a word choice list at block 370. Similarly, at block 750 the disambiguation module may additionally update other variables that reflect the composition of the input sequence (e.g., a variable that reflects the number of segment features present in the input sequence).
  • L estimated input length variable
  • the disambiguation module appends any newly generated feature objects to an input sequence.
  • the input sequence reflects the ordered set of all input feature objects created since the user last selected a word.
  • the various feature objects in the input sequence are ordered on the basis of time.
  • the disambiguation module utilizes the word list selection submodule 618 to create a word choice list using the current input sequence and to output this list to the user (e.g., via the word choice list area on a touch screen display). In this way, the disambiguation module gives the user an opportunity to select his intended word.
  • the creation of a word choice list is described in greater detail herein with respect to Figures 9A and 9B.
  • the system may respond by only showing words that start with the selected word.
  • the selection list may also contain objects which are represented by the word. For instance the word love may have an icon in the shape of a heart associated with it.
  • words which are retrieved from different vocabularies or providers, such as the contact dictionary may offer additional options when selected. For instance, if a user has entered a name which matches a name in the contacts dictionary, the user may select to add the phone number, driving directions, e-mail address or any other related object, including an object which represents the contact in a machine readable format (vCard etc).
  • Other words may be sent to 'recognizers' which may recognize keywords, phone numbers, potential calendar entries etc.
  • the recognizers could add an action: add to calendar, call Joey's, make reservation, insert directions and more.
  • the system may launch an activity which at completion returns the user to the activity of text entry.
  • Such activities may be launched with any relevant contextual parameters that may help the activity to be better informed about the intent of the user, including user history, user preferences.
  • the user may want to add a song to the email. By typing the name of the song, artist, album or even such keywords as mp3, song, the user may launch an activity that allows the user to seamlessly attach the object.
  • the word(s) which were selected to cause the start of the activity may be automatically deleted.
  • Figure 7B shows a process 715 for performing a special function indicated by user input data.
  • the process 715 begins at block 782, when the disambiguation module identifies what types of special functions were indicated by the user's input data.
  • the disambiguation module may analyze the proximity of tactile user input to a special function key, a word choice list area, and/or other active area, such as a menu button; may perform speech recognition analysis of voice command inputs; may analyze other tactile gestures (e.g. to detect a swipe, a multi-touch action) or physical gestures (e.g., a shake of a device); and/or may perform a lookup in the disambiguation parameters database to map types of input to a special function.
  • tactile gestures e.g. to detect a swipe, a multi-touch action
  • physical gestures e.g., a shake of a device
  • the disambiguation module determines if the input data indicates that the user has selected a word (e.g., from a word choice list).
  • a word e.g., from a word choice list.
  • User selection of a word may occur, for example, via vocal selection (as described previously), if the user taps, traces or hovers near or over a special key (e.g., a space bar, tab key, enter key, etc.), or if the user taps, traces or hovers on or near a word in the word choice list area.
  • a user may select a word by any other suitable method, such as by shaking a device, pushing an input button, etc.
  • the disambiguation module 613 may provide "auto- spacing" functionality by analyzing the types of input features utilized by the user to determine whether the user's input indicates that she intent to end one discrete word and begin another. In some implementations, the disambiguation module 613 will interpret two consecutive traces in an input sequence (i.e., without another type of input feature like a trace or hover intervening) as an indication that the user intended to (1) select the default word determined for the last trace and the other previous features in the input sequence, and (2) begin a new word starting with the second trace. Thus, at decision block 784, the disambiguation module may determine whether the last two input features were traces.
  • the system may (1 ) proceed to block 792 in order to process the user's selection of the last default word, and (2) restart process 700 with the components of the second trace (i.e., its corners and segments) as the first features in a new input sequence. Otherwise, the system may simply continue the process 700.
  • any other suitable feature combination could be utilized to test for auto-spacing at decision block 784.
  • the disambiguation module 613 may perform auto-spacing upon the occurrence of a particular feature composition within the input sequence; the triggering compositions may be set using disambiguation parameters and preferences in the disambiguation parameters database 630.
  • the auto-spacing feature may be disabled or implemented in a different fashion. For example, if two consecutive traces (or a different triggering condition) is detected, the system may (1) proceed to block 792 in order to process the user's selection of the last default word, and (2) restart process 700 with the components of the second trace (i.e., its corners and segments) as the first features in a new input sequence, and may set a flag that indicates that the last default word and the new word should be compounded when the new word is selected.
  • the components of the second trace i.e., its corners and segments
  • processing proceeds to block 792 where the disambiguation module processes the selected word, otherwise processing proceeds directly to block 786.
  • the disambiguation module outputs the selected word to the desired output (e.g., to the output area of a window associated with a currently running application program).
  • the nature of this output may be affected by context (e.g., sentence context), flags, parameters, or other factors. For example, if the immediately previous word in a sentence is a common left stem in a compounding language, and the currently selected word is a common right stem in the same compounding language, the disambiguation module may determine whether to insert a space before the currently selected word, or whether to compound the newly selected word to the immediately previous word.
  • the disambiguation module may utilize language information from the vocabulary module 624 and/or grammar module. As another example, if the disambiguation module may eliminate a spaces between words if it can infer from the context (e.g., the previous entry of "google.com") that a user is entering a URL.
  • the context e.g., the previous entry of "google.com”
  • the disambiguation module may update the vocabulary module to reflect the selection. For example, the disambiguation module may update frequency and recency information related to the selected word and/or may add a user-created word to a user-specific dictionary or temporary dictionary until the user has entered the same word several times. This avoids the accidental addition of garbage words to the user database. The system may even take notice of later edits to the word to remove such accidental additions to the dictionary without further user intervention.
  • the user may indicate that a user generated word should be added immediately to the user dictionary through a particular action, such as a long press on the word.
  • the system may also include information about the textual context of the word such as the preceding word/words to further improve future predictions (e.g. with word pairs, as noted herein).
  • the disambiguation module may update a dictionary that is both application- and user-dependent (e.g., if the system maintains different user dictionaries for email vs. text messaging).
  • the disambiguation module may retrieve the previous word entered in order to update the user context database 626 with information that relates to word pairs utilized by a user. For example, if the user frequently used the word pair "school book", and in a current entry a previous word was "school", then the work "book” may receive a higher probability and be promoted within the word choice list.
  • the disambiguation module may update the application context database 628, e.g., by associating the selected word with an applicable field label.
  • the disambiguation module may analyze current and/or historical received input data, current and/or historical input sequences and current and/or historical selected words in order to adjust its future behavior. For example, the disambiguation module may compare the location of the keys corresponding to a user's selected word to the location of detected features in an input sequence to determine if it can discern any trends in how the user inputs data to the user interface (can the system learn the user's patterns or habits based on a set of similar user inputs). If trends are discerned, the disambiguation module may update user-specific or other disambiguation parameters to reflect any observed trend.
  • the disambiguation module may adjust its character selection parameters if a user always overshoots or undershoots a character at a corner (or does so in certain cases), if a user wiggles slightly during a tap in an effort to apparently provide extra emphasis or indicate a repeated letter, if the user typically pauses mid-segment in order to indicate an intended keystroke, etc.
  • the disambiguation module may adjust applicable distance function and/or proximity metric parameters (e.g., those used to generate a corner oval, as described herein) to reflect how a user is particularly precise or imprecise in their input entry.
  • the disambiguation module employs a feedback loop, wherein the module stores the series of user inputs associated with the same word the user selected from the word list, compare those inputs, and make adjustments to ordered list of words on subsequent word lists, disambiguation of weights to inputs, etc.
  • Different adaptation models may exist when the system detects a single finger entry (such as the thumb when holding the device in one hand) versus the entry through multiple fingers when holding the keyboard with both hands.
  • the models can take into consideration other contextual parameters such as speed of the user, the availability of environmental light, etc.
  • the disambiguation module may analyze the selected word to determine the primary or preferred language of the user by determining the frequency with which the user selects words from a particular language, so that the user need not explicitly set his preferred language.
  • the disambiguation module may also update the application context database to reflect the frequency or recency of the word or phrase in the context of a particular application program (e.g., a text message program) and/or a particular application field (e.g., a "name" field).
  • a particular application program e.g., a text message program
  • a particular application field e.g., a "name" field.
  • selected fields such as password fields may be remembered, but can be protected from being retrieved until the user enters a secret passcode, gesture, shake, speech command which unlocks the secured memory, vault or location containing these sensitive words for a period of time which may depend on various context parameters. For instance, when a device has entered a 'sleep' mode or a 'screen saver' mode, the vault may auto lock.
  • the behavior of the vault may be defined by the user, if necessary on a per case basis. Furthermore, the user may have defined various 'personas' or guises and based upon explicit or implicit activation, usernames, passwords and other sensitive data may change. For instance, during working hours, the persona would be 'work' while after hours or during the weekends the persona could be 'leisure' or 'home' or 'family', and differing dictionaries, databases and preferences of the system would be used depending upon the persona.
  • the disambiguation module may clear the input sequence and restart a new process 700 as shown in Figure 7A.
  • the disambiguation module determines whether the input data indicates the deletion of characters. For example, the disambiguation module may determine whether a delete special function key was been depressed (or traced), or whether the user shook the device or otherwise performed a deletion gesture. If a deletion event is detected, processing proceeds to blocks 794 and 796 before block 788. Otherwise processing proceeds directly to block 788.
  • the disambiguation module removes one or more feature objects from the input list. Typically, for a single depression (e.g., tap) or trace of a delete key, the disambiguation module may remove the last intentional feature object and any subsequent incidental feature objects from the input sequence.
  • the disambiguation module may remove a different subset of feature objects from the input sequence; the number, nature and order of the features removed at block 394 may depend on the precise nature of the input data received (e.g., whether a "delete all" key or gesture was utilized instead of a "delete one" key or gesture; whether a user's deletion gesture or input indicated that a particular feature should be deleted, etc.)
  • the disambiguation module may additionally decrement the estimated input length variable L to reflect the deletion of one or more intentional feature objects from the input sequence.
  • the disambiguation module creates a new word list using the updated input sequence and outputs this new list to the user (e.g., as described in Figure 9A).
  • the disambiguation module determines whether the input data indicates a special function that is related to how the disambiguation module should select candidate characters and/or words when generating a word choice list. For example, the disambiguation module may determine whether the user has tapped or traced over a shift key, a caps lock key, a keyboard selection key, or a similar key that modifies how the disambiguation module should select characters and/or words.
  • the keyboard may contain a 'Command' key which allows the user to quickly enter system commands. For instance by tracing over a Command key the word "COPY", or tracing from the Command key to then trace the word COPY on the keyboard, the user can copy selected text.
  • CTRL key could be used to map to commonly used functions: CTRL-A "Select All", CTRL-C/V to copy and paste, CTRL- E to center text etc.
  • the user may be able to define commands and short cuts.
  • the disambiguation module may determine whether the user has indicated a similar intent via other input means (e.g., by tracing off-keyboard (e.g. to indicate an undisplayed character is desired); by shaking, rubbing or other physical gesture; or by voice command).
  • the disambiguation module takes appropriate responsive action at block 798, for example, by adjusting a character determination flag (such as a capitalization flag, an area-key mapping selection flag, a key-character mapping selection flag, and/or a diacritical marker flag), or a word determination flag (such as a capitalization flag), by adjusting the contents of the input sequence, and/or by taking any other suitable action
  • a character determination flag such as a capitalization flag, an area-key mapping selection flag, a key-character mapping selection flag, and/or a diacritical marker flag
  • a word determination flag such as a capitalization flag
  • the disambiguation module determines whether the input data indicates another function. For example, the disambiguation module may determine that the user has tapped on a menu button. If another function is indicated, at block 799 the disambiguation module takes suitable steps needed to perform the other indicated function before the process 315 returns. Otherwise, the process 715 returns immediately.
  • Figure 8A illustrates a process 800 for identifying what input features, if any, are indicated by received input data and generating a feature object for each identified input feature. The process also characterizes each input feature, selects a character set to associate with the input feature, and determines a proximity weight set associated with that character set or corresponding weights for each character in the set.
  • the process 800 begins at block 802, where the character selection submodule processes the raw input data (e.g., a time series of finger down, finger move and finger up notifications or events associated with position measurements) to identify the types of input feature(s) present and the location of the identified input features.
  • the character selection submodule may analyze a group of input data corresponding to a single depression of a user's finger, i.e., a time series of input data that starts with a finger down event, any number of finger move events, and a finger up event.
  • the character selection submodule may perform higher-order and/or time-dependent calculations, such as determining the velocity of the user's finger along a trace or performing well-known geometric analysis algorithms that may be used to identify corners, inflection points (e.g., using second derivatives), and/or other interest points.
  • the character selection submodule determines whether the input data indicates a tap feature.
  • the character selection submodule may simple determine whether the total depression time falls under a threshold tap time value and/or the total range of movement during the time series also falls under a threshold tap distance value. If these conditions are satisfied, the character selection submodule may identify a suitable location (e.g. the initial, average, or final (x,y) coordinate seen during the depression window) to utilize as the location of the tap feature.
  • a suitable location e.g. the initial, average, or final (x,y) coordinate seen during the depression window
  • the character selection submodule may apply any other suitable method to identify a tap, to distinguish a tap from other types of features and/or to determine the location of the tap. For example, the character selection submodule may ignore low-pressure taps.
  • processing next continues at block 850, where the character selection submodule generates a feature object for the tap by characterizing the tap, identifying a related character set associated with the tap, and calculating proximity weights for each character in the character set.
  • a character selection submodule will characterize a tap feature as an intentional feature as described previously, but under certain circumstances dictated by disambiguation parameters (e.g., a low-pressure tap); the character selection submodule may instead characterize a tap as an incidental feature.
  • the character selection submodule may characterize the tap feature as both a "finger-down" and “finger-up event.” Suitable methods for identifying a related character set and calculating proximity weights for a detected tap feature are described in greater detail herein with respect to Figures 8B and 8C.
  • the character selection submodule determines whether the input data contains a corner feature.
  • the character selection submodule may detect a starting corner and an ending corner of a trace simply by utilizing the first and last members or data points of the X-Y set of a trace.
  • the character selection submodule may utilize any suitable curvature analysis method to detect an abrupt change in the user's direction.
  • the character selection submodule may repeatedly evaluate a series of coordinates (e.g. three consecutive points) on the trace to determine if the central point falls more than a threshold distance from the line connecting the other two points. If it does not, the evaluation repeats for the next set of points on the trace.
  • the character selection submodule may evaluate the pressure, velocity and/or acceleration behavior along a trace.
  • the character selection submodule may apply any other suitable method to identify a corner, to distinguish a corner from other types of features and/or to determine the location of the corner.
  • a character selection submodule will characterize a corner feature as an intentional feature as described previously, but under certain circumstances dictated by disambiguation parameters (e.g., a low-pressure corner or a mid-trace corner with a lower curvature); the character selection submodule may instead characterize a corner as a incidental feature. Additionally, the character selection submodule may characterize a starting corner feature as a finger-down feature and characterize an ending corner feature as a finger-up feature. Suitable methods for identifying a related character set and calculating proximity weights for a detected corner feature are described in greater detail herein with respect to Figures 8B and 8D.
  • the character selection submodule determines whether a segment feature is detected in the input data.
  • the character selection submodule may detect a segment and select the location data for a segment feature simply by selecting the X-Y trace data that falls between two adjoining corners (where, again, a "corner" can include an endpoint of the trace).
  • the submodule may also determine whether where the trace is greater than an area of key on the virtual keyboard to indicate a potential segment between two features.
  • the character selection submodule may apply any other suitable method to identify a segment, to distinguish a segment from other types of features and/or to determine the location of the segment.
  • the character selection submodule will characterize a segment feature as an incidental feature unless otherwise dictated by disambiguation parameters. Suitable methods for identifying a related character set and calculating proximity weights for a detected segment feature are described in greater detail herein with respect to Figures 8B and 8E.
  • the character selection submodule determines whether another type of feature is detected in the input data. For example, the character selection submodule may identify any hovering or anomalous localized pressure that occurred during an X-Y trace. Examples of other features that the character submodule may detect include: spoken commands (e.g., to select a letter), a second finger tapping the screen during a trace, a moderate change in curvature, and a constant change in curvature (e.g., suggesting a circling motion).
  • processing continues at block 880, where the character selection submodule generates a feature object for the feature by characterizing the feature, identifying a related character set associated with the feature and calculating proximity weights for each character in the character set.
  • the character selection submodule may characterize the identified feature as an intentional feature if the feature is a clear manifestation of the user's intent to effectuate a particular keystroke. For example, a clearly spoken letter may be characterized an intentional feature.
  • the character selection submodule may adjust the location of an input feature to offset known peculiarities or trends in a user's input style by evaluating various user-specific disambiguation parameters. For example, the character selection submodule may adjust the position of a tap feature to the left of its actual detected location if the user has a tendency to tap to the right of keys.
  • Figure 8B shows a process 890 for identifying a character set and calculating related proximity weights for an input feature.
  • the process 890 begins at block 803, where the character selection submodule utilizes disambiguation parameters to identify an applicable distance function and proximity metric that should be used for the particular feature type.
  • a "distance function” provides a method of deriving a distance score, which reflects the separation between the location of a particular input feature and the location of a particular key in a virtual keyboard.
  • a "proximity metric” provides a method of deriving a proximity weight.
  • a "proximity weight” reflects the likelihood or probability that a user intended to indicate a particular keystroke by an input feature, based on the separation between the location of the input feature and the location of a particular corresponding key in a virtual keyboard.
  • Figures 8C-8E, described below, illustrate various types of distance functions and proximity metrics that may be utilized. One having skill in the art will appreciate, however, that any suitable distance functions or proximity metrics may be employed.
  • the character selection submodule loads an area-key mapping from the keyboard mapping database 622 that reflects the key layout (e.g., 12- key, 28-key, etc.) of the virtual keyboard being displayed to and utilized by the user.
  • the key layout e.g., 12- key, 28-key, etc.
  • the character selection submodule performs a loop for each key in the area-key mapping.
  • the loop begins at block 812, where the character selection submodule determines the location of the key by using the area-key mapping, which typically is a language-independent mapping.
  • the character selection submodule calculates the key's distance score by evaluating the applicable distance function using the location of the key and the location of the input feature, as described in greater detail herein with respect to Figures 8C-8E.
  • the character selection submodule determines if the key is sufficiently close to the input feature to merit further analysis; to do so, the submodule may evaluate the distance score against a threshold value.
  • the loop repeats starting at block 812. Otherwise, the process proceeds to block 824, where the character selection submodule calculate the key's proximity weight by evaluating the applicable proximity metric using the location of the key, the location of the input feature and/or the distance score as described in greater detail herein with respect to Figures 8C-8E.
  • the character selection submodule uses one or more key- character mappings to identify all characters associated with the key, even characters that may not be displayed to the user on the virtual keyboard (e.g., an accented letter).
  • the submodule may determine which key-character mappings to use at block 827 by evaluating various flags (e.g., a keyboard selection flag), dynamic context information (e.g., a user's language settings received from the operating system), user preferences, and/or disambiguation parameters.
  • the submodule may receive an indication that the user interface has a full QWERTY keyboard with a French character layout, and may use this information to select a suitable key-character mapping.
  • the character selection submodule may utilize more than one key-character mapping at this block (e.g., to accommodate a multi-lingual user who may wish to continuously enter text without switching between different on-screen character layouts).
  • the character selection submodule adds each character identified at block 827 to the feature object's character set and associates each identified character with the calculated key proximity weight.
  • the character selection submodule determines if there are more keys in the area-key mapping to process. If so, the loop repeats starting at block 812, otherwise the process 890 returns.
  • Figure 8C conceptually illustrates suitable distance functions and/or proximity metrics that may be suitably employed with tap features.
  • Figure 8C indicates a tap feature 882 located at a point (shown with an "X") on the "E" key of a virtual, displayed QWERTY keyboard.
  • both the distance function and the proximity metric are piece-wise step functions.
  • the distance score for a key is zero if any part of the key (or alternatively, all of the key) falls within a circle 881 of radius R, where R may be determined at least in part using disambiguation parameters (including, for example, parameters that may be adjusted to reflect a user's input style and parameters related to a keyboard layout such as the average key size and/or average key separation).
  • the distance function has a maximum value for all other keys falling outside the radius.
  • the A, W, S, E, D, R (and possibly T) keys would have a 0 distance value (or other minimum value), and all other keys would have a maximum distance value.
  • the distance score for a key is zero (or minimum) if the tap point 882 falls directly on the key, is an intermediate value if some (or alternatively, all) of the key falls within a circle 881 of radius R, and is a maximum value for all other keys outside the circle 4881.
  • the E key would have zero distance score
  • the A, W, S, D, R (and possibly T) keys would have an intermediate value
  • all other keys would have a maximum value.
  • the distance function for a key is the Cartesian distance from the tap feature 882 to a point on or in the key (e.g., its centroid, the closest point on its perimeter, etc.).
  • a proximity metric for a key may be defined as the maximum value of the distance function (or another maximum value) minus the distance score of the key.
  • any other suitable higher-order distance functions and/or proximity metrics may be employed and that the proximity metric need not directly employ a key's distance score.
  • the techniques described for tap features may also be suitably employed for other finger-on and/or finger-off features (e.g., corner features that either start or end a trace).
  • Figure 8D conceptually illustrates suitable distance functions and/or proximity metrics that may be suitably employed with corner features, and may be particularly well-suited to non-terminal corner features.
  • a trace as a user approaches a corner 883, there may be a tendency for the user to either overshoot and/or overshoot his intended corner key.
  • Whether a user overshoots or undershoots during a given trace may be a function of the handedness of the user, the shape and/or layout of the keyboard, the direction of the trace, the velocity or acceleration as the user approaches the corner, the shape of the user's hand, the user's ability to visually discern the keyboard layout as he approaches the corner key (it may be obstructed by his hand), the degree of curvature of the trace at the corner, and other factors. These factors may also affect precisely how the user overshoots or undershoots (e.g., whether they overshoot in the x-direction, the y-direction, how far they overshoot, etc.).
  • Figure 8D conceptually illustrates how distance functions and/or proximity metrics may compensate for a user overshooting or undershooting an intended key.
  • Figure 8D shows how an ellipse 884 or oval area (or similar asymmetric shape) at an internal corner feature 883 may be utilized to implement piece-wise distance functions analogous to the piece-wise distance functions described previously with respect to Figure 8C.
  • the precise shape and orientation of the area may be chosen to correct for overshoot or undershoot that is caused by the factors just described.
  • the major axis 888 of an ellipse 884 may be chosen to parallel the velocity vector of the user's finger just before it reaches the corner 883, when it reaches the corner or shortly after it turns the corner.
  • the length of the major axis 888 may be chosen to increase in proportion to the magnitude of the velocity vector at one of these points and/or to otherwise reflect the factors described previously (e.g., the sloppiness of the user).
  • the length of the minor axis 889 may be chosen to reflect the factors described previously.
  • a different type of asymmetric shape may also be utilized, such as an ovoid shape, which comprises two half-ovals, each having its own major axis and minor axis.
  • the directions, and absolute and/or relative lengths of the two major axes may be a function of the velocity of the user's fingers (both magnitude and direction), the handedness of the user, the sloppiness of the user, and/or the other factors described previously.
  • the major axis of a half-ellipse may be chosen to parallel the velocity vector of the user's finger just before it reaches the corner, when it reaches the corner or shortly after it turns the corner.
  • the axes may be chosen in part to correct for an obscured view that is dependent on the handedness of the user and their direction of movement. For example, a right-handed user moving to the right has less visibility of keys to the right of his finger (e.g., than a left-handed user moving in the same direction), which causes increased uncertainty in judging his intent to strike a key on the right side of a corner.
  • the ovoid is longer on the right side of the keyboard to compensate for a right handed user's more obstructed view of some keys as he approaches from the bottom left.
  • the minor axes of the two half-ovals in the ovoid may also be chosen to reflect the factors described previously; the two half-ovals may have minor axes of different lengths, with the longer axis being located to the right in the example above.
  • keys that fall (either fully or partially) within the asymmetric shape may be assigned a lower distance score (and/or higher proximity weight) than shapes outside the asymmetric shape.
  • a corner point 883 falls on a key, that key may be assigned a minimum distance score, keys within the asymmetric shape may be assigned an intermediate distance score, and keys outside the asymmetric shape may be assigned a maximum distance score.
  • the distance function for a key is the Cartesian distance from the corner feature 483 to a point on or in the key (e.g., its centroid, the closest point on its perimeter, etc.).
  • the proximity weight for a key may be chosen by subtracting the key's distance score from the maximum possible distance score.
  • Figure 8D has primarily described piecewise distance functions and proximity metrics for corner features. However, any other suitable higher-order distance functions and/or proximity metrics may be employed (including higher-order distance functions and/or proximity metrics that correct for overshoot or undershoot factors) and that the proximity metric need not directly employ a key's distance score.
  • Figure 8E conceptually illustrates distance functions and/or proximity metrics that may be suitably employed with segment features.
  • a piece-wise distance function and/or proximity metric may be defined using an irregular area 885 defined by all points falling within a particular perpendicular distance from the trace line of the segment feature 886.
  • the maximum distance utilized to define the area may be determined at least in part using disambiguation parameters (including, for example, parameters that may be adjusted to reflect a user's input style and habits).
  • disambiguation parameters including, for example, parameters that may be adjusted to reflect a user's input style and habits.
  • all keys that fall partially (or alternatively, wholly) within the irregular area 885 may receive a minimum distance score (and/or maximum proximity weight) and all other keys may receive a maximum distance score (and/or minimum proximity weight).
  • keys that are directly intersected by the segment feature 886 may receive a minimum distance score (and/or maximum proximity score), other keys that fall partially (or alternatively, wholly) within the area may receive an intermediate distance score (and/or maximum proximity score), and all other keys may receive a maximum distance score (and/or minimum proximity score).
  • a minimum distance score and/or maximum proximity score
  • other keys that fall partially (or alternatively, wholly) within the area may receive an intermediate distance score (and/or maximum proximity score)
  • all other keys may receive a maximum distance score (and/or minimum proximity score).
  • any other suitable higher-order distance functions and/or proximity metrics may be employed, including higher-order functions and metrics that utilize the perpendicular distance of a key to the trace line.
  • Figure 9A shows a process 900 for creating a word choice list using an input sequence of feature objects.
  • the process 900 begins at block 905, where the word list selection submodule loads or receives applicable disambiguation parameters; context data, including semi-static context data retrieved from the user context database and application context database and dynamic context data received from an operating system and/or application program; and language data, including, e.g., frequency data from a vocabulary module, user context database, and/or application context database.
  • the word list selection submodule ("word submodule" for short) loads applicable dictionaries from the vocabulary submodule using the context data, disambiguation parameters, and/or any flags (e.g., language selection flags).
  • the dictionaries used may be selected on the basis of the type of application program that will receive the output of the disambiguation module.
  • the dictionary used may be generated by analyzing the user's speech using voice recognition software or by analyzing another mode of user input.
  • the dictionary may be an N-best list generated by voice recognition software, handwriting recognition software, etc.
  • the word submodule may pre-filter the dictionaries using some portion of the input sequence, the estimated input length L and/or the context to generate a subgroup of words.
  • the word submodule may pre-filter the dictionary on the basis of whether a word matches the first "finger-up" feature and/or the last "finger-down" feature (described previously), since these features provide possibly the strongest indication of the user's intent to effectuate a particular keystroke.
  • the word submodule may pre-filter the dictionary on the basis of estimated input length L. For example, the word submodule may filter out any words that are shorter than L minus X, where X is determined using disambiguation parameters.
  • the word submodule may pre-filter the dictionary to a list of words generated by voice recognition software.
  • the dynamic context indicates that the user is typing in a name field, it may filter the dictionary to only include proper nouns.
  • the word submodule may use a combination of these filtering techniques.
  • the word submodule selects the next word in the subgroup on the basis of language data, context, word length, and/or any other suitable factors. For example, the word submodule may sort the subgroup on the basis of frequency of use and present these words in that order.
  • the word submodule determines the matching score for the selected word by evaluating a match metric using input sequence, context, word length, and language data.
  • a suitable method for determining a matching score using a match metric is shown in Figure 9B.
  • the word submodule may determine if the word has a matching score that exceeds a minimum threshold value that is determined using disambiguation parameters. If it does, the word is added to the word choice list at block 935 before the process proceeds to block 940. Otherwise processing proceeds directly to block 940.
  • the word submodule may eliminate poorly matching words and provide a word list of fixed or minimum size. Alternatively block 930 may be eliminated from the word submodule.
  • the word submodule determines if there are more words to process in the subgroup. If there are, the processing returns to block 920 so that another word may be evaluated.
  • the process proceeds to block 945, where the word choice list is post-processed.
  • the word submodule may sort the list by matching score and/or by selecting one or more default words that have the highest matching score.
  • the word submodule may group or adjust the ordering of words in a logical fashion to facilitate improved user browsing behavior. For example, the word submodule may rearrange the list to group together words that have the same root (e.g., "interest,” “interesting,” and "interestingly") to permit a user to scan the word choice list more rapidly.
  • dynamic or static context data may be utilized at block 950 to adjust the list, e.g., to promote or demote particular words in the list and/or to otherwise adjust the order of the list. For example, if a user has utilized a particular word in the same application program before, that word may be promoted. As another example, the word submodule may promote words that end with a punctuation mark over words that have embedded punctuation marks. As yet another example, if more than one language dictionary was utilized to generate a word list or the disambiguation module is otherwise providing bilingual integration (e.g., to accommodate a bilingual user), the post-processing may promote words in the primary language of the user and/or demote words in a secondary language of the user. The "primary language" of the user may be determined by language parameters or flags and/or by user context data from the user context database 626.
  • the disambiguation module may promote or demote particular words based on application-specific field information and/or rules or grammar retrieved from the application context database.
  • the disambiguation module may determine whether the user is attempting to utilize a word that may not be listed or found in a standard dictionary, such as neologism like "podcast," or an uncommon proper noun. If it determines, based on typical character sequences in a language that the user may be attempting to enter an "unlisted" word that does not appear in the dictionary, it will make the unlisted word the default word, and provide the word choice list as an alternative suggestion. Otherwise, it may utilize a high-scoring word selected from the dictionary as the default word.
  • a standard dictionary such as neologism like "podcast," or an uncommon proper noun.
  • the disambiguation module may keep “podcast” as default word, despite the fact that it may not be in a standard English dictionary, since the character sequences (the combinations of "po,” “ca,” and “st,” etc.) are frequently seen in the English language.
  • the disambiguation module may assume that the user has made a misspelling (or typed sloppily) and will not select "pfsx” as the default word, since the combinations of "pf ' "fs” and "sx” are all infrequently seen in the English language. Instead the disambiguation module will select a dictionary word with a high matching score found during blocks 905-940.
  • the disambiguation module may first generate a "stroke sequence" by selecting, for each intentional feature (e.g., tap) in the input sequence, the associated character that has the best proximity score.
  • the disambiguation module may evaluate the composition of the stroke sequence by using a table or database within the vocabulary module 624 that provides the probabilities or frequencies of various character sequences (character bigrams, 3-grams, 4-grams, ... n-grams, etc.) in a given language (or other logical group of words) to derive a composition score.
  • the composition score may be the product of various probabilities/frequencies of bigrams/etc, or another higher-order function of the various probabilities/frequencies. If the composition score exceeds a threshold value, the disambiguation module may use the stroke sequence as the default word.
  • the stroke sequence may be defined using a different subset of the input sequence (e.g., tap features only, not corners).
  • the word choice list is output to the user, e.g., via a word choice list area on a display or otherwise.
  • the word choice list and/or a default word may be provided to another process (e.g., an application program) that does not need user intervention to select a word.
  • Figure 9B shows one suitable process 990 for calculating a matching score for a word using a matching metric. Any matching metric or algorithm may be utilized to generate a matching score, and that the disclosed technology is not limited to those particular examples described below.
  • the process 990 begins at block 972 when the word submodule sets a word's matching score to a default score, which may be a unity value of 1.
  • a loop for each character in the word then begins, as shown at block 974.
  • the word submodule retrieves the character set and related proximity weight set that corresponds to the next intentional input feature in the input sequence, or if this is the first iteration of the character loop, the first intentional input feature in the input sequence. For example, the word submodule retrieves the character set and proximity weights associated with the next tap or corner feature in the input sequence.
  • the word submodule identifies the proximity weight for the character.
  • the submodule determines whether the character appears in the retrieved character set, and if it does, it uses the retrieved proximity weight associated with the character. Otherwise, if the character does not appear in the retrieved character set, the submodule may use a default proximity weight (e.g., a low weight) specified by a disambiguation module, terminate the loop 974, or end the process 990 by returning a default matching score (e.g., a score of zero or other default matching score).
  • a default proximity weight e.g., a low weight
  • a disambiguation module terminate the loop 974, or end the process 990 by returning a default matching score (e.g., a score of zero or other default matching score).
  • the word submodule adjusts the matching score to reflect the identified proximity weight for the character.
  • the submodule adjusts the matching score by multiplying it by the retrieved proximity weight.
  • the matching score may be adjusted in any manner to reflect the retrieved matching score.
  • the previous matching score and the retrieved proximity weight may combined by any suitable function including simple addition, a weighted summation, multiplication, division, and higher order functions etc.
  • the word submodule tests whether there are any more characters to process in the word and whether there are more intentional features in the input sequence. If both conditions are satisfied, the character loop repeats starting at block 975. Otherwise the process proceeds to block 980.
  • the word submodule adjusts the matching score to reflect context data and/or language data (e.g., frequency of use).
  • the word submodule scales the matching score by the frequency of use.
  • the word submodule may increase a matching score based on context data, for example, the matching score may be increased if the user has utilized the same word in the same type of data field and/or the same application.
  • the surrounding sentence context e.g., previous words entered by the user
  • suggests that the word is more or less likely the matching score may be adjusted upward or downward.
  • the previous matching score may be adjusted in any suitable manner (e.g., via higher order functions) that reflects how the context and/or frequency of use increases or decreases the likelihood that the word was the intended entry of the user.
  • the word submodule determines the type of edits needed to match a character sequence reflected in the intentional features of the input sequence. For example, the word submodule may determine what characters would need to be added to the word, or what characters would need to be removed from the word so that it would match a sequence of characters reflected in the sequence of intentional features.
  • the word submodule may only attempt to match a first portion of the word against the intentional features in the input sequence. For example, the word submodule may ignore any mismatches that occur after the Lth character in the word, where L is the estimated input length.
  • the cutoff point could alternatively be chosen as L-1 , L+2, L+3, etc. In this way, the word submodule improves the chances that a longer word having a good initial match to the user's initial input will be returned.
  • the word submodule determines an edit penalty based on the estimated input length and the input sequence, including the feature types reflected in the input sequence and the proximity weights.
  • a "low penalty" is one that is lower than a standard or default penalty assessed by a standard edit cost function for a similar edit.
  • the word submodule may assign a zero or low penalty for character changes needed after a first portion of the word. For example, there may be no penalty or a low penalty assessed for character changes needed after the Lth position in the word. This technique similarly improves the chances that a longer word that has a good initial match to the user's initial input will be returned.
  • the word submodule may assign a zero or low penalty for character additions or deletions involving characters that are reflected by the full input sequence, including both intentional and incidental features. For example, if the only difference between the word and the input sequence of intentional features is a missing "E" between the third and fourth intentional features, the word submodule may assign a zero or low penalty if an "E" character appears in a character set associated with an incidental feature (e.g., a segment) that falls between the third and fourth intentional features in the input sequence.
  • the penalty assessed may be a function of the proximity weight associated with the missing character.
  • the penalty assessed may be lower than if the segment runs further away from the E key.
  • the word submodule may assign a zero or low penalty for character additions or deletions caused by repeating characters or repeating keystrokes. Stated another way, there is a no penalty or lower penalty assessed if the word would match the input sequence if only one or more input features were repeated (one or more times) within the sequence. By reducing or eliminating edit penalties in these circumstances, the word submodule permits a user to indicate her selection of a word that has repeating characters or repeating keystrokes with a reduced number of input features. If a low penalty is assessed, it may be a function of the type of input features that would need to be repeated (e.g., intentional vs.
  • the word submodule may assign a zero or low penalty.
  • the word list selection submodule may assign a zero or low penalty for character changes that reflect the addition or deletion of punctuation marks and/or similar symbols.
  • the word submodule adjusts the matching cost to reflect any calculated penalties. In some cases, the penalty is subtracted from the matching score. However, in other implementations, higher-order adjustments may be utilized. Then the process 990 returns. IV. APPLICATION TO SECURITY SYSTEMS
  • a password or other text entry system and method are provided that allow a user to leverage the familiarity with QWERTY keyboard (or other common keyboard layouts).
  • This password or other text input is achieved by providing the user with preferably nine, or other appropriate number of defined zones, each anchored by a distinct key that acts as a zone output key.
  • the zone output key of the selected zone is considered as having been selected.
  • a sequence of zone output keys will be output representative of the input password. If a receiving device is aware of the zone definition used when generating the sequence of output keys corresponding to the input password, the receiving device is able to decipher the sequence of output keys to determine whether the proper password has been entered.
  • a plurality of zone definitions may be available.
  • a receiving device that is aware of the plurality of zone definitions and identifiers associated therewith, can properly interpret the transmission while maintaining the security of the password.
  • the zone definition need not necessarily include keys that are contiguous with each other.
  • the user By defining non-contiguous zones, the user must be more accurate in key entry, but the difficulty for a hacker or other thief in breaking the code may be greatly increased, and the number of possible available zone definitions is similarly greatly increased.
  • characters may be input using directional input on a joystick, 4 or 8 directional keypad (such as the ones found in TV remote control, telephones and mobile phones), various combinations of numeric keys on such a remote control or other available numeric keypad, or pointing functionality of such a remote control or other device, such as a Nintendo ® Wii® remote or other wand like input device, body movement entry solutions, or the like.
  • a joystick 4 or 8 directional keypad
  • numeric keys on such a remote control or other available numeric keypad or pointing functionality of such a remote control or other device, such as a Nintendo ® Wii® remote or other wand like input device, body movement entry solutions, or the like.
  • the selector moves between adjacent zones of keys, all keys contained in the zone moved to will be selected, and a zone output key associated with that zone may be further delineated.
  • a joystick or the like may be used to move to a zone that contains the desired key.
  • the associated zone output key may be presented as part of the output sequence of characters.
  • the user wishes to select the letter "R" as part of a password, movement to a zone containing the letters R, T, Y, U, and I, and using Y as a zone output key, selection of such a zone causes the letter "Y" to be output as part of the output stream.
  • a user need only select between the number of zones, and not be as precise as selecting each individual key in that selection of any key in a particular zone will result in the same zone output key being output as part of the password data stream.
  • the disclosed technology is also applicable to any keyboard configuration, and language, and any other symbol grouping. Furthermore, the zones assigned to an input device need not be visible to a user, rather only working to encrypt the data to be transmitted in the background.
  • a keyboard designated generally at 1000, is provided with a plurality of keys 1110.
  • a 26 letter QWERTY keyboard is shown.
  • a predetermined number of these keys 1110 are also designated as zone output keys 1120. In the depicted embodiment, there are nine such zone output keys, although any desired number may be employed.
  • Each zone output key 1120 is associated with a zone comprising one or more letter keys associated therewith.
  • the ⁇ " key, designated as 120a represents the zone output key for a zone comprising the ⁇ " key, and the other letter keys "Q", "W", “R”, and "T”, collectively designated at 1110a.
  • the zone output key ⁇ " will be the selected output key to comprise part of the output data stream representing the selected password or other text. While it is anticipated that each zone output key may be associated with a predefined, unique set of keys 1 10, it would be possible to have the zones overlapping, and indeed include one or more keys 1110 in one or more zones.
  • a user experience is eased as a user need not be as accurate when choosing a key entry, and indeed only has, in this particular depicted embodiment, nine zones to choose from, rather than a more traditional 26 letters.
  • a user interface might utilize a joystick with eight directional movement, and a center home position, each available position corresponding to a zone output.
  • a remote control or other device with a nine number keypad may be employed, each number corresponding to one of the zone output keys.
  • a valid movement of the controller may be Up, Down, Left, Right, Up-Right, Up-Left, Down-Right, and Down-Left. These eight distinct movements allow the user to quickly move between the zone output keys on the keyboard, moving from zone to zone.
  • a similar scheme may be employed with a less versatile four direction joystick. Without diagonal movements available, however, more jumps may be necessary for moving from one zone to another.
  • each of the eight directional keys and a central "neutral" position may each correspond to the zones, allowing a user to directly access each of the zones without having to navigate from one to the other.
  • each number may correspond to a particular zone.
  • a zone definition must be determined.
  • the keys of the keyboard are assigned to a predetermined number of zones. These zones may be contiguous or non-contiguous. Examples of different possible zone configurations can be seen in Figures 15 (see zones 610a-d) and 16, in addition to Figure 10. It should be noted that the use of, for example four zones as shown in Figure 15 will result in an easier input experience for the user as they will need only to select between four zones. The system, however, may require a longer password to be utilized in such a situation so that different passwords may be more likely to generate different sequences of zone output keys. Of course, other configurations may be employed. In accordance with the disclosed technology, a plurality of such zone configurations may be defined, and thus the apparatus at step 1210 may select from one of the predefined zone layout definitions.
  • a user may start to enter characters that comprise the password. Such an input character is received at step 1215.
  • the zone output key associated with the zone comprising the key selected by the user is defined as the output character associated with the input character. This output character is then provided as a first character to the eventual output data stream to be transmitted.
  • processing passes to step 1225 where it is inquired whether all input characters have been received. If this inquiry is answered in the negative, and it is therefore determined that not all of the desired input characters have been received, control returns to step 1215 and a next input character is received.
  • step 1230 the utilized zone definition and generated output data stream representing the input password is transmitted to a receiving device. Processing then ends at step 1235.
  • zone layout definition may be transmitted separately. It is contemplated that such zone layout definition preferably not comprise a complete listing of zones, but rather a zone definition indicator, thus allowing a receiving device to select from one of a plurality of predefined zone layout definitions. In such a manner, only such an otherwise meaningless indicator is transmitted, thus not giving away the zone layout and increasing the security of the system.
  • a receiving device first receives the transmitted zone layout definition (or uses one of the methods noted above to determine the correct zone layout definition to employ). Processing then passes to step 1315 where the receiving device receives the first character of the transmitted data stream, including the output data stream representing the input password.
  • This received character is then compared to a zone output key of a zone containing an expected password character.
  • processing ends at step 1340. If it is determined that these characters match, then processing passes to step 1330 where it is determined whether all password characters have been received. If all of the password characters have not been received, processing passes back to step 1315 to receive a next password character.
  • step 1330 If it is determined at step 1330 that all of the password characters have been received, then processing passes to step 1335 where the system recognizes that a valid password has been entered, and the user is so notified. Processing then ends at step 1340. Therefore, in accordance with the charts displayed in Figures 11 and 12, a system of a transmitting device and a receiving device can confirm a user password from one to the other without actually transmitting each actual password character, thus maintaining the security of that password.
  • zone definitions that divide the keyboard in a manner so that upon entry of a password twice by a user, the system transmits zone indications for the two different zone definitions allowing for particular notification of the selected keys at the receiving end, even if the keys themselves. For example, if the letter "A" is first associated with zone 1 , and then in a second zone definition is the only letter previously in zone 1 that is now associated with zone 4, a sequence of Z1, Z4 for the first letter in two consecutive password entries would result in a guaranteed determination of the letter "A", even though this letter was never transmitted. Thus, through the user of multiple iterations of this password scheme, further precision can be achieved.
  • FIG. 13 An embodiment of the disclosed technology employing a traditional nine key keypad is shown in Figure 13. As is shown in Figure 13, zone output keys 1120, 1120a are shown, as well as keys associated therewith 110a, similarly to the display depicted in Figure 10. Additionally, a key configuration 1410 is shown, such as that may be included on a traditional remote control, telephone, or the like, indicating a mapping each key 1415 thereof to one of the zone output keys 1120, 1120a. Such mapping may be indicated by a connecting lead line 1420, color, shape, or any other desired indicator of relationship. Thus, if a number of zones are defined, a user may be able to enter the password using such a keypad by selecting number keys associated with the zone including each of the desired characters in the password.
  • a pointing device such as a remote control utilized with, for example, a NINTENDO® Wii® controller, body movement sensing to determine a user input, or the like.
  • a pointing device such as a remote control utilized with, for example, a NINTENDO® Wii® controller, body movement sensing to determine a user input, or the like.
  • a zone pointed at by the controller is highlighted or otherwise indicated as being designated.
  • a user can select such a zone by pressing an indicator on the remote, or by other method as is known to one of ordinary skill in the art.
  • zones in accordance with the disclosed technology is particularly useful in such a situation in that the ability to select each individual key may be difficult in such a configuration. Accuracy may be difficult.
  • a user need only select between, for example, one of nine zones, thus making this ability to select much easier for a user. Thus, a user will likely be able to move through character selection in a much faster and easier manner.
  • FIG. 14A depicts selection of a zone 1510, such as that selected in Figure 10.
  • a zone 1520 two zones to the right of the previously selected zone, is designated and selected. The user is able to make such a designation and selection simply by redirecting the pointing device.
  • an indicator 530 remains on the display to aid in locating the current position of the pointing device.
  • a haptic or other tactile response is also provided to a user to provide an additional, non-visual indication of movement and selection.
  • a vibration or other non-verbal indicator may be provided to the user.
  • a haptic response may be provided to a user twice, once each time the border between zones is crossed.
  • Such haptic response may also be modified, thus providing a different response for different zones.
  • each zone may have a different haptic signature, or a zone determined by a parsing algorithm to be the most likely selected zone in the next selection may be provided a haptic indicator different from the other zones.
  • the zones may be differentiated in any other manner including such a haptic indicator.
  • a character in a particular zone is selected on the user interface, a predetermined number of adjacent keys to the left and the right and/or above and below are highlighted along with the selected key, thus comprising a zone associated with the zone output key.
  • This highlight lets the user know the zone that has been selected.
  • the zone output key associated with the designated zone is further delineated as the key that will become part of the output data stream.
  • the displayed virtual keyboard represents a full QWERTY keyboard, but may comprise any other desired configuration.
  • the zone output keys may be preferably highlighted in a different color on the keyboard, or designated using some other distinguishing characteristic.
  • the input device is used to go to a zone corresponding to a particular zone output key, the other characters in the zone are preferably highlighted as well to provide to the user visual feedback on the set of letters that are grouped with the selection of a particular zone.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Input From Keyboards Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)
  • Telephone Function (AREA)
  • Position Input By Displaying (AREA)

Abstract

A system and method for entering text from a user includes a programmed processor that receives inputs from the user and disambiguates the inputs to present word choices corresponding to the text. In one embodiment, inputs are received in two or more modalities and are analyzed to present the word choices. In another embodiment, a keyboard is divided into zones each of which represents two more input characters. A sequence of zones selected by the user is analyzed to present word choices corresponding to the zone selected.

Description

MULTIMODAL TEXT INPUT SYSTEM, SUCH AS FOR USE WITH
TOUCH SCREENS ON MOBILE PHONES
CROSS-REFERENCE TO RELATED APPLICATION(S)
[0001] This application claims priority to the following commonly assigned U.S. Patent Application Nos., all of which are incorporated by reference in their entirety: 61/313,454, filed March 12, 2010 (attorney docket number 71007.8045) and 61/313,864, filed March 15, 2010 (attorney docket number 71007.8047), both entitled Method and Apparatus for Text Input; 61/313,423, filed March 12, 2010 (attorney docket number 71007.8044), entitled Method and Apparatus for Secure Data Transmission; and, 61/316,799, filed March 23, 2010, entitled Multimodal Text Input System, Such as for Use with Touch screens on Mobile Phones (attorney docket number 71007.8036).
[0002] This application is also related to commonly assigned U.S. Patent No. 6,307,549, entitled "REDUCED KEYBOARD DISAMBIGUATION SYSTEM;" U.S. Patent Application No. 11/379,006/ U.S. Patent Publication No. 2006/0274051 entitled "VIRTUAL KEYBOARD SYSTEMS WITH AUTOMATIC CORRECTION," filed April 17, 2006; and U.S. Patent Application No. 11/379,006, entitled "DISAMBIGUATION OF ICONS AND OTHER MEDIA IN TEXT-BASED APPLICATIONS," filed March 29, 2007, and 61/313,564, filed 3/12/10, all of which are incorporated by reference.
BACKGROUND
[0003] Users enter text into computers and other data processing systems using a variety of input devices, including many types of keyboards. Most standard keyboards are large so as to accommodate both hands of a typist, but this leads to a less portable device. Laptop computers have attempted to shrink the size of a keyboard, sometimes at the expense of typing efficiency for some users.
[0004] Certain mobile devices such as cell phones, smart phones and the like, require an even smaller keyboard to maintain the form factor common with such devices. Some phones include a small key pad with physical buttons to distinguish each key on the keyboard, with which a user may use her thumbs to actuate the buttons. Other devices use a touch screen that displays a similar sized keyboard. Both of these smaller keyboards are cramped and can provide for slower and/or error prone text entry.
[0005] Although touch screen devices have become increasingly popular, consumers continue to demand simpler ways to input text, such as for e-mail, text messaging, instant messaging, and other activities. These touch screen keyboards, however, may suffer from more problems than their small key pad counterparts. The soft keys on the touch screen of such keyboards provide less tactile feedback to a user, which can lead to input errors, as well as other problems.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] Figure 1 is a graphical representation of a communication interface between one or more remotely located devices and a centralized enterprise server;
[0007] Figure 2 is a flowchart of a process of creating a word choice in accordance with an embodiment of the disclosed technology;
[0008] Figures 3 depicts a keyboard including various suggested word choices in accordance with an embodiment of the disclosed technology;
[0009] Figure 4 illustrate a method of entering text in accordance with an embodiment of the disclosed technology;
[0010] Figures 5A through 5I are screen shots illustrating user interface methods for inputting text under various implementations of the disclosed technology;
[0011] Figure 6 is a block diagram illustrating a suitable computing system that may employ aspects of the disclosed technology;
[0012] Figure 7A is a flowchart illustrating a process for creating a word choice list based on user input to a device;
[0013] Figure 7B is a flowchart illustrating special function handling;
[0014] Figure 8A is a flow diagram illustrating a process to determine input features, character sets and proximity weight sets from input data. [0015] Figure 8B is a flow diagram illustrating a process to identify character sets and appropriate weights for input features;
[0016] Figures 8C through 8F are screen shots illustrating how a character selection sub-module may identify character sets for different types of input features;
[0017] Figure 9A is a flow diagram illustrating a process to generate a word choice list;
[0018] Figure 9B is a flow diagram illustrating a process for calculating matching metrics for words;
[0019] Figure 10 is a graphical representation of a displayed keyboard, including zone output keys and a selected zone, constructed in accordance with an embodiment of the disclosed technology;
[0020] Figure 11 is a flowchart depicting entry of a password by a user in accordance with an embodiment of the disclosed technology;
[0021] Figure 12 is a flowchart diagram depicting receipt of a password at a receiving device in accordance with an embodiment of the disclosed technology;
[0022] Figure 13 depicts the mapping of a numeric keypad to zone output keys on a QWERTY keyboard in accordance with an embodiment of the disclosed technology;
[0023] Figures 14A and 14B depict selection of zones employing a pointing device in accordance with an embodiment of the disclosed technology;
[0024] Figure 15 depicts a reduced zone configuration in accordance with the disclosed technology; and
[0025] Figure 16 depicts an alternative zone definition scheme in accordance with an alternative embodiment of the disclosed technology.
DETAILED DESCRIPTION
[0026] Various examples of the disclosed technology will now be described. The following description provides specific details for a thorough understanding and enabling description of these examples. One skilled in the relevant art will understand, however, that the disclosed technology may be practiced without many of these details. Likewise, one skilled in the relevant art will also understand that the disclosed technology may include many other obvious features not described in detail herein. Additionally, some well-known structures or functions may not be shown or described in detail below, so as to avoid unnecessarily obscuring the relevant description.
[0027] The terminology used below is to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific examples of the disclosed technology. Indeed, certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in this Detailed Description section.
I. ENTERPRISE/CLOUD ENVIRONMENT
[0028] As will be explained in further detail below, the technology described herein relates to systems and methods for increasing the speed and accuracy with which a user can enter text into devices and in particular into mobile devices. In accordance with one embodiment, upon entry of text by the user, data representative of such text entry is transmitted to a centralized location via the Internet, wireless communication system, or other appropriate data transmission method to a remote centralized server.
[0029] Referring first to Figure 1 , a first embodiment in accordance with the disclosed technology is shown. In Figure 1 , one or more remotely located devices are shown. The devices include cellular telephones, smart phones, netbooks or laptop computers or the like. Each of these devices is preferably provided with a communication system, such as a standard Internet connection or other proprietary wireless or wired communication system, as is well known to one of ordinary skill in the art. Thus, actions taken or data entered on one or more of the remote devices are communicated as appropriate to a centralized enterprise server. Such synchronizing communications may comprise for example, updating an enterprise email inbox or outbox when an email is sent or received. Traditionally, each of these remote devices performs all major functions on the device and synchronizes information with the enterprise server, such as with the user of email as noted above. [0030] In accordance with one embodiment of the disclosed technology, certain functions previously limited to implementation on one or more of the remotely located devices are transferred to the enterprise server, thus providing a more similar user experience for all users of the enterprise system. In particular, when entering text into one or more of the remotely located devices, as noted above, typically all functionality regarding text correction and auto suggestion and auto fill of text entry words is performed in accordance with information retained on the remotely located device. There exists, therefore, a problem related to updating of data and the like used in such selection, and in particular with potentially frequently updated information on an enterprise wide basis such as email addresses. Thus, if an email address list is updated for a particular enterprise across an entire group of enterprise users, such update may not be transmitted to one or more of the remotely located devices. If the enterprise is sufficiently large, it may not be practicable to download an entire email list to such a remote device. Thus, the remote device may maintain a local cache with a limited number of text entries, typically such entries determined in accordance with a locally-maintained address list or the like. If an email address is not found for a particular indicated individual, the user may be provided with the option of searching for the email address on a remote server, but this process requires additional steps to be performed by a user. There is further no automatic integration of such a system into the user experience of the individual enterprise user. Additionally, such a system may not employ any error tolerant text entry as the user must complete the text entry before asking for access to information stored on the enterprise server. Thus, there has traditionally been no way for such a system to aid in text entry to determine user intent when a complete dictionary of word is not available to the remotely located device.
[0031] Therefore, in accordance with the disclosed technology, a method and apparatus are provided that employ error tolerant text entry techniques at the remote device level, while using such error tolerant text entry results to select suggested text entry information from a centralized database location.
[0032] For example, in one embodiment of the disclosed technology error tolerant text entry is provided to a user by providing the user with preferably nine, or other appropriate number of zones each comprising one or more keys. When a zone is selected, a predetermined number of keys comprising the zone are also selected. Innovative software is able to determine a desired selected word based upon the zone selection sequence, rather than needing each individual key to be selected. A more detailed description of one example of such a zone text entry method is described at US Patent Application Serial No. 12/500,675 filed July 10, 2009 titled METHOD AND APPARATUS FOR TEXT ENTRY, the contents thereof being incorporated herein by reference.
[0033] In other embodiments of the disclosed technology, such zone key entry may be performed in the background without providing indications of such zones to a user. Thus, while a user may be encouraged to be as accurate as possible when typing, great accuracy is not necessary. Other error tolerant text entry systems, such as that described in co-assigned United States Patent Application No. 12/186,425 to Matthew Cecil, el al., filed June 14, 2007 entitled "A PROBABILITY-BASED APPROACH TO RECOGNITION OF USER-ENTERED DATA", the entire contents thereof being incorporated herein by reference, may also be employed. In still further embodiments of the disclosed technology, more traditional text entry systems, and other known predictive text entry systems may be employed.
[0034] Further in accordance with aspects of the disclosed technology, in a particular embodiment of the disclosed technology, an error tolerant text entry system may be provided as described in U.S. Patent Application No. 12/500,675 referenced above. Thus, a described zone entry text system may be employed on the remotely located device, even without having the complete word dictionary located on such remotely located device. Such error tolerant text entry system may also maintain zone definitions in a manner not displayed to the user. Finally, other error tolerant text entry systems may also be employed in accordance with the present disclosed technology.
[0035] Referring next to Figure 2, a user first enters text in accordance with a provided text entry system accompanying a particular remotely located computing device at step 210. In a preferred embodiment of the present disclosed technology, as the user enters one or more keys through the user of the zone entry system of the 12/500,675 application, or any other error tolerant text entry system, an initial text input processing step is performed to begin to determine possible letter sequences that may be intended by the user. Thus, a dictionary search is not performed at this time, but rather locally on the remotely located computing device, information related to the text entry is determined to be used at a later time in a dictionary search.
[0036] Thereafter, at step 230, one or more a dictionary search or other database search is performed by transmitting the predictive text entry information to the enterprise server. Importantly, it is not merely text keys entered that are transmitted, but rather such data as has been determined in accordance with the initial error tolerant text entry processing is transmitted. In accordance with the preferred embodiment of the disclosed technology, for each key that is input by a user, all other keys defined to be in the zone with the selected key, whether these zones are fixed or dynamic, available to the user or not, are transmitted to the enterprise server for further processing in accordance with the disclosed technology. In such a manner, the received predictive text entry information entered in any of the one or remote devices can be applied to any number of consistently maintained enterprise wide databases.
[0037] Figure 3 shows a keyboard 100 in which the keys are divided to be in a number of zone. Thus, in accordance with the disclosed technology described in the error tolerant text entry system of the 12/500,675 application, each time one or more keys indicating a particular zone is selected from the keyboard 100, all of the keys in the zone represented by the selected key are passed to the predictive text algorithm. In one embodiment, candidate words represented by the keys selected in each zone are determined locally and transmitted to the enterprise server. In another embodiment, a list of the zones selected by the user is send to the enterprise server to determine a list of possible candidate words. The list of possible words is analyzed by the enterprise server to determine one or more suggestions of potential word selections to the user that are then displayed on a screen of the remotely located device, such as is shown in Figure 3 at 310. These word suggestions 330 are based upon the entered key sequence, taking into account all of the keys at each entry associated with the zone of the selected key. At 320, the sequence of keys selected by a user is shown. Word choice 340 depicts the most likely, or most common, word determined to be intended by the user as determined from one or more applicable databases located on the enterprise server. Upon determination of these word suggestions by the enterprise server, they are transmitted back to the remotely located device and displayed to the user as shown in Figure 3 for selection by the user at step 240 of Figure 2. [0038] Selecting a suggested word replaces the entered word with the selected suggestion at step 250. If none of the words are selected, processing passes back to step 210 in Figure 2 where further text entry is received from a user. Upon such additional text entry, the steps noted above are preformed again, thus providing potentially different words for user selection, or narrowing choices down for a user. Upon selection of one of the presented words by the user, such selected word is input to the remotely located computing device, and processing ends until the entry of another text sequence by the user.
[0039] In an alternative embodiment of the disclosed technology, in order to speed processing at the remote device, based upon a determined size of a particular dictionary, it may prove beneficial to download a dictionary to the remote device prior to the beginning of text entry by the user. Thus, in a case where entries into a particular field in a form or the like are limited to a small number of possible entries, downloading such a dictionary upon entry of the field by the user may allow for only a single data transfer to be employed. Similarly, if a user is visiting a form or the like with a number of fields, dictionaries for each of the fields in a particular form may be downloaded in advance, or upon entry of a first field of the form. Of course, if any particular field were found to have a very large dictionary, access to this dictionary on the enterprise server may be provided as noted above.
[0040] The user can train the system to add words to its dictionary or the system can be set to add words automatically after a preset number of times that the word has been entered. Thus, in accordance with the disclosed technology, not only can a dictionary be modified on an enterprise wide platform, entry of text by a particular user employing a remotely located computing device may result in the addition of such a text entry to a database or dictionary for subsequent use by any enterprise user. Of course, local databases may also be maintained for text entries that need not be made available to the enterprise as a whole.
[0041] An exemplary predictive text algorithm is depicted in United States Patent Application No. 12/186,425 referenced above. Such an algorithm utilized in accordance with the present disclosed technology addresses the predictive text requirements of the disclosed technology. A user interface provided to a user on one or more of the remotely located computing devices will provide a character (or string of characters associated with one or more selected zones) to an algorithm at an enterprise location, and the algorithm will interpret that set of characters and return a result from the enterprise server to a user interface at the remotely located computing device in the form of one or more suggested word selections. Alternatively the enterprise server may return an indication of an inability to properly parse out a word selection, thereby indicating that the user has not yet entered enough letters as of yet.
[0042] In one embodiment, user context, history or the like, in accordance with the particular individual user, or in accordance with the collective experience of the full set of enterprise users may be employed to aid in such suggested word selection. Additionally, while the described predictive text algorithm may be employed, the present disclosed technology may be used with any appropriate text parsing or predictive text algorithm.
[0043] Using a matrix of probabilities the predictive text algorithm knows that for each character pressed, the user could have meant characters to the left, right, above or below, or the other characters in the zone indicated in as described above. Once the algorithm knows which characters are probable (based upon the keys associated with a selected key, the algorithm then runs a search against a dictionary preferably provided at an enterprise server location as accessible to a plurality of enterprise users, as is more completely described in the "425 application referenced above. Any words that match the string of probable characters are designated and then preferably scored based on distance between characters, frequency, probability, and any number of other characteristics that may be indicative of a user intention.
[0044] The system may also adopt over time to give a higher probability of selection to frequently used patterns of a particular user, or to particular groups of users in an enterprise setting. Thus, the prediction mechanism may be personalized for a particular user, even if that user is selecting words from a common centralized enterprise dictionary or database. Such personalization may comprise providing selections based upon a frequency of selection of words by a particular user during a predetermined preceding time period. Thus, the more a user uses a particular word, the more likely it may be to be selected again, and the more likely it will be suggested to the user. This personalization may be particularly useful in such a situation as when a user is entering an email address from a centralized, enterprise wide email list. As a particular user sends email to one or more particular recipients, the names of these recipients are more likely to be entered by the user in the future. Furthermore, such personalization need not be limited to a single person. Rather, entry of particular email addresses may be accumulated for a group of people or the like, thus allowing for a department or the like to generate a preferred list of email addresses. This selection may also be applied to standard words or other sequences that may be selected in accordance with a text entry system. Such personalization may provide a weighted selection system in which the words or email addresses that are selected most recently or frequently are provided first to a user followed by words selected at an earlier time, or less frequently.
[0045] In another embodiment, the personalization of a user dictionary is not limited to words commonly or recently selected by a user. The dictionary may also be customized based on recent behavior of the user. If a user is searching the internet for web pages devoted to particular topic, words from those web pages can be classified and added to the dictionary as more likely choices. For example, if a user is viewing web pages on their remote device associated with food and cooking, then when the user enters the keys "d i s e r t" the word search algorithm uses the recent history to suggest the word "dessert" before the word "desert." Similarly, temporal and geographical considerations can be used by the text selection algorithm. For example, the GPS location of the remote device can be detected and sent to the enterprise server. If is known that a user is located in the mountains, then the text prediction algorithm is trained to suggest that a text entry of "how is the snor?" should be "How is the snow?" as opposed to "How is the show?"
[0046] In this embodiment, information about the recent browsing history, current location, e-mails read, GPS location etc. is send to the enterprise server and maintained in a file associated with user in order to customize a dictionary or to aid in selecting likely words for the user based on their recent behavior.
[0047] A can be seen in Figure 3, a displayed keyboard represents a full QWERTY keyboard, but may comprise any other desired configuration. Such keyboard may comprise a virtual keyboard, or a physical keyboard including hard keys associated with one or more letters to be provided for text entry. While the disclosed technology has been described as generally making reference to such a keyboard, any number of input devices, mechanisms, or schemes may be employed. The disclosed technology is similarly applicable to text input on a traditional mobile phone with 9 or 12 key number pad or 4-way directional key. The disclosed technology may be applicable to use of a scroll type wheel, such as that provided on an Apple Ipod ® device. In such a situation, it may be beneficial to define zones in a circular configuration so that movement along the scroll wheel results in movement along a circle of zone selection.
[0048] The disclosed technology may also be applied to a mobile or other device using a scrolling device, or otherwise comprising only one or two directional indication keys. With a scrolling device or one or two direction keys, the predefined zones are preferably provided with a predefined sequence, such as perhaps left to right, then top to bottom, so that upon scrolling or utilizing a directional key, a user is forwarded through each of the predefined zones, highlighting or otherwise indicating the presently selected zone. Pressing in the scrolling device, or other method of selection allows a user to choose the zone, and then scrolling is employed to move to a next zone for selection.
[0049] The disclosed technology may further be applied to a projected keyboard where various sensing mechanisms determine where a user touches a projected keyboard. As the accuracy of such sensing is likely difficult to determine, allowing a user to select from a smaller number of larger zones would be quite beneficial.
II. MICROGESTURE INPUT
[0050] In accordance with another aspect of the disclosed technology, a rapid text entry system and method are provided that leverage error tolerant predictive text algorithms. A user can employ his familiarity with QWERTY keyboard (or other common keyboard layouts) and enter shorter microgestures of two or three letters that comprise less than an entire word. Shorter words can be entered with one such microgesture, while longer words may use two or more microgestures. Thus, the text entry system described below overcomes at least one major drawback of prior systems namely, the requirement that the user enter the entire intended word entry without lifting his finger and thus provide a single trace for an entire intended word.
[0051] In accordance with one embodiment, a text entry system notes a starting and ending location for each microgesture. Furthermore, if a bend is detected in the microgesture entered by the user, it is determined that a third, middle letter was intended. A number of different methods may be used to determine the intended middle letter. First, a location of the bend in the microgesture may be determined. Second, a direction moved from the starting position may be provided to a text parsing algorithm to help select among a number of possible next letter text entries, given the start and endpoint inputs. Alternatively, a recognition of the existence of such a bend may be determined, thus indicating that a middle letter was intended. The text parsing algorithm may then assist in determining such letter without any additional help, as if it had encountered a missing letter in a more traditional text entry system.
[0052] Once a first microgesture is determined, the selected letters are input to a text selection algorithm, and word suggestions and the like are provided to a user in a more traditional format. If no word is selected, a next tap of a key, or a next microgesture is determined to be part of text entry for a same, longer word.
[0053] In one embodiment, users slide their fingers between a number of characters on the keyboard instead of lifting and pressing each intended letter to be entered. It has been determined that some users prefer such sliding to neighboring characters instead of tapping each character individually, because it is more convenient and reduces the potential for text entry error as compared to a traditional tap entry system where the user may tap the wrong key if required lift their finger and press each key in succession. Further, the user is able to avoid any type of repetitive stress issues, and may be able to enter text more quickly.
[0054] When using smaller, typically mobile, touch screen devices users have been found to generally type using one or two fingers instead of all fingers as they would on a more traditional regular laptop/PC keyboard. The use of only one/two fingers can result in finger fatigue and discourage users from typing on a touch screen device. The required act of lifting and placing the finger for each letter to be entered is often associated with repetitive stress injuries such as carpal tunnel syndrome and the like. In accordance with an embodiment of the disclosed technology, a user has the option to either slide their fingers to enter a few letters, or tap the entry of a particular letter as desired. Thus, rather than requiring tapping as in traditional text entry systems, or tracing the letters for an entire word as noted in the prior art patents listed above, the user has the option and flexibility of entering text as he or she prefers. Such preferences may be based upon particular input device, particular word being entered, etc. Ultimately, users are provided with a most flexible option and can choose to enter with microgestures, tapping, or a combination of both based on convenience.
[0055] Microgestures allow users to select 2 or 3 characters at a time with a single microgesture. One further benefit of such microgestures is that users do not have to mentally or physically trace a complete path for a word before the predictive text algorithm begins suggesting corresponding words. Tracing a path for longer words can be confusing and difficult. Users tend to forget which characters of a word they have already entered and tend to misspell. Tracing paths for long words may also result in mental and/or physical fatigue. Further, because an apparatus receiving a path tracing an entire word must wait for completion of that word before processing the input data, it is not possible to provide automatic completion of such text entry, or suggestion of possible intended word entries. Thus, the user must complete tracing of the entire word, and only then can the system provide word suggestions.
[0056] The microgeture input system of the disclosed technology is also useful to input text or words in languages whose alphabets do not fit onto a single keyboard and therefore require getting letters/characters from alternative/function/shift keyboards.
[0057] At the completion of each microgesture, however, the system in accordance with one embodiment of the disclosed technology is able to auto-complete an input. The ability to use such an auto-complete enables the user to enter only a partial word and choose from the suggestions provided. This enhances the user experience, helps in faster text entry, and even further improves over prior art systems requiring tracing of an entire word because a user will often be able to select a desired input word after simply entering a first microgesture. In this manner, the predictive text algorithm in accordance with the disclosed technology supports error tolerant input for gliding or tapping. The user can be sloppy in entering text and need not provide the exact character input to get the desired word. In effect, letters that are selected in a microgesture entry are considered by a text parsing algorithm as if they had been tapped in a traditional text entry system. Thus, existing text parsing algorithms can be leveraged, and a far simpler and flexible system is provided to a user. Thus, missing and/or incorrect letters can be received and the system is still able to determine correct and intended text entry by a user.
[0058] Selecting letters for text entry through the use of gliding allows users to trace the path for fewer than all the characters of a word as shown by the example in Figure 4. In accordance with this example, it is assumed that a user is interested in entering the word INPUT. Traditionally, the user would tap each of the five keys. If they hit all of the five keys, the word INPUT would be presented to the user.
[0059] However, in accordance with an embodiment of the disclosed technology, a user need not tap each of the five letters, and indeed may employ one or more microgesture glides to enter the desired letters. There are a number of different sequences for entering the word INPUT in accordance with the disclosed technology.
[0060] As shown in Figure 4, the user can glide their finger(s) over the letters "i-n- p" and tap the letters "u", "t". As is shown in the above figure, the user begins their microgesture glide at "i", then glides to "n" and finishes the microgesture glide at "p". Thereafter the letters "u" and "t" are tapped to input the full word. The following alternative input sequences would also result in the word INPUT being recognized by the text prediction algorithm:
[0061] Glide "i-n-p" and glide "u-t"
[0062] Tap "i", "n" and glide "p-u-t"
[0063] Tap "i", "n", "p" and glide "u-t"
[0064] In order to further ease a user experience any glide or tap entered by the user may be maintained on the display for a period of time to provide sufficient feedback to the user to determine what was entered. As noted above, however, such maintenance of glide entry is useful only for the user and preferably may not play a role in determining user input (Of course, it would be possible to use such glide location to determine text input in an alternative embodiment of the disclosed technology.) Thus, while the trace shown in Figure 4 shows the path that a user may observe on the device, internally the text prediction algorithm in accordance with the disclosed technology is preferably different, only keeping track of the initial and last character of a glide entered by the user. A middle character, if any, is deciphered using vectors associated with movement directions between the first and last letters of the glide, or less preferably, using an approximate location of a bend in the glide entered by the user. Therefore, in accordance with the disclosed technology, the inventive algorithm tries to find words from a database by using the first and last character input with a particular first glide and a middle character, if any. Based upon a determination of a bend in the glide, or use of a wildcard character assuming a three letter glider, the text prediction algorithm returns results. Further calculations may then be performed to filter words where the middle character does not meet the vector direction as drawn by the user.
[0065] The following example further depicts the use of such glide and vector algorithms. If the user traces a path "t-h-e, "h" is lower and to the right of "t". An initial pass through the algorithm will return words like "tie", "toe" and "the". Upon viewing of a vector of movement after entering the first letter "t", it can be determined that the user moved down towards the letter "h". Because both the letters "o" and "i" are to the right of the letter "t", they will be discarded (or provided as lower valued selections to the user) as there is a closer option that the algorithm will find. The letter "h" from the potential suggestion choice "the" more closely meets the vector proximity of the input and hence will preferably be chosen as the middle character. Furthermore, error tolerant text entry may be provided, and thus, the user could trace "r-j-w" and still get "the" as a suggested word. The letter "j" is located downward and to the right of the letter "r" and the letter "h" is located downward and to the right of the letter "t". Since both vectors are in close proximity, the letter "h" will be chosen as the middle character.
[0066] An explanation of vector direction will now be described, and is more completely described in US Patent Application Serial No. 12/091 ,700 to Sharan et al., filed June 14, 2007, entitled "DATA ENTRY SYSTEM AND METHOD OF ENTERING DATA", the entire contents of which is herein incorporated by reference. The disclosed technology advantageously encodes the user inputs with regard to the translational movements i.e. the directions of one key relative to another when actuated sequentially by the user.
[0067] The translational movements are preferably coded within a set of predetermined primary directions, these being a reduced set of all possible directions which can be taken between two consecutive key actuations. One example of the reduced set would be the four directions: "up", "down", "left" and "right". Thus, rather than registering each translational movement according to the actual direction taken, the system preferably assigns one of the reduced sets. For example, if the actual direction of movement between two actuations is 10° off vertical, the transitional movement would be assigned, for example to "up", this being the closest of the primary to a real 10° heading.
[0068] Reducing possible directions from an infinite number to a small number, such that all translational directions are categorized within a reduced group, e.g. to "up", "down", "left" and "right", means that many disparate translational directions will be assigned the same primary direction. For example, all movements with a bearing up to ±44° with respect to a direction straight up could be assigned the same primary direction "up". Moreover, this will include translational movements with the same actual bearing, but with completely different starting points, such that the same vertical movement occurring at many different points on the keyboard could all be represented simply by "up".
[0069] An exemplary predictive text algorithm for use in accordance with the microgesture text entry system of the present disclosed technology is described in United States Patent Application No. 12/186,425 referenced above. Such an algorithm utilized in accordance with the present disclosed technology addresses the predictive text requirements of the disclosed technology. The user interface will pass the algorithm a character (or string of characters associated with a particular jumper point and zone) and the algorithm will interpret that character (or characters) and return a result to the user interface in the form of one or more suggested word selections, or may return an indication of an inability to properly parse out a word selection thereby indicating that the user has not yet entered enough letters as of yet. Of course, user context, history or the like may be employed to aid in such suggested word selection. Additionally, while the described predictive text algorithm may be employed, the present disclosed technology may be used with any appropriate text parsing or predictive text algorithm. As long as jump points can be associated with a number of different inputs, and these inputs can be differentiated from each other and used to select an intended input by a user, the disclosed technology may be employed.
[0070] Thus, using a matrix of probabilities the algorithm knows that for each character pressed the user could have meant characters to the left, right, above or below, or the other characters in the zone indicated in accordance with the disclosed technology as described above. Once the algorithm knows which characters are probable (based upon the keys associated with a selected jumper point, or alternatively, a dynamic or other determination of user intention, i.e. which letters it is likely the user intended, even if a predefined zone is not provided, the algorithm then runs a search against a dictionary, as is more completely described in the '425 application referenced above. Any words that match the string of probable characters are designated and then preferably scored based on distance between characters, frequency, probability, and any number of other characteristics that may be indicative of a user intention. The system can also adopt over time to give a higher probability of selection to frequently used patterns of a particular user. Thus, the prediction mechanism may be personalized for a particular user.
[0071] In order to additionally aid in determining user intention, in accordance with the disclosed technology the predictive algorithm of the proposed system may, in addition to relying upon a traditional dictionary, attempt to further determine user intention by determining the context of a particular text input, such as determining whether the input is for an email, chat, search, or the like, or whether the text input is taking place during a particular television show, or while a music application is playing a song. To the extent a user is likely to use different words and/or other language differences, such context determination may aid in the accuracy of the predictive text algorithm. The algorithm may also receive information about information from stored content, the content of one or more databases, such as a user's contact list or the like, to improve the reliability of the prediction. Such context may be stored within a device being used for text entry, or may be stored remotely in a database accessible over the Internet, or other available network. The list of words is then sorted based on that score and returned to the user interface. Thus, the disclosed technology uses the redundancy in the input language or the possible input functionalities to map approximate input into non-ambiguous input per the user intention. Additionally, device features and functionality may be considered when determining user input, thus perhaps taking into account device limitations when determining such input.
[0072] While the present disclosed technology has been described in one embodiment employing the predictive text algorithm of the '425 application, it is possible to use other text parsing algorithms. One such alternative text entry system is described in US Patent Application Serial No. 12/500,676 to Sharan et al., filed July 10, 2009, entitled "METHOD AND APPARATUS FOR TEXT INPUT", the entire contents of which is herein incorporated by reference. The '676 application describes a system and method for dividing the keyboard into a plurality of zones, and then considering any text entry in a particular zone to be a selection of all of the letters in the zone. Thus, the user is able to be less precise when entering text. This system may be used in conjunction with the microgesture entry method described above, and thus, each determined starting point, ending point, and any vector directions or bend determination need only indicated zones that include the intended letter, thus further easing the difficulty of text entry for a user.
[0073] Additionally, while the disclosed technology has been described for a user making contact with a displayed or touch screen keyboard, it would be equally applicable to a keyboard that did not require contact, but might allow for text entry upon a user drawing a finger or the like in proximity to a particular key or the like. A microgesture may comprise the finger moving above the keyboard to a final key, which might be considered entered when the user removes the finger. Thus, processing may proceed in accordance with the systems and methods described above, but relying on proximity detection rather than contact for key selection and entry.
[0074] While a primary use for the method and system of the disclosed technology may be for small mobile devices or other small electronic devices such as cameras, personal assistants, netbooks and the like, such input system may be equally applicable for entry on, for example, set top boxes or television using a remote control, or other input device, such as a Wii® controller or the like. Thus, a user may begin entry by pointing to a key (or zone), depressing a selection button, holding down the button while the user moves an indicator through a second letter (if desired) to a third and final letter of the microgesture, indicated by release of the selection button. A more complete description of entry employing the zone input system and such a remote control in the '676 application, previously incorporated herein by reference. Indeed, it is contemplated that the present disclosed technology may be applicable to any input scheme or technology noted in the '676 application, including but not limited to remote control, Wii® remote, hand gestures, or other entry technique.
III. SUITABLE USER INTERFACE
[0075] Figure 5A illustrates a user interface suitable for receiving multi-modal user inputs (e.g., a mixture of taps, traces, hovers, other tactile inputs and/or non-tactile inputs) and outputting words. The user interface described herein may form part of any system where it is desirable to convert user input into words, including, but not limited to, mobile phones, personal digital assistants, portable audio systems, laptop computers (including ultra-mobile personal computers), desktop computers, other computing systems, video game systems, televisions, and myriad other consumer and commercial electronic systems or appliances (including, e.g. refrigerators, kiosks, etc.)
[0076] The user interface comprises a touch screen or similar display that facilitates both tactile input from a user (e.g., by fingertip or by stylus) and visual output. As indicated by the illustrative axes, each point on the display may be described by a unique X-Y coordinate. Additionally, although not shown in Figure 5A, the user interface may receive other inputs, including inputs from a system accelerometer and/or pressure sensors in the touch screen, audio inputs, visual inputs, etc. Additionally, the user interface may produce other outputs, including other visual outputs, audio outputs, haptic outputs, etc.
[0077] The sample display shown in Figure 5A (and other depicted displays) is for a wireless mobile device, and includes an upper horizontal portion 502 that provides certain system information, such as signal strength, wireless carrier name, time, battery strength, etc. Below the upper horizontal portion 502 is an application bar 504 that includes some information and input buttons for an application, which in the depicted displays is an email application. A text display portion or output area 506 displays text input by the user, which for example, may be associated with an application program. A word suggestion portion or word choice area 508 (described below) displays suggested words to the user based on user input.
[0078] The user interface display includes at the bottom a virtual soft-key keyboard area 510 that is configured to display a virtual keyboard and receive tactile user input that indicates character selection from that virtual keyboard. As shown, a virtual keyboard has multiple defined areas arranged in a particular layout on the display. Each defined area circumscribes a key. Except for special function keys, each key in the virtual keyboard is associated with one or more characters, as described in greater detail herein. As used herein, the term "characters" may include alphabetic letters (with or without diacritic markers such as accents), digits, characters or symbols that represent a phonetic or sub-word component, including Japanese kana, Korean jamos, and Chinese zhuyin, or another linguistic and non-linguistic characters such as digits, and punctuation that are contained in abbreviations, chat slang, emoticons, user IDs or URLs. Special function keys in a virtual keyboard are associated with the performance of special functions related to the input of textual information (e.g., capitalization of a letter, deletion of characters). Special function keys may include, but are not limited to, a shift key, delete key, numerical input key (e.g., to select a keyboard layout suitable for faster entry of numerical and symbolic characters), a multi-keyboard selection key (e.g., to select a different keyboard layout and/or virtual keyboard that supports a different character set), a return key, and a space key.
[0079] A user may provide different types of tactile input to the virtual keyboard area 510, as described in greater detail herein, in order to indicate his selection of a sequence of characters. The user may intend for a set of his tactile inputs to collectively result in the formation of a particular intended word in the output area 506 shown in the user interface display (or at another output), For clarity, unless the context clearly requires otherwise, the term "word" as used herein denotes any type of linguistic object, including, but not limited to, a string of characters, word stem, prefix, suffix, phrase, sentence, abbreviation, chat slang, emoticon, user ID, URL or ideographic character sequence, emoticons or icons. [0080] Without system intervention, a user's raw tactile input to a virtual keyboard might result in an unintended word being added to the output area that is different than his intended word, if for example, the (1) user is sloppy or inaccurate with his tactile inputs, (2) the user misspells the word, (3) multiple keystrokes are required in order to select a particular character (e.g., if a diacritical marker is needed, or if the virtual keyboard has a half-QWERTY or 12-key layout, such as the one shown in Figure 1 H), (4) the intended word is particularly long, and/or (5) other reasons. Any of these factors may delay the user's entry of the intended word.
[0081] Thus, to facilitate an improved user experience, the disclosed user interface may provide user input received from the virtual keyboard area 510 (and other areas of the touch-sensitive display and/or other inputs) to a disambiguation system or module such as the disambiguation module disclosed herein. The disambiguation module resolves the received user input to generate a suggested list of word choices (a "word choice list") that may be rank-ordered or otherwise organized in a logical fashion. The user interface may then display a subset of the word choice list generated by the disambiguation module in the word choice list area 508 (e.g., in an ordered or grouped fashion). Within the word choice list area, one or more default words may be highlighted (e.g., "are" as shown in Fig. 5A) and/or displayed in the output area. The user may select a word displayed in the word choice area to indicate his intended word (e.g., by providing tactile input within the word choice list area; by depressing a point on the display at or near a special key, such as the space bar; or by providing other input indicative of selection). The user may alternatively review additional results from the word choice list in the word choice list area (e.g., by scrolling or swiping within the word choice area) before selecting a word. After a user indicates his selection from the word choice list, the user interface may then add the selected word to the output area 506 (or otherwise output the selected word).
[0082] Although the user interface display is described herein primarily as a touch- sensitive touch screen, one having skill in the art will appreciate that the user interface and disambiguation systems and methods described herein may be implemented instead using laser projection keyboards, muscle sensing keyboards, fabric keyboards, motion-sensitive video systems (such as the Nintendo Wii®), virtual reality systems, etc. since these systems are capable of displaying a virtual keyboard and translating user actions into positional information within the displayed keyboard that is analogous to the tactile input of a touch screen.
Modes of User Input
[0083] Figures 5B-G illustrate various types of user inputs that may be received by the suitable user interface shown in Figure 5A and analyzed by a disambiguation module to produce a word choice list that is displayed within the user interface. For simplicity, tactile user inputs to a touch screen display are described herein in conjunction with a user's depressing the display with a fingertip. However, one having skill in the art will appreciate that the user may depress a touch screen by any suitable means, e.g., a finger, a stylus, or any other suitable input tool.
Tap Inputs
[0084] Figure 5B illustrates how the user interface may receive a series of taps and output a word choice list in response. A tap consists of a user briefly depressing the touch screen at a localized point before lifting his finger. In the example of Figure 5B, the user interface may receive a series of three taps (at time (T)=1 near the "A" key, at T=3 on the "D" key, and at T= 4, on the Έ" key.). In this example, using these three tap features, the disambiguation module produces a word choice list, including the default choice "are." This default choice illustrates how a disambiguation module may correct apparent user errors, since in the English language it is more like a user would intend to create the word "are" instead of the word "ade."
Trace Inputs
[0085] Figure 5C illustrates how the user interface may receive a trace input from a user and output a word choice list in response. To input a trace, a user depresses or places his finger on a point on the touch screen display, and while continually depressing the display, he traces a line within the display with his finger before eventually lifting his finger from the screen. As will be described in greater detail herein, a trace input may be further broken into at least two different types of discrete features: corners and segments. As described in greater detail herein, a "corner feature" results upon the occurrence of different types of events during a trace, including, but not limited to a user: (1) initially depressing the screen at the beginning of a trace, (2) lifting a finger off the screen at the end of the trace, and/or (3) abruptly changing direction during the trace. Each pair of corners then demarcates a segment feature that runs along the user's trace path between the two corners.
[0086] In the example shown in Figure 5C, the user inputs a trace starting at T=1 by depressing his finger on the screen near the "K" key in the keyboard area 510, tracing his finger upward to a point near the "P" and "O" keys, abruptly changing his direction near that point by moving across the top row of the virtual keyboard, and finally, at time T = 3, lifting his finger from the screen at a point near the "W" key. As shown by the three dots, this single continuous trace may be broken into three distinct corner features (corner 1 , corner 2, corner 3) and two segment features (segment 1 extending between corners 1 and 2, and segment 2 between corners 2 and 3). As shown in Figure 5C, using the five extracted input features (three corners and 2 segments), a disambiguation module may produce a word choice list, including the default word "how," that is displayed to the user via the user interface.
Hover
[0087] Figure 5D illustrates how the user interface may receive a hover input feature from a user. A hover feature comprises any user input where the user gives special emphasis to a point within the display in a specified manner, which may include pausing a finger near a point, wiggling, encircling or scribbling a finger around a point, decelerating near a point during a trace, providing additional pressure at a point (e.g., as detected by a pressure-sensitive touch screen display), providing a second tap with another finger simultaneously during a trace, etc. For example, as shown in Figure 5D, during the trace described previously with respect to Figure 5C, a user may input a hover feature at a point near the "T" key by lingering there during the time window T=[2:5]. Although Figure 5D shows a hover feature occurring in conjunction with a trace feature, a hover feature may occur in other instances (e.g., in conjunction with a tap feature, e.g. if a tap depression extends beyond a threshold duration).
Multi-modal inputs: multiple tactile features
[0088] The user interface described herein permits a user to input different types of input features in any order (e.g., to input a trace followed by two taps, followed by three traces, etc.). Furthermore, the user interface permits a user to pause after inputting a first feature (e.g., a trace), and then resume his input (e.g., to input a second trace or to input a tap). After a pause, a disambiguation module may utilize both the input features detected before the pause and after the pause in order to generate a word choice list.
[0089] Figure 5E illustrates how the user interface may receive an input from a user that comprises different types of tactile input features and, in response, displays a word list that is generated using all of the multiple input features. In the example of Figure 5E, from T=[1 :3], the user provides the same input as shown in Figure 5C by tracing out a line that results in the default word "how" being displayed in the word choice list. The user then pauses until T=7, when he taps between the "E" and "R" keys (which may result in the display of an updated word choice list). He again pauses until T=9, when he initiates a new trace near the "V" key that ends near the "F" and "R" keys at T=10. At the conclusion of this trace, using the totality of all of the input features (i.e., a first trace (consisting of three corners and two segments), a tap, and the second trace (consisting of two corners and one segment), the disambiguation module updates the word choice list so that the default word displayed in the user interface is "however."
Multi-modal inputs: Tactile input features and audio inputs
[0090] As illustrated by Figures 5F-G, the user interface described herein also permits a user to mix multiple tactile inputs and audio inputs in a complementary fashion. In such examples, the user interface and/or disambiguation module may further comprise a voice recognition module configured to parse and/or disambiguate an audio input into words and/or word choice lists. As a first example, the user interface may permit a user to provide an audio input in order to select a word from a word choice list that was initially generated by tactile user input. In the example shown in Figure 5F, during time T=[1 :10], the user provides the same input described in Figure 5E by inputting multiple tactile features that result in the display of a word choice list that includes the default word "however," as well the word "howdy." At time T=11 , the user indicates his intent to select the latter word by saying "howdy" aloud in order to produce an audio input to the user interface that is indicative of that choice (e.g., by speaking into a microphone that is coupled to the device providing or carrying the user interface).
[0091] As another example, the user interface may permit a user to select, via tactile input (e.g., a trace input), a word from a word choice list, wherein the word choice list was generated by audio input (e.g., a word choice list generated using voice recognition software), free form handwriting input (e.g., a word choice list generated using handwriting recognition software) or another mode of input. In the example of Figure 5G, the user begins his input at time T=1 by stating out loud "I am using voice recognition software to enter text initially and using tracing to correct mistakes." In response to this audio input, the user interface (e.g., using a voice recognition module) generates a textual version of the user's sentence in the output area 506, but with an erroneous fourth word ("reconnaissance"). To correct the error, the user, at time T2, selects the erroneous word via a tactile input (e.g., a tap) in the keyboard area 510. The user interface may optionally display a word choice list in the word choice area 508 consisting of the phonetically similar words reconnaissance, recognizable and recognition that is generated by a voice recognition module. The user then traces out the correct word ("recognition") using the virtual keyboard as described previously. By analyzing the trace to determine which word choice it best matches, the system can recognize the user's intended word and correct the mistake. The multimodal nature of the system means that words entered using any particular modality such as speech, tapping, hand writing, speech, etc., can be selected/reselected and corrected. In some modalities, the nature of the ambiguity may result in a single word having more than one word (phrase segment) as an alternative selection, or parts made of more than one word can have a shorter alternative selection. An example is when the user utters: "Do little" which may be recognized as "Doolittle" with alternates of "Do Little" and "Do let a".
[0092] The above examples demonstrate the more general ability of the user interface to mix multiple kinds of disambiguation in a complementary fashion. In these examples, a first modality of disambiguation (e.g. textual disambiguation or audio disambiguation) generates a first word choice list (e.g. an N-best list), the members of which share a common characteristic (e.g., similar character arrangements on a keyboard or a phonetic similarity). Next, when it comes time to disambiguate a second type of user input, the set of possible words that must be searched to disambiguate the second input (e.g., the "dictionary" searched) is limited to the members of the first word choice list (e.g., an N-best list).
Alternate Keyboard Layouts and Other Features
[0093] The suitable user interface of Figure 5A shows a full QWERTY virtual keyboard that displays at most a single character in conjunction with each key. However, all of the input, output and disambiguation functionalities described herein (tapping, tracing, hovering, multi-modal inputs, etc.) may be suitably implemented with a user interface that utilizes any style of keyboard layout, including keyboard layouts where a single key is displayed in conjunction with two or more characters. For example, Figure 5H shows a user interface that comprises a virtual keyboard with 12 primary keys arranged in a 4x3 configuration and 2 additional function keys to the side (a space key and a delete key). In such a layout, most of the primary keys are displayed in conjunction with 1-4 different characters. In conventional systems that use a similar 12-key layout, a user must typically utilize multiple keystrokes to indicate certain characters (e.g., in conventional systems, four repeated keystrokes or a sustained depression of a key may be required to indicate the letter "i"). In contrast, as shown in Figure 5H, the disambiguation methods described herein permit a user to generate a word list that includes the intended word "imminent" with only a few traces and a tap. In the user interface, multiple input features (e.g., four sequential taps or a long hover over the "4GHI" key) are not required to select the initial letter of the intended word, "i."
[0094] Similarly, unlike conventional systems, in the systems described herein, repeated or prolonged user input features (e.g., multiple input taps or hovers) are not required to select accented characters (or other alternate characters) that may not be visually displayed on a virtual keyboard. As an example, in conventional systems, to select the accented character e on a QWERTY keyboard layout such as the one shown in Figure 5A, a user may need to execute several keystrokes, one of which includes the "E" key. In contrast, the disambiguation methods described herein permit a user to generate a word list that includes words having the accented letter "e" with only a single input feature (e.g., a single tap or corner) to the user interface that implicates the "E" key. In addition to having multiple, similar letters mapped to a single key, the disambiguation methods described herein may also be practiced with a keyboard layout where numbers show up as alternatives to the letters on the top row.
[0095] Additionally, the user interfaces described herein do not require repeated or additional input features from a user to indicate repeated characters and/or repeated keystrokes. For example, to efficiently input the intended word "moonlight" using the full-QWERTY user interface shown in Figure 5A, a user need only input one tactile feature near the "O" key in order to produce the intended word in the generated word list, despite the occurrence of a repeated "oo" within the intended word. As another example, to efficiently input the word "his" using the interface of Figure 5H, the user need only indicate their selection of the "4GHI" button via a single input feature (e.g., a single tap or corner), since the same key is utilized for both the first letter ("h") and second letter ("i") in the intended word.
Context-driven tracing
[0096] Figure 51 illustrates an example of how context information may be used to provide more efficient text entry. In Figure 51, a user is searching for a contact name within a contacts application program. In order to enter her friend's name, she traces out a three-cornered trace. When disambiguating this trace entry, the disambiguation module 213 may limit its word lookup to a dictionary that only comprises words (e.g., mostly proper nouns) in the user's contact list. Furthermore, the disambiguation module may use more than just trace matching to rank the word choice list and to suggest a default name. For example, the disambiguation module may promote names that the user frequently enters or accesses, either in the contacts application program, in an email program, or in all application programs. To illustrate, although the trace shown in Figure 5I starts at "D", turns at "A" and ends on the letter "N," forming the common name "DAN," the disambiguation module may still promote the name "DAVID" if the user enters that name with a much higher frequency and/or recency than "DAN."
[0097] Although Figures 5A-5I have emphasized tactile inputs such as taps, traces, hovers and multi-modal inputs related to virtual keyboards, one having skill in the art will appreciate that the disambiguation systems and methods described herein may also utilize other kinds of user inputs, including multi-touch inputs (e.g., two or more fingers upon a touch screen), accelerometer inputs (e.g. inputs that indicate acceleration of the larger system), handwriting/gesture inputs (e.g., free-form tactile input), and/or signals from input buttons.
Suitable System and Disambiguation Modules
[0098] Figure 6 and the following discussion provide a brief, general description of a suitable computing environment in which the disclosed technology can be implemented. Although not required, aspects of the disclosed technology are described in the general context of computer-executable instructions, such as routines executed by a general-purpose data processing device, e.g., a server computer, wireless device or personal computer. Those skilled in the relevant art will appreciate that aspects of the disclosed technology can be practiced with other communications, data processing, or computer system configurations, including: Internet appliances, hand-held devices (including personal digital assistants (PDAs)), wearable computers, all manner of cellular or mobile phones (including Voice over IP (VoIP) phones), dumb terminals, media players, gaming devices, multi-processor systems, microprocessor-based or programmable consumer electronics, set-top boxes, network PCs, mini-computers, mainframe computers, and the like. Indeed, the terms "computer," "server," "host," "host system," and the like are generally used interchangeably herein, and refer to any of the above devices and systems, as well as any data processor.
[0099] Aspects of the disclosed technology can be embodied in a special purpose computer or data processor that is specifically programmed, configured, or constructed to perform one or more of the computer-executable instructions explained in detail herein. While aspects of the disclosed technology, such as certain functions, are described as being performed exclusively on a single device, the disclosed technology can also be practiced in distributed environments where functions or modules are shared among disparate processing devices, which are linked through a communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
[00100] In one embodiment, the disclosed technology is implemented as a sequence of program instructions that are stored in a non-transitory computer readable media or computer readable memory. The instructions are executed by processor electronics to perform the functions described herein.
[00101] Aspects of the disclosed technology may be stored or distributed on tangible computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media. Alternatively, computer implemented instructions, data structures, screen displays, and other data under aspects of the disclosed technology may be distributed over the Internet or over other networks (including wireless networks), on a propagated signal on a propagation medium (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, or they may be provided on any analog or digital network (packet switched, circuit switched, or other scheme).
[00102] Figure 6 illustrates a suitable data processing or computing system 600 in which a disambiguation module 613 may operate in order to provide the user interface functionality described herein. The computing system may include a touch screen display 603, other input devices 608, an audio output component 604, other output devices 606, one or more processors or central processing unit (CPU) 601, and at least one memory 610, some or all of which may be carried or housed within a housing (not shown). As an alternative, or in addition to the CPU, the computing system 600 may include one or more digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other logic/data processing circuitry.
[00103] The input and output components may include a global positioning system (GPS), a digital camera, a wireless LAN (WiFi) interface, a motion sensor, accelerometer, a Bluetooth® interface, an external USB or similar port, a headphone or headset jack adapter, projection display, haptic output device (e.g., a vibrator), as well as other components or a communication elements. For example, the Bluetooth® interface may communicate with an external wireless communications component, such as a wireless headset, to not only receive audio input but also provide audio output. In one implementation, the computing system 600 is a mobile phone, whereby the system also includes one or more radios coupled to the CPU 601 to permit wireless communications.
[00104] The output modalities of the system may include text-to-speech, audio, vibration, tactile, visual, etc. outputs. For instance the system can let the user know which input features, characters and/or letters have been recognized by adding a 'vibrate' or 'sound' feedback. Similarly, the system can provide the user with more detailed understanding of the features extracted and the level of uncertainty involved in its determinations.
[00105] The memory 610 may further comprise an operating system 611 , a disambiguation module 613, and one or more application programs (shown as application programs 1 through N 614-616). The application programs can include word processing programs, slide presentation or image creation programs, email programs, SMS/MMS messaging programs, instant messaging programs, or other text- based communication or text-based document creation programs.
[00106] The disambiguation module 613 receives user input data from the operating system, including data related to a user's input with the touch screen 603, and uses the received input data to identify a user-selected word, which it may provide to an application program. For example, the disambiguation module 613 may receive a series of notifications from the operating system 611 of finger down events (when a user depresses a point on the touch screen), finger move events (e.g., when a user moves his finger while depressing the screen), and finger up events (e.g., when a user lifts their finger from the touch screen). (While generally described herein as using a finger, the user may use anything to touch or actuate the touch screen, such as a stylus.) Each of the received notifications may include a time series of position data, e.g., an X-Y set of coordinates (x, y) with a timestamp t (i.e., the coordinates (x, y, t)), which reflect the user's tactile input to the touch screen 603. Additionally, if the touch screen 603 comprises pressure sensors, the received notifications may include a time series of position and pressure data, e.g., a set of coordinates (x, y, t, p) that reflect the user's tactile input to the touch screen 603, including the applied pressure, p. The operation system 611 may also provide other kinds of input data to the disambiguation module 613, including multi-touch inputs (e.g., additional sets of simultaneous coordinates (x, y, t) representing a second finger simultaneously contacting the touch screen), audio inputs (e.g., voice inputs), visual inputs, accelerometer inputs, location data, sensor data, etc.
[00107] The disambiguation module may additionally receive and process dynamic context data from the operating system and/or application program(s) in order to facilitate its word identification. Context information is any information that may help inform the disambiguation module of the user's intent, and may include information such as sentence or word-pair context, language context, application-specific context (e.g. data fields/tags), user-specific context, location, time of day etc., as described in greater detail herein For example, the module may receive context information such as the last word selected by the user, other sentence-level context, the virtual keyboard layout utilized, the type of entry field into which the word will be entered (e.g., a "Contacts" field), location data (e.g. where the computing system includes a GPS receiver or accesses location data), calendaring data for the user, and/or context data or applications used or being used that may utilize the identified word. As another example, the disambiguation module may receive an "N-best" list from another mode of input. An N-best list is a rank-ordered list of suggested words, which may be capped at a fixed size (e.g., N). As one example, an N-best list may be generated from another type of disambiguation application program or module, such as a list of words generated from a speech recognition program (e.g., a list of homophones) or a handwriting-recognition program. As still another example, if a user is entering text in order to respond to an earlier email, the disambiguation module may receive a list of words used in the earlier email.
[00108] The disambiguation module may include a character selection submodule 618, a word list selection submodule 620, a keyboard mapping database 622, a vocabulary module 624, a user context database 626, an application context database 628 and a disambiguation parameter database 630. While depicted as separate modules, a single module, program or routine may incorporate two or more of the modules.
[00109] The character selection submodule 618 is configured to analyze received user input or input data to extract input features (or "input features"), e.g., taps, corners, segments, hovers, or other features. The character selection submodule 618 is further configured to analyze the extracted input features using a language-independent keyboard mapping database 622 to produce an input sequence that comprises an ordered set of feature objects (e.g. rank ordered set of letters for a word being spelled). Each feature object in the input sequence is associated with a set of characters associated with corresponding keys for one of multiple virtual keyboards or key layouts, a set of proximity weights, and one or more feature types. The proximity weights reflect the likelihood that a user intended to effectuate a particular keystroke via a particular input feature (e.g., a tap, corner, segment, or hover). This likelihood may be based on the proximity between the location(s) of the input feature and the location of the key on the virtual keyboard. During its operation the character selection submodule may utilize parameters, policies, and preferences retrieved from the disambiguation parameter database. Further details on aspects of the character selection submodule 618 may be found in the assignee's U.S. Patent Publication No. 2006/0274051 entitled "VIRTUAL KEYBOARD SYSTEMS WITH AUTOMATIC CORRECTION, and incorporated by reference herein.
[00110] The keyboard mapping database 622 permits the character selection submodule 618 to evaluate the likelihood that that a user intended to effectuate a particular keystroke by inputting a particular input feature. For each type of virtual key layout utilized by the system and displayed to the user on the touch screen, such as a full QWERTY (e.g. 28-key, 32-key, or more), 14-key half-QWERTY keyboard, 12-key "numeric" keypad, etc. The keyboard mapping database 622 provides an area-to-key mapping that maps a particular key to a particular defined area or point on the touch screen display, and vice versa. For example, in a full 28-key QWERTY key layout, an area-key mapping may define the Έ key" using the set of four points of the display: {(x1 ,y1), (x2,y2), (x3,y3), (x4,y4)}. As another example, in a 4x3, 12-key layout, such as the one shown in Figure 1-H, an area-key mapping may define the "5JKL" key using the set of four points: {(x11 ,y11), (x22,y22), (x33,y33), (x44,y44)}. Of course, other mappings are possible, such as an x-y center location and radius to define a circle for the virtual keyboard and a map to a corresponding character for that virtual keyboard (where the circles may be intersecting). [00111] Additionally, for each type of character layout utilized by the system, (e.g., an American English full QWERTY character layout vs. a French full AZERTY character layout) the keyboard mapping database provides a key-character mapping that maps a particular key (e.g., the "E key") to one or more characters (or for special function keys, to a particular function), and conversely, maps characters to a particular key. A key- character mapping may describe a one-to-many relationship, wherein a particular key is associated with more than one character, including characters that are not displayed on the virtual keyboard to the user of the touch screen. For example, in a key-character mapping related to a full QWERTY key layout, an "E key" may be mapped to two or more of the following characters: E, e, e, e, e, e, E, φ, ξ, e, E, e, E, e, E. As another example, in a key-character mapping that is related to a 12-key layout like the one shown in Figure 5H, the "5JKL" key may be mapped to the following characters: 5, %, J, j, K, k, L, I. A single area-key mapping may be related to more than one key- character mapping, e.g., to permit easier multi-lingual input via a single virtual keyboard layout. The use of a keyboard mapping database 622 to disambiguate user input is described in greater detail herein.
[00112] In addition, keys may combine to form Romanization, transliteration or transcription inputs allowing the user to enter foreign characters using standard Latin- based keyboard. Users can type a word using the Latin-1 based keyboard the way it sounds, and the transliteration component will produce a word in its native script. For example typing "serodija" results in the Russian word "ceroflHfl". One or more Latinl characters can combine to form one or more Russian characters. These mappings can be implemented in a variety of ways, using state machines, or other commonly used methods. This translation, or transliteration layer adds a layer of mapping or additional submodule implemented as probabilities. In cases where there is a one to one mapping, the implementation is straightforward. When there are multiple interpretations, each mapping can be assigned a probability value. For example, in
Hindi, letters may have more than one valid mapping. For instance: the character has the following mappings: i, yi, ee and yi. Similarly the character ^ maps to i and yi. Context or other parameters noted here may be used to further disambiguate or order the displayed listed of options to the user. [00113] The word list selection submodule 620 is configured to receive the input sequence generated by the character selection submodule. The word list selection submodule 620 may analyze the input sequence using a variety of other inputs in order to generate a rank-ordered or otherwise structured word choice list, such as those shown in Figures 5A-5I. The other inputs that the word list selection submodule 620 may use include data from the vocabulary module 624, parameters retrieved from the disambiguation parameter database 630, received dynamic context data, and context data retrieved from the user context database 626 and the application context database 628. The word list selection submodule 620 is described in greater detail herein.
[00114] To facilitate word selection, the vocabulary module 624 provides one or more dictionaries that define a set or logical group of words. For example, an "American-English" dictionary may define a logical group of words in common usage by English-speaking Americans, while an "American-English-Msg" dictionary may define a logical groups of words (including emoticons) commonly used by English-speaking Americans in text and multimedia messages (e.g. SMS, MMS or similar messages). The vocabulary module 624 may also provide additional language information, such as static or dynamic frequency information within a particular logical group of words (e.g., within a particular language) and/or particular context. For example, the additional language information may include frequency information in accordance with a linguistic model, which may include one or more of: frequency of occurrence of a word in formal and/or conversational written text; frequency of occurrence of a word when following certain preceding word or words; proper or common grammar of the surrounding sentences; frequency of the word being utilized as a left-stem or right-stem (or prefix or suffix), etc. In addition to frequency, transition probabilities may be assigned to particular transitions, linking one class of prefixes to likely stems or stems with one or more classes of suffixes while rejecting prefixes with other words in the dictionary which would form illegal words. For example the word work may have high transition probabilities with suffixes -er, -ers, -ing, -s and -ed, which often form valid words.
[00115] Notably, the disambiguation module does not need to change its dictionary if the user changes his keyboard configuration. Furthermore, by using a keyboard mapping database 622, the disambiguation module may be utilized within any system regardless of the keyboard layout.
[00116] The disambiguation parameter database 630 may store various parameters, policies, and preferences for performing interaction or input feature extraction, character selection and/or word selection. For example, the disambiguation parameter database may include parameters and policies that aid in the selection and application of distance functions, proximity metrics, matching metrics and postprocessing steps, all of which are described herein.
[00117] To facilitate improved character and/or word selection, the user context database 626 and the application context database 628 may provide context information to the character selection submodule 618 and/or the word list selection submodule 620 to inform its processing; these submodules may also receive dynamic context information from an application program and/or the operating system. The entry of text, the selection amongst alternatives, contextual information and multiple modalities are managed by the disambiguation module. The system may use inputs from the user, the context of the application, external sensors and context resources and disambiguation, and correction approaches to determine the user's intent as noted herein. Based on an understanding of the user's intent, the system maintains the context and state of the application, and manages the composition of inputs and synchronization across multiple input modalities. By interfacing with business logic, the system can produce multimodal output to be presented to the user. The interaction, the business logic and the context and state may be managed through an interaction script or more complex state machines (State Chart XML or SCXML) or languages which are used for the control of user interfaces such as XHTML+Voice Profile or SALT.
[00118] The user context database 626 may include any historical information relating to the user's prior character and/or word selection behavior, such as previous words utilized by the user, the frequency of words entered by the user, and common phrases employed by the user Other examples of user context information include: word pairs entered by a user, a user's unique vocabulary in a specific application (text messaging vs. email, for example), a user's level of 'sloppiness' (increasing the character region size) while entering text into the system, etc. Additionally, user context information may reflect how frequently a user selects words from a particular language or what language the user primarily uses. For example, if the system utilizes both French and English language dictionaries for a bilingual user, the user context database 626 may track the relative frequency with which the user selects French words versus English words in order to determine the user's "primary language," and then words from that dictionary may be preferred or presented first over words from the other dictionary.
[00119] Alternatively or additionally, some user context information may be reflected in a user-specific dictionary and/or other data structures in the vocabulary module 624. Additionally or alternatively, the user context database 626 may also provide user-specific policies and parameters that may override default disambiguation parameters stored in the disambiguation parameters database 230.
[00120] The application context database 628 may permit the disambiguation module 613 to access historical information related to character or word selection within a particular application program. The application context database 628 may also provide application-specific dictionaries and/or application-specific policies and parameters that may override default disambiguation parameters stored in the disambiguation parameters database 630. Context can also come from text fields in which the information is supposed to be entered. As an example, in some implementations, the disambiguation module may be designed to integrate with specific types of application programs that define application-specific fields, tags or labels that may be associated with a particular word entry. As an example, the text-field of a form ("Name" or "Email") may be a label that could be utilized to provide context information. The application context database 628 may then correlate a user's historical word entries with application-specific field(s) to provide additional context information. The system may define, in the application context database, application-specific fields and rules (e.g., grammar rules, matching metrics and/or post-processing rules) that reflect how the field information and other context information may be utilized during word selection. These rules may even specify that word suggestions for a particular field can depend on what words a user has entered in other fields. [00121] The system informs the disambiguation module of the intended textual information of the field (name, phone number, date, email address, password) and/or provides it with a grammar which describes the information. For instance a form which requires State, ZIP and City to be entered would use an approach that would be able to provide appropriate grammars based on the context and content of the other fields. If the State is "WA", the grammar for cities is constrained by actual cities in the State of Washington and ZIP codes are similarly constrained. When City and State are entered, the range of ZIP codes is again constrained. Complex interactions between fields and grammars can simplify the entry of data in such "forms". Alternatively, the system can learn the context for often used text fields.
[00122] To illustrate the use of this context information, consider the example of form filling, where the disambiguation module may remember what words users have entered in particular field(s). To illustrate, in an order form a user may enter his work email into an email field and then the disambiguation module would predict that the shipping address field would contain his work address. In contrast, if he enters his personal email address into an email field, the disambiguation module would predict his home address in the shipping address field.
[00123] Other contextual information includes environmental parameters, such as time of day, location, calendar entries, user settings, application settings and system settings.
[00124] While shown as separate databases, two or more of the databases described herein may be combined, and may be implemented in any data structure or logical construct.
[00125] The character selection submodule 618 and/or the word list selection submodule 620 may keep the user context database 626 and/or the application context database 228 current by providing notifications about a user's present behavior. For example, the word list selection submodule 620 may return information to these databases when a user selects a word from a word selection list.
[00126] Additionally, as described previously, the disambiguation module 613 may also receive additional dynamic context data from the operating system and/or an application program. Although not shown, the disambiguation module may additionally comprise voice recognition software configured to disambiguate speech or audio inputs, as described herein.
Suitable Disambiguation Methods
[00127] The flow diagrams described herein do not show all functions or exchanges of data, but instead provide an understanding of commands and data exchanged under the system. Those skilled in the relevant art will recognize that some functions or exchange of commands and data may be repeated, varied, omitted, or supplemented, and other (less important) aspects not shown may be readily implemented. Further, although process steps, method steps, blocks, algorithms or the like may be described in a particular order, such processes, methods, blocks and algorithms may be configured to work in alternate orders. In other words, any sequence or order described herein does not necessarily indicate a requirement that the steps or blocks be performed in that order. The steps or blocks of processes and methods described herein may be performed in any order practical, and some steps may be performed simultaneously.
[00128] Figure 7A shows a process 700 for disambiguating a series of user input data that may correspond to multi-modal user input in order to permit the selection of a word from a word choice list. The process 700 is performed by the disambiguation module 613 and begins at block 710, when the disambiguation module 613 waits for and receives input data before proceeding to block 730. Typically, the disambiguation module 613 receives input data in the form of one or more user input notifications or input events from the operating system, but it may also receive input data from other processes, such as an application program. For example, at block 710 the disambiguation module may wait for and receive from the operating system a finger down notification, a finger move notification, and/or a finger up notification, each of which is accompanied by a set of (x,y,t) or (x,y,t,p) coordinates, where x is the x- position of a user's finger on the display, y is the y-position of the user's finger, t is the time or a clock reference for those inputs, and p is an optional pressure measurement (for a pressure sensitive screen). The disambiguation module 613 may also wait for other forms of input data, such as voice inputs, accelerometer input, external sensor data, location information. Although not shown, at block 710, the disambiguation module 613 may receive additional dynamic context data, e.g., from the operating system and/or an application program. For example, it may receive information about the type of application program or the context in which the user is entering text (e.g., the type of field in which the user is typing, e.g., a date field versus a name field).
[00129] The period of time that the disambiguation module waits for and receives user input data may vary. For example, in one implementation, the disambiguation module may wait to receive an entire group of notifications corresponding to (1) a finger down notification, (2) the next finger up notification, and (3) all of the finger move notifications that occur in between these first two notifications, before proceeding to block 730. In some other implementations, at block 710, the disambiguation module 613 may continuously analyze incoming user input data to identify other types of logical groupings in the user input data and may proceed to block 730 only when a logical group is received in its entirety. For example, at block 710, the disambiguation module may continuously analyze received notifications as they arrive to determine if an input feature (e.g., a tap, a corner, a hover, etc.) or special function has occurred (using, e.g., the techniques described herein at block 802 and block 730, respectively) and when a logical group of input data that corresponds to a single input feature or special function is detected, processing of that logical group may then proceed at block 730.
[00130] At decision block 730, the disambiguation module determines whether the user has provided input that indicates that the disambiguation module should perform a special function, such as word selection, character deletion, or a function related to a special function key (e.g., shift, caps lock, keyboard selection key, etc.). As shown in Figure 7A, if a special function is indicated, processing proceeds to block 780, where the disambiguation module performs the special function in accordance with the process shown in Figure 7B (described herein), before the process proceeds to block 740. Otherwise, if input data does not indicate a special function, the process proceeds directly to block 740.
[00131] At block 740, the disambiguation module utilizes the character selection submodule 618 to identify what input features (e.g., taps, corners, segments, hovers, audio inputs, etc.), if any, are indicated by the received input data. Furthermore, at block 740, the disambiguation module utilizes the character selection submodule to generate a feature object for each identified input feature. A feature object includes a character set, a set of feature types, and a proximity weight set. The character selection submodule may perform these tasks in accordance with the processes shown in Figure 8A-8B.
[00132] During block 740, the character selection submodule may also characterize each identified input feature using one or more feature types. For example, the character selection submodule may characterize each input feature as a tap, a corner, a segment, a hover, etc. Additionally, the character selection submodule may also determine whether an identified input feature is an "intentional input feature" (or "intentional feature"). An intentional input feature is an input feature that appears more likely to correspond to an intended keystroke by a user as compared to other types of input features. If a feature is not an intentional input feature, it is instead characterized as an "incidental input feature" (or "incidental feature"). When matching candidate words to input features, intentional input features may be treated differently (e.g. weighted higher) than incidental features, as described herein.
[00133] To illustrate, in some implementations, the disambiguation module treats all taps and all corners as intentional input features, since these features indicate a distinct and abrupt change in the user's input behavior. As another illustration, the disambiguation module may treat all taps, corners and hovers as "intentional" input features. The disambiguation module may further refine which input features are characterized as intentional or incidental by employing other factors described herein. Characterization of input features is described in greater detail herein with respect to Figure 8A. In some implementations, the disambiguation module may make no distinction and may treat all input features as intentional.
[00134] At block 750, the disambiguation module may increment an estimated input length variable (L) to reflect the number of new intentional input features, if any, that were identified at block 740. As described herein, the disambiguation module may later use the estimated input length L to pre-filter dictionaries or for other purposes when generating a word choice list at block 370. Similarly, at block 750 the disambiguation module may additionally update other variables that reflect the composition of the input sequence (e.g., a variable that reflects the number of segment features present in the input sequence).
[00135] At block 760, the disambiguation module appends any newly generated feature objects to an input sequence. The input sequence reflects the ordered set of all input feature objects created since the user last selected a word. The various feature objects in the input sequence are ordered on the basis of time.
[00136] At block 770, the disambiguation module utilizes the word list selection submodule 618 to create a word choice list using the current input sequence and to output this list to the user (e.g., via the word choice list area on a touch screen display). In this way, the disambiguation module gives the user an opportunity to select his intended word. The creation of a word choice list is described in greater detail herein with respect to Figures 9A and 9B.
[00137] In one variant of the system, if the user selects a word in the word choice list, the system may respond by only showing words that start with the selected word. In addition to words, the selection list may also contain objects which are represented by the word. For instance the word love may have an icon in the shape of a heart associated with it. In addition, words which are retrieved from different vocabularies or providers, such as the contact dictionary, may offer additional options when selected. For instance, if a user has entered a name which matches a name in the contacts dictionary, the user may select to add the phone number, driving directions, e-mail address or any other related object, including an object which represents the contact in a machine readable format (vCard etc). Other words may be sent to 'recognizers' which may recognize keywords, phone numbers, potential calendar entries etc. When the user has typed: "Let's meet for Lunch at Joey's," the recognizers could add an action: add to calendar, call Joey's, make reservation, insert directions and more. When the user selects any action, the system may launch an activity which at completion returns the user to the activity of text entry. Such activities may be launched with any relevant contextual parameters that may help the activity to be better informed about the intent of the user, including user history, user preferences. In another example, the user may want to add a song to the email. By typing the name of the song, artist, album or even such keywords as mp3, song, the user may launch an activity that allows the user to seamlessly attach the object. Optionally, the word(s) which were selected to cause the start of the activity may be automatically deleted.
[00138] Figure 7B shows a process 715 for performing a special function indicated by user input data. The process 715 begins at block 782, when the disambiguation module identifies what types of special functions were indicated by the user's input data. To do so, the disambiguation module may analyze the proximity of tactile user input to a special function key, a word choice list area, and/or other active area, such as a menu button; may perform speech recognition analysis of voice command inputs; may analyze other tactile gestures (e.g. to detect a swipe, a multi-touch action) or physical gestures (e.g., a shake of a device); and/or may perform a lookup in the disambiguation parameters database to map types of input to a special function.
[00139] At decision block 784, the disambiguation module determines if the input data indicates that the user has selected a word (e.g., from a word choice list). User selection of a word may occur, for example, via vocal selection (as described previously), if the user taps, traces or hovers near or over a special key (e.g., a space bar, tab key, enter key, etc.), or if the user taps, traces or hovers on or near a word in the word choice list area. Of course a user may select a word by any other suitable method, such as by shaking a device, pushing an input button, etc.
[00140] In one example, the disambiguation module 613 may provide "auto- spacing" functionality by analyzing the types of input features utilized by the user to determine whether the user's input indicates that she intent to end one discrete word and begin another. In some implementations, the disambiguation module 613 will interpret two consecutive traces in an input sequence (i.e., without another type of input feature like a trace or hover intervening) as an indication that the user intended to (1) select the default word determined for the last trace and the other previous features in the input sequence, and (2) begin a new word starting with the second trace. Thus, at decision block 784, the disambiguation module may determine whether the last two input features were traces. If they were, the system may (1 ) proceed to block 792 in order to process the user's selection of the last default word, and (2) restart process 700 with the components of the second trace (i.e., its corners and segments) as the first features in a new input sequence. Otherwise, the system may simply continue the process 700. Of course, any other suitable feature combination could be utilized to test for auto-spacing at decision block 784. More generally, the disambiguation module 613 may perform auto-spacing upon the occurrence of a particular feature composition within the input sequence; the triggering compositions may be set using disambiguation parameters and preferences in the disambiguation parameters database 630.
[00141] Additionally, for certain languages (e.g., compounding languages) or contexts (e.g., URL entry), the auto-spacing feature may be disabled or implemented in a different fashion. For example, if two consecutive traces (or a different triggering condition) is detected, the system may (1) proceed to block 792 in order to process the user's selection of the last default word, and (2) restart process 700 with the components of the second trace (i.e., its corners and segments) as the first features in a new input sequence, and may set a flag that indicates that the last default word and the new word should be compounded when the new word is selected.
[00142] If the input data indicates the user has selected a word, processing proceeds to block 792 where the disambiguation module processes the selected word, otherwise processing proceeds directly to block 786. At block 792 the disambiguation module outputs the selected word to the desired output (e.g., to the output area of a window associated with a currently running application program). The nature of this output may be affected by context (e.g., sentence context), flags, parameters, or other factors. For example, if the immediately previous word in a sentence is a common left stem in a compounding language, and the currently selected word is a common right stem in the same compounding language, the disambiguation module may determine whether to insert a space before the currently selected word, or whether to compound the newly selected word to the immediately previous word. To make such a decision, the disambiguation module may utilize language information from the vocabulary module 624 and/or grammar module. As another example, if the disambiguation module may eliminate a spaces between words if it can infer from the context (e.g., the previous entry of "google.com") that a user is entering a URL.
[00143] Additionally, at block 792, the disambiguation module may update the vocabulary module to reflect the selection. For example, the disambiguation module may update frequency and recency information related to the selected word and/or may add a user-created word to a user-specific dictionary or temporary dictionary until the user has entered the same word several times. This avoids the accidental addition of garbage words to the user database. The system may even take notice of later edits to the word to remove such accidental additions to the dictionary without further user intervention. In addition, the user may indicate that a user generated word should be added immediately to the user dictionary through a particular action, such as a long press on the word. In addition to the word, the system may also include information about the textual context of the word such as the preceding word/words to further improve future predictions (e.g. with word pairs, as noted herein).
[00144] As another example, the disambiguation module may update a dictionary that is both application- and user-dependent (e.g., if the system maintains different user dictionaries for email vs. text messaging). As yet another example, the disambiguation module may retrieve the previous word entered in order to update the user context database 626 with information that relates to word pairs utilized by a user. For example, if the user frequently used the word pair "school book", and in a current entry a previous word was "school", then the work "book" may receive a higher probability and be promoted within the word choice list. As another example, in some implementations, the disambiguation module may update the application context database 628, e.g., by associating the selected word with an applicable field label.
[00145] Additionally, at block 792, the disambiguation module may analyze current and/or historical received input data, current and/or historical input sequences and current and/or historical selected words in order to adjust its future behavior. For example, the disambiguation module may compare the location of the keys corresponding to a user's selected word to the location of detected features in an input sequence to determine if it can discern any trends in how the user inputs data to the user interface (can the system learn the user's patterns or habits based on a set of similar user inputs). If trends are discerned, the disambiguation module may update user-specific or other disambiguation parameters to reflect any observed trend. As examples, the disambiguation module may adjust its character selection parameters if a user always overshoots or undershoots a character at a corner (or does so in certain cases), if a user wiggles slightly during a tap in an effort to apparently provide extra emphasis or indicate a repeated letter, if the user typically pauses mid-segment in order to indicate an intended keystroke, etc. As another specific example, the disambiguation module may adjust applicable distance function and/or proximity metric parameters (e.g., those used to generate a corner oval, as described herein) to reflect how a user is particularly precise or imprecise in their input entry. In many instances, the disambiguation module employs a feedback loop, wherein the module stores the series of user inputs associated with the same word the user selected from the word list, compare those inputs, and make adjustments to ordered list of words on subsequent word lists, disambiguation of weights to inputs, etc. Different adaptation models may exist when the system detects a single finger entry (such as the thumb when holding the device in one hand) versus the entry through multiple fingers when holding the keyboard with both hands. In addition, the models can take into consideration other contextual parameters such as speed of the user, the availability of environmental light, etc.
[00146] As another example, the disambiguation module may analyze the selected word to determine the primary or preferred language of the user by determining the frequency with which the user selects words from a particular language, so that the user need not explicitly set his preferred language.
[00147] Additionally, at block 792, the disambiguation module may also update the application context database to reflect the frequency or recency of the word or phrase in the context of a particular application program (e.g., a text message program) and/or a particular application field (e.g., a "name" field). If appropriate, selected fields such as password fields may be remembered, but can be protected from being retrieved until the user enters a secret passcode, gesture, shake, speech command which unlocks the secured memory, vault or location containing these sensitive words for a period of time which may depend on various context parameters. For instance, when a device has entered a 'sleep' mode or a 'screen saver' mode, the vault may auto lock. The behavior of the vault may be defined by the user, if necessary on a per case basis. Furthermore, the user may have defined various 'personas' or guises and based upon explicit or implicit activation, usernames, passwords and other sensitive data may change. For instance, during working hours, the persona would be 'work' while after hours or during the weekends the persona could be 'leisure' or 'home' or 'family', and differing dictionaries, databases and preferences of the system would be used depending upon the persona.
[00148] Finally, at block 792, the disambiguation module may clear the input sequence and restart a new process 700 as shown in Figure 7A.
[00149] At block 786, the disambiguation module determines whether the input data indicates the deletion of characters. For example, the disambiguation module may determine whether a delete special function key was been depressed (or traced), or whether the user shook the device or otherwise performed a deletion gesture. If a deletion event is detected, processing proceeds to blocks 794 and 796 before block 788. Otherwise processing proceeds directly to block 788. At block 794, the disambiguation module removes one or more feature objects from the input list. Typically, for a single depression (e.g., tap) or trace of a delete key, the disambiguation module may remove the last intentional feature object and any subsequent incidental feature objects from the input sequence. However, the disambiguation module may remove a different subset of feature objects from the input sequence; the number, nature and order of the features removed at block 394 may depend on the precise nature of the input data received (e.g., whether a "delete all" key or gesture was utilized instead of a "delete one" key or gesture; whether a user's deletion gesture or input indicated that a particular feature should be deleted, etc.) At block 794, the disambiguation module may additionally decrement the estimated input length variable L to reflect the deletion of one or more intentional feature objects from the input sequence. At block 796, the disambiguation module creates a new word list using the updated input sequence and outputs this new list to the user (e.g., as described in Figure 9A).
[00150] At block 788, the disambiguation module determines whether the input data indicates a special function that is related to how the disambiguation module should select candidate characters and/or words when generating a word choice list. For example, the disambiguation module may determine whether the user has tapped or traced over a shift key, a caps lock key, a keyboard selection key, or a similar key that modifies how the disambiguation module should select characters and/or words. In another example, the keyboard may contain a 'Command' key which allows the user to quickly enter system commands. For instance by tracing over a Command key the word "COPY", or tracing from the Command key to then trace the word COPY on the keyboard, the user can copy selected text. Similarly, a CTRL key could be used to map to commonly used functions: CTRL-A "Select All", CTRL-C/V to copy and paste, CTRL- E to center text etc. In addition, the user may be able to define commands and short cuts. As another example, the disambiguation module may determine whether the user has indicated a similar intent via other input means (e.g., by tracing off-keyboard (e.g. to indicate an undisplayed character is desired); by shaking, rubbing or other physical gesture; or by voice command). If a special function is indicated, the disambiguation module takes appropriate responsive action at block 798, for example, by adjusting a character determination flag (such as a capitalization flag, an area-key mapping selection flag, a key-character mapping selection flag, and/or a diacritical marker flag), or a word determination flag (such as a capitalization flag), by adjusting the contents of the input sequence, and/or by taking any other suitable action
[00151] At block 790, the disambiguation module determines whether the input data indicates another function. For example, the disambiguation module may determine that the user has tapped on a menu button. If another function is indicated, at block 799 the disambiguation module takes suitable steps needed to perform the other indicated function before the process 315 returns. Otherwise, the process 715 returns immediately.
[00152] Figure 8A illustrates a process 800 for identifying what input features, if any, are indicated by received input data and generating a feature object for each identified input feature. The process also characterizes each input feature, selects a character set to associate with the input feature, and determines a proximity weight set associated with that character set or corresponding weights for each character in the set.
[00153] The process 800 begins at block 802, where the character selection submodule processes the raw input data (e.g., a time series of finger down, finger move and finger up notifications or events associated with position measurements) to identify the types of input feature(s) present and the location of the identified input features. To identify each input feature, the character selection submodule may analyze a group of input data corresponding to a single depression of a user's finger, i.e., a time series of input data that starts with a finger down event, any number of finger move events, and a finger up event. The character selection submodule may then analyze this group to determine movement and/or pressure metrics from the related time series of position/pressure data, X-Y = {x(t),y(t), and optionally, p(t)}. For example, the character selection submodule may calculate first-order values such as: the total time of the depression, the total distance traveled (e.g., by summing all of the line segments reflected in X-Y), the range of (x(t), y(t)) or some combination thereof, the net difference in pressure during the depression, etc. As another example, the character selection submodule may perform higher-order and/or time-dependent calculations, such as determining the velocity of the user's finger along a trace or performing well-known geometric analysis algorithms that may be used to identify corners, inflection points (e.g., using second derivatives), and/or other interest points.
[00154] At decision block 805, the character selection submodule determines whether the input data indicates a tap feature. To identify a tap feature, the character selection submodule may simple determine whether the total depression time falls under a threshold tap time value and/or the total range of movement during the time series also falls under a threshold tap distance value. If these conditions are satisfied, the character selection submodule may identify a suitable location (e.g. the initial, average, or final (x,y) coordinate seen during the depression window) to utilize as the location of the tap feature. However, the character selection submodule may apply any other suitable method to identify a tap, to distinguish a tap from other types of features and/or to determine the location of the tap. For example, the character selection submodule may ignore low-pressure taps.
[00155] If a tap is detected at decision block 805, processing next continues at block 850, where the character selection submodule generates a feature object for the tap by characterizing the tap, identifying a related character set associated with the tap, and calculating proximity weights for each character in the character set. Typically, a character selection submodule will characterize a tap feature as an intentional feature as described previously, but under certain circumstances dictated by disambiguation parameters (e.g., a low-pressure tap); the character selection submodule may instead characterize a tap as an incidental feature. Additionally, the character selection submodule may characterize the tap feature as both a "finger-down" and "finger-up event." Suitable methods for identifying a related character set and calculating proximity weights for a detected tap feature are described in greater detail herein with respect to Figures 8B and 8C.
[00156] At block 810, the character selection submodule determines whether the input data contains a corner feature. The character selection submodule may detect a starting corner and an ending corner of a trace simply by utilizing the first and last members or data points of the X-Y set of a trace. To identify a mid-trace corner feature, the character selection submodule may utilize any suitable curvature analysis method to detect an abrupt change in the user's direction. As one example, the character selection submodule may repeatedly evaluate a series of coordinates (e.g. three consecutive points) on the trace to determine if the central point falls more than a threshold distance from the line connecting the other two points. If it does not, the evaluation repeats for the next set of points on the trace. If it does, the central point is identified as a corner location. This process is then iterated to find corners. As another example, to identify a mid-trace corner feature, the character selection submodule may evaluate the pressure, velocity and/or acceleration behavior along a trace. However, the character selection submodule may apply any other suitable method to identify a corner, to distinguish a corner from other types of features and/or to determine the location of the corner.
[00157] If a corner is detected at decision block 805, processing next continues at block 860, where the character selection submodule generates a feature object for the corner by characterizing the corner, identifying a related character set associated with the corner and calculating proximity weights for each character in the character set. Typically, a character selection submodule will characterize a corner feature as an intentional feature as described previously, but under certain circumstances dictated by disambiguation parameters (e.g., a low-pressure corner or a mid-trace corner with a lower curvature); the character selection submodule may instead characterize a corner as a incidental feature. Additionally, the character selection submodule may characterize a starting corner feature as a finger-down feature and characterize an ending corner feature as a finger-up feature. Suitable methods for identifying a related character set and calculating proximity weights for a detected corner feature are described in greater detail herein with respect to Figures 8B and 8D.
[00158] At decision block 820, the character selection submodule determines whether a segment feature is detected in the input data. The character selection submodule may detect a segment and select the location data for a segment feature simply by selecting the X-Y trace data that falls between two adjoining corners (where, again, a "corner" can include an endpoint of the trace). The submodule may also determine whether where the trace is greater than an area of key on the virtual keyboard to indicate a potential segment between two features. However, the character selection submodule may apply any other suitable method to identify a segment, to distinguish a segment from other types of features and/or to determine the location of the segment.
[00159] If a segment is detected at decision block 820, processing next continues at block 870, where the character selection submodule generates a feature object for the segment by characterizing the segment, identifying a related character set associated with the segment and calculating proximity weights for each character in the character set. Typically, the character selection submodule will characterize a segment feature as an incidental feature unless otherwise dictated by disambiguation parameters. Suitable methods for identifying a related character set and calculating proximity weights for a detected segment feature are described in greater detail herein with respect to Figures 8B and 8E.
[00160] At decision block 830, the character selection submodule determines whether another type of feature is detected in the input data. For example, the character selection submodule may identify any hovering or anomalous localized pressure that occurred during an X-Y trace. Examples of other features that the character submodule may detect include: spoken commands (e.g., to select a letter), a second finger tapping the screen during a trace, a moderate change in curvature, and a constant change in curvature (e.g., suggesting a circling motion). If another type of feature is detected, processing continues at block 880, where the character selection submodule generates a feature object for the feature by characterizing the feature, identifying a related character set associated with the feature and calculating proximity weights for each character in the character set. The character selection submodule may characterize the identified feature as an intentional feature if the feature is a clear manifestation of the user's intent to effectuate a particular keystroke. For example, a clearly spoken letter may be characterized an intentional feature.
[00161] During the process 800, the character selection submodule may adjust the location of an input feature to offset known peculiarities or trends in a user's input style by evaluating various user-specific disambiguation parameters. For example, the character selection submodule may adjust the position of a tap feature to the left of its actual detected location if the user has a tendency to tap to the right of keys.
[00162] Figure 8B shows a process 890 for identifying a character set and calculating related proximity weights for an input feature. The process 890 begins at block 803, where the character selection submodule utilizes disambiguation parameters to identify an applicable distance function and proximity metric that should be used for the particular feature type. A "distance function" provides a method of deriving a distance score, which reflects the separation between the location of a particular input feature and the location of a particular key in a virtual keyboard. A "proximity metric" provides a method of deriving a proximity weight. A "proximity weight" reflects the likelihood or probability that a user intended to indicate a particular keystroke by an input feature, based on the separation between the location of the input feature and the location of a particular corresponding key in a virtual keyboard. Figures 8C-8E, described below, illustrate various types of distance functions and proximity metrics that may be utilized. One having skill in the art will appreciate, however, that any suitable distance functions or proximity metrics may be employed.
[00163] At block 806, the character selection submodule loads an area-key mapping from the keyboard mapping database 622 that reflects the key layout (e.g., 12- key, 28-key, etc.) of the virtual keyboard being displayed to and utilized by the user.
[00164] Then, starting at block 809, the character selection submodule performs a loop for each key in the area-key mapping. The loop begins at block 812, where the character selection submodule determines the location of the key by using the area-key mapping, which typically is a language-independent mapping. Next, at block 815, the character selection submodule calculates the key's distance score by evaluating the applicable distance function using the location of the key and the location of the input feature, as described in greater detail herein with respect to Figures 8C-8E. At decision block 818, the character selection submodule determines if the key is sufficiently close to the input feature to merit further analysis; to do so, the submodule may evaluate the distance score against a threshold value. If the key is not sufficiently close, the loop repeats starting at block 812. Otherwise, the process proceeds to block 824, where the character selection submodule calculate the key's proximity weight by evaluating the applicable proximity metric using the location of the key, the location of the input feature and/or the distance score as described in greater detail herein with respect to Figures 8C-8E.
[00165] At block 827, the character selection submodule uses one or more key- character mappings to identify all characters associated with the key, even characters that may not be displayed to the user on the virtual keyboard (e.g., an accented letter). The submodule may determine which key-character mappings to use at block 827 by evaluating various flags (e.g., a keyboard selection flag), dynamic context information (e.g., a user's language settings received from the operating system), user preferences, and/or disambiguation parameters. For example, the submodule may receive an indication that the user interface has a full QWERTY keyboard with a French character layout, and may use this information to select a suitable key-character mapping. The character selection submodule may utilize more than one key-character mapping at this block (e.g., to accommodate a multi-lingual user who may wish to continuously enter text without switching between different on-screen character layouts).
[00166] At block 833, the character selection submodule adds each character identified at block 827 to the feature object's character set and associates each identified character with the calculated key proximity weight. At block 836, the character selection submodule determines if there are more keys in the area-key mapping to process. If so, the loop repeats starting at block 812, otherwise the process 890 returns.
[00167] Figure 8C conceptually illustrates suitable distance functions and/or proximity metrics that may be suitably employed with tap features. Figure 8C indicates a tap feature 882 located at a point (shown with an "X") on the "E" key of a virtual, displayed QWERTY keyboard. In some implementations, both the distance function and the proximity metric are piece-wise step functions. In one example, the distance score for a key is zero if any part of the key (or alternatively, all of the key) falls within a circle 881 of radius R, where R may be determined at least in part using disambiguation parameters (including, for example, parameters that may be adjusted to reflect a user's input style and parameters related to a keyboard layout such as the average key size and/or average key separation). In this example, the distance function has a maximum value for all other keys falling outside the radius. In this example, for the tap 882 shown, the A, W, S, E, D, R (and possibly T) keys would have a 0 distance value (or other minimum value), and all other keys would have a maximum distance value. In another example, the distance score for a key is zero (or minimum) if the tap point 882 falls directly on the key, is an intermediate value if some (or alternatively, all) of the key falls within a circle 881 of radius R, and is a maximum value for all other keys outside the circle 4881. In this example, for the tap 882 shown in Figure 8C, the E key would have zero distance score, the A, W, S, D, R (and possibly T) keys would have an intermediate value, and all other keys would have a maximum value. In yet another example, the distance function for a key is the Cartesian distance from the tap feature 882 to a point on or in the key (e.g., its centroid, the closest point on its perimeter, etc.). In these examples, a proximity metric for a key may be defined as the maximum value of the distance function (or another maximum value) minus the distance score of the key. However, one having skill in the art will appreciate that any other suitable higher-order distance functions and/or proximity metrics may be employed and that the proximity metric need not directly employ a key's distance score. The techniques described for tap features may also be suitably employed for other finger-on and/or finger-off features (e.g., corner features that either start or end a trace).
[00168] Figure 8D conceptually illustrates suitable distance functions and/or proximity metrics that may be suitably employed with corner features, and may be particularly well-suited to non-terminal corner features. During a trace, as a user approaches a corner 883, there may be a tendency for the user to either overshoot and/or overshoot his intended corner key. Whether a user overshoots or undershoots during a given trace may be a function of the handedness of the user, the shape and/or layout of the keyboard, the direction of the trace, the velocity or acceleration as the user approaches the corner, the shape of the user's hand, the user's ability to visually discern the keyboard layout as he approaches the corner key (it may be obstructed by his hand), the degree of curvature of the trace at the corner, and other factors. These factors may also affect precisely how the user overshoots or undershoots (e.g., whether they overshoot in the x-direction, the y-direction, how far they overshoot, etc.).
[00169] Figure 8D conceptually illustrates how distance functions and/or proximity metrics may compensate for a user overshooting or undershooting an intended key. Figure 8D shows how an ellipse 884 or oval area (or similar asymmetric shape) at an internal corner feature 883 may be utilized to implement piece-wise distance functions analogous to the piece-wise distance functions described previously with respect to Figure 8C. The precise shape and orientation of the area may be chosen to correct for overshoot or undershoot that is caused by the factors just described. For example, in one implementation, the major axis 888 of an ellipse 884 may be chosen to parallel the velocity vector of the user's finger just before it reaches the corner 883, when it reaches the corner or shortly after it turns the corner. Additionally, the length of the major axis 888 may be chosen to increase in proportion to the magnitude of the velocity vector at one of these points and/or to otherwise reflect the factors described previously (e.g., the sloppiness of the user). Similarly, the length of the minor axis 889 may be chosen to reflect the factors described previously.
[00170] As shown in Figure 8F, a different type of asymmetric shape may also be utilized, such as an ovoid shape, which comprises two half-ovals, each having its own major axis and minor axis. The directions, and absolute and/or relative lengths of the two major axes may be a function of the velocity of the user's fingers (both magnitude and direction), the handedness of the user, the sloppiness of the user, and/or the other factors described previously. In one implementation, the major axis of a half-ellipse may be chosen to parallel the velocity vector of the user's finger just before it reaches the corner, when it reaches the corner or shortly after it turns the corner. The axes may be chosen in part to correct for an obscured view that is dependent on the handedness of the user and their direction of movement. For example, a right-handed user moving to the right has less visibility of keys to the right of his finger (e.g., than a left-handed user moving in the same direction), which causes increased uncertainty in judging his intent to strike a key on the right side of a corner. In the example shown in Figure 8F, the ovoid is longer on the right side of the keyboard to compensate for a right handed user's more obstructed view of some keys as he approaches from the bottom left. The minor axes of the two half-ovals in the ovoid may also be chosen to reflect the factors described previously; the two half-ovals may have minor axes of different lengths, with the longer axis being located to the right in the example above.
[00171] Similar to the methods described previously with respect to Figure 8C, keys that fall (either fully or partially) within the asymmetric shape (e.g. ellipse 884 or the ovoid of Figure 8F) may be assigned a lower distance score (and/or higher proximity weight) than shapes outside the asymmetric shape. As another example, if a corner point 883 falls on a key, that key may be assigned a minimum distance score, keys within the asymmetric shape may be assigned an intermediate distance score, and keys outside the asymmetric shape may be assigned a maximum distance score. In yet another example, the distance function for a key is the Cartesian distance from the corner feature 483 to a point on or in the key (e.g., its centroid, the closest point on its perimeter, etc.). Also, the proximity weight for a key may be chosen by subtracting the key's distance score from the maximum possible distance score.
[00172] Figure 8D has primarily described piecewise distance functions and proximity metrics for corner features. However, any other suitable higher-order distance functions and/or proximity metrics may be employed (including higher-order distance functions and/or proximity metrics that correct for overshoot or undershoot factors) and that the proximity metric need not directly employ a key's distance score.
[00173] Figure 8E conceptually illustrates distance functions and/or proximity metrics that may be suitably employed with segment features. Here, a piece-wise distance function and/or proximity metric may be defined using an irregular area 885 defined by all points falling within a particular perpendicular distance from the trace line of the segment feature 886. The maximum distance utilized to define the area may be determined at least in part using disambiguation parameters (including, for example, parameters that may be adjusted to reflect a user's input style and habits). In a first example, all keys that fall partially (or alternatively, wholly) within the irregular area 885 may receive a minimum distance score (and/or maximum proximity weight) and all other keys may receive a maximum distance score (and/or minimum proximity weight). In a second example, keys that are directly intersected by the segment feature 886 may receive a minimum distance score (and/or maximum proximity score), other keys that fall partially (or alternatively, wholly) within the area may receive an intermediate distance score (and/or maximum proximity score), and all other keys may receive a maximum distance score (and/or minimum proximity score). One having skill in the art will appreciate that any other suitable higher-order distance functions and/or proximity metrics may be employed, including higher-order functions and metrics that utilize the perpendicular distance of a key to the trace line.
[00174] Figure 9A shows a process 900 for creating a word choice list using an input sequence of feature objects. The process 900 begins at block 905, where the word list selection submodule loads or receives applicable disambiguation parameters; context data, including semi-static context data retrieved from the user context database and application context database and dynamic context data received from an operating system and/or application program; and language data, including, e.g., frequency data from a vocabulary module, user context database, and/or application context database. At block 510, the word list selection submodule ("word submodule" for short) loads applicable dictionaries from the vocabulary submodule using the context data, disambiguation parameters, and/or any flags (e.g., language selection flags). For example, the dictionaries used may be selected on the basis of the type of application program that will receive the output of the disambiguation module. As another example, the dictionary used may be generated by analyzing the user's speech using voice recognition software or by analyzing another mode of user input. For example, the dictionary may be an N-best list generated by voice recognition software, handwriting recognition software, etc.
[00175] At block 915, the word submodule may pre-filter the dictionaries using some portion of the input sequence, the estimated input length L and/or the context to generate a subgroup of words. As a first example, the word submodule may pre-filter the dictionary on the basis of whether a word matches the first "finger-up" feature and/or the last "finger-down" feature (described previously), since these features provide possibly the strongest indication of the user's intent to effectuate a particular keystroke. As a second example, the word submodule may pre-filter the dictionary on the basis of estimated input length L. For example, the word submodule may filter out any words that are shorter than L minus X, where X is determined using disambiguation parameters. As a third example, the word submodule may pre-filter the dictionary to a list of words generated by voice recognition software. As a fourth example, if the dynamic context indicates that the user is typing in a name field, it may filter the dictionary to only include proper nouns. Of course, the word submodule may use a combination of these filtering techniques.
[00176] At block 920, the word submodule selects the next word in the subgroup on the basis of language data, context, word length, and/or any other suitable factors. For example, the word submodule may sort the subgroup on the basis of frequency of use and present these words in that order.
[00177] At block 925, the word submodule determines the matching score for the selected word by evaluating a match metric using input sequence, context, word length, and language data. A suitable method for determining a matching score using a match metric is shown in Figure 9B.
[00178] At decision block 930, the word submodule may determine if the word has a matching score that exceeds a minimum threshold value that is determined using disambiguation parameters. If it does, the word is added to the word choice list at block 935 before the process proceeds to block 940. Otherwise processing proceeds directly to block 940. The word submodule may eliminate poorly matching words and provide a word list of fixed or minimum size. Alternatively block 930 may be eliminated from the word submodule.
[00179] At block 940, the word submodule determines if there are more words to process in the subgroup. If there are, the processing returns to block 920 so that another word may be evaluated.
[00180] Otherwise, the process proceeds to block 945, where the word choice list is post-processed. For example, the word submodule may sort the list by matching score and/or by selecting one or more default words that have the highest matching score. As another example, after sorting, the word submodule may group or adjust the ordering of words in a logical fashion to facilitate improved user browsing behavior. For example, the word submodule may rearrange the list to group together words that have the same root (e.g., "interest," "interesting," and "interestingly") to permit a user to scan the word choice list more rapidly. As yet another example, dynamic or static context data may be utilized at block 950 to adjust the list, e.g., to promote or demote particular words in the list and/or to otherwise adjust the order of the list. For example, if a user has utilized a particular word in the same application program before, that word may be promoted. As another example, the word submodule may promote words that end with a punctuation mark over words that have embedded punctuation marks. As yet another example, if more than one language dictionary was utilized to generate a word list or the disambiguation module is otherwise providing bilingual integration (e.g., to accommodate a bilingual user), the post-processing may promote words in the primary language of the user and/or demote words in a secondary language of the user. The "primary language" of the user may be determined by language parameters or flags and/or by user context data from the user context database 626.
[00181] As still another example of post-processing, the disambiguation module may promote or demote particular words based on application-specific field information and/or rules or grammar retrieved from the application context database.
[00182] In another example of post-processing, the disambiguation module may determine whether the user is attempting to utilize a word that may not be listed or found in a standard dictionary, such as neologism like "podcast," or an uncommon proper noun. If it determines, based on typical character sequences in a language that the user may be attempting to enter an "unlisted" word that does not appear in the dictionary, it will make the unlisted word the default word, and provide the word choice list as an alternative suggestion. Otherwise, it may utilize a high-scoring word selected from the dictionary as the default word.
[00183] To illustrate, if the user crisply taps out the letters "podcast," the disambiguation module may keep "podcast" as default word, despite the fact that it may not be in a standard English dictionary, since the character sequences (the combinations of "po," "ca," and "st," etc.) are frequently seen in the English language. On the other hand, if the user crisply taps out the letters "Pfsx," the disambiguation module may assume that the user has made a misspelling (or typed sloppily) and will not select "pfsx" as the default word, since the combinations of "pf ' "fs" and "sx" are all infrequently seen in the English language. Instead the disambiguation module will select a dictionary word with a high matching score found during blocks 905-940.
[00184] To make this determination, the disambiguation module may first generate a "stroke sequence" by selecting, for each intentional feature (e.g., tap) in the input sequence, the associated character that has the best proximity score. Next, the disambiguation module may evaluate the composition of the stroke sequence by using a table or database within the vocabulary module 624 that provides the probabilities or frequencies of various character sequences (character bigrams, 3-grams, 4-grams, ... n-grams, etc.) in a given language (or other logical group of words) to derive a composition score. The composition score may be the product of various probabilities/frequencies of bigrams/etc, or another higher-order function of the various probabilities/frequencies. If the composition score exceeds a threshold value, the disambiguation module may use the stroke sequence as the default word. In some implementations, the stroke sequence may be defined using a different subset of the input sequence (e.g., tap features only, not corners).
[00185] At block 950 the word choice list is output to the user, e.g., via a word choice list area on a display or otherwise. Alternatively, the word choice list and/or a default word may be provided to another process (e.g., an application program) that does not need user intervention to select a word.
[00186] Figure 9B shows one suitable process 990 for calculating a matching score for a word using a matching metric. Any matching metric or algorithm may be utilized to generate a matching score, and that the disclosed technology is not limited to those particular examples described below.
[00187] The process 990 begins at block 972 when the word submodule sets a word's matching score to a default score, which may be a unity value of 1. A loop for each character in the word then begins, as shown at block 974. At block 975, the word submodule retrieves the character set and related proximity weight set that corresponds to the next intentional input feature in the input sequence, or if this is the first iteration of the character loop, the first intentional input feature in the input sequence. For example, the word submodule retrieves the character set and proximity weights associated with the next tap or corner feature in the input sequence. [00188] At block 976, the word submodule identifies the proximity weight for the character. To do so, the submodule determines whether the character appears in the retrieved character set, and if it does, it uses the retrieved proximity weight associated with the character. Otherwise, if the character does not appear in the retrieved character set, the submodule may use a default proximity weight (e.g., a low weight) specified by a disambiguation module, terminate the loop 974, or end the process 990 by returning a default matching score (e.g., a score of zero or other default matching score).
[00189] At block 978, the word submodule adjusts the matching score to reflect the identified proximity weight for the character. In one example, the submodule adjusts the matching score by multiplying it by the retrieved proximity weight. However, the matching score may be adjusted in any manner to reflect the retrieved matching score. For example, the previous matching score and the retrieved proximity weight may combined by any suitable function including simple addition, a weighted summation, multiplication, division, and higher order functions etc.
[00190] At decision block 979, the word submodule tests whether there are any more characters to process in the word and whether there are more intentional features in the input sequence. If both conditions are satisfied, the character loop repeats starting at block 975. Otherwise the process proceeds to block 980.
[00191] At block 980, the word submodule adjusts the matching score to reflect context data and/or language data (e.g., frequency of use). In one implementation, the word submodule scales the matching score by the frequency of use. As another example, the word submodule may increase a matching score based on context data, for example, the matching score may be increased if the user has utilized the same word in the same type of data field and/or the same application. As yet another example, if the surrounding sentence context (e.g., previous words entered by the user) suggests that the word is more or less likely, the matching score may be adjusted upward or downward. These examples are not intended to be exhaustive. The previous matching score may be adjusted in any suitable manner (e.g., via higher order functions) that reflects how the context and/or frequency of use increases or decreases the likelihood that the word was the intended entry of the user. [00192] At block 982, by utilizing known edit distance techniques, the word submodule determines the type of edits needed to match a character sequence reflected in the intentional features of the input sequence. For example, the word submodule may determine what characters would need to be added to the word, or what characters would need to be removed from the word so that it would match a sequence of characters reflected in the sequence of intentional features.
[00193] When determining the types of edit(s) needed, the word submodule may only attempt to match a first portion of the word against the intentional features in the input sequence. For example, the word submodule may ignore any mismatches that occur after the Lth character in the word, where L is the estimated input length. The cutoff point could alternatively be chosen as L-1 , L+2, L+3, etc. In this way, the word submodule improves the chances that a longer word having a good initial match to the user's initial input will be returned.
[00194] At block 984, for each edit needed, the word submodule determines an edit penalty based on the estimated input length and the input sequence, including the feature types reflected in the input sequence and the proximity weights. As utilized herein, a "low penalty" is one that is lower than a standard or default penalty assessed by a standard edit cost function for a similar edit.
[00195] As a first example, the word submodule may assign a zero or low penalty for character changes needed after a first portion of the word. For example, there may be no penalty or a low penalty assessed for character changes needed after the Lth position in the word. This technique similarly improves the chances that a longer word that has a good initial match to the user's initial input will be returned.
[00196] As a second example, the word submodule may assign a zero or low penalty for character additions or deletions involving characters that are reflected by the full input sequence, including both intentional and incidental features. For example, if the only difference between the word and the input sequence of intentional features is a missing "E" between the third and fourth intentional features, the word submodule may assign a zero or low penalty if an "E" character appears in a character set associated with an incidental feature (e.g., a segment) that falls between the third and fourth intentional features in the input sequence. In some implementations, the penalty assessed may be a function of the proximity weight associated with the missing character. To illustrate, returning to the previous example, if the segment feature that provides the missing "E" cuts directly through the center of the E key (i.e., the proximity weight for the E character is near its maximum possible value), the penalty assessed may be lower than if the segment runs further away from the E key. By reducing or eliminating edit penalties in these circumstances, the word submodule permits a user to indicate her selection of a letter simply by tracing through the letter.
[00197] As a third example, the word submodule may assign a zero or low penalty for character additions or deletions caused by repeating characters or repeating keystrokes. Stated another way, there is a no penalty or lower penalty assessed if the word would match the input sequence if only one or more input features were repeated (one or more times) within the sequence. By reducing or eliminating edit penalties in these circumstances, the word submodule permits a user to indicate her selection of a word that has repeating characters or repeating keystrokes with a reduced number of input features. If a low penalty is assessed, it may be a function of the type of input features that would need to be repeated (e.g., intentional vs. incidental), the number of times each feature would need to be repeated, and/or the proximity metrics associated with the repeated input features. To illustrate, if the word is "WEED" and only difference between the word and the input sequence of intentional features is that the second "E" is missing between the second and third intentional features, the word submodule may assign a zero or low penalty.
[00198] As a fourth example, the word list selection submodule may assign a zero or low penalty for character changes that reflect the addition or deletion of punctuation marks and/or similar symbols.
[00199] At block 986, the word submodule adjusts the matching cost to reflect any calculated penalties. In some cases, the penalty is subtracted from the matching score. However, in other implementations, higher-order adjustments may be utilized. Then the process 990 returns. IV. APPLICATION TO SECURITY SYSTEMS
[00200] In accordance with another aspect of the disclosed technology, a password or other text entry system and method are provided that allow a user to leverage the familiarity with QWERTY keyboard (or other common keyboard layouts).
[00201] This password or other text input is achieved by providing the user with preferably nine, or other appropriate number of defined zones, each anchored by a distinct key that acts as a zone output key. When the user selects one key from a particular zone, the zone output key of the selected zone is considered as having been selected. Thus, while a user is able to enter a password on a standard keyboard in a standard manner, depending on the zone definitions, a sequence of zone output keys will be output representative of the input password. If a receiving device is aware of the zone definition used when generating the sequence of output keys corresponding to the input password, the receiving device is able to decipher the sequence of output keys to determine whether the proper password has been entered.
[00202] A plurality of zone definitions may be available. Thus, by transmitting a zone definition identifier and sequence of zone output keys, a receiving device, that is aware of the plurality of zone definitions and identifiers associated therewith, can properly interpret the transmission while maintaining the security of the password.
[00203] Additionally, the zone definition need not necessarily include keys that are contiguous with each other. By defining non-contiguous zones, the user must be more accurate in key entry, but the difficulty for a hacker or other thief in breaking the code may be greatly increased, and the number of possible available zone definitions is similarly greatly increased.
[00204] Additionally, rather than using only a standard keyboard for text entry of the password characters, characters may be input using directional input on a joystick, 4 or 8 directional keypad (such as the ones found in TV remote control, telephones and mobile phones), various combinations of numeric keys on such a remote control or other available numeric keypad, or pointing functionality of such a remote control or other device, such as a Nintendo ® Wii® remote or other wand like input device, body movement entry solutions, or the like. When using such a non-traditional input device, the user may move the joystick or other device in the direction of a desired key to be input. When performing this movement, rather than moving between keys, the selector moves between adjacent zones of keys, all keys contained in the zone moved to will be selected, and a zone output key associated with that zone may be further delineated. Thus, when a key is desired to be selected, a joystick or the like may be used to move to a zone that contains the desired key. By selection of such a zone, the associated zone output key may be presented as part of the output sequence of characters. By way of example, if the user wishes to select the letter "R" as part of a password, movement to a zone containing the letters R, T, Y, U, and I, and using Y as a zone output key, selection of such a zone causes the letter "Y" to be output as part of the output stream. In addition to providing a coded password transmission, a user need only select between the number of zones, and not be as precise as selecting each individual key in that selection of any key in a particular zone will result in the same zone output key being output as part of the password data stream.
[00205] The disclosed technology is also applicable to any keyboard configuration, and language, and any other symbol grouping. Furthermore, the zones assigned to an input device need not be visible to a user, rather only working to encrypt the data to be transmitted in the background.
[00206] Referring first to Figure 10, a first embodiment in accordance with the disclosed technology is shown. In Figure 10, a keyboard, designated generally at 1000, is provided with a plurality of keys 1110. In this depicted embodiment, a 26 letter QWERTY keyboard is shown. It should be understood by one of ordinary skill in the art that other keyboard configurations are available, including but not limited to other arrangements of the 26 English letter alphabet, arrangements of any other character set for use in other languages, any combination of numbers and/or letters, or any other desired combination of symbols of any kind. A predetermined number of these keys 1110 are also designated as zone output keys 1120. In the depicted embodiment, there are nine such zone output keys, although any desired number may be employed. Each zone output key 1120 is associated with a zone comprising one or more letter keys associated therewith. As is further shown in Figure 10 by way of example, the Έ" key, designated as 120a represents the zone output key for a zone comprising the Έ" key, and the other letter keys "Q", "W", "R", and "T", collectively designated at 1110a. Thus, any time a user is interested in selecting any one of the five keys in this zone (1110a or 1120a), the zone output key Έ" will be the selected output key to comprise part of the output data stream representing the selected password or other text. While it is anticipated that each zone output key may be associated with a predefined, unique set of keys 1 10, it would be possible to have the zones overlapping, and indeed include one or more keys 1110 in one or more zones.
[00207] Furthermore, while it is contemplated that all of the available symbol keys, in this case letters, be included within at least one zone, this need not be the case. Indeed, any particular key or keys may be left alone, requiring direct user selection. Such a configuration may be desirable for rarely-used keys, or keys with special significance.
[00208] As can be understood from this description referring to Figure 10, a user experience is eased as a user need not be as accurate when choosing a key entry, and indeed only has, in this particular depicted embodiment, nine zones to choose from, rather than a more traditional 26 letters. In the particular embodiment as depicted in Figure 10, a user interface might utilize a joystick with eight directional movement, and a center home position, each available position corresponding to a zone output. Alternatively, a remote control or other device with a nine number keypad may be employed, each number corresponding to one of the zone output keys. Of course other configurations, including a joystick with less directional movement or a track ball with more, the same, or fewer degrees of freedom may be employed thus allowing a user to directionally move between zones. While requiring less hardware and learning, such a configuration may require two or more jumps when moving from one zone to another situated remotely on the input keyboard as movement may be limited to jumping between adjacent zones. Alternatively, it may be possible to provide a scenario where a cursor or other pointer returns to a "home" or other designated zone or location after each letter entry. This feature has its benefits and drawbacks, providing a known start point for each text entry, but requiring multiple movements for double letters, etc.
[00209] When employing the eight direction joystick as noted above, the user can move between the zones through movement of the joystick. Two or more schemes are possible. In a first, a valid movement of the controller may be Up, Down, Left, Right, Up-Right, Up-Left, Down-Right, and Down-Left. These eight distinct movements allow the user to quickly move between the zone output keys on the keyboard, moving from zone to zone. A similar scheme may be employed with a less versatile four direction joystick. Without diagonal movements available, however, more jumps may be necessary for moving from one zone to another. In a second scheme, each of the eight directional keys and a central "neutral" position may each correspond to the zones, allowing a user to directly access each of the zones without having to navigate from one to the other. Alternatively, when, for example, a nine key number pad is provided, each number may correspond to a particular zone.
[00210] While a most common option would be for these keys to be assigned to various zones based upon corresponding locations, in an alternative embodiment of the disclosed technology, it is possible to configure the zones in any contiguous or noncontiguous manner as the zone location will likely not affect the user experience, if the user is actually entering the password keys, rather than simply selecting one of a number of zones, but the available multiple zone configurations will assist in protecting the security of the input password. In either of these entry situations, it is not necessary that the zones be visible to a user. Rather, a user may be prompted to enter a password as normal on a keyboard. Background processing may assign a zone definition (as will be described below) and prepare a data output stream to transmission.
[00211] Referring next to Figure 11, steps used in accordance with an embodiment of the disclosed technology will be described. First in step 12 0, a zone definition must be determined. Thus, the keys of the keyboard are assigned to a predetermined number of zones. These zones may be contiguous or non-contiguous. Examples of different possible zone configurations can be seen in Figures 15 (see zones 610a-d) and 16, in addition to Figure 10. It should be noted that the use of, for example four zones as shown in Figure 15 will result in an easier input experience for the user as they will need only to select between four zones. The system, however, may require a longer password to be utilized in such a situation so that different passwords may be more likely to generate different sequences of zone output keys. Of course, other configurations may be employed. In accordance with the disclosed technology, a plurality of such zone configurations may be defined, and thus the apparatus at step 1210 may select from one of the predefined zone layout definitions.
[00212] Once the zone definition has been selected, a user may start to enter characters that comprise the password. Such an input character is received at step 1215. At step 1220, the zone output key associated with the zone comprising the key selected by the user is defined as the output character associated with the input character. This output character is then provided as a first character to the eventual output data stream to be transmitted. Then processing passes to step 1225 where it is inquired whether all input characters have been received. If this inquiry is answered in the negative, and it is therefore determined that not all of the desired input characters have been received, control returns to step 1215 and a next input character is received.
[00213] If, however, the inquiry at step 1225 is answered in the affirmative, and it is therefore determined that all desired input characters have been received, then control passes to step 1230, where the utilized zone definition and generated output data stream representing the input password is transmitted to a receiving device. Processing then ends at step 1235. While the embodiment has described transmitting the zone layout definition along with the output data stream, such zone layout definition may be transmitted separately. It is contemplated that such zone layout definition preferably not comprise a complete listing of zones, but rather a zone definition indicator, thus allowing a receiving device to select from one of a plurality of predefined zone layout definitions. In such a manner, only such an otherwise meaningless indicator is transmitted, thus not giving away the zone layout and increasing the security of the system. Further, it is possible that no zone definition is transmitted, and that the transmitting and receiving devices are synchronized and simply cycle through a predetermined number of zone layout definitions in a predetermined manner. Further, it may be possible to use any other indicator or the like to enter into an equation, algorithm, or the like to select from the plurality of zone layout definitions, as long as both the transmitting and receiving devices are able to process the same algorithm to them utilize the same zone layout definition for both generation and interpretation of the password. [00214} Referring next to Figure 12, a receiving device first receives the transmitted zone layout definition (or uses one of the methods noted above to determine the correct zone layout definition to employ). Processing then passes to step 1315 where the receiving device receives the first character of the transmitted data stream, including the output data stream representing the input password. This received character is then compared to a zone output key of a zone containing an expected password character. At step 1325, if it is determined that these characters do not match, then processing ends at step 1340. If it is determined that these characters match, then processing passes to step 1330 where it is determined whether all password characters have been received. If all of the password characters have not been received, processing passes back to step 1315 to receive a next password character.
[00215] If it is determined at step 1330 that all of the password characters have been received, then processing passes to step 1335 where the system recognizes that a valid password has been entered, and the user is so notified. Processing then ends at step 1340. Therefore, in accordance with the charts displayed in Figures 11 and 12, a system of a transmitting device and a receiving device can confirm a user password from one to the other without actually transmitting each actual password character, thus maintaining the security of that password.
[00216] In an alternative embodiment of the disclosed technology, it may be possible to provide two consecutive zone definitions that divide the keyboard in a manner so that upon entry of a password twice by a user, the system transmits zone indications for the two different zone definitions allowing for particular notification of the selected keys at the receiving end, even if the keys themselves. For example, if the letter "A" is first associated with zone 1 , and then in a second zone definition is the only letter previously in zone 1 that is now associated with zone 4, a sequence of Z1, Z4 for the first letter in two consecutive password entries would result in a guaranteed determination of the letter "A", even though this letter was never transmitted. Thus, through the user of multiple iterations of this password scheme, further precision can be achieved.
[00217] An embodiment of the disclosed technology employing a traditional nine key keypad is shown in Figure 13. As is shown in Figure 13, zone output keys 1120, 1120a are shown, as well as keys associated therewith 110a, similarly to the display depicted in Figure 10. Additionally, a key configuration 1410 is shown, such as that may be included on a traditional remote control, telephone, or the like, indicating a mapping each key 1415 thereof to one of the zone output keys 1120, 1120a. Such mapping may be indicated by a connecting lead line 1420, color, shape, or any other desired indicator of relationship. Thus, if a number of zones are defined, a user may be able to enter the password using such a keypad by selecting number keys associated with the zone including each of the desired characters in the password.
[00218] In an additional embodiment of the disclosed technology, rather than making an indication on a remote device as described above to indicate zone selection, it may be possible to employ a pointing device, such as a remote control utilized with, for example, a NINTENDO® Wii® controller, body movement sensing to determine a user input, or the like. Thus, as a user points such a controller at a displayed virtual keyboard, or otherwise indicates zone selection, a zone pointed at by the controller is highlighted or otherwise indicated as being designated. A user can select such a zone by pressing an indicator on the remote, or by other method as is known to one of ordinary skill in the art. The use of zones in accordance with the disclosed technology is particularly useful in such a situation in that the ability to select each individual key may be difficult in such a configuration. Accuracy may be difficult. However, in accordance with the present disclosed technology, a user need only select between, for example, one of nine zones, thus making this ability to select much easier for a user. Thus, a user will likely be able to move through character selection in a much faster and easier manner.
[00219] As is shown in Figures 14A and 14B, utilizing such a pointer device allows for easy selection of a desired zone. Figure 14A depicts selection of a zone 1510, such as that selected in Figure 10. In Figure 14B a zone 1520, two zones to the right of the previously selected zone, is designated and selected. The user is able to make such a designation and selection simply by redirecting the pointing device. Preferably, an indicator 530 remains on the display to aid in locating the current position of the pointing device. [00220] In addition to providing a visual indication of the remote pointing device moving from one displayed zone to another, in an alternative embodiment of the disclosed technology, a haptic or other tactile response is also provided to a user to provide an additional, non-visual indication of movement and selection. Thus, as a user moves the pointing device to designate a second zone, a vibration or other non-verbal indicator may be provided to the user. Thus, if as in the movement between Figures 14A and 14B a user moves the pointer two zones, such a haptic response may be provided to a user twice, once each time the border between zones is crossed. Such haptic response may also be modified, thus providing a different response for different zones. Thus, each zone may have a different haptic signature, or a zone determined by a parsing algorithm to be the most likely selected zone in the next selection may be provided a haptic indicator different from the other zones. The zones may be differentiated in any other manner including such a haptic indicator.
[00221] Referring once again to Figure 10, when a character in a particular zone is selected on the user interface, a predetermined number of adjacent keys to the left and the right and/or above and below are highlighted along with the selected key, thus comprising a zone associated with the zone output key. This highlight lets the user know the zone that has been selected. Preferably, the zone output key associated with the designated zone is further delineated as the key that will become part of the output data stream. As is also noted above, if the zones are not to be displayed to a user, then selection of a particular key will result in no change in display, even if in the background the zone output keys are being output based upon an input zone, as described above.
[00222] As noted above, the displayed virtual keyboard represents a full QWERTY keyboard, but may comprise any other desired configuration. The zone output keys may be preferably highlighted in a different color on the keyboard, or designated using some other distinguishing characteristic. When the input device is used to go to a zone corresponding to a particular zone output key, the other characters in the zone are preferably highlighted as well to provide to the user visual feedback on the set of letters that are grouped with the selection of a particular zone. [00223] While the disclosed technology has been described related to the transmission of a password, the features of the disclosed technology may be applied to a more lengthy encrypted data transmission.
Conclusion
[00224] Unless the context clearly requires otherwise, throughout the description and the claims, the words "comprise," "comprising," and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of "including, but not limited to." As used herein, the terms "connected," "coupled," or any variant thereof means any connection or coupling, either direct or indirect, between two or more elements; the coupling or connection between the elements can be physical, logical, or a combination thereof. Additionally, the words "herein," "above," "below," and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word "or," in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.
[00225] The above Detailed Description of examples of the disclosed technology is not intended to be exhaustive or to limit the disclosed technology to the precise form disclosed above. While specific examples for the disclosed technology are described above for illustrative purposes, various equivalent modifications are possible within the scope of the disclosed technology, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative implementations may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed or implemented in parallel, or may be performed at different times. Further any specific numbers noted herein are only examples: alternative implementations may employ differing values or ranges.
[00226] The teachings of the disclosed technology provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various examples described above can be combined to provide further implementations of the disclosed technology. Some alternative implementations of the disclosed technology may include not only additional elements to those implementations noted above, but also may include fewer elements.
[00227] Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the disclosed technology can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further implementations of the disclosed technology.
[00228] These and other changes can be made to the disclosed technology in light of the above Detailed Description. While the above description describes certain examples of the disclosed technology, and describes the best mode contemplated, no matter how detailed the above appears in text, the disclosed technology can be practiced in many ways. Details of the system may vary considerably in its specific implementation, while still being encompassed by the disclosed technology disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the disclosed technology should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the disclosed technology with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the disclosed technology to the specific examples disclosed in the specification, unless the above Detailed Description section explicitly defines such terms.

Claims

CLAIMS I/We claim:
1. A method for data input, comprising the steps of:
receiving a first user input comprising a microgesture of a user indicating at least a first input selection and a second input selection that represent less than an entire word;
determining one or more possible word suggestions based upon the first user input; and
providing the possible word suggestions to the user.
2. The method of claim 1 , further comprising the step of determining whether there is a bend in a gesture from the first input selection to the second input selection.
3. The method of claim 2, further comprising the step of determining a middle input selection is intended by the user if it is determined that a bend is in the gesture.
4. The method of claim 1 , further comprising the step of determining a direction of movement of the user input from the first input selection.
5. The method of claim 4, further comprising the step of determining a middle input selection is intended by the user based at least in part upon the determined direction of user movement.
6. The method of claim 1 , wherein the first user input is received on a touch screen keyboard of a mobile device.
7. The method of claim 1 , wherein the first user input is received on a touch screen keyboard of a computing device.
71007-8036.WO00/LEGAL20408804.1 -73-
8. The method of claim 1 , wherein the first user input is received at a set top box of a television, and wherein the first user input is made employing a remote control pointer.
9. A method for data input, comprising the steps of:
receiving a first user input comprising a microgesture of a user indicating at least a first input selection and a second input selection that represent less than an entire word;
determining one or more possible word suggestions based upon the first user input;
providing the possible word suggestions to the user;
receiving a second user input comprising a microgesture of a user indicating at least a third input selection and a fourth input selection;
determining one or more possible word suggestions based upon the first user input and the second user input; and
providing the possible word suggestions to the user.
10. A computer system, comprising:
a memory for storing programmed instructions;
processor electronics configured to execute the instructions to perform a method for data input by:
receiving a first user input comprising a microgesture of a user indicating at least a first input selection and a second input selection that represent less than an entire word;
determining one or more possible word suggestions based upon the first user input; and
providing the possible word suggestions to the user.
11. A method for data input at a remotely located computing device, comprising the steps of:
dividing an input selection device of the remotely located computing device into a plurality of zones, each zone comprising one or more keys;
71007-8036.WO00/LEGAL20408804.1 -74- receiving a sequence of user indications of sequentially selected zones;
considering all of the one or more keys associated with each of the selected zones to have been selected;
transmitting a sequence of the sequentially selected one or more keys to a remote database storage location;
entering the sequence of the sequentially selected one or more keys into an algorithm for determining an intended user word or words input in accordance with a sequence of selected keys;
transmitting the determined intended user word or words to the remotely located computing device; and
receiving user indication of selection of one of the determined intended user word or words.
12. The method of claim 11 , further comprising the step of considering one or more characteristics of the remotely located computing device in accordance with the algorithm for determining an intended user word or words.
13. The method of claim 12, wherein the one or more characteristics comprises the identity of a user employing the remotely located computing device.
14 The method of claim 12, wherein the one or more characteristics comprises an indication of text entry selections in the past in accordance with a user of the remotely located computing device.
15. The method of claim 14, wherein text entry selections made in the more recent past are weighted more heavily that text entry selections made in the more distant past in accordance with the algorithm.
16. The method of claim 12, wherein the one or more characteristics comprises a group to which a user of the remotely located computing device is associated.
17. The method of claim 16, wherein the one or more characteristics further comprises an indication of text entry selections in the past in accordance with the group.
18. The method of claim 14, wherein text entry selections made in the more recent past and more frequently are weighted more heavily that text entry selections made in the more distant past and less frequently in accordance with the algorithm.
19. A computer system comprising:
a memory configured to store programmed instructions;
processor electronics configured to execute the programmed instructions to perform a method for data input at a remotely located computing device, by:
dividing an input selection device of the remotely located computing device into a plurality of zones, each zone comprising one or more keys;
receiving a sequence of user indications of sequentially selected zones; considering all of the one or more keys associated with each of the selected zones to have been selected;
transmitting a sequence of the sequentially selected one or more keys to a remote database storage location;
entering the sequence of the sequentially selected one or more keys into an algorithm for determining an intended user word or words input in accordance with a sequence of selected keys;
transmitting the determined intended user word or words to the remotely located computing device; and
receiving user indication of selection of one of the determined intended user word or words.
20. A method for data transmission, comprising the steps of:
dividing an input selection device into a plurality of zones, each zone including two or more input keys which correspond to at least one zone output key;
71007-8036.WO00/LEGAL20408804.1 -76- receiving a plurality of inputs, each input being associated with the selection of a key in one of the plurality of zones; and
outputting a plurality of zone output keys that correspond to each of the plurality of inputs received.
21. The method of claim 20, wherein the plurality of input characters comprise a password.
22. The method of claim 20, wherein the configuration of the plurality of zones comprises a zone definition.
23. The method of claim 20, wherein the zone definition is output along with the zone output keys.
24. A method for data transmission, comprising the steps of:
defining a plurality of zone layout definitions, each zone layout definition being identified by a zone definition identifier, each zone definition dividing an input selection device into a plurality of zones, each zone including one output key associated therewith;
selecting one of the zone layout definitions;
receiving a plurality of input characters, each input character being associated with at least one of the plurality of zones defined by the selected zone layout definition; and
outputting a sequence of zone output keys including a zone output key included in each of the zones associated with each of the plurality of input characters as defined in accordance with the selected zone layout definition.
25. The method of claim 24, further comprising the step of outputting the zone definition identifier for the selected zone layout definition.
71007-8036.WO00/LEGAL20408804.1 -77-
26. The method of claim 25, further comprising the step of transmitting the zone definition identifier and sequence of zone output keys to a receiving device.
27. The method of claim 26, further comprising the steps of:
receiving at the receiving device the transmitted zone definition identifier and sequence of zone output keys;
applying a predefined sequence of characters against a predetermined one of a plurality of zone layout definitions associated with the transmitted zone definition identifier to determine an expected sequence of zone output keys associated with the transmitted sequence of zone output keys; and comparing the transmitted sequence of zone output keys with the expected sequence of zone output keys to determine a match therebetween.
28. The method of claim 27, wherein a password is accepted if the transmitted sequence of zone output keys matches with the expected sequence of zone output keys.
29. A method for data transmission, comprising the steps of:
defining a plurality of zone layout definitions, each zone layout definition dividing an input selection device into a plurality of zones, each zone including one output key associated therewith;
selecting one of the zone layout definitions in accordance with a predetermined selection method;
receiving a plurality of input characters, each input character being associated with at least one of the plurality of zones defined by the selected zone layout definition;
outputting to a receiving device a sequence of zone output keys including a zone output key included in each of the zones associated with each of the plurality of input characters as defined in accordance with the selected zone layout definition;
receiving at a receiving device the output sequence of zone output keys;
71007-8036.WO00/LEGAL20408804.1 -78- selecting the one of the zone layout definitions in accordance with the predetermined selection method;
applying a predefined sequence of characters against the selected zone layout definition to determine an expected sequence of zone output keys associated with the output sequence of zone output keys; and comparing the output sequence of zone output keys with the expected sequence of zone output keys to determine a match therebetween.
30. The method of claim 29, wherein the zone layout definition is selected by sequencing through a predetermined number of zone definitions.
31. The method of claim 29, wherein the zone layout definition is selected by application of a predetermined algorithm to one or more predefined coefficients.
32. The method of claim 29, wherein each zone in a zone layout definition includes contiguous groups of keys.
33. The method of claim 29, wherein at least one zone in a zone layout definition includes non-contiguous keys.
34 The method of claim 29, wherein all of the keys associated with a zone are indicated as having been selected upon selection of one key in the zone.
35. The method of claim 29, wherein the zone output key associated with a zone that includes a particular selected input key is indicated differently than the other keys in the zone.
36. The method of claim 29, wherein the zones are defined from a QWERTY keyboard layout.
37. The method of claim 29, wherein at least one key is associated with a plurality of zones.
71007-8036.WO00/LEGAL20408804.1 -79-
38. The method of claim 29, wherein a password is accepted if the output sequence of zone output keys matches with the expected sequence of zone output keys.
39. The method of claim 29, wherein a user is notified of the acceptance of the password.
40. A computer system comprising:
a memory configured to store a sequence of program instructions;
processor electronics configured to execute the program instructions to perform a method for data transmission by:
dividing an input selection device into a plurality of zones, each zone including two or more input keys which correspond to at least one zone output key; receiving a plurality of inputs, each input being associated with the selection of a key in one of the plurality of zones; and
outputting a plurality of zone output keys that correspond to each of the plurality of inputs received.
41. A computer system, comprising:
a memory configured to store programmed instructions;
processor electronics configured to execute the programmed instructions to perform a method of receiving text inputs from a user by:
receiving inputs from a user in two or more different modalities, wherein the inputs are indicative of text to be entered;
analyzing the inputs in each of the two or more modalities to determine one or more word choices corresponding to the text to be entered; using the word choices determined from each of the two or more modalities to select a word that corresponds to the text to be entered.
42. The computer system of claim 41, wherein the instructions are executable by the processor electronics to present the word choices determined from each of the
71007-8036.WO00/LEGAL20408804.1 -80- two or more modalities to the user to select a word corresponding to the text to be entered.
43. The computer system of claim 41 , wherein the computer includes a keyboard and a microphone and wherein the instructions are executable by the processor to receive inputs from the user via entries on the keyboard and via audio input received by the microphone.
44. The computer system of claim 41 , wherein the computer includes a tactile input and a microphone and wherein the instructions are executable by the processor to receive inputs from the user via entries on the tactile input and via audio input received by the microphone.
45. The computer system of claim 41 , wherein the memory stores a mapping of entries on a keyboard to text.
46. The computer system of claim 41 , wherein the memory stores a database of words that are likely to correspond to text entered by the user, wherein the database records how frequently the words in the database are selected by the user.
47. The computer system of claim 41 , wherein the memory stores a database of words that are likely to correspond to text entered by the user, wherein the database records how recently the words in the database were selected by the user.
48. The computer system of claim 41 , wherein the instructions cause the processor to determine recent actions taken by the user and select word choices corresponding to the recent actions taken by the user.
49. The computer system of claim 48, whrein the recent actions taken by the user include one or more of: programs used, documents viewed; internet sites visited; and audio/video content experienced.
71007-8036.WO00/LEGAL20408804.1 -81- 50 The computer system of claim 41 , wherein the instructions cause the processor to determine a location of the user and select word choices corresponding to the location of the user.
71007-8036.WO00/LEGAL20408804.1 -82-
PCT/US2011/028387 2010-03-12 2011-03-14 Multimodal text input system, such as for use with touch screens on mobile phones WO2011113057A1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
EP11754256.3A EP2545426A4 (en) 2010-03-12 2011-03-14 Multimodal text input system, such as for use with touch screens on mobile phones
CN201180023649.XA CN103038728B (en) 2010-03-12 2011-03-14 Such as use the multi-mode text input system of touch-screen on a cellular telephone
JP2012557308A JP5642809B2 (en) 2010-03-12 2011-03-14 Multi-modal text input system for use with mobile phone touchscreen etc.
KR1020147022010A KR101477530B1 (en) 2010-03-12 2011-03-14 Multimodal text input system, such as for use with touch screens on mobile phones
US13/583,840 US9104312B2 (en) 2010-03-12 2011-03-14 Multimodal text input system, such as for use with touch screens on mobile phones
KR1020127026175A KR20130001261A (en) 2010-03-12 2011-03-14 Multimodal text input system, such as for use with touch screens on mobile phones
US14/749,621 US20150293602A1 (en) 2010-03-12 2015-06-24 Multimodal text input system, such as for use with touch screens on mobile phones

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US31342310P 2010-03-12 2010-03-12
US31345410P 2010-03-12 2010-03-12
US61/313,454 2010-03-12
US61/313,423 2010-03-12
US31386410P 2010-03-15 2010-03-15
US61/313,864 2010-03-15
US31679910P 2010-03-23 2010-03-23
US61/316,799 2010-03-23

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US13/583,840 A-371-Of-International US9104312B2 (en) 2010-03-12 2011-03-14 Multimodal text input system, such as for use with touch screens on mobile phones
US14/749,621 Division US20150293602A1 (en) 2010-03-12 2015-06-24 Multimodal text input system, such as for use with touch screens on mobile phones

Publications (1)

Publication Number Publication Date
WO2011113057A1 true WO2011113057A1 (en) 2011-09-15

Family

ID=44563890

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2011/028387 WO2011113057A1 (en) 2010-03-12 2011-03-14 Multimodal text input system, such as for use with touch screens on mobile phones

Country Status (6)

Country Link
US (2) US9104312B2 (en)
EP (1) EP2545426A4 (en)
JP (2) JP5642809B2 (en)
KR (2) KR101477530B1 (en)
CN (1) CN103038728B (en)
WO (1) WO2011113057A1 (en)

Cited By (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012098428A1 (en) * 2011-01-18 2012-07-26 Nokia Corporation Task performance
CN102662485A (en) * 2012-03-12 2012-09-12 成都林海电子有限责任公司 Method and device for Chinese character input
CN102819567A (en) * 2012-07-17 2012-12-12 重庆优腾信息技术有限公司 Method and system for searching contact information in electronic equipment
CN103019497A (en) * 2012-12-28 2013-04-03 华为终端有限公司 Touch positioning method, device and touch terminal
CN103064530A (en) * 2012-12-31 2013-04-24 华为技术有限公司 Input processing method and device
WO2013130682A1 (en) * 2012-02-27 2013-09-06 5 Examples, Inc. Date entry system controllers for receiving user input line traces relative to user interfaces to determine ordered actions, and related systems and methods
US8543934B1 (en) 2012-04-30 2013-09-24 Blackberry Limited Method and apparatus for text selection
WO2013149403A1 (en) 2012-04-07 2013-10-10 Motorola Mobility, Inc. Text select and enter
CN103376909A (en) * 2012-04-19 2013-10-30 腾讯科技(深圳)有限公司 Method and system of adjusting sequence of candidate characters in use of input methods
WO2013163718A1 (en) * 2012-04-30 2013-11-07 Blackberry Limited Touchscreen keyboard with correction of previously input text
WO2014003138A1 (en) * 2012-06-29 2014-01-03 Kddi株式会社 Input character estimation device and program
EP2693317A1 (en) * 2012-08-01 2014-02-05 BlackBerry Limited Electronic device and method of changing a keyboard
CN103576882A (en) * 2012-07-27 2014-02-12 深圳市世纪光速信息技术有限公司 Off-normal text recognition method and system
CN103596028A (en) * 2013-11-25 2014-02-19 乐视致新电子科技(天津)有限公司 Method and device for controlling smart television
US8659569B2 (en) 2012-02-24 2014-02-25 Blackberry Limited Portable electronic device including touch-sensitive display and method of controlling same
WO2014035773A1 (en) * 2012-08-31 2014-03-06 Microsoft Corporation Context sensitive auto-correction
US20140098036A1 (en) * 2012-10-10 2014-04-10 Microsoft Corporation Text entry using shapewriting on a touch-sensitive input panel
WO2014055762A1 (en) * 2012-10-05 2014-04-10 Google Inc. Incremental multi-touch gesture recognition
WO2014062583A1 (en) * 2012-10-16 2014-04-24 Google Inc. Character deletion during keyboard gesture
WO2014062937A1 (en) * 2012-10-19 2014-04-24 Google Inc. Decoding imprecise gestures for gesture-keyboards
WO2014062358A1 (en) * 2012-10-16 2014-04-24 Google Inc. Multi-gesture text input prediction
DE102013009375A1 (en) 2012-12-28 2014-07-03 Volkswagen Aktiengesellschaft Method for entering and recognizing a character string
US8782549B2 (en) 2012-10-05 2014-07-15 Google Inc. Incremental feature-based gesture-keyboard decoding
CN103970278A (en) * 2013-01-25 2014-08-06 胡竞韬 Input method and device for round touch keyboard
WO2014123633A1 (en) * 2013-02-05 2014-08-14 Google Inc. Gesture keyboard input of non-dictionary character strings
US8819574B2 (en) 2012-10-22 2014-08-26 Google Inc. Space prediction for text input
US8850350B2 (en) 2012-10-16 2014-09-30 Google Inc. Partial gesture text entry
US8911165B2 (en) 2011-01-24 2014-12-16 5 Examples, Inc. Overloaded typing apparatuses, and related devices, systems, and methods
CN104346067A (en) * 2013-11-15 2015-02-11 上海触乐信息科技有限公司 Method and system for continuously inputting words in sliding mode
US9032322B2 (en) 2011-11-10 2015-05-12 Blackberry Limited Touchscreen keyboard predictive display and generation of a set of characters
US9047268B2 (en) 2013-01-31 2015-06-02 Google Inc. Character and word level language models for out-of-vocabulary text input
EP2764424A4 (en) * 2011-10-04 2015-06-03 Sony Corp Information processing device, information processing method and computer program
US9063653B2 (en) 2012-08-31 2015-06-23 Blackberry Limited Ranking predictions based on typing speed and typing confidence
US9081500B2 (en) 2013-05-03 2015-07-14 Google Inc. Alternative hypothesis error correction for gesture typing
US9116552B2 (en) 2012-06-27 2015-08-25 Blackberry Limited Touchscreen keyboard providing selection of word predictions in partitions of the touchscreen keyboard
US9122672B2 (en) 2011-11-10 2015-09-01 Blackberry Limited In-letter word prediction for virtual keyboard
US9134906B2 (en) 2012-10-16 2015-09-15 Google Inc. Incremental multi-word recognition
US9152323B2 (en) 2012-01-19 2015-10-06 Blackberry Limited Virtual keyboard providing an indication of received input
US9195386B2 (en) 2012-04-30 2015-11-24 Blackberry Limited Method and apapratus for text selection
US9201510B2 (en) 2012-04-16 2015-12-01 Blackberry Limited Method and device having touchscreen keyboard with visual cues
US9207860B2 (en) 2012-05-25 2015-12-08 Blackberry Limited Method and apparatus for detecting a gesture
WO2016037019A1 (en) * 2014-09-05 2016-03-10 Microsoft Technology Licensing, Llc Display-efficient text entry and editing
US9310889B2 (en) 2011-11-10 2016-04-12 Blackberry Limited Touchscreen keyboard predictive display and generation of a set of characters
US9524290B2 (en) 2012-08-31 2016-12-20 Blackberry Limited Scoring predictions based on prediction length and typing speed
US9547439B2 (en) 2013-04-22 2017-01-17 Google Inc. Dynamically-positioned character string suggestions for gesture typing
US9557913B2 (en) 2012-01-19 2017-01-31 Blackberry Limited Virtual keyboard display having a ticker proximate to the virtual keyboard
US9652448B2 (en) 2011-11-10 2017-05-16 Blackberry Limited Methods and systems for removing or replacing on-keyboard prediction candidates
US9715489B2 (en) 2011-11-10 2017-07-25 Blackberry Limited Displaying a prediction candidate after a typing mistake
US9779080B2 (en) 2012-07-09 2017-10-03 International Business Machines Corporation Text auto-correction via N-grams
JP2017199410A (en) * 2012-01-16 2017-11-02 タッチタイプ リミテッド System and method for text input
US9830311B2 (en) 2013-01-15 2017-11-28 Google Llc Touch keyboard using language and spatial models
CN107430448A (en) * 2015-03-24 2017-12-01 谷歌公司 For the Uulearning technology of the adaptive language model in Characters
US9910588B2 (en) 2012-02-24 2018-03-06 Blackberry Limited Touchscreen keyboard providing word predictions in partitions of the touchscreen keyboard in proximate association with candidate letters
WO2018118537A1 (en) * 2016-12-19 2018-06-28 Microsoft Technology Licensing, Llc Facilitating selection of holographic keyboard keys
WO2018125288A1 (en) * 2016-12-29 2018-07-05 Google Llc Modality learning on mobile devices
US10095403B2 (en) 2015-05-05 2018-10-09 International Business Machines Corporation Text input on devices with touch screen displays
WO2019139784A1 (en) * 2018-01-12 2019-07-18 Microsoft Technology Licensing, Llc Computer device having variable display output based on user input with variable time and/or pressure patterns
US10671272B2 (en) 2015-11-06 2020-06-02 International Business Machines Corporation Touchscreen oriented input integrated with enhanced four-corner indexing
CN111858921A (en) * 2019-09-24 2020-10-30 北京嘀嘀无限科技发展有限公司 Interest point query method and device and electronic equipment
WO2023017189A1 (en) * 2021-08-13 2023-02-16 Brainbox Gmbh Method and device for inputting a character string

Families Citing this family (322)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US10002189B2 (en) 2007-12-20 2018-06-19 Apple Inc. Method and apparatus for searching using an active ontology
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
CA2723898C (en) * 2008-05-09 2015-06-30 Research In Motion Limited Method of e-mail address search and e-mail address transliteration and associated device
US20100030549A1 (en) 2008-07-31 2010-02-04 Lee Michael M Mobile device having human language translation capability with positional feedback
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US10706373B2 (en) 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
EP3091535B1 (en) * 2009-12-23 2023-10-11 Google LLC Multi-modal input on an electronic device
US11416214B2 (en) * 2009-12-23 2022-08-16 Google Llc Multi-modal input on an electronic device
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
KR101477530B1 (en) 2010-03-12 2014-12-30 뉘앙스 커뮤니케이션즈, 인코포레이티드 Multimodal text input system, such as for use with touch screens on mobile phones
US8487877B2 (en) 2010-06-10 2013-07-16 Michael William Murphy Character specification system and method that uses a limited number of selection keys
JP5782699B2 (en) 2010-10-15 2015-09-24 ソニー株式会社 Information processing apparatus, input control method for information processing apparatus, and program
US9183192B1 (en) * 2011-03-16 2015-11-10 Ruby Investments Properties LLC Translator
US20120239381A1 (en) * 2011-03-17 2012-09-20 Sap Ag Semantic phrase suggestion engine
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US9215506B2 (en) * 2011-03-31 2015-12-15 Tivo Inc. Phrase-based communication system
KR101233561B1 (en) * 2011-05-12 2013-02-14 엔에이치엔(주) Speech recognition system and method based on word-level candidate generation
ES2735273T3 (en) 2011-05-23 2019-12-17 Huawei Device Co Ltd Input method, input device and terminal device
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US20140189569A1 (en) * 2011-07-18 2014-07-03 Syntellia, Inc. User interface for text input on three dimensional interface
US20130212515A1 (en) * 2012-02-13 2013-08-15 Syntellia, Inc. User interface for text input
US8935230B2 (en) 2011-08-25 2015-01-13 Sap Se Self-learning semantic search engine
KR101951257B1 (en) * 2011-09-09 2019-02-26 삼성전자주식회사 Data input method and portable device thereof
US9785628B2 (en) * 2011-09-29 2017-10-10 Microsoft Technology Licensing, Llc System, method and computer-readable storage device for providing cloud-based shared vocabulary/typing history for efficient social communication
US9251144B2 (en) * 2011-10-19 2016-02-02 Microsoft Technology Licensing, Llc Translating language characters in media content
US20130120268A1 (en) * 2011-11-10 2013-05-16 Research In Motion Limited Touchscreen keyboard predictive display and generation of a set of characters
CH705918A2 (en) * 2011-12-19 2013-06-28 Ralf Trachte Field analyzes for flexible computer input.
US9330083B2 (en) * 2012-02-14 2016-05-03 Facebook, Inc. Creating customized user dictionary
US9330082B2 (en) * 2012-02-14 2016-05-03 Facebook, Inc. User experience with customized user dictionary
US9307009B2 (en) * 2012-02-15 2016-04-05 Mobilespan Inc. Presenting execution of a remote application in a mobile device native format
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US8667414B2 (en) 2012-03-23 2014-03-04 Google Inc. Gestural input at a virtual keyboard
US8713464B2 (en) * 2012-04-30 2014-04-29 Dov Nir Aides System and method for text input with a multi-touch screen
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
WO2013170383A1 (en) 2012-05-16 2013-11-21 Xtreme Interactions Inc. System, device and method for processing interlaced multimodal user input
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
US9672209B2 (en) 2012-06-21 2017-06-06 International Business Machines Corporation Dynamic translation substitution
CN104412203A (en) * 2012-06-29 2015-03-11 微软公司 Cross-lingual input method editor
CN103529951B (en) * 2012-07-05 2017-09-15 腾讯科技(深圳)有限公司 Characters input method and system
US9298295B2 (en) * 2012-07-25 2016-03-29 Facebook, Inc. Gestures for auto-correct
US9619812B2 (en) 2012-08-28 2017-04-11 Nuance Communications, Inc. Systems and methods for engaging an audience in a conversational advertisement
CN103677299A (en) * 2012-09-12 2014-03-26 深圳市世纪光速信息技术有限公司 Method and device for achievement of intelligent association in input method and terminal device
US9591679B2 (en) 2012-09-17 2017-03-07 Blackberry Limited Initiation of inter-device communication in wireless communication systems
US9826381B2 (en) 2012-09-18 2017-11-21 Blackberry Limited Device handshake/discovery for inter-device communication in wireless communication systems
US20140129933A1 (en) * 2012-11-08 2014-05-08 Syntellia, Inc. User interface for input functions
US10423214B2 (en) 2012-11-20 2019-09-24 Samsung Electronics Company, Ltd Delegating processing from wearable electronic device
US10551928B2 (en) 2012-11-20 2020-02-04 Samsung Electronics Company, Ltd. GUI transitions on wearable electronic device
US8994827B2 (en) 2012-11-20 2015-03-31 Samsung Electronics Co., Ltd Wearable electronic device
US11372536B2 (en) 2012-11-20 2022-06-28 Samsung Electronics Company, Ltd. Transition and interaction model for wearable electronic device
US11157436B2 (en) 2012-11-20 2021-10-26 Samsung Electronics Company, Ltd. Services associated with wearable electronic device
US11237719B2 (en) 2012-11-20 2022-02-01 Samsung Electronics Company, Ltd. Controlling remote electronic device with wearable electronic device
US10185416B2 (en) 2012-11-20 2019-01-22 Samsung Electronics Co., Ltd. User gesture input to wearable electronic device involving movement of device
US10824297B2 (en) 2012-11-26 2020-11-03 Google Llc System for and method of accessing and selecting emoticons, content, and mood messages during chat sessions
US20140173522A1 (en) * 2012-12-17 2014-06-19 Michael William Murphy Novel Character Specification System and Method that Uses Remote Selection Menu and Touch Screen Movements
KR102306899B1 (en) * 2013-01-21 2021-09-30 키포인트 테크놀로지스 인디아 프라이비트 리미티드 Text input system and method
IN2013CH00469A (en) 2013-01-21 2015-07-31 Keypoint Technologies India Pvt Ltd
US20150363383A1 (en) * 2013-01-22 2015-12-17 Nec Solution Innovators, Ltd. Input support system, input support method and input support program
US20140208258A1 (en) * 2013-01-22 2014-07-24 Jenny Yuen Predictive Input Using Custom Dictionaries
US9037598B1 (en) * 2013-01-25 2015-05-19 Google Inc. Variable query generation
US9113213B2 (en) 2013-01-25 2015-08-18 Nuance Communications, Inc. Systems and methods for supplementing content with audience-requested information
KR20240132105A (en) 2013-02-07 2024-09-02 애플 인크. Voice trigger for a digital assistant
US20140229882A1 (en) * 2013-02-08 2014-08-14 Syntellia, Inc. User interface for advanced input functions
US9003333B2 (en) 2013-03-04 2015-04-07 Zynga Inc. Sequential selection of multiple objects
US20140267045A1 (en) * 2013-03-14 2014-09-18 Microsoft Corporation Adaptive Language Models for Text Predictions
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US9348429B2 (en) * 2013-03-15 2016-05-24 Blackberry Limited Method and apparatus for word prediction using the position of a non-typing digit
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
JP2014203288A (en) * 2013-04-05 2014-10-27 ソニー株式会社 Information processing apparatus, information processing method, and program
US9665246B2 (en) * 2013-04-16 2017-05-30 Google Inc. Consistent text suggestion output
US8825474B1 (en) * 2013-04-16 2014-09-02 Google Inc. Text suggestion output using past interaction data
JP2014211701A (en) * 2013-04-17 2014-11-13 ソニー株式会社 Information processing apparatus, information processing method, and program
US9805718B2 (en) * 2013-04-19 2017-10-31 Sri Internaitonal Clarifying natural language input using targeted questions
US8756499B1 (en) * 2013-04-29 2014-06-17 Google Inc. Gesture keyboard input of non-dictionary character strings using substitute scoring
US9552411B2 (en) * 2013-06-05 2017-01-24 Microsoft Technology Licensing, Llc Trending suggestions
WO2014197336A1 (en) * 2013-06-07 2014-12-11 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
WO2014197335A1 (en) 2013-06-08 2014-12-11 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
KR101772152B1 (en) 2013-06-09 2017-08-28 애플 인크. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US9244906B2 (en) 2013-06-21 2016-01-26 Blackberry Limited Text entry at electronic communication device
US10445417B2 (en) * 2013-08-01 2019-10-15 Oracle International Corporation Entry of values into multiple fields of a form using touch screens
DE112014003653B4 (en) 2013-08-06 2024-04-18 Apple Inc. Automatically activate intelligent responses based on activities from remote devices
US9218508B2 (en) * 2013-09-06 2015-12-22 Getac Technology Corporation Electronic device and protection method thereof
CN103455623B (en) * 2013-09-12 2017-02-15 广东电子工业研究院有限公司 Clustering mechanism capable of fusing multilingual literature
US9170736B2 (en) * 2013-09-16 2015-10-27 Microsoft Corporation Hover controlled user interface element
US20150089435A1 (en) * 2013-09-25 2015-03-26 Microth, Inc. System and method for prediction and recognition of input sequences
CN103472998B (en) 2013-09-27 2017-03-15 小米科技有限责任公司 A kind of method of selected text, device and terminal unit
IN2013MU03161A (en) * 2013-10-04 2015-07-03 Deshmukh Rakesh
US20150100911A1 (en) * 2013-10-08 2015-04-09 Dao Yin Gesture responsive keyboard and interface
CN104573447A (en) * 2013-10-16 2015-04-29 中国移动通信集团公司 Method and device for controlling terminal equipment
WO2015061761A1 (en) * 2013-10-24 2015-04-30 Fleksy, Inc. User interface for text input and virtual keyboard manipulation
US10296160B2 (en) 2013-12-06 2019-05-21 Apple Inc. Method for extracting salient dialog usage from live data
US9841873B1 (en) * 2013-12-30 2017-12-12 James Ernest Schroeder Process for reducing the number of physical actions required while inputting character strings
KR20150081181A (en) * 2014-01-03 2015-07-13 삼성전자주식회사 Display apparatus and Method for providing recommendation characters thereof
US10691332B2 (en) 2014-02-28 2020-06-23 Samsung Electronics Company, Ltd. Text input on an interactive display
CN103825952B (en) * 2014-03-04 2017-07-04 百度在线网络技术(北京)有限公司 Cell dictionary method for pushing and server
US20150277751A1 (en) * 2014-03-28 2015-10-01 Linpus Technologies, Inc. Gesture selection data input method and data storage medium having gesture selection software tool stored thereon for implementing the same
US20150286402A1 (en) * 2014-04-08 2015-10-08 Qualcomm Incorporated Live non-visual feedback during predictive text keyboard operation
JP6362391B2 (en) * 2014-04-10 2018-07-25 キヤノン株式会社 Information processing terminal, information processing method, and computer program
KR102177607B1 (en) * 2014-05-16 2020-11-11 엘지전자 주식회사 Mobile terminal and method for controlling the same
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
CN110797019B (en) 2014-05-30 2023-08-29 苹果公司 Multi-command single speech input method
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US9575560B2 (en) 2014-06-03 2017-02-21 Google Inc. Radar-based gesture-recognition through a wearable device
CN105224858A (en) * 2014-06-05 2016-01-06 阿里巴巴集团控股有限公司 A kind of interface for password input display packing and system
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US20160041626A1 (en) * 2014-08-06 2016-02-11 International Business Machines Corporation Configurable character variant unification
US9921660B2 (en) 2014-08-07 2018-03-20 Google Llc Radar-based gesture recognition
US9811164B2 (en) 2014-08-07 2017-11-07 Google Inc. Radar-based gesture sensing and data transmission
US10534532B2 (en) 2014-08-08 2020-01-14 Samsung Electronics Co., Ltd. Electronic device and method for processing letter input in electronic device
US10268321B2 (en) * 2014-08-15 2019-04-23 Google Llc Interactive textiles within hard objects
US9588625B2 (en) 2014-08-15 2017-03-07 Google Inc. Interactive textiles
US10515151B2 (en) * 2014-08-18 2019-12-24 Nuance Communications, Inc. Concept identification and capture
US9778749B2 (en) 2014-08-22 2017-10-03 Google Inc. Occluded gesture recognition
US11169988B2 (en) 2014-08-22 2021-11-09 Google Llc Radar recognition-aided search
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US9940016B2 (en) * 2014-09-13 2018-04-10 Microsoft Technology Licensing, Llc Disambiguation of keyboard input
US9684694B2 (en) * 2014-09-23 2017-06-20 International Business Machines Corporation Identifying and scoring data values
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
JP6430198B2 (en) * 2014-09-30 2018-11-28 株式会社東芝 Electronic device, method and program
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US9600080B2 (en) 2014-10-02 2017-03-21 Google Inc. Non-line-of-sight radar-based gesture recognition
US10083167B2 (en) 2014-10-03 2018-09-25 At&T Intellectual Property I, L.P. System and method for unsupervised text normalization using distributed representation of words
GB201418402D0 (en) * 2014-10-16 2014-12-03 Touchtype Ltd Text prediction integration
US9696904B1 (en) * 2014-10-30 2017-07-04 Allscripts Software, Llc Facilitating text entry for mobile healthcare application
JP5943359B2 (en) * 2014-11-05 2016-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation System, method and program for verifying password
US10074102B2 (en) * 2014-11-26 2018-09-11 Adobe Systems Incorporated Providing alternate words to aid in drafting effective social media posts
US9516115B2 (en) * 2014-12-05 2016-12-06 Software 263 Technology (Beijing) Co., Ltd. Softphone user interface system and method
US20160216773A1 (en) * 2015-01-24 2016-07-28 Yi-Chuan Cheng Virtual Object Control Method and the Portable Device
US10282089B2 (en) * 2015-02-03 2019-05-07 Google Llc User state-adaptive text input
CN105988704B (en) * 2015-03-03 2020-10-02 上海触乐信息科技有限公司 Efficient touch screen text input system and method
US10152299B2 (en) 2015-03-06 2018-12-11 Apple Inc. Reducing response latency of intelligent automated assistants
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10016162B1 (en) 2015-03-23 2018-07-10 Google Llc In-ear health monitoring
US9983747B2 (en) 2015-03-26 2018-05-29 Google Llc Two-layer interactive textiles
US10726197B2 (en) * 2015-03-26 2020-07-28 Lenovo (Singapore) Pte. Ltd. Text correction using a second input
US10498834B2 (en) * 2015-03-30 2019-12-03 [24]7.ai, Inc. Method and apparatus for facilitating stateless representation of interaction flow states
WO2016161056A1 (en) * 2015-03-31 2016-10-06 Keyless Systems Ltd. Improved data entry systems
US10203870B2 (en) * 2015-04-07 2019-02-12 Blackberry Limited Authentication using a touch-sensitive keyboard with distinct pluralities of keys as respective regions
US9678664B2 (en) 2015-04-10 2017-06-13 Google Inc. Neural network for keyboard input decoding
WO2016176357A1 (en) 2015-04-30 2016-11-03 Murphy Michael William Systems and methods for word identification that use button press type error analysis
KR102002112B1 (en) 2015-04-30 2019-07-19 구글 엘엘씨 RF-based micro-motion tracking for gesture tracking and recognition
KR102327044B1 (en) 2015-04-30 2021-11-15 구글 엘엘씨 Type-agnostic rf signal representations
WO2016176574A1 (en) 2015-04-30 2016-11-03 Google Inc. Wide-field radar-based gesture recognition
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10088908B1 (en) 2015-05-27 2018-10-02 Google Llc Gesture detection and interactions
US9693592B2 (en) 2015-05-27 2017-07-04 Google Inc. Attaching electronic components to interactive textiles
US10146979B2 (en) * 2015-06-03 2018-12-04 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Processing visual cues to improve device understanding of user input
US9898100B2 (en) * 2015-06-04 2018-02-20 Microsoft Technology Licensing, Llc Authenticating stylus device
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US9996507B2 (en) * 2015-06-26 2018-06-12 International Business Machines Corporation Geo-cultural information based dynamic character variant rendering
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US9443519B1 (en) * 2015-09-09 2016-09-13 Google Inc. Reducing latency caused by switching input modalities
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10817065B1 (en) 2015-10-06 2020-10-27 Google Llc Gesture recognition using multiple antenna
WO2017079484A1 (en) 2015-11-04 2017-05-11 Google Inc. Connectors for connecting electronics embedded in garments to external devices
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10445350B2 (en) 2015-11-15 2019-10-15 Microsoft Technology Licensing, Llc Optimizing content for consistent presentation through collaboration database service
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
CN105872671A (en) * 2015-12-11 2016-08-17 乐视致新电子科技(天津)有限公司 Sliding input method and device of smart television
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US20170242581A1 (en) * 2016-02-23 2017-08-24 Myscript System and method for multiple input management
US10073538B2 (en) 2016-04-11 2018-09-11 International Business Machines Corporation Assessment of a password based on characteristics of a physical arrangement of keys of a keyboard
US10492302B2 (en) 2016-05-03 2019-11-26 Google Llc Connecting an electronic component to an interactive textile
US10175781B2 (en) 2016-05-16 2019-01-08 Google Llc Interactive object with multiple electronics modules
US10285456B2 (en) 2016-05-16 2019-05-14 Google Llc Interactive fabric
EP3403201A4 (en) * 2016-06-02 2019-01-09 Samsung Electronics Co., Ltd. Method and electronic device for predicting response
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
KR102289706B1 (en) 2016-06-22 2021-08-12 아너 디바이스 컴퍼니 리미티드 Method and apparatus for displaying candidate words, and graphical user interface
WO2018035113A1 (en) * 2016-08-15 2018-02-22 The Coca-Cola Company Selecting and dispensing blended beverages from a post-mix beverage dispenser
CN106468960A (en) * 2016-09-07 2017-03-01 北京新美互通科技有限公司 A kind of method and system of candidates of input method sequence
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
WO2018074895A1 (en) 2016-10-21 2018-04-26 Samsung Electronics Co., Ltd. Device and method for providing recommended words for character input
US10884610B2 (en) 2016-11-04 2021-01-05 Myscript System and method for recognizing handwritten stroke input
US10078370B2 (en) * 2016-11-23 2018-09-18 Immersion Corporation Devices and methods for modifying haptic effects
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US10579150B2 (en) 2016-12-05 2020-03-03 Google Llc Concurrent detection of absolute distance and relative movement for sensing action gestures
US10417332B2 (en) * 2016-12-15 2019-09-17 Microsoft Technology Licensing, Llc Predicting text by combining attempts
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US10747427B2 (en) * 2017-02-01 2020-08-18 Google Llc Keyboard automatic language identification and reconfiguration
US11609692B2 (en) * 2017-04-07 2023-03-21 Hewlett-Packard Development Company, L.P. Cursor adjustments
KR102652922B1 (en) * 2017-04-19 2024-03-29 매직 립, 인코포레이티드 Multimodal mission execution and text editing for wearable systems
DK201770383A1 (en) 2017-05-09 2018-12-14 Apple Inc. User interface for correcting recognition errors
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
DK201770439A1 (en) 2017-05-11 2018-12-13 Apple Inc. Offline personal assistant
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK201770428A1 (en) 2017-05-12 2019-02-18 Apple Inc. Low-latency intelligent automated assistant
US10528134B2 (en) * 2017-05-14 2020-01-07 Mark Stouffer One-handed input chording user input device for converting finger movements into digital input
US11237642B2 (en) * 2017-05-14 2022-02-01 Mark Stouffer Single-hand interdigit-coordinated mobile keyboard input device
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. Multi-modal interfaces
DK201770432A1 (en) 2017-05-15 2018-12-21 Apple Inc. Hierarchical belief states for digital assistants
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
DK179549B1 (en) 2017-05-16 2019-02-12 Apple Inc. Far-field extension for digital assistant services
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
WO2018213805A1 (en) 2017-05-19 2018-11-22 Murphy Michael William An interleaved character selection interface
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US20190079668A1 (en) * 2017-06-29 2019-03-14 Ashwin P Rao User interfaces for keyboards
US11263399B2 (en) * 2017-07-31 2022-03-01 Apple Inc. Correcting input based on user context
US20190087086A1 (en) * 2017-08-29 2019-03-21 Samsung Electronics Co., Ltd. Method for providing cognitive semiotics based multimodal predictions and electronic device thereof
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
CN109542244B (en) * 2017-09-21 2022-04-26 北京搜狗科技发展有限公司 Input method, device and medium
US10394342B2 (en) 2017-09-27 2019-08-27 Facebook Technologies, Llc Apparatuses, systems, and methods for representing user interactions with real-world input devices in a virtual space
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
CN109670282B (en) * 2017-10-17 2023-12-22 深圳富泰宏精密工业有限公司 Unlocking system, unlocking method and electronic device
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
RU2726009C1 (en) * 2017-12-27 2020-07-08 Общество С Ограниченной Ответственностью "Яндекс" Method and system for correcting incorrect word set due to input error from keyboard and/or incorrect keyboard layout
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
CN110018746B (en) 2018-01-10 2023-09-01 微软技术许可有限责任公司 Processing documents through multiple input modes
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10102415B1 (en) * 2018-03-29 2018-10-16 Secugen Corporation Method and apparatus for simultaneous multiple fingerprint enrollment
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US10782986B2 (en) 2018-04-20 2020-09-22 Facebook, Inc. Assisting users with personalized and contextual communication content
US11307880B2 (en) 2018-04-20 2022-04-19 Meta Platforms, Inc. Assisting users with personalized and contextual communication content
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US11676220B2 (en) * 2018-04-20 2023-06-13 Meta Platforms, Inc. Processing multimodal user input for assistant systems
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
EP3797345A4 (en) 2018-05-22 2022-03-09 Magic Leap, Inc. Transmodal input fusion for a wearable system
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. Virtual assistant operation in multi-device environments
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
DK179822B1 (en) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
US11076039B2 (en) 2018-06-03 2021-07-27 Apple Inc. Accelerated task performance
KR102592907B1 (en) * 2018-06-22 2023-10-23 삼성전자주식회사 Method and device for recognizing a text
US11714955B2 (en) 2018-08-22 2023-08-01 Microstrategy Incorporated Dynamic document annotations
US11500655B2 (en) 2018-08-22 2022-11-15 Microstrategy Incorporated Inline and contextual delivery of database content
US11106905B2 (en) 2018-09-04 2021-08-31 Cerence Operating Company Multi-character text input system with audio feedback and word completion
CN110888577B (en) * 2018-09-10 2021-09-28 百度在线网络技术(北京)有限公司 Character correction method, device, equipment and storage medium
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
JP7243109B2 (en) * 2018-10-02 2023-03-22 カシオ計算機株式会社 ELECTRONIC DEVICE, CONTROL METHOD AND PROGRAM FOR ELECTRONIC DEVICE
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
KR102527892B1 (en) * 2018-11-26 2023-05-02 삼성전자주식회사 Electronic device for providing predictive word and operating method thereof
US11922007B2 (en) 2018-11-29 2024-03-05 Michael William Murphy Apparatus, method and system for inputting characters to an electronic device
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11682390B2 (en) 2019-02-06 2023-06-20 Microstrategy Incorporated Interactive interface for analytics
KR20200103236A (en) * 2019-02-22 2020-09-02 삼성전자주식회사 Method and apparatus for displaying an input based on handwriting
JP7263857B2 (en) * 2019-03-14 2023-04-25 オムロン株式会社 Character input device, character input method, and character input program
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
WO2020190103A1 (en) * 2019-03-20 2020-09-24 Samsung Electronics Co., Ltd. Method and system for providing personalized multimodal objects in real time
US11068656B2 (en) * 2019-04-10 2021-07-20 International Business Machines Corporation Displaying text classification anomalies predicted by a text classification model
US11537821B2 (en) 2019-04-10 2022-12-27 International Business Machines Corporation Evaluating text classification anomalies predicted by a text classification model
US11137908B2 (en) * 2019-04-15 2021-10-05 Apple Inc. Keyboard operation with head-mounted device
US11554322B2 (en) * 2019-04-26 2023-01-17 Sony Interactive Entertainment LLC Game controller with touchpad input
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US12093523B2 (en) 2019-05-06 2024-09-17 Apple Inc. Handwriting entry on an electronic device
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. User activity shortcut suggestions
DK201970511A1 (en) 2019-05-31 2021-02-15 Apple Inc Voice identification in digital assistant systems
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
WO2021056255A1 (en) 2019-09-25 2021-04-01 Apple Inc. Text detection using global geometry estimators
US11327646B2 (en) * 2019-09-27 2022-05-10 International Business Machines Corporation Modifying illumination characteristics of an input device to identify characters associated with predicted words
US11295088B2 (en) 2019-11-20 2022-04-05 Apple Inc. Sanitizing word predictions
US11068073B2 (en) * 2019-12-13 2021-07-20 Dell Products, L.P. User-customized keyboard input error correction
US11561968B2 (en) * 2020-02-20 2023-01-24 Microstrategy Incorporated Systems and methods for retrieving relevant information content while typing
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11810578B2 (en) 2020-05-11 2023-11-07 Apple Inc. Device arbitration for digital assistant-based intercom systems
US20210349627A1 (en) * 2020-05-11 2021-11-11 Apple Inc. Interacting with handwritten content on an electronic device
US11038934B1 (en) 2020-05-11 2021-06-15 Apple Inc. Digital assistant hardware abstraction
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
CN111782098A (en) 2020-07-02 2020-10-16 三星电子(中国)研发中心 Page navigation method and device and intelligent equipment
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
EP3945402B1 (en) * 2020-07-29 2024-03-27 Tata Consultancy Services Limited Method and device providing multimodal input mechanism
KR20220015831A (en) * 2020-07-31 2022-02-08 삼성전자주식회사 Electronic device and control method thereof
CN112417087B (en) * 2020-12-14 2024-03-19 合肥高维数据技术有限公司 Text-based tracing method and system
CN113255342B (en) * 2021-06-11 2022-09-30 云南大学 Method and system for identifying product name of 5G mobile service
EP4350488A4 (en) * 2021-08-10 2024-10-09 Samsung Electronics Co Ltd Electronic device and method for synchronizing autocomplete text on external device
WO2023034497A2 (en) * 2021-09-03 2023-03-09 Apple Inc. Gaze based dictation
US11507730B1 (en) 2021-09-30 2022-11-22 Atlassian Pty Ltd. User interface with command-line link creation for generating graphical objects linked to third-party content
CN115099832B (en) * 2022-06-29 2024-07-05 广州华多网络科技有限公司 Abnormal user detection method and device, equipment, medium and product thereof
US12007870B1 (en) 2022-11-03 2024-06-11 Vignet Incorporated Monitoring and adjusting data collection from remote participants for health research
US11790107B1 (en) 2022-11-03 2023-10-17 Vignet Incorporated Data sharing platform for researchers conducting clinical trials
FR3144374A1 (en) * 2022-12-21 2024-06-28 Psa Automobiles Sa Method for assisting text entry in a motor vehicle infotainment system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283364A1 (en) * 1998-12-04 2005-12-22 Michael Longe Multimodal disambiguation of speech recognition
US20070040813A1 (en) * 2003-01-16 2007-02-22 Forword Input, Inc. System and method for continuous stroke word-based text input
US20070259717A1 (en) * 2004-06-18 2007-11-08 Igt Gesture controlled casino gaming system
US20090239587A1 (en) * 2008-03-19 2009-09-24 Universal Electronics Inc. System and method for appliance control via a personal communication or entertainment device
US20090284471A1 (en) * 1999-05-27 2009-11-19 Tegic Communications, Inc. Virtual Keyboard System with Automatic Correction

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272787A (en) * 1995-03-29 1996-10-18 Sharp Corp Character processor
KR100402252B1 (en) 1995-07-26 2004-01-24 테직 커뮤니케이션 인코포레이티드 Reduced keyboard clarification system
US5903864A (en) * 1995-08-30 1999-05-11 Dragon Systems Speech recognition
JPH10275046A (en) * 1997-03-31 1998-10-13 Toshiba Corp Device and method for word input
US6047300A (en) * 1997-05-15 2000-04-04 Microsoft Corporation System and method for automatically correcting a misspelled word
US7720682B2 (en) 1998-12-04 2010-05-18 Tegic Communications, Inc. Method and apparatus utilizing voice input to resolve ambiguous manually entered text input
EP1192716B1 (en) * 1999-05-27 2009-09-23 Tegic Communications, Inc. Keyboard system with automatic correction
WO2005122401A2 (en) * 2004-06-04 2005-12-22 Keyless Systems Ltd Systems to enhance data entry in mobile and fixed environment
US7526431B2 (en) * 2001-09-05 2009-04-28 Voice Signal Technologies, Inc. Speech recognition using ambiguous or phone key spelling and/or filtering
US7453439B1 (en) * 2003-01-16 2008-11-18 Forward Input Inc. System and method for continuous stroke word-based text input
US7729913B1 (en) * 2003-03-18 2010-06-01 A9.Com, Inc. Generation and selection of voice recognition grammars for conducting database searches
US7164410B2 (en) * 2003-07-28 2007-01-16 Sig G. Kupka Manipulating an on-screen object using zones surrounding the object
US7250938B2 (en) * 2004-01-06 2007-07-31 Lenovo (Singapore) Pte. Ltd. System and method for improved user input on personal computing devices
CN1965349A (en) * 2004-06-02 2007-05-16 美国联机股份有限公司 Multimodal disambiguation of speech recognition
US8972444B2 (en) 2004-06-25 2015-03-03 Google Inc. Nonstandard locality-based text entry
JP4640822B2 (en) * 2006-01-18 2011-03-02 シャープ株式会社 Input device
US7831911B2 (en) * 2006-03-08 2010-11-09 Microsoft Corporation Spell checking system including a phonetic speller
US8462118B2 (en) * 2006-06-19 2013-06-11 Nuance Communications, Inc. Data entry system and method of entering data
WO2008028150A2 (en) 2006-08-31 2008-03-06 Qualcomm Incorporated Method and apparatus of obtaining or providing search results using user-based biases
US20080244446A1 (en) 2007-03-29 2008-10-02 Lefevre John Disambiguation of icons and other media in text-based applications
US7895518B2 (en) * 2007-04-27 2011-02-22 Shapewriter Inc. System and method for preview and selection of words
US8589149B2 (en) 2008-08-05 2013-11-19 Nuance Communications, Inc. Probability-based approach to recognition of user-entered data
US8669941B2 (en) * 2009-01-05 2014-03-11 Nuance Communications, Inc. Method and apparatus for text entry
US9519353B2 (en) * 2009-03-30 2016-12-13 Symbol Technologies, Llc Combined speech and touch input for observation symbol mappings
US8423351B2 (en) * 2010-02-19 2013-04-16 Google Inc. Speech correction for typed input
KR101477530B1 (en) 2010-03-12 2014-12-30 뉘앙스 커뮤니케이션즈, 인코포레이티드 Multimodal text input system, such as for use with touch screens on mobile phones
US8659562B2 (en) * 2010-11-05 2014-02-25 Apple Inc. Device, method, and graphical user interface for manipulating soft keyboards

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283364A1 (en) * 1998-12-04 2005-12-22 Michael Longe Multimodal disambiguation of speech recognition
US20090284471A1 (en) * 1999-05-27 2009-11-19 Tegic Communications, Inc. Virtual Keyboard System with Automatic Correction
US20070040813A1 (en) * 2003-01-16 2007-02-22 Forword Input, Inc. System and method for continuous stroke word-based text input
US20070259717A1 (en) * 2004-06-18 2007-11-08 Igt Gesture controlled casino gaming system
US20090239587A1 (en) * 2008-03-19 2009-09-24 Universal Electronics Inc. System and method for appliance control via a personal communication or entertainment device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2545426A4 *

Cited By (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012098428A1 (en) * 2011-01-18 2012-07-26 Nokia Corporation Task performance
US8911165B2 (en) 2011-01-24 2014-12-16 5 Examples, Inc. Overloaded typing apparatuses, and related devices, systems, and methods
EP2764424A4 (en) * 2011-10-04 2015-06-03 Sony Corp Information processing device, information processing method and computer program
US9122672B2 (en) 2011-11-10 2015-09-01 Blackberry Limited In-letter word prediction for virtual keyboard
US9715489B2 (en) 2011-11-10 2017-07-25 Blackberry Limited Displaying a prediction candidate after a typing mistake
US9310889B2 (en) 2011-11-10 2016-04-12 Blackberry Limited Touchscreen keyboard predictive display and generation of a set of characters
US9032322B2 (en) 2011-11-10 2015-05-12 Blackberry Limited Touchscreen keyboard predictive display and generation of a set of characters
US9652448B2 (en) 2011-11-10 2017-05-16 Blackberry Limited Methods and systems for removing or replacing on-keyboard prediction candidates
US10613746B2 (en) 2012-01-16 2020-04-07 Touchtype Ltd. System and method for inputting text
JP2017199410A (en) * 2012-01-16 2017-11-02 タッチタイプ リミテッド System and method for text input
US9152323B2 (en) 2012-01-19 2015-10-06 Blackberry Limited Virtual keyboard providing an indication of received input
US9557913B2 (en) 2012-01-19 2017-01-31 Blackberry Limited Virtual keyboard display having a ticker proximate to the virtual keyboard
US9910588B2 (en) 2012-02-24 2018-03-06 Blackberry Limited Touchscreen keyboard providing word predictions in partitions of the touchscreen keyboard in proximate association with candidate letters
US8659569B2 (en) 2012-02-24 2014-02-25 Blackberry Limited Portable electronic device including touch-sensitive display and method of controlling same
WO2013130682A1 (en) * 2012-02-27 2013-09-06 5 Examples, Inc. Date entry system controllers for receiving user input line traces relative to user interfaces to determine ordered actions, and related systems and methods
CN102662485A (en) * 2012-03-12 2012-09-12 成都林海电子有限责任公司 Method and device for Chinese character input
EP2834725A4 (en) * 2012-04-07 2015-12-09 Motorola Mobility Llc Text select and enter
JP2015518604A (en) * 2012-04-07 2015-07-02 モトローラ モビリティ リミティド ライアビリティ カンパニー Text selection and input
WO2013149403A1 (en) 2012-04-07 2013-10-10 Motorola Mobility, Inc. Text select and enter
CN104541239A (en) * 2012-04-07 2015-04-22 摩托罗拉移动有限责任公司 Text select and enter
US9201510B2 (en) 2012-04-16 2015-12-01 Blackberry Limited Method and device having touchscreen keyboard with visual cues
CN103376909A (en) * 2012-04-19 2013-10-30 腾讯科技(深圳)有限公司 Method and system of adjusting sequence of candidate characters in use of input methods
US9442651B2 (en) 2012-04-30 2016-09-13 Blackberry Limited Method and apparatus for text selection
WO2013163718A1 (en) * 2012-04-30 2013-11-07 Blackberry Limited Touchscreen keyboard with correction of previously input text
CN103534676A (en) * 2012-04-30 2014-01-22 黑莓有限公司 Touchscreen keyboard with correction of previously input text
US9292192B2 (en) 2012-04-30 2016-03-22 Blackberry Limited Method and apparatus for text selection
GB2506231A (en) * 2012-04-30 2014-03-26 Blackberry Ltd Touchscreen keyboard with correction of previously input text
US10331313B2 (en) 2012-04-30 2019-06-25 Blackberry Limited Method and apparatus for text selection
US8543934B1 (en) 2012-04-30 2013-09-24 Blackberry Limited Method and apparatus for text selection
US9195386B2 (en) 2012-04-30 2015-11-24 Blackberry Limited Method and apapratus for text selection
US9354805B2 (en) 2012-04-30 2016-05-31 Blackberry Limited Method and apparatus for text selection
US9207860B2 (en) 2012-05-25 2015-12-08 Blackberry Limited Method and apparatus for detecting a gesture
US9116552B2 (en) 2012-06-27 2015-08-25 Blackberry Limited Touchscreen keyboard providing selection of word predictions in partitions of the touchscreen keyboard
WO2014003138A1 (en) * 2012-06-29 2014-01-03 Kddi株式会社 Input character estimation device and program
JP2014010688A (en) * 2012-06-29 2014-01-20 Kddi Corp Input character estimation device and program
US9779080B2 (en) 2012-07-09 2017-10-03 International Business Machines Corporation Text auto-correction via N-grams
WO2014012484A1 (en) * 2012-07-17 2014-01-23 重庆优腾信息技术有限公司 Method and system for retrieving contact in electronic device
CN102819567A (en) * 2012-07-17 2012-12-12 重庆优腾信息技术有限公司 Method and system for searching contact information in electronic equipment
CN103576882A (en) * 2012-07-27 2014-02-12 深圳市世纪光速信息技术有限公司 Off-normal text recognition method and system
EP2693317A1 (en) * 2012-08-01 2014-02-05 BlackBerry Limited Electronic device and method of changing a keyboard
US9524290B2 (en) 2012-08-31 2016-12-20 Blackberry Limited Scoring predictions based on prediction length and typing speed
US9063653B2 (en) 2012-08-31 2015-06-23 Blackberry Limited Ranking predictions based on typing speed and typing confidence
US9218333B2 (en) 2012-08-31 2015-12-22 Microsoft Technology Licensing, Llc Context sensitive auto-correction
WO2014035773A1 (en) * 2012-08-31 2014-03-06 Microsoft Corporation Context sensitive auto-correction
WO2014055762A1 (en) * 2012-10-05 2014-04-10 Google Inc. Incremental multi-touch gesture recognition
US8782549B2 (en) 2012-10-05 2014-07-15 Google Inc. Incremental feature-based gesture-keyboard decoding
US9552080B2 (en) 2012-10-05 2017-01-24 Google Inc. Incremental feature-based gesture-keyboard decoding
US9021380B2 (en) 2012-10-05 2015-04-28 Google Inc. Incremental multi-touch gesture recognition
CN108646929A (en) * 2012-10-05 2018-10-12 谷歌有限责任公司 The gesture keyboard decoder of incremental feature based
CN104704453A (en) * 2012-10-10 2015-06-10 微软公司 Text entry using shapewriting on a touch-sensitive input panel
US9740399B2 (en) 2012-10-10 2017-08-22 Microsoft Technology Licensing, Llc Text entry using shapewriting on a touch-sensitive input panel
US20140098036A1 (en) * 2012-10-10 2014-04-10 Microsoft Corporation Text entry using shapewriting on a touch-sensitive input panel
WO2014059060A1 (en) * 2012-10-10 2014-04-17 Microsoft Corporation Text entry using shapewriting on a touch-sensitive input panel
US9304683B2 (en) 2012-10-10 2016-04-05 Microsoft Technology Licensing, Llc Arced or slanted soft input panels
US9542385B2 (en) 2012-10-16 2017-01-10 Google Inc. Incremental multi-word recognition
US8850350B2 (en) 2012-10-16 2014-09-30 Google Inc. Partial gesture text entry
US9710453B2 (en) 2012-10-16 2017-07-18 Google Inc. Multi-gesture text input prediction
US8843845B2 (en) 2012-10-16 2014-09-23 Google Inc. Multi-gesture text input prediction
US9678943B2 (en) 2012-10-16 2017-06-13 Google Inc. Partial gesture text entry
US10977440B2 (en) 2012-10-16 2021-04-13 Google Llc Multi-gesture text input prediction
US9134906B2 (en) 2012-10-16 2015-09-15 Google Inc. Incremental multi-word recognition
US9665276B2 (en) 2012-10-16 2017-05-30 Google Inc. Character deletion during keyboard gesture
CN110083254B (en) * 2012-10-16 2023-07-21 谷歌有限责任公司 Multi-gesture text input prediction
US11379663B2 (en) 2012-10-16 2022-07-05 Google Llc Multi-gesture text input prediction
WO2014062358A1 (en) * 2012-10-16 2014-04-24 Google Inc. Multi-gesture text input prediction
US10489508B2 (en) 2012-10-16 2019-11-26 Google Llc Incremental multi-word recognition
CN110083254A (en) * 2012-10-16 2019-08-02 谷歌有限责任公司 More gesture text input predictions
WO2014062583A1 (en) * 2012-10-16 2014-04-24 Google Inc. Character deletion during keyboard gesture
US8914751B2 (en) 2012-10-16 2014-12-16 Google Inc. Character deletion during keyboard gesture
US9798718B2 (en) 2012-10-16 2017-10-24 Google Inc. Incremental multi-word recognition
US10140284B2 (en) 2012-10-16 2018-11-27 Google Llc Partial gesture text entry
US8994681B2 (en) 2012-10-19 2015-03-31 Google Inc. Decoding imprecise gestures for gesture-keyboards
WO2014062937A1 (en) * 2012-10-19 2014-04-24 Google Inc. Decoding imprecise gestures for gesture-keyboards
US8819574B2 (en) 2012-10-22 2014-08-26 Google Inc. Space prediction for text input
US10019435B2 (en) 2012-10-22 2018-07-10 Google Llc Space prediction for text input
WO2014101377A1 (en) * 2012-12-28 2014-07-03 华为终端有限公司 Touch positioning method, device and touch terminal
US20150109253A1 (en) * 2012-12-28 2015-04-23 Huawei Device Co., Ltd. Touch Positioning Method and Apparatus, and Touch Screen Terminal
DE102013009375A1 (en) 2012-12-28 2014-07-03 Volkswagen Aktiengesellschaft Method for entering and recognizing a character string
CN103019497A (en) * 2012-12-28 2013-04-03 华为终端有限公司 Touch positioning method, device and touch terminal
WO2014102041A2 (en) 2012-12-28 2014-07-03 Volkswagen Aktiengesellschaft Method for inputting and identifying a character string
US9703393B2 (en) 2012-12-28 2017-07-11 Volkswagen Ag Method for inputting and identifying a character string
EP2765473A1 (en) * 2012-12-31 2014-08-13 Huawei Technologies Co., Ltd. Input processing method and apparatus
AU2013270485B2 (en) * 2012-12-31 2015-09-10 Huawei Technologies Co. , Ltd. Input processing method and apparatus
TWI552008B (en) * 2012-12-31 2016-10-01 華為技術有限公司 Input processing method and apparatus
EP2765473A4 (en) * 2012-12-31 2014-12-10 Huawei Tech Co Ltd Input processing method and apparatus
CN103064530A (en) * 2012-12-31 2013-04-24 华为技术有限公司 Input processing method and device
AU2013270485C1 (en) * 2012-12-31 2016-01-21 Huawei Technologies Co. , Ltd. Input processing method and apparatus
US11727212B2 (en) 2013-01-15 2023-08-15 Google Llc Touch keyboard using a trained model
US9830311B2 (en) 2013-01-15 2017-11-28 Google Llc Touch keyboard using language and spatial models
US11334717B2 (en) 2013-01-15 2022-05-17 Google Llc Touch keyboard using a trained model
US10528663B2 (en) 2013-01-15 2020-01-07 Google Llc Touch keyboard using language and spatial models
CN103970278A (en) * 2013-01-25 2014-08-06 胡竞韬 Input method and device for round touch keyboard
US9047268B2 (en) 2013-01-31 2015-06-02 Google Inc. Character and word level language models for out-of-vocabulary text input
CN105074643A (en) * 2013-02-05 2015-11-18 谷歌公司 Gesture keyboard input of non-dictionary character strings
WO2014123633A1 (en) * 2013-02-05 2014-08-14 Google Inc. Gesture keyboard input of non-dictionary character strings
US10095405B2 (en) 2013-02-05 2018-10-09 Google Llc Gesture keyboard input of non-dictionary character strings
EP3382525A1 (en) * 2013-02-05 2018-10-03 Google LLC Gesture keyboard input of non-dictionary character strings
US9454240B2 (en) 2013-02-05 2016-09-27 Google Inc. Gesture keyboard input of non-dictionary character strings
US9547439B2 (en) 2013-04-22 2017-01-17 Google Inc. Dynamically-positioned character string suggestions for gesture typing
US9081500B2 (en) 2013-05-03 2015-07-14 Google Inc. Alternative hypothesis error correction for gesture typing
US10241673B2 (en) 2013-05-03 2019-03-26 Google Llc Alternative hypothesis error correction for gesture typing
US9841895B2 (en) 2013-05-03 2017-12-12 Google Llc Alternative hypothesis error correction for gesture typing
CN104346067A (en) * 2013-11-15 2015-02-11 上海触乐信息科技有限公司 Method and system for continuously inputting words in sliding mode
CN103596028A (en) * 2013-11-25 2014-02-19 乐视致新电子科技(天津)有限公司 Method and device for controlling smart television
WO2016037019A1 (en) * 2014-09-05 2016-03-10 Microsoft Technology Licensing, Llc Display-efficient text entry and editing
US10261674B2 (en) 2014-09-05 2019-04-16 Microsoft Technology Licensing, Llc Display-efficient text entry and editing
CN107430448A (en) * 2015-03-24 2017-12-01 谷歌公司 For the Uulearning technology of the adaptive language model in Characters
CN107430448B (en) * 2015-03-24 2021-03-16 谷歌有限责任公司 Anti-learning techniques for adaptive language models in text entry
US10095403B2 (en) 2015-05-05 2018-10-09 International Business Machines Corporation Text input on devices with touch screen displays
US10671272B2 (en) 2015-11-06 2020-06-02 International Business Machines Corporation Touchscreen oriented input integrated with enhanced four-corner indexing
WO2018118537A1 (en) * 2016-12-19 2018-06-28 Microsoft Technology Licensing, Llc Facilitating selection of holographic keyboard keys
US10444987B2 (en) 2016-12-19 2019-10-15 Microsoft Technology Licensing, Llc Facilitating selection of holographic keyboard keys
WO2018125288A1 (en) * 2016-12-29 2018-07-05 Google Llc Modality learning on mobile devices
US10831366B2 (en) 2016-12-29 2020-11-10 Google Llc Modality learning on mobile devices
US11435898B2 (en) 2016-12-29 2022-09-06 Google Llc Modality learning on mobile devices
EP4235369A3 (en) * 2016-12-29 2023-10-18 Google LLC Modality learning on mobile devices
US11842045B2 (en) 2016-12-29 2023-12-12 Google Llc Modality learning on mobile devices
US11061556B2 (en) 2018-01-12 2021-07-13 Microsoft Technology Licensing, Llc Computer device having variable display output based on user input with variable time and/or pressure patterns
WO2019139784A1 (en) * 2018-01-12 2019-07-18 Microsoft Technology Licensing, Llc Computer device having variable display output based on user input with variable time and/or pressure patterns
CN111858921A (en) * 2019-09-24 2020-10-30 北京嘀嘀无限科技发展有限公司 Interest point query method and device and electronic equipment
CN111858921B (en) * 2019-09-24 2024-05-03 北京嘀嘀无限科技发展有限公司 Method and device for inquiring interest points and electronic equipment
WO2023017189A1 (en) * 2021-08-13 2023-02-16 Brainbox Gmbh Method and device for inputting a character string

Also Published As

Publication number Publication date
US20130046544A1 (en) 2013-02-21
EP2545426A4 (en) 2017-05-17
JP2015057721A (en) 2015-03-26
US9104312B2 (en) 2015-08-11
JP2013522972A (en) 2013-06-13
CN103038728B (en) 2016-01-20
JP5642809B2 (en) 2014-12-17
KR101477530B1 (en) 2014-12-30
KR20130001261A (en) 2013-01-03
JP6140668B2 (en) 2017-05-31
KR20140111333A (en) 2014-09-18
EP2545426A1 (en) 2013-01-16
US20150293602A1 (en) 2015-10-15
CN103038728A (en) 2013-04-10

Similar Documents

Publication Publication Date Title
US9104312B2 (en) Multimodal text input system, such as for use with touch screens on mobile phones
US11379663B2 (en) Multi-gesture text input prediction
US9026428B2 (en) Text/character input system, such as for use with touch screens on mobile phones
US10996851B2 (en) Split virtual keyboard on a mobile computing device
US8117540B2 (en) Method and device incorporating improved text input mechanism
JP4527731B2 (en) Virtual keyboard system with automatic correction function
US8669941B2 (en) Method and apparatus for text entry
US10254953B2 (en) Text input method using continuous trace across two or more clusters of candidate words to select two or more words to form a sequence, wherein the candidate words are arranged based on selection probabilities
US8576167B2 (en) Directional input system with automatic correction
JP2012517061A (en) Data input system
KR20120006503A (en) Improved text input
EP1923796B1 (en) Method and device incorporating improved text input mechanism

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201180023649.X

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11754256

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012557308

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2011754256

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20127026175

Country of ref document: KR

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 13583840

Country of ref document: US