Patent Publication Number: US-7900156-B2

Title: Activating virtual keys of a touch-screen virtual keyboard

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of application Ser. No. 11/228,737 filed Sep. 16, 2005 from which priority under 35 U.S.C. §120 is claimed, which is hereby incorporated by reference in its entirety, which application is a Continuation-In-Part of prior application Ser. No. 10/903,964 filed Jul. 30, 2004, from which priority under 35 U.S.C. §120 is claimed, which is hereby incorporated by reference in its entirety. This application is also related to the following co-pending applications: U.S. Ser. No. 10/840,862, Filed May 6, 2004; U.S. Ser. No. 11/048,264, Filed Jul. 30, 2004; U.S. Ser. No. 11/038,590, filed Jul. 30, 2004; (U.S. Ser. No. 11/228,758), entitled “VIRTUAL INPUT DEVICE PLACEMENT ON A TOUCH SCREEN USER INTERFACE”, filed concurrently herewith; and (U.S. Ser. No. 11/228,700), entitled “OPERATION OF A COMPUTER WITH TOUCH SCREEN INTERFACE”, filed concurrently herewith; all of which are hereby incorporated herein by reference in their entirety for all purposes. 
    
    
     TECHNICAL FIELD 
     The present invention is in the field of touch screens and, in particular, relates to operating a touch screen to activate one of a plurality of virtual keys. 
     BACKGROUND 
     A touch screen is a type of display screen that has a touch-sensitive transparent panel covering the screen. When using a touch screen, a user makes a selection on the display screen by pointing directly to GUI objects on the screen (usually with a stylus or finger). The GUI objects may be considered as virtual keys (for example, of a keyboard). It is desirable to increase the usability of display screens for activating virtual keys. 
     SUMMARY 
     In accordance with one aspect, a method of operating a touch screen to activate one of a plurality of virtual graphical user interface (GUI) items is provided. A touch location is determined based on location data pertaining to touch input on the touch screen, wherein the touch input is intended to activate one of the plurality of virtual GUI items. Each of the plurality of virtual GUI items has a set of at least one item location corresponding to it. For each of the virtual GUI items, a parameter (such as physical distance) is determined for that virtual GUI item that relates the touch location and the set of at least one item location corresponding to that virtual GUI item. The determined parameters are processed to determine one of the virtual GUI items. For example, the determined one virtual GUI item may be the virtual GUI item with an item location (or more than one item location, on average) being closest to the touch location. A signal is generated indicating activation of the determined one of the virtual GUI items. 
     In accordance with another aspect, a method of operating a touch screen to activate one of a plurality of virtual keys is provided. Thus, for example, the virtual keys may be considered specific examples of virtual GUI items. A touch location is determined based on location data pertaining to touch input on the touch screen, wherein the touch input is intended to activate one of the plurality of virtual keys. Each of the plurality of virtual keys has a set of at least one key location corresponding to it. For each of the virtual keys, a parameter (such as physical distance) is determined for that virtual key that relates the touch location and the set of at least one key location corresponding to that virtual key. The determined parameters are processed to determine one of the virtual keys. For example, the determined one virtual key may be the virtual key with a key location (or more than one key location, on average) being closest to the touch location. A signal is generated indicating activation of the determined one of the virtual keys. 
     Weights may be associated with each key location, and the weights may be adjusted dynamically based on a sequence of virtual keys previously activated and, in some examples, also based on external considerations such as statistical probabilities of particular virtual keys being activated (based, for example, on dictionaries or letter occurrence frequency data). 
     In one example, a dictionary lookup is used, and all of the letters of a word are considered in doing the dictionary lookup. In other examples, an “x” (e.g., 4) letter rolling window is considered. Thus, for a word that is (or is, thus far) less than or equal to “x” letters, the entire word is used in the dictionary lookup. Once the “x” letter window is full, only the “x” letters are considered. This can reduce the amount of processing relative to considering greater than “x” letters. In addition, a hybrid approach may be used. For example, a dictionary lookup may be used (perhaps with a relatively small dictionary) initially and, if the word is not in the dictionary, then the letters of the rolling window is considered. In some examples, the positioning of the letters in the words (particularly, but not limited to, at the beginning of a word) is considered. In one example, this is accomplished by considering “space” as the first letter of a word. Furthermore, in some examples, the frequency of occurrence of a word (e.g., within a particular document) may be used as input for adjusting the weights. 
     Thus, the usability of touch screen virtual keyboards is enhanced. 
    
    
     
       BRIEF DESCRIPTION OF FIGURES 
         FIGS. 1-1A  through  1 - 1 C illustrate a typical mismatch between the touch area of a user&#39;s finger, to activate a GUI item on a touch screen, and a visual target associated with that GUI item. 
         FIG. 1  illustrates a keyboard GUI (having multiple keys) displayed on a touch screen, where each dot (not displayed on the touch screen) indicates a key location corresponding to a separate virtual key (which typically are not, but may be, coincident with the each displayed key of the keyboard GUI). 
         FIG. 2  is a flowchart illustrating one example method to determine which virtual key a user has activated. 
         FIG. 3  illustrates the shapes (typically not displayed on the touch screen) of the virtual keys corresponding to the displayed keys of the  FIG. 1  keyboard GUI, as well as illustrating the dots that indicate the key locations. 
         FIG. 4  is a schematic diagram useful to explain the  FIG. 2  flowchart. 
         FIG. 5  illustrates an example layout of virtual keys on a touch screen where each of at least one of the virtual keys has a set of greater than one key location corresponding to that virtual key. 
         FIG. 6  is a flowchart illustrating a portion of the  FIG. 2  flowchart for a virtual key such as is shown in  FIG. 5 , having more than one key location corresponding to it. 
         FIG. 7  illustrates an example layout of key locations corresponding to virtual keys on a touch screen based on an initial “touch” by a user of fingers simultaneously in a “home key” position on the touch screen. 
         FIG. 8  illustrates an example arc-shaped keyboard, particularly suited for activation of the virtual keys using a thumb. 
         FIG. 9  illustrates an example of virtual GUI items on a touch screen display where, in this example, the virtual GUI items are not virtual keys of a keyboard. 
     
    
    
     DETAILED DESCRIPTION 
     We now describe a method of operating a touch screen to activate one of a plurality of virtual keys. The touch screen is an input device of a computing system which, for example, operates under program control (where the program is stored as instructions in a memory, for example) based at least in part on user input. The computing system may be, for example, a personal computer, a computing system embedded within an electronic device (such as, for example, a cellular telephone, media player or other consumer electronic device.) In operation, a user interacts with the touch screen and, in response, the touch screen (and or hardware/software associated with the touch screen) provides location data pertaining to touch input on the touch screen. 
     The touch screen provides a graphical user interface that includes GUI items that can be activated by the user as input to the program operating on the computer system. As can be seen from  FIG. 1-1A ,  1 - 1 B and  1 - 1 C, the touch area of a user&#39;s finger, to activate a GUI item on a touch screen, typically does not match a visual target associated with that GUI item.  FIG. 1-1A  shows a finger  12  approaching the touch-sensitive layer  14  of the touch screen.  FIG. 1-1A  also shows a visual target  10  displayed on the screen  16  of the touch screen.  FIG. 1-1B  shows the finger  12  touching the touch sensitive layer  14 . It can be seen from  FIG. 1-1B  that the finger  12  contacts the touch sensitive layer  14  at a touch area  18 . The mid-point  20  of the touch area  18  does not match the visual target  10  displayed on the screen  16  of the touch screen.  FIG. 1-1C  shows a plan view of the finger  12 , visual target  10  and mid-point  20  of the touch area  18 .  FIG. 9  illustrates, in plan view, a situation where a finger  902  is being used to potentially activate two somewhat small GUI items, a keep GUI item  904  and a delete GUI item  906 . 
     It is desirable to process touches on a touch screen in a way that does not necessarily depend on a match between the visual target  10  and a touch area of a touch to activate a GUI to which the visual target  10  corresponds. It is desirable to process touches on a touch screen in a way that “makes sense,” which may include considering factors beyond (or instead of) a correspondence of the visual target and the touch area of a touch to activate the GUI to which the visual target corresponds. 
     In one example, the GUI items are virtual keys of a virtual keyboard. The GUI items are not limited to being virtual keys of a virtual keyboard, however.  FIG. 1  illustrates a portion of a touch screen, where the gridlines  104  are displayed to the user, visually defining “keys” that are present on a conventional qwerty keyboard. The shapes and locations of the visually-defined keys need not be operationally correlated to the shapes of the virtual keys. This will be seen later, particularly with reference to  FIG. 7 . The visually-defined keys are labeled in  FIG. 1  as  102   q ,  102   w ,  102   e , etc., to indicate the letter to which each key corresponds on a conventional qwerty keyboard. 
     Each of the plurality of virtual keys has a set of at least one key location corresponding to it. The dots  106   q ,  106   w ,  106   e , etc indicate key locations. In the  FIG. 1  example, each set of key locations (corresponding to a separate virtual key) is a set of one key location. Later, sets of key locations are illustrated that include more than one key location. 
     In  FIG. 1 , a touch location is denoted by the “X”  108 . In accordance with a broad aspect, a parameter is determined for each virtual key that relates the touch location to the set of at least one key location corresponding to that virtual key. The determined parameters are processed to determine one of the virtual keys, and a signal is generated indicating activation of the determined one of the virtual keys. 
     We now reference  FIG. 2 , which is a flowchart illustrating a particular example of a virtual key activation method. For simplicity of illustration, we initially describe a situation like in  FIG. 1  where each set of key locations is a set of one key location. At step  202 , the touch location is determined, based on location data pertaining to touch input on the touch screen. The location data may be provided, for example, by low level program code being executed by a processor associated with the touch screen. Referring to the  FIG. 1  example, the touch location is denoted by the “X”  108 . 
     At step  204 , for each virtual key, a distance is determined between the touch location “X”  108  and the key location  106  (generically) corresponding to that virtual key. Step  206  is a step included in some examples, and step  206  is discussed later. At step  208 , it is determined to which of the virtual keys the shortest distance determined in step  204  corresponds. At step  210 , a signal is generated to indicate activation of the virtual key determined in step  208 . 
     Having described a particular example of a virtual key activation method, we now refer to the illustration in  FIG. 3 . The hexagonal shapes  302   q ,  302   w ,  302   e , etc. illustrate an example of the shapes of the virtual keys, superimposed on the visually-defined keys  102 . The example touch location “X”  108  shown in  FIG. 1  is also shown in  FIG. 3 . Typically, the hexagonal (or other) shapes of the virtual keys would not be displayed to the user. Generically, the particular configuration of each virtual key  302  is based on the number and configuration of the key locations in the set of key locations corresponding to the virtual key. Other example configurations will be described later. 
       FIG. 3-1  illustrates an example in which, in contrast to  FIG. 3 , there is not such a regular correspondence between the visual targets and the key locations. 
       FIG. 4  illustrates an example of the distance determination step  204  of  FIG. 2 . Specifically, the length of each line segment  402   q ,  402   w ,  402   e , etc. represents the distance between the touch location “X”  108  and each respective key locations  106   q ,  106   w ,  106   e , etc. It can be seen that the line segment  402  having the shortest such length is  402   q , which would be the result of step  208  as applied to the example of  FIG. 1  and  FIG. 3 . 
     With  FIG. 3  in particular as background, we discuss step  206  of the  FIG. 2  flowchart. At step  206  (shown as a dashed rectangle), the distances determined at step  204  may be weighted by a weighting factor. For example, each distance may be multiplied by a weighting factor. The weighting factor for each virtual key affects the size of that virtual key. The smaller the weighting factor associated with a first virtual key relative to the weighting factor associated with a second virtual key, the smaller the first virtual key is relative to the second virtual key (that is, the closer a touch location must be to a key location, relatively, to cause activation of the virtual key to which the key location corresponds.) In some examples, the weighting factors are normalized such that a weighting factor of one has no effect on the size of a virtual key, while a weighting factor greater than one has the effect of enlarging a virtual key, while a weighting factor less than one has the effect of diminishing the virtual key. The application of the weighting factors need not be linear. For example, the square root of the distance may be multiplied by the weighting factor. 
     We now turn to  FIG. 5 , which illustrates an example layout of virtual keys on a touch screen where each of at least one of the virtual keys has a set of greater than one key location corresponding to that virtual key. For example, referring to  FIG. 5 , a plurality of virtual keys (for example, designated by reference numerals  502   a  through  502   h  are illustrated. The boundary of each virtual key ( 502 , generally) is a function of the position (and, if applicable, weighting) of the plural key locations corresponding to that virtual key. It is noted that the keyboard graphic actually viewable by the user may not directly coincide with the irregularly-shaped boundaries of the virtual keys  502 . 
       FIG. 6  illustrates steps  602  and  604 , which may be included in step  204  of  FIG. 2 . In particular, step  602  determines, for each key location in the set of at least one key location corresponding to a virtual key, the distance between the touch location and the key location. With regard to the specific example of the virtual “m” key in  FIG. 5 , step  602  includes determining the distances da and db. The distance provided to step  206  or step  208  ( FIG. 2 ) for the virtual “m” key is then determined, at step  604 , as the average of da and db. In some examples, a step  606  (which, like step  206  in  FIG. 2 , is shown as a dashed rectangle) is included in which the distances determined in step  602  (e.g., da, db and dc) may be weighted before an average is determined at step  604 . Some reasons that it may be desired to weight particular key locations corresponding to a virtual key are discussed later. 
     Referring still to  FIG. 6 , steps  602  and  604  (and, sometimes, step  606 ) are also performed for virtual “j” and “n” keys (and the other virtual keys). For the virtual “j” key, distances dx, dy and dz are determined. For the virtual “n” key, distances dj, dk and dk are determined. In some examples, some optimizations are realized such that the distances are not determined for every virtual key and/or for every key location associated with a particular virtual key. 
     Referring back to  FIG. 2 , optional step  206  and step  208  are carried out using the distances determined in the step  604  processing for the each virtual keys. As a result, the activated virtual key is the one virtual key for which there is the shortest physical distance between the key locations, associated with that virtual key, and the touch location. 
     We now discuss how the key locations are determined, in some examples. While in some examples, the key locations may be predetermined, in other examples, the key locations are dynamically determined. For example, a keyboard interface may be initially activated on a touch screen by processing that detects simultaneous touching of the touch screen by a plurality of fingers, where the particular number may vary by example. In one example, the keyboard interface is only activated if the relative positions of the touching fingers on the touch screen are consistent (within some threshold) with the positions of fingers on an actual keyboard. Once the initial positions of some of the keys (more properly, the initial key locations associated with virtual keys) are determined based on the respective positions of the touching fingers, initial key locations for remaining virtual keys of the keyboard, even though not directly corresponding to touch locations, may be determined. For example, the key locations for the remaining virtual keys of the keyboard may be set to have a predetermined relationship to the key locations for the virtual keys whose key locations are determined directly from the touch locations. 
       FIG. 7  illustrates a portion of a virtual keyboard. The lines  702  indicate the boundaries of the virtual keys, whereas the lines  704  indicate the key boundaries as displayed to the user on the touch screen. The “dots” (for example,  706   a ,  706   b  and  706   c ;  708   a ,  708   b  and  708   c ; and  710   a  and  710   b ) are not typically displayed but, rather, indicate key locations for the virtual keys. 
     In some examples, rather than strictly considering distance between a touch location and key locations, statistical parameters of the distribution of the key locations is taken into account. Thus, for example, a touch location that is “closer” in standard deviation terms to the distribution of key locations for a first virtual key than to the distribution of key locations for a second virtual key is considered to correspond to an activation of the first virtual key. Thus, in one example, a first virtual key has corresponding to it a relatively closely-spaced distribution of key locations, relative to the distribution of key locations corresponding to a second virtual key. With these example distributions of key locations, in order for a touch location to correspond to activation of the a touch location would have to be relatively closer (in physical distance) to the center of the relatively closely-spaced distribution of key locations corresponding to the first virtual key than to the center of the distribution of relatively further-spaced key locations corresponding to the second virtual key. 
     We now discuss how, in one example, how particular virtual keys come to have multiple key locations associated with them. In particular, when it is determined which virtual key a touch location has activated, that touch location may be considered as an additional key location for the activated virtual key. In some examples, the key locations for the virtual keys are accumulated, although the number of key locations for each virtual key may be limited such that, for example, the key locations corresponding to the touch locations earliest in time may be discarded. 
     Furthermore, some key locations may be “backed out” based on conditions that occur later in time than when the key locations was first considered to be a key location. One such later-occurring condition is that a later touch condition is determined to correspond to a “backspace” virtual key that, when activated, would nullify the activation of the virtual key to which the to-be backed out key locations corresponds. 
     In addition, the weights associated with particular virtual keys (see step  202  in  FIG. 2  and step  606  in  FIG. 6 ) may be adjusted dynamically. In one example, the weights are adjusted based on the sequence of virtual keys already activated. For example, the weight associated with the most likely next virtual key to be activated, based on the sequence of virtual keys already activated, may be set to be higher (or lower) than the weights associated with other virtual keys. What virtual key is most like to be activated may be determined, for example, using a dictionary (word-based), statistical probability for individual letters (for example, based on statistical frequency of occurrence), or a combination of both. In some examples, virtual keys deemed to be “dangerous” (e.g., whose the result of whose activation may be difficult to reverse) are given a smaller weight. Potential examples of such “dangerous” keys may include, for example, a “delete” key or “cancel” key (for example, the “delete” GUI item  906  in  FIG. 9 .) Furthermore, in some examples, the slower virtual keys are activated (corresponding, nominally, to more deliberate activation), the less any particular virtual key would be weighted. 
     The described examples may be particularly useful where the virtual keyboards are small relative to the touch area with which a user may activate a virtual key. With a conventional keyboard (with which, for example, it is determined that a particular virtual key is activated by determining if the touch area is within a boundary corresponding to that virtual key), the touch area may correspond to more than one virtual key. 
     For example,  FIG. 8  illustrates an example of an arc-shaped keyboard that may be particularly suited for thumb activation of the relatively small and close-together virtual keys. The visual display  802  associated with the  FIG. 8  keyboard, as well as (nominally) the layout of the key locations used to determine which virtual key is activated) is arc-shaped. An output area  804  is also shown, which provides an indication of the activated virtual keys. 
     The thumb, for example, is relatively large and difficult to control. The arc-shaped keyboard may be initiated by a particular gesture such as “swiping” the thumb across a corner of the touch screen. The arc-shaped keyboard may be, for example, located in a corner of the touch screen easily reachable for activation of the virtual keys by a thumb of a hand holding the touch screen computer. 
     While this invention has been described in terms of several preferred embodiments, there are alterations, permutations, and equivalents, which fall within the scope of this invention. It should also be noted that there are many alternative ways of implementing the methods and apparatuses of the present invention. It is therefore intended that the following appended claims be interpreted as including all such alterations, permutations, and equivalents as fall within the true spirit and scope of the present invention.