Computing devices, such as mobile phones, portable and tablet computers, entertainment devices, handheld navigation devices, and the like are commonly implemented with on-screen keyboards (e.g., soft keyboards) that may be employed for text input and/or other interaction with the computing devices. When a user inputs text characters into a text box or otherwise inputs text using an on-screen keyboard or similar input device, a computing device may apply auto-correction to automatically correct misspellings and/or text prediction to predict and offer candidate words/phrases based on input characters.
In a traditional approach, auto-corrections and text predictions are inserted automatically responsive to passive actions such as when a word break is detected. Such passive insertion approaches may be problematic because often words that a user did not intend to type may be inserted automatically through auto correction and text prediction. At the very least users may be frustrated by having to correct/retype inserted text and even worse users not close paying attention to the inserted text may inadvertently send out messages with unintended meanings.
A text prediction key is described. In one or more embodiments, a dedicated key for inserting a text prediction candidate is output for display in conjunction with an on-screen keyboard associated with a computing device. The text prediction key provides a mechanism for explicit insertion of a text prediction candidate that can be employed to avoid passive/non-explicit insertions. In at least some embodiments, the text prediction key may be configured for display in conjunction with the on-screen keyboard when availability of a prediction for entered characters is detected. The text prediction key may be selectively presented by replacing/modifying one or more keys of the on-screen keyboard to accommodate the text prediction key. In another approach, the text prediction key may appear at a designated location within or proximate to the on-screen keyboard. The text prediction key may further be configured in various ways to notify a user that a prediction candidate is available and/or present a corresponding prediction text.
Embodiments of a text prediction key are described with reference to the following Figures. The same numbers may be used throughout to reference like features and components that are shown in the Figures:
Overview
In traditional approaches, auto-corrections and text predictions are inserted automatically responsive to passive actions such as when a word break is detected. Such passive insertion approaches may be problematic because unintended words may be inserted automatically. This may cause frustration and worse for users who spend time changing text inserted incorrectly and/or inadvertently send out messages with unintended meanings.
Techniques related to a text prediction key are described herein. In one or more embodiments, a dedicated key for inserting a text prediction candidate is configured and output for display in conjunction with an on-screen keyboard. The text prediction key provides a mechanism for explicit insertion of a text prediction candidate that can be employed to avoid passive/non-explicit insertions. In at least some embodiments, the text prediction key may be configured for display in conjunction with the on-screen keyboard when a prediction for entered characters is detected. The text prediction key may be selectively displayed by replacing/modifying one or more keys of the on-screen keyboard to accommodate the text prediction key. In another approach, the text prediction key may appear at a designated location within or proximate to the on-screen keyboard. The text prediction key also may be configured in various ways to notify a user that a prediction candidate is available and/or present corresponding prediction text.
In the discussion that follows, a section titled “Operating Environment” describes but one environment in which the various embodiments can be employed. Following this, a section titled “Text Prediction Key Examples” describes example user interfaces and text prediction keys in accordance with one or more embodiments. Next, a section titled “Text Prediction Key Procedures” describes example procedures in accordance with one or more embodiments. Last, a section titled “Example System” is provided and describes an example system that can be used to implement one or more embodiments.
Operating Environment
The integrated display 114 of a computing device 102, or the display device 110, may be a touch-screen display that is implemented to sense touch and gesture inputs, such as a user-initiated character, key, typed, or selector input in a user interface that is displayed on the touch-screen display. Alternatively or in addition, the examples of computing devices may include other various input mechanisms and devices, such as a keyboard, mouse, on-screen keyboard, remote control device, game controller, or any other type of user-initiated and/or user-selectable input device.
In implementations, the computing device 102 may include an input module 116 that detects and/or recognizes input sensor data 118 related to various different kinds of inputs such as on-screen keyboard character inputs, touch input and gestures, camera-based gestures, controller inputs, and other user-selected inputs. The input module 116 is representative of functionality to identify touch input and/or gestures and cause operations to be performed that correspond to the touch input and/or gestures. The input module 116, for instance, may be configured to recognize a gesture detected through interaction with a touch-screen display (e.g., using touchscreen functionality) by a user's hand. In addition or alternatively, the input module 116 may configured to recognize a gesture detected by a camera, such as waving of the user's hand, a grasping gesture, an arm position, or other defined gesture. Thus, touch inputs, gestures, and other input may also be recognized through input sensor data 118 as including attributes (e.g., movement, selection point, positions, velocity, orientation, and so on) that are usable to differentiate between different inputs recognized by the input module 116. This differentiation may then serve as a basis to identify a gesture from the inputs and consequently an operation that is to be performed based on identification of the gesture.
The computing device includes a keyboard input module 120 that can be implemented as computer-executable instructions, such as a software application or module that is executed by one or more processors to implement the various embodiments described herein. The keyboard input module 120 represent functionality to provide and manage an on-screen keyboard for keyboard interactions with the computing device 102. The keyboard input module 120 may be configured to cause representations of an on-screen keyboard to be selectively presented at different times, such as when a text input box, search control, or other text input control is activated. An on-screen keyboard may be provided for display on an external display, such as the display device 110 or on an integrated display such as the integrated display 114. In addition, note that a hardware keyboard/input device may also implement an adaptable “on-screen” keyboard having at least some soft keys suitable for the techniques described herein. For instance, a hardware keyboard provided as an external device or integrated with the computing device 102 may incorporate a display device, touch keys, and/or a touchscreen that may be employed to display a text prediction key as described herein. In this case, the keyboard input module 120 may be provided as a component of a device driver for the hardware keyboard/input device.
The keyboard input module 120 may include or otherwise make use of a text prediction key 122 that may be selectively represented within a user interface 124 output by the computing device for display on the integrated display 114 of a computing device 102, or for display on the display device 110. More particularly, the text prediction key 122 may be configured as a dedicated key that may be provided for inserting a text prediction candidate presented in conjunction with an on-screen keyboard implemented by the keyboard input module 120. As mentioned, the on-screen keyboard may be selectively exposed to facilitate keyboard interaction in various text input scenarios. For example, an on-screen keyboard may be selectively exposed for input of text in a text entry box, password entry box, search control, data form or other text input controls of a user interface 124, such as a form, HTML page, or document to facilitate user input of character entries 126 (e.g., letters, numbers, and/or other alphanumeric characters).
The keyboard input module 120 may include or otherwise make use of a text prediction engine 128 that represents functionality to process and interpret character entries 126 to form and offer predictions of candidate words corresponding to the character entries 126. In general, the text prediction engine 128 ascertains one or more possible candidates that most closely match character entries 126 that are input. In this way, the text prediction engine 128 can facilitate text entry by providing one or more predictive words that are ascertained in response to character entries 126 that are input by a user.
In accordance with techniques described herein, a text prediction key 122 may be configured and/or output by the keyboard input module 120 whenever the text prediction engine 128 offers a prediction. The prediction text associated with a prediction may then be inserted into an appropriate text input control by explicit selection of the text prediction key 122. Moreover, in at least some embodiments, passive/non-explicit insertion of prediction text is disabled to avoid inadvertent/automatic insertions of unintended words. Thus, users may rely upon the dedicated text prediction key 122 to explicitly select an available prediction without having to worry about predictions being automatically inserted.
Having considered an example environment, consider now a discussion of some text prediction key examples that further illustrate various aspects.
Text Prediction Key Examples
The example keyboard 202 further includes a text prediction key 122, which in this example is labeled as an “insert” button. A text prediction key 122 may be configured in various ways. In general, the text prediction key 122 may be accommodated within the key layout of the keyboard 202. This may occur by providing the text prediction key 122 at a designated location within an arrangement of keys for the keyboard 202.
In at least some embodiments, a keyboard input module 120 may cause the text prediction key 122 to appear selectively when a suitable text prediction candidate is available from the text prediction engine 128. In this approach, the key layout may transition between different states to add the text prediction key 122 when appropriate. This may involve replacing, rearranging, and/or modifying one or more keys of the keyboard to provide the text prediction key 122 at a designated location. Thus, a default state of the keyboard 202 may appear at times when a text prediction candidate is unavailable. Then, when a text prediction candidate becomes available, the keyboard 202 may transition to a prediction state in which the text prediction key 122 appears. For example, the text prediction key 122 may be inserted to replace one or more default keys of an on screen keyboard. In another example, a designated key, such as the space bar, may be split and/or shrunk down in size to provide a location for the text prediction key 122. Still further, one or more keys may be moved and/or resized to accommodate insertion of a text prediction key 122 at a designated location associated with the keyboard. These and other examples are discussed in greater detail in relation to the following figures.
In another approach, a dedicated text prediction key 122 may be incorporated as a key in the default state of the keyboard 202. For example, the text prediction key 122 may be positioned at a designated location and may appear whenever the keyboard 202 is displayed. The text prediction key 122 may be provided statically as a component of the keyboard 202. Accordingly, the dedicated text prediction key 122 may appear as part of the keyboard 202 both when prediction candidates are available and unavailable. In other words, the text prediction key 122 can be provided as a standard/default key rather than being selectively exposed as discussed above. In this approach, the text prediction key 122 may appear but be disabled/inactive when a prediction candidate is unavailable. When prediction candidate is available, the text prediction key 122 may become enabled/active and may be employed in various ways described above and below.
Disabling and enabling a displayed text prediction key 122 may be accomplished in various ways. For example, the text prediction key 122 may be transitioned between locked and unlocked states in a way that prevents the key from operating in a locked state. A corresponding visual change to the appearance of the key may also occur such as by changing coloring of the text prediction key 122 in the different states, “graying-out” the key when it is disabled, and other suitable ways of visually indicating when the text prediction key 122 and/or predictions are available/unavailable. In general, such visual changes are configured to cause the text prediction key 122 to become visually more prominent when a text prediction is available and/or less prominent at other times when text predictions are unavailable.
A text prediction key 122 may also be configured to notify a user of available text predictions in various ways. For example, the text prediction key 122 may be configured to visually notify a user with colors, color changes, flashing, blinking and other visual clues applied to the text prediction key 122. An audible alert may also be provided in connection with the text prediction key 122 when a prediction candidate is available. Additionally, the text prediction key 122 may also be configured to display or enable selective access to the prediction text 204 for a prediction.
For example, rather than being labeled “insert” the text prediction key 122 may be labeled with prediction text 204 corresponding to a prediction candidate. In another example, prediction text 204 may selectively appear when a user interacts with the text prediction key 122 in a designated way to trigger display of one or more prediction candidates. For example,
More generally, any suitable triggering action may cause prediction text 204 to appear using an appropriate user interface instrumentality, such as the illustrated balloon, a drop-down box, a slide-out element, a pop-up box, toast message window, or a list box to name a few examples. The prediction text 204 may be shown at one or more different locations including but not limited to being shown with or proximate to a text input control and/or with or proximate to a text prediction key 122, using various user interface instrumentalities. Operation of the text prediction key 122 causes associated prediction text to be inserted as text input into a corresponding text input control.
Multiple different available prediction options from which a user may select may also be provided and displayed in a comparable manner. For example, multiple predictions from which a user may select may be displayed on or adjacent to a text prediction key 122 as labels, in a list box, in a slide-out element or using other user interface instrumentalities associated with the text prediction key 122. The user may then interact with a finger press or designated gesture (e.g., a finger slide or grasping gesture) to select one of the displayed candidates. In addition, multiple keys may be converted to multiple text prediction keys 122 to represent the different available predictions candidates. A user may then select one of the keys to insert a corresponding prediction. Some additional examples of different kinds of text prediction keys that may be employed are described just below with reference to
In the depicted example, the text prediction key 122 is inserted by replacing two default keys of the on-screen keyboard (e.g., the period key and right arrow key) as represented by the arrow 308. A variety of other modifications and/or rearrangements of a keyboard to provide a text prediction key are also contemplated. Naturally, a text prediction key 122 may be inserted at different locations and may replace different keys than those shown by way of example in
If appropriate, a visual transition between the different states for the keyboard may also be shown in any suitable way. The transition may include selectively showing/hiding different keys, modifying colors, sizes, and other properties of keys, animating rearrangement and movement of keys, and so forth. Notice, that in this example, the text prediction key 122 is labeled with prediction text “Aaron”, which serves to present the text to a user as well as provide notification that the prediction is available. Other types of notifications and techniques to present prediction text as described previously may also be employed. In addition, the text prediction key 122 may optionally be used in combination with other auto-correct/text prediction techniques. By way of example and not limitation, in
In one approach, the example text prediction key 122 of
In addition or alternatively to providing a dedicated key operable to insert the text prediction candidate as in the forgoing examples, a gesture may be defined to facilitate insertion of a text prediction candidate. For instance, a prediction candidate may be exposed in connection with a designated key as a label or otherwise when an appropriate prediction candidate is available using the techniques described above and below. The default functionality of the designated key may be maintained, such that the key operates in a “normal” way when tapped, clicked, or otherwise selected. In addition, a particular gesture in relation to the key may be defined to cause insertion of the corresponding prediction candidate. For instance, a finger slide across the key, a circular gesture around the key, a double tap, or any suitable gesture may be employed to insert the corresponding candidate. By way of example, the spacebar may be configured to selectively display prediction candidates as the candidates become available. In this example, tapping on the spacebar causes insertion of a space, but a designated gesture, such as horizontally sliding of a user's finger over the spacebar (or another defined gesture), may be employed to cause insertion of the prediction candidate. In this way, a default key can be associated with a gesture such that the key can be configured as a dedicated prediction key that has dual functionally for text predictions and “normal” operation of the key (e.g., character insertion).
Having described some example text prediction keys, consider now a discussion of example procedures to provide a text prediction keys in accordance with one more embodiments.
Text Prediction Key Procedures
The following discussion describes techniques for text prediction keys that may be implemented utilizing the previously described systems and devices. Aspects of each of the described procedure(s) may be implemented in hardware, firmware, or software, or a combination thereof. The procedure(s) are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In at least some embodiments, the procedure(s) may be performed by a suitably configured computing device, such as the example computing device 102 of
Accordingly, the keyboard input module 120 may operate to determine when predictions are available, obtain predictions to configure a text input key, and/or initiate transition of a keyboard between different states as appropriate. In particular, text character input is detected (block 604) and a determination is made regarding whether a text prediction is available (block 606). Here, the keyboard input module 120 may monitor text input controls to determine when various character entries 126 are input. The keyboard input module 120 may further include or otherwise make use of a text prediction engine 128 to make predictions based on the character entries 126. Through interaction with the text prediction engine 128, the keyboard input module 120 can ascertain when predictions are available and unavailable for a given text input scenario. The keyboard input module 120 may also obtain the text predictions from the text prediction engine 128 to configure a corresponding text prediction key. At times when a prediction is not available, the keyboard input module 120 may continue to cause presentation of the keyboard in the first arrangement (e.g., default state) and may continue to monitor for text input and/or corresponding predictions by the text prediction engine 128.
When a prediction is available, though, the keyboard is output in a prediction state having a dedicated text prediction key (block 608). Here, the keyboard input module 120 may cause a transition of the keyboard from the first arrangement of the default state to a second arrangement in a prediction state. For instance, a transition comparable to the examples shown and described in relation to
In the prediction state, a determination is made regarding whether the text prediction key is selected (block 610). When the text prediction key is selected, the text prediction made available for the input characters is inserted (block 612). For instance, the keyboard input module 120 may detect selection of the text prediction key. In response, the keyboard input module 120 may cause insertion of prediction text associated with the text prediction key into a corresponding text input control. Here, the text prediction may be inserted and replace the initial character(s) and/or word(s) which caused that text prediction to be generated. This may be accomplished in any suitable way including by overwriting the initial characters and/or by appending additional characters to the initial characters to produce the corrected text. For example, selection of the example prediction keys shown in
When the text prediction key is not selected in block 610, the keyboard is output in the prediction state until a timeout occurs or additional characters are input (block 614). Accordingly, the prediction state may be maintained for a designated period of time (e.g., a timeout) after which the keyboard “times out” and may revert to the default state. The keyboard may also transition back to the default state if additional characters are input, which effectively indicates that the user ignored or otherwise did not act upon the prediction. The described procedure 600 may then be repeated for additional input text characters.
In addition or alternatively, a transition to show a text prediction key for additional input text and another prediction may be made without first reverting back to the default state. This may depend upon the timing between different predictions. For instance, the label displayed on a text prediction key 122 may change successively to different prediction text as characters are being input to reflect different respective predictions that are made in relatively quick succession. Effectively, the text prediction key 122 remains visible at a designated location and adjusts for the different successive predictions in this scenario.
Having described some example techniques related to text prediction keys, consider now an example device that can be utilized to implement one more embodiments described above.
Example Device
The device 700 includes communication devices 702 that enable wired and/or wireless communication of device data 704 (e.g., received data, data that is being received, data scheduled for broadcast, data packets of the data, etc.). The device data 704 or other device content can include configuration settings of the device, media content stored on the device, and/or information associated with a user of the device. Media content stored on device 700 can include any type of audio, video, and/or image data. Device 700 includes one or more data inputs 706 via which any type of data, media content, and/or inputs can be received, such as user-selectable inputs, messages, music, television media content, recorded video content, and any other type of audio, video, and/or image data received from any content and/or data source.
Device 700 also includes communication interfaces 708 that can be implemented as any one or more of a serial and/or parallel interface, a wireless interface, any type of network interface, a modem, and as any other type of communication interface. The communication interfaces 708 provide a connection and/or communication links between device 700 and a communication network by which other electronic, computing, and communication devices communicate data with device 700.
Device 700 includes one or more processors 710 (e.g., any of microprocessors, controllers, and the like) which process various computer-executable or readable instructions to control the operation of device 700 and to implement the gesture embodiments described above. Alternatively or in addition, device 700 can be implemented with any one or combination of hardware, firmware, or fixed logic circuitry that is implemented in connection with processing and control circuits which are generally identified at 712. In embodiments, the device 700 can also include an input module 714. Although not shown, device 700 can include a system bus or data transfer system that couples the various components within the device. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures.
Device 700 also includes computer-readable media 716 that may be configured to maintain instructions that cause the device, and more particularly hardware of the device to perform operations. Thus, the instructions function to configure the hardware to perform the operations and in this way result in transformation of the hardware to perform functions. The instructions may be provided by the computer-readable media to a computing device through a variety of different configurations.
One such configuration of a computer-readable media is signal bearing media and thus is configured to transmit the instructions (e.g., as a carrier wave) to the hardware of the computing device, such as via a network. The computer-readable media may also be configured as computer-readable storage media that is not a signal bearing medium and therefore does not include signals per se. Computer-readable storage media for the device 700 can include one or more memory devices/components, examples of which include fixed logic hardware devices, random access memory (RAM), non-volatile memory (e.g., any one or more of a read-only memory (ROM), flash memory, EPROM, EEPROM, etc.), and a disk storage device. A disk storage device may be implemented as any type of magnetic or optical storage device, such as a hard disk drive, a recordable and/or rewriteable compact disc (CD), any type of a digital versatile disc (DVD), and the like. Device 700 can also include a mass storage media device.
Computer-readable media 716 provides data storage mechanisms to store the device data 704, as well as various device applications 718 and any other types of information and/or data related to operational aspects of device 700. For example, an operating system 720 can be maintained as a computer application with the computer-readable media 716 and executed on processors 710. The device applications 718 can include a device manager (e.g., a control application, software application, signal processing and control module, code that is native to a particular device, a hardware abstraction layer for a particular device, etc.). The device applications 718 also include any system components or modules to implement embodiments of the techniques described herein. In this example, the device applications 718 include a keyboard input module 722 that is shown as a software module and/or computer application. The keyboard input module 722 is representative of software that is used to provide an on-screen keyboard and/or a text prediction key(s) 122 as described above and below. Alternatively or in addition, the keyboard input module 722 as well as other device applications 718 and components of the device 700 may be implemented as hardware, fixed logic device, software, firmware, or any combination thereof.
Device 700 also includes an audio and/or video input-output system 724 that provides audio data to an audio system 726 and/or provides video data to a display system 728. The audio system 726 and/or the display system 728 can include any devices that process, display, and/or otherwise render audio, video, and image data. Video signals and audio signals can be communicated from device 700 to an audio device and/or to a display device via an RF (radio frequency) link, S-video link, composite video link, component video link, DVI (digital video interface), analog audio connection, or other similar communication link. In an embodiment, the audio system 726 and/or the display system 728 are implemented as external components to device 700. Alternatively, the audio system 726 and/or the display system 728 are implemented as integrated components of example device 700.
Embodiments of a text prediction key have been described herein. A text prediction key may be selectively displayed in conjunction with an on-screen keyboard when a prediction for entered text characters is available. This may occur by replacing or otherwise modifying one or more keys of the on-screen keyboard to accommodate the text prediction key. The text prediction key may also be configured in various ways to notify a user that a prediction candidate is available and/or present a corresponding prediction.
Although embodiments of a text prediction key have been described in language specific to features and/or methods, the appended claims are not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations of a text prediction key.