Abstract:
Systems, devices and methods are disclosed that improve error correction in time-dependent character input systems. Error correction algorithms correct inaccurately entered words by identifying alternative button press type combinations that conform to the number of button presses in a button press type sequence. The number of possible alternative combinations compounds as the number of button presses in a sequence increases. The disclosed improvement reduces the number of possible alternative button press type sequences by acquiring a row ID value with each received button press. The algorithm divides the button press type sequence into segments at each position of the button press type sequence where a row ID value changes. The algorithm identifies alternative button press type sequences separately for each segment, converts possible alternative button press type segments to character sequence segments, and considers the possible combinations of reconnected character sequence segments as possible word alternatives.

Description:
TECHNICAL FIELD 
       [0001]    This description generally relates to the field of electronic devices and, more particularly, to user interfaces of electronic devices. 
       BRIEF SUMMARY 
       [0002]    A computer processor-implemented method may be summarized as including: receiving, by at least one computer processor, input resulting from actuation of buttons of two or more arrays of buttons; interpreting, by at least one computer processor, from the received input, a sequence of button press values and a sequence of button press types, wherein each button press type corresponds to one or more button press actuations of a corresponding button or buttons within one of the arrays; dividing, by at least one computer processor, the interpreted sequence of button press types into segments according to, for each button press type, the array of the corresponding button or buttons; determining, by at least one computer processor, for each segment of the divided sequence of button press types, at least one alternative sequence of button press types associated with the segment, wherein each alternative sequence of button press types associated with the segment has a same number of button actuations as the segment; converting, by at least one computer processor, for each segment, each associated alternative sequence of button press types to an alternative sequence of characters associated with the segment according to the interpreted sequence of button press values; and determining, by at least one computer processor, at least one reconnected sequence comprised of, for each segment, an alternative sequence of characters associated with the segment or a presumed sequence of characters associated with the segment, the presumed sequence of characters associated with the segment based on the input resulting from the actuation of the buttons. 
         [0003]    The at least one reconnected sequence may be a plurality of alternative reconnected sequences and may further include: comparing, by at least one computer processor, the plurality of reconnected sequences with a library of known words; and selecting, by at least one computer processor, one of the plurality of reconnected sequences as input in place of a presumed word, the presumed word based on the input resulting from the actuation of the buttons. The at least one reconnected sequence may be comprised of, for each segment, an alternative sequence of characters associated with the segment. 
         [0004]    A system may be summarized as including: at least one computer processor; and at least one memory coupled to the at least one computer processor, the at least one memory having computer executable instructions stored thereon that, when executed, cause the at least one processor to perform: receiving input resulting from actuation of buttons of two or more arrays of buttons; interpreting from the received input, a sequence of button press values and a sequence of button press types, wherein each button press type corresponds to one or more button press actuations of a corresponding button or buttons within one of the arrays; dividing the interpreted sequence of button press types into segments according to, for each button press type, the array of the corresponding button or buttons; determining for each segment of the divided sequence of button press types, at least one alternative sequence of button press types associated with the segment, wherein each alternative sequence of button press types associated with the segment has a same number of button actuations as the segment; converting for each segment, each associated alternative sequence of button press types to an alternative sequence of characters associated with the segment according to the interpreted sequence of button press values; and determining at least one reconnected sequence comprised of, for each segment, an alternative sequence of characters associated with the segment or a presumed sequence of characters associated with the segment, the presumed sequence of characters associated with the segment based on the input resulting from the actuation of the buttons. 
         [0005]    The at least one reconnected sequence may be a plurality of alternative reconnected sequences and wherein the computer executable instructions, when executed, may further cause the at least one processor to perform: comparing the plurality of reconnected sequences with a library of known words; and selecting one of the plurality of reconnected sequences as input in place of a presumed word, the presumed word based on the input resulting from the actuation of the buttons. The at least one reconnected sequence may be comprised of, for each segment, an alternative sequence of characters associated with the segment. 
         [0006]    A non-transitory computer-readable medium may be summarized as having computer executable instructions stored thereon that, when executed, cause at least one processor to perform: receiving input resulting from actuation of buttons of two or more arrays of buttons; interpreting from the received input, a sequence of button press values and a sequence of button press types, wherein each button press type corresponds to one or more button press actuations of a corresponding button or buttons within one of the arrays; dividing the interpreted sequence of button press types into segments according to, for each button press type, the array of the corresponding button or buttons; determining for each segment of the divided sequence of button press types, at least one alternative sequence of button press types associated with the segment, wherein each alternative sequence of button press types associated with the segment has a same number of button actuations as the segment; converting for each segment, each associated alternative sequence of button press types to an alternative sequence of characters associated with the segment according to the interpreted sequence of button press values; and determining at least one reconnected sequence comprised of, for each segment, an alternative sequence of characters associated with the segment or a presumed sequence of characters associated with the segment, the presumed sequence of characters associated with the segment based on the input resulting from the actuation of the buttons. 
         [0007]    The at least one reconnected sequence may be a plurality of alternative reconnected sequences and wherein the computer executable instructions, when executed, may further cause the at least one processor to perform: comparing the plurality of reconnected sequences with a library of known words; and selecting one of the plurality of reconnected sequences as input in place of a presumed word, the presumed word based on the input resulting from the actuation of the buttons. The at least one reconnected sequence may be comprised of, for each segment, an alternative sequence of characters associated with the segment. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0008]    In the drawings, identical reference numbers identify similar elements or acts. The sizes and relative positions of elements in the drawings are not necessarily drawn to scale. For example, the shapes of various elements and angles are not drawn to scale, and some of these elements are arbitrarily enlarged and positioned to improve drawing legibility. Further, the particular shapes of the elements as drawn are not intended to convey any information regarding the actual shape of the particular elements, and have been solely selected for ease of recognition in the drawings.
         FIG. 1  is a schematic view of an example electronic device for input of characters with optional time-dependent button presses according to one illustrated embodiment, the electronic device being a mobile device having a housing, a display, a graphics engine, a central processing unit (CPU), user input device(s), one or more storage mediums having various software modules thereon that are executable by the CPU, input/output (I/O) port(s), network interface(s), wireless receiver(s) and transmitter(s), a power source, an elapsed time counter and a button press value counter.       
 
           [0010]      FIG. 2  is a schematic drawing of one embodiment of the electronic device  100  for input of characters. Aspects of the user interface  150  were previously disclosed in  FIG. 8  of U.S. Pat. No. 8,487,877, which is hereby incorporated by reference in its entirety. 
           [0011]      FIG. 3  is a flow diagram of a method for specifying a character from among a plurality of characters according to one illustrated embodiment. 
           [0012]      FIGS. 4A and 4B  are flow diagrams of a method for an electronic device to interpret button presses according to one illustrated embodiment. 
           [0013]      FIG. 5  is an example of an application of a method of word identification. 
           [0014]      FIGS. 6-8  are examples of an application of a method of word identification. 
           [0015]      FIG. 9  is a flow diagram of another method for an electronic device to interpret button presses according to one illustrated embodiment. 
           [0016]      FIG. 10  is a flow diagram of variables and example values of another method to interpret button presses according to one illustrated embodiment. 
           [0017]      FIG. 11  is a table of value assignments, a user interface and a list of variables for one embodiment of a method of character identification. 
           [0018]      FIG. 12  is a table of characteristics of two different methods to input characters. 
           [0019]      FIGS. 13-15  are examples of an application of a method of word identification. 
           [0020]      FIGS. 16-19  are additional examples of an application of a method of word identification. 
           [0021]      FIGS. 20-22  are additional examples of an application of a method of word identification. 
       
    
    
     DETAILED DESCRIPTION 
       [0022]    In the following description, certain specific details are set forth in order to provide a thorough understanding of various disclosed embodiments. However, one skilled in the relevant art will recognize that embodiments may be practiced without one or more of these specific details, or with other methods, components, materials, etc. In other instances, well-known structures associated with computing systems including client and server computing systems, as well as networks, including various types of telecommunications networks, have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the embodiments. 
         [0023]    Unless the context requires otherwise, throughout the specification and claims which follow, the word “comprise” and variations thereof, such as “comprises” and “comprising,” are to be construed in an open, inclusive sense, that is, as “including, but not limited to.” 
         [0024]    Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. 
         [0025]    As used in this specification and the appended claims, the singular forms “a,” “an,” and “the” include plural referents unless the content clearly dictates otherwise. It should also be noted that the term “or” is generally employed in its sense including “and/or” unless the content clearly dictates otherwise. 
         [0026]    The headings and Abstract of the Disclosure provided herein are for convenience only and do not interpret the scope or meaning of the embodiments. 
         [0027]    Various embodiments are described herein that provide systems, devices and methods for input of characters with optional time-dependent button presses. 
         [0028]    For example,  FIG. 1  is a schematic view of one example electronic device, in this case mobile device  100 , for input of characters with optional time-dependent button presses according to one illustrated embodiment. The mobile device  100  shown in  FIG. 1  may have a housing  102 , a display  104 , a graphics engine  106 , a central processing unit (CPU)  108 , one or more user input devices  110 , one or more storage mediums  112  having various software modules  114  stored thereon comprising instructions that are executable by the CPU  108 , input/output (I/O) port(s)  116 , one or more wireless receivers and transmitters  118 , one or more network interfaces  120 , and a power source  122 . In some embodiments, some or all of the same, similar or equivalent structure and functionality of the mobile device  100  shown in  FIG. 1  and described herein may be that of, part of or operably connected to a communication and/or computing system of another device or machine. 
         [0029]    The mobile device  100  may be any of a large variety of communications devices such as a cellular telephone, a smartphone, a wearable device, a wristwatch, a portable media player (PMP), a personal digital assistant (PDA), a mobile communications device, a portable computer with built-in or add-on cellular communications, a portable game console, a global positioning system (GPS), a handheld industrial electronic device, or the like, or any combination thereof. The mobile device  100  has at least one central processing unit (CPU)  108  which may be a scalar processor, a digital signal processor (DSP), a reduced instruction set (RISC) processor, or any other suitable processor. The central processing unit (CPU)  108 , display  104 , graphics engine  106 , one or more user input devices  110 , one or more storage mediums  112 , input/output (I/O) port(s)  116 , one or more wireless receivers and transmitters  118 , and one or more network interfaces  120  may all be communicatively connected to each other via a system bus  124 . The system bus  124  can employ any suitable bus structures or architectures, including a memory bus with memory controller, a peripheral bus, and/or a local bus. 
         [0030]    The mobile device  100  also includes one or more volatile and/or non-volatile storage medium(s)  112 . The storage mediums  112  may be comprised of any single or suitable combination of various types of processor-readable storage media and may store instructions and data acted on by CPU  108 . For example, a particular collection of software instructions comprising software  114  and/or firmware instructions comprising firmware are executed by CPU  108 . The software or firmware instructions generally control many of the operations of the mobile device  100  and a subset of the software and/or firmware instructions may perform functions to operatively configure hardware and other software in the mobile device  100  to provide the initiation, control and maintenance of applicable computer network and telecommunication links from the mobile device  100  to other devices using the wireless receiver(s) and transmitter(s)  118 , network interface(s)  120 , and/or I/O ports  116 . 
         [0031]    The CPU  108  includes an elapsed time counter  140 . The elapsed time counter  140  may be implemented using a timer circuit operably connected to or as part of the CPU  108 . Alternately some or all of the elapsed time counter  140  may be implemented in computer software as computer executable instructions stored on volatile and/or non-volatile storage medium(s)  112 , for example, that when executed by CPU  108  or a processor of a timer circuit, performs the functions described herein of the elapsed time counter  140 . 
         [0032]    The CPU  108  includes a button press value counter  142 . Alternately, some or all of the button press value counter  142  may be implemented in computer software as computer executable instructions stored on volatile and/or non-volatile storage medium(s)  112 , for example, that when executed by CPU  108 , performs the functions described herein of the button press value counter  142 . 
         [0033]    By way of example, and not limitation, the storage medium(s)  112  may be processor-readable storage media which may comprise any combination of computer storage media including volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Combinations of any of the above should also be included within the scope of processor-readable storage media. 
         [0034]    The storage medium(s)  112  may include system memory which includes computer storage media in the form of volatile and/or nonvolatile memory such as read-only memory (ROM) and random access memory (RAM). A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within mobile device  100 , such as during start-up or power-on, is typically stored in ROM. RAM typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by CPU  108 . By way of example, and not limitation,  FIG. 1  illustrates software modules  114  including an operating system, application programs and other program modules that implement the processes and methods described herein. 
         [0035]    The mobile device  100  may also include other removable/non-removable, volatile/nonvolatile computer storage media drives. By way of example only, the storage medium(s)  112  may include a hard disk drive or solid state storage drive that reads from or writes to non-removable, nonvolatile media, a SSD that reads from or writes to a removable, nonvolatile SSD, and/or an optical disk drive that reads from or writes to a removable, nonvolatile optical disk such as a DVD-RW or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in an operating environment of the mobile device  100  include, but are not limited to, flash memory cards, other types of digital versatile disks (DVDs), micro-discs, digital video tape, solid state RAM, solid state ROM, and the like. The storage medium(s) are typically connected to the system bus  124  through a non-removable memory interface. The storage medium(s)  112  discussed above and illustrated in  FIG. 1  provide storage of computer readable instructions, data structures, program modules and other data for the mobile device  100 . In  FIG. 1 , for example, a storage medium may store software  114  including an operating system, application programs, other program modules, and program data. The storage medium(s)  112  may implement a file system, a flat memory architecture, a database, or any other method or combination capable for storing such information. 
         [0036]    A user may enter commands and information into the mobile device  100  through touch screen display  104  or the one or more other input device(s)  110  such as a keypad, keyboard, tactile buttons, camera, motion sensor, position sensor, light sensor, biometric data sensor, accelerometer, or a pointing device, commonly referred to as a mouse, trackball or touch pad. Other input devices of the mobile device  100  may include a microphone, joystick, thumbstick, game pad, optical scanner, other sensors, or the like. These and other input devices are often connected to the CPU  108  through a user input interface that is coupled to the system bus  124 , but may be connected by other interface and bus structures, such as a parallel port, serial port, wireless port, game port or a universal serial bus (USB). Generally, a unique software driver stored in software  114  configures each input mechanism to sense user input, and then the software driver provides data points that are acted on by CPU  108  under the direction of other software  114 . The display is also connected to the system bus  124  via an interface, such as the graphics engine  106 . In addition to the display  104 , the mobile device  100  may also include other peripheral output devices such as speakers, a printer, a projector, an external monitor, etc., which may be connected through one or more analog or digital I/O ports  116 , network interface(s)  120  or wireless receiver(s) and transmitter(s)  118 . The mobile device  100  may operate in a networked environment using connections to one or more remote computers or devices, such as a remote computer or device. 
         [0037]    When used in a LAN or WAN networking environment, the mobile device  100  may be connected via the wireless receiver(s) and transmitter(s)  118  and network interface(s)  120 , which may include, for example, cellular receiver(s) and transmitter(s), Wi-Fi receiver(s) and transmitter(s), and associated network interface(s). When used in a WAN networking environment, the mobile device  100  may include a modem or other means as part of the network interface(s) for establishing communications over the WAN, such as the Internet. The wireless receiver(s) and transmitter(s)  118  and the network interface(s)  120  may be communicatively connected to the system bus  124 . In a networked environment, program modules depicted relative to the mobile device  100 , or portions thereof, may be stored in a remote memory storage device of a remote system. 
         [0038]    The mobile device  100  has a collection of I/O ports  116  and/or short range wireless receiver(s) and transmitter(s)  118  and network interface(s)  120  for passing data over short distances to and from the mobile device  100  or for coupling additional storage to the mobile device  100 . For example, serial ports, USB ports, Wi-Fi ports, Bluetooth® ports, IEEE 1394 (i.e., FireWire), and the like can communicatively couple the mobile device  100  to other computing apparatuses. Compact Flash (CF) ports, Secure Digital (SD) ports, and the like can couple a memory device to the mobile device  100  for reading and writing by the CPU  108  or couple the mobile device  100  to other communications interfaces such as Wi-Fi or Bluetooth transmitters/receivers and/or network interfaces. 
         [0039]    Mobile device  100  also has a power source  122  (e.g., a battery). The power source  122  may supply energy for all the components of the mobile device  100  that require power when a traditional, wired or wireless power source is unavailable or otherwise not connected. Other various suitable system architectures and designs of the mobile device  100  are contemplated and may be utilized which provide the same, similar or equivalent functionality as those described herein. 
         [0040]    It should be understood that the various techniques, components and modules described herein may be implemented in connection with hardware, software and/or firmware or, where appropriate, with a combination of such. Thus, the methods and apparatus of the disclosure, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as various solid state memory devices, DVD-RW, RAM, hard drives, flash drives, or any other machine-readable or processor-readable storage medium wherein, when the program code is loaded into and executed by a machine, such as a processor of a computer, vehicle or mobile device, the machine becomes an apparatus for practicing various embodiments. In the case of program code execution on programmable computers, vehicles or mobile devices, such generally includes a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. One or more programs may implement or utilize the processes described in connection with the disclosure, e.g., through the use of an API, reusable controls, or the like. Such programs are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system of mobile device  100 . However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations. 
         [0041]      FIG. 2  shows a schematic drawing of one embodiment of the electronic device  100  for input of characters. The device  100  may have some or all the components and functionality described herein with respect to the mobile device  100  of  FIG. 1 . The device  100  has aspects previously disclosed in  FIG. 8  of U.S. Pat. No. 8,487,877, which is hereby incorporated by reference in its entirety. 
         [0042]    The electronic device  100  includes the display  104 , a plurality of characters  200  that populate positions  242  in multiple menu rows (or menu arrays)  244  of a character menu  240 , a plurality of selection buttons  110  divided among multiple button rows (or button arrays)  280 , and a spacebar button  264 , which together make up a user interface  150  of the device  100 . Each of the selection buttons  110  has an assigned row identification (ID) value  282  and an assigned button press value  222 . Included as part of or within proximity to the menu  240  is a reference  258 , additional row ID values  282 , and an offset scale  260 . The display  104 , the plurality of selection buttons  110 , and the spacebar button  264  are communicatively coupled with the CPU  108 , as described in the embodiment of  FIG. 1 . The CPU  108  includes the elapsed time counter  140  and the button press value counter  142 , as described in the embodiment of  FIG. 1 . The CPU  108  is communicatively coupled with the storage medium  112  and the power source  122 , as described in the embodiment of  FIG. 1 . 
         [0043]    In the embodiment of  FIG. 2 , the positions  242  of the menu  240  are arranged in two one-dimensional arrays (or rows)  244 , each array similar to the embodiment in  FIG. 8  of U.S. Pat. No. 8,487,877, except that the menu  240  is shown on the display  104  instead of as a physical feature of the user interface  150 . Each menu row  244  is identified by the row ID value  282  that it shares with the row of selection buttons  280  that operate on that menu row. The plurality of selection buttons  110  can be either hard keys (physical buttons) or soft keys (buttons shown on the display  104 ). In the embodiment of  FIG. 2 , the selection buttons  110  are shown as physical buttons. In either case, the buttons  110  are communicatively coupled with the CPU  108 . 
         [0044]    The menu rows  244  and the offset scale  260  are positioned as respective one-dimensional arrays on the user interface  150  of the device  100 . In one embodiment the menu rows  244  and the offset scale  260  are positioned on the user interface  150  so that they lie adjacent to and parallel with one other. In one embodiment, the menu rows  244  and the offset scale  260  are programmed in software so that they appear as features on the display  104  of the device  100 . 
         [0045]    In one embodiment, positions  242  of each respective menu row  244  are distributed in a one-dimensional array in evenly spaced increments. In a further embodiment, values of the offset scale  260  are distributed in a one-dimensional array in spatial increments that equal the increment of the menu rows  244 , so that by referencing the offset scale  260  to the menu rows  244 , characters  200  in the menu rows are effectively numbered. 
         [0046]    The reference  258  is an indicator located near or on one of the positions  242  of the menu  240 . The offset scale  260  includes a value of zero that is located to correspond with the reference  258  of the menu  240 . Values of the offset scale  260  increase from zero in pre-selected increments as positions of the offset scale get farther from the zero value. In a further embodiment, values of the offset scale  260  decrease from zero in pre-selected increments as positions of the offset scale get farther from the zero value in a direction opposite to the increasing direction. In one embodiment, the pre-selected increment of the offset scale  260  equals one and the values of the offset scale extend from a negative value to a positive value passing through zero. 
         [0047]    In one specific embodiment, the positions  242  of the menu  240  and the values of the offset scale  260  are distributed in respective one-dimensional arrays positioned adjacent to and parallel with one another, the values of the offset scale  260  count in increments of one and are spaced with respect to one another in their array to correspond with the spacing of positions  242  of the menu  240 , and the zero value of the offset scale  260  corresponds to the reference  258  of the menu  240  so that the values of the offset scale  260  label the positions of each row  244  of the menu  240  according to how many positions a given position  242  of a row  244  is offset from the reference  258 . 
         [0048]    The plurality of selection buttons  110  lie on the user interface  150  of the device  100  and, as described above, can be either hard or soft keys. In one embodiment, the buttons  110  are arranged in button rows  280  so that the number of button rows  280  and the number of menu rows  244  is the same. In a further embodiment, the button rows  280  are arranged to visually correspond with the arrangement of the menu rows  244 . 
         [0049]    Each button is communicatively coupled with the CPU  108 . Each button  110  has the function that when pressed, the row ID value  282  and button press value  222  assigned to the button is input to the CPU  108 . In one embodiment, the buttons  110  arranged within the same row  280  have the same row ID value  282  and buttons in different rows have different row ID values. 
         [0050]    The assigned button press values  222  can be either positive or negative. In one embodiment, the button press values  222  assigned to the selection buttons  110  of a button row  280  are all unique. In one embodiment there are four selection buttons  110  per menu row  280  and the buttons&#39; assigned values are −3, −2, +2, and +3. In still another embodiment there are four selection buttons  110  per menu row  280  and the buttons&#39; assigned values are −3, −1, +1, and +3. In still another embodiment there are five selection buttons  110  per menu row  280  and the buttons&#39; assigned values are −3, −2, 0, +2, and +3. In yet another embodiment there are six selection buttons  110  per menu row  280  and the buttons&#39; assigned values are −3, −2, −1, +1, +2 and +3. 
         [0051]    The spacebar  264  also lies in the user interface  150  of the device  100 , can be either a hard or soft key, and is communicatively coupled with the CPU  108 . In an alternative embodiment, the number of menu arrays  244  and selection button arrays  280  is three or more.  FIGS. 3 and 4  show flowcharts for, respectively, an embodiment of a method  506  for specifying a character from among a plurality of characters and an embodiment of a method  607  for an electronic device to interpret button presses-both in accordance with the user interface  150  of  FIG. 2 . 
         [0052]    In  FIG. 3 , in one step  510  of the method  506 , a user views the plurality of characters  200  displayed in the menu  240 . In another step  512 , the user selects a character from the menu  240  for input to the electronic device  100 . 
         [0053]    In another step  542 , the user identifies the selected character by (1) which row  244  of the menu  240  the character is in and (2) the position  242  of the character in its row with respect to the reference  258 . For example, a user can identify a selected character as in either a top or bottom row  244  and by a value equal to the number of positions  242  the selected character is offset from the menu&#39;s reference  258 . The user can identify the position  242  of the selected character in its row  244  in a number of ways, including by referencing the position to a corresponding value in the offset scale  260 , counting the number of positions  242  that the selected character is offset from the reference  258 , recalling from memory the value that identifies the particular selected character, and recalling by muscle memory the selection button keystrokes that correspond with the selected character or the selected character&#39;s position. 
         [0054]    In another step  544 , the user determines whether the value that identifies the selected character&#39;s position  242  in its menu row  244  equals the assigned value  222  of any of the selection buttons  110 . 
         [0055]    If one of the selection buttons  110  has an assigned value  222  that is equal, in another step  518  the user presses the selection button with the assigned value that equals the selected character&#39;s position and releases the button before the elapsed time counter expires. The aforementioned step  518  inputs the assigned value  222  and the row ID value  282  of the pressed selection button to the CPU  108 , triggers the CPU  108  to start the elapsed time counter  140 , and indicates to the CPU that the type of button press is a SHORT press. In a subsequent step  520 , the user waits for the elapsed time counter  140  to expire, if necessary. Expiration of the elapsed time period is not required if the selection button pressed in a subsequent cycle of the method is in a different row  280  than the selection button  110  pressed in the current cycle. In an optional step  522 , the user views the specified character on the display  104 . In an alternative embodiment, step  522  is bypassed. 
         [0056]    However, if the value that identifies the selected character&#39;s position  242  in the menu  240  is not equal to the assigned value of any selection button, then in an alternate step  546 , the user determines whether the value that identifies the selected character&#39;s position  242  in its menu row  244  equals twice the assigned button press value  222  of any selection button  110 . 
         [0057]    If so, in another step  540  the user presses the selection button  110  with the assigned value  222  that equals half the selected character&#39;s position and maintains the button press until the elapsed time counter expires. The aforementioned step  540  inputs the assigned value  222  and the row ID value  282  of the pressed selection button to the CPU  108 , triggers the CPU  108  to start the elapsed time counter  140 , and indicates to the processor that the type of button press is a LONG press. In an optional step  522 , the user views the specified character on the display  104 . In an alternative embodiment, step  522  is bypassed. 
         [0058]    However, if none of the values  222  assigned to the selection buttons  110  equals the selected character&#39;s position  242  or is twice the selected character&#39;s position, in an alternate step  524  the user presses the selection button with the assigned value  222  that is one of two values whose sum equals the selected character&#39;s position. The aforementioned step  524  inputs the assigned value  222  and the row ID value  282  of the pressed selection button  110  to the CPU  108  and triggers the CPU to start the elapsed time counter  140 . In a subsequent step  526 , the user presses the selection button  110  with the assigned value  222  that is the other of two values whose sum equals the selected character&#39;s position  242  and does so before the elapsed time counter  140  expires. The aforementioned step  526  inputs the assigned value  222  of the pressed selection button  110  to the CPU  108  and indicates to the processor that the type of button press is PAIR. Optionally, as part of the step  526 , the CPU  108  may also terminate the elapsed time counter  140 . Once the user has pressed the second selection button, in another step  522  the user views the specified character on the display  104 , which is an optional step and in an alternative embodiment is bypassed. 
         [0059]    According to another embodiment of the invention, the character specification method  506  described above is used iteratively to specify series of characters from the character menu  240 . In one embodiment, words and sentences are formed on the display  104  by iteratively specifying characters according the method above, with the spacebar  264  used to input spaces between words on the display. 
         [0060]      FIGS. 4A and 4B  show flowcharts of an embodiment of a method  607  for the processor  108  of an electronic device to interpret sequences of button presses. 
         [0061]    In one step  676  of the method  607 , the CPU  108  initializes element of an array variable ‘sequence of row ID values’  385  to zero. In one step  650  of the method  607 , the CPU  108  initializes elements of an array variable ‘sequence of button press values’  380  to zero. In another step  652  the CPU  108  initializes elements of an array variable ‘sequence of button press types’  382  to zero. In another step  654  the CPU  108  initializes a variable ‘number of loops m’  390  to zero. In another step  655  the CPU  108  initializes a variable ‘number of button presses n’  392  to zero. 
         [0062]    In another step  612  the CPU  108  initializes the elapsed time counter  140  to zero. In another step  614 , the CPU  108  monitors the selection buttons  110  for a pressed selection button  110 . Once a first selection button occurs, in another step  656 , the CPU  108  determines if the first pressed selection button  110  is a press of the spacebar  264 . If not, in a next step  658 , the CPU  108  assigns to the n th  element of the variable BPV sequence  380  the assigned value  222  of the first pressed selection button  110 . 
         [0063]    In a next step  678 , the CPU determines which button row  280  the pressed selection button  110  is a member of In a next step  680 , the CPU  108  assigns to the m th  element of the variable sequence of row ID values  385  the row ID value  282  of the pressed selection button  110 . 
         [0064]    In another step  618 , the CPU  108  starts the elapsed time counter  140 . In a pair of steps  620 ,  622 , the CPU  108  monitors the selection buttons  110  for the occurrence of a second selection button press while comparing the elapsed time counter  140  with a user chosen selectable-length time period. 
         [0065]    If the elapsed time counter  140  exceeds the duration of the elapsed time period (i.e., expires) before an additional selection button press occurs, in a subsequent step  640  the CPU  108  determines if the first button press is still pressed. 
         [0066]    If the first button press is not still maintained when the elapsed time period expires, then in a subsequent step  660  the CPU  108  assigns to the m th  element of the variable BPT sequence  382  the value ‘short’  340 . 
         [0067]    If, however, the first button press is still maintained when the elapsed time period expires, then in an alternate subsequent step  662  the CPU  108  assigns to the m t  element of the variable BPT sequence  382  the value ‘long’  345 . 
         [0068]    If, however, a second selection button press occurs before the elapsed time counter  140  expires, in another step  664  the CPU  108  assigns to the m t  element of the variable BPT sequence  382  the value ‘pair’  350 . Then, in a subsequent step  666  the CPU  108  adds  1  to the variable number of button presses n  392 . Then, in a subsequent step  668  the CPU  108  assigns to the n th  element of the variable BPV sequence  380  the assigned value  222  of the second pressed selection button  110 . Then, in the subsequent step  666  the CPU  108  again adds 1 to the variable number of button presses n  392 . Then, in a subsequent step  670  the CPU  108  adds 1 to the variable number of loops m  390 . 
         [0069]    According to one embodiment of the method  607 , the CPU  108  re-initializes the elapsed time counter  140  to zero and repeats the method in succession until in the step  656  the CPU  108  finds that the selection button pressed in step  614  is a press of the spacebar  264 . 
         [0070]    Then, in an alternative step  672  the CPU  108  converts the values of the variable BPV sequence  380  to values of a variable ‘total BPV sequence’  386  by: (1) doubling values of the BPV sequence  380  that coincide with ‘long BPT’ values  345  of the BPT sequence  382 , and (2) adding together values of the BPV sequence  380  that coincide with consecutive ‘pair BPT’ values  350  of the BPT sequence  382 . 
         [0071]    In the case of pairs occurring consecutively in the BPT sequence  382  (i.e., pairs of pairs), no value of the BPV sequence  380  is added to more than one other value. Furthermore, additions are made so that every value of the BPV sequence  380  that coincides with a pair BPT  350  gets added to a consecutive value of the BPV sequence that also coincides with a pair BPT and in such a way that no BPV that coincides with a pair BPT goes un-added. 
         [0072]    Then, in a subsequent step  674  the CPU  108  constructs a character sequence  388  by identifying in order from the menu  240  each character  200  who position  242  equals a value of the total BPV sequence  386 . 
         [0073]    Although the method  607  of  FIGS. 4A and 4B  are embodiments of a method for a processor  108  to interpret sequences of button presses, the scope of the method is not limited by this embodiment, but rather by the scope of the claims. 
         [0074]      FIG. 5  shows three examples of the method  607  of  FIGS. 4A and 4B  for the user interface  150  of  FIG. 2 . Each example includes the variables ‘number of button presses n’  392 , ‘BPV sequence’  380 , ‘number of loops m’  390 , ‘row ID sequence’  385 , ‘BPT sequence’  382  and ‘character sequence’  388 . 
         [0075]    In a first example  193 , the variable number of button presses n  392  identifies the elements (0-4) of the array variable BPV sequence  380 . The BPV sequence  380  contains the BPV  222  of each consecutive button press (+2 −2 +2 −2) collected in steps  658  and/or  668  over multiple iterations of the method  607  of  FIGS. 4A and 4B . The variable number of loops m  390  identifies the elements (0-3) of the array variable row ID sequence  385  and the array variable BPT sequence  382 . The row ID sequence  385  contains the row ID value  282  collected in steps  678  and  680  with each iteration of the method  607  (A-A-B). The BPT sequence  382  contains the BPT  224  collected in one of steps  660 ,  662 , or  664  with each iteration of the method  607  of  FIGS. 4A and 4B  (pair-short-long). The character sequence  388  contains the selected characters (l i p). In the first example  193 , values for each of the variables above contribute to select characters of the word  130  ‘lip’. 
         [0076]    In a second example  194 , the variable number of button presses n  392  identifies the elements (0-7) of the array variable BPV sequence  380 . The BPV sequence  380  contains the BPV  222  of each consecutive button press (+3 −3 −2 −2 +2 +3 −3) collected in steps  658  and/or  668  over multiple iterations of the method  607  of  FIGS. 4A and 4B . The variable number of loops m  390  identifies the elements (0-5) of the array variable row ID sequence  385  and the array variable BPT sequence  382 . The row ID sequence  385  contains the row ID value  282  collected in steps  678  and  680  with each iteration of the method  607  (B-B-B-A-A). The BPT sequence  382  contains the BPT  224  collected in one of steps  660 ,  662 , or  664  with each iteration of the method  607  of  FIGS. 4A and 4B  (short-pair-short-pair-short). The character sequence  388  contains the selected characters (w o r  1  d). In the second example  194 , values for each of the variables above contribute to select characters of the word  130  ‘world’. 
         [0077]    In a third example  195 , the variable number of button presses n  392  identifies the elements ( 0 - 7 ) of the array variable BPV sequence  380 . The BPV sequence  380  contains the BPV  222  of each consecutive button press (+3 −2 +3 −3 +2 +2 −2) collected in steps  658  and/or  668  over multiple iterations of the method  607  of  FIGS. 4A and 4B . The variable number of loops m  390  identifies the elements (0-5) of the array variable row ID sequence  385  and the array variable BPT sequence  382 . The row ID sequence  385  contains the row ID value  282  collected in steps  678  and  680  over multiple iterations of the method  607  (A-B-B-A-A). The BPT sequence  382  contains the BPT  224  collected in one of steps  660 ,  662 , or  664  over multiple iterations of the method  607  of  FIGS. 4A and 4B  (long-pair-pair-short-long). 
         [0078]    The character sequence  388  contains the selected characters (m u s i c). In the third example  195 , values for each of the variables above contribute to select characters of the word  130  ‘music’. 
         [0079]      FIGS. 6-8  show an example of how the row ID value  282  is useful in word identification. For the example of  FIGS. 6-8 , the presumed word  134  is ‘lip’. 
         [0080]      FIG. 6  shows the user interface  150  of  FIG. 2 , a table of values for each of the variables ‘character’  200 , ‘menu row’  244 , ‘menu position’  242 , ‘button press values’  222  and ‘button press type’  224 , and three sequence variables ‘sequence of row ID values’  385 , ‘sequence of BPVs’  380 , and ‘sequence of BPTs’  382 . 
         [0081]    Values for the variable ‘character’  200  derive directly from the word  134 . Values for the variable ‘row ID’  244  and ‘menu position’  242  derive from the position of each character  200  in the menu  240  according to the user interface  150 . The value for the variable ‘sequence of row ID values’  385  derives from iterative cycles through steps  678  and  680  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPVs’  380  derives from iterative cycles through steps  658  and/or  668  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPTs’  382  derives from iterative cycles through steps  660 ,  662 , and/or  664  of the method  607 . For the word  134  ‘lip’, the value for the sequence of row ID values  385  is ‘A-A-B’, the value for the sequence of BPVs  380  is ‘+2 +3 +2 −2’, and the value for the sequence of BPTs is ‘pair-short-long’. 
         [0082]      FIGS. 7 and 8  show how the presumed word  134  and a plurality of reconnected alternative character sequences  462  are derived from the sequence of BPVs  380 , the sequence of BPTs  382 , and the sequence of row ID values  385  of  FIG. 6 . 
         [0083]    The BPT sequence  382  is divided so that consecutive BPTs  224  that have the same row ID value  282  are in the same BPT sequence segment  428 . Consecutive BPTs  224  that have different row ID values  282  are points where the sequence  382  becomes separated. For the example of  FIGS. 7 and 8 , the first two BPTs  224  of the BPT sequence  382  have the same row ID variable  282 , A, and the third BPT of the BPT sequence has a different row ID variable, B. Therefore the BPT sequence  382  ‘pair-short-long’ is divided into two BPT sequence segments  428 : a first segment  432  ‘pair-short’ and a second segment  434  ‘long’. 
         [0084]    The number of button presses  202  in the BPT sequence segment  428  determines the possible alternative BPT sequences  420  for the segment, just as the number of presses determines the possible alternative sequences  420  for an entire BPT sequence  382 . The alternative BPT sequences  420  are determined as shown in FIGS. 15-18 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis, herein incorporated by reference in its entirety). For the example of  FIGS. 7 and 8 , the first BPT sequence segment  432  has three button presses and therefore eleven possible alternative BPT sequence  420 . The second BPT sequence segment  434  has only one button press, so that segment  434  has one possible alternative BPT sequence  420 . 
         [0085]    Each alternative BPT sequence  420  in each BPT sequence segment  428  is converted to a total BPV sequence  386  (not shown) based on the BPV sequence  380  and then to an alternative character sequence  445  according to the user interface  150  of  FIG. 2 , as previously disclosed in steps of the method 700 of FIG. 19 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis).  FIG. 8  lists the alternative character sequences  445  as shown. 
         [0086]    One character sequence  445  or presumed sequence  134  from each BPT sequence segment  428  is reconnected with one character sequence or presumed sequence from every other BPT sequence segment in the same order as the BPT sequence segments  428  from which the character sequences are derived and, in that way, builds one of the reconnected alternative character sequences  462 . In one embodiment, the CPU  108  identifies a plurality of unique reconnected alternative character sequences  462  by connecting, in different combinations, a character sequence  445  or presumed sequence  134  from each segment  428 . In one embodiment, all possible combinations of reconnected alternative character sequences  462  are identified. In a further embodiment, all possible combinations of reconnected alternative character sequences  462  are compared with a library  136  of word possibilities. In a further embodiment, if a reconnected alternative character sequence  462  is found in the library  136  and the presumed word  134  is not found in the library, then the CPU  108  accepts as input the found reconnected alternative character sequence  462  in place of the presumed word  134 . 
         [0087]    For the example of  FIGS. 7 and 8 , examples of reconnected alternative character sequences  462  are ‘l i r’, ‘i j i p’, ‘i j i r’, ‘i j k p’ and ‘i j k r’. In one embodiment, all possible combinations of reconnected alternative character sequences  462  are compared with a library  136  of word possibilities. 
         [0088]      FIG. 9  shows a method  706  that uses button press types  224  and row ID values  282  to identify a word from a received sequence of button presses. 
         [0089]    The first step of the method  706  of  FIG. 9  is the method  607  of  FIGS. 4A and 4B . In the method  607  of  FIGS. 4A and 4B , the CPU  108  interprets received button presses and from the presses constructs a character sequence  388 . When used within the method  706  of  FIG. 9 , the constructed character sequence  388  is the presumed word  134 . 
         [0090]    In a next step  710  of the method  706 , the CPU  108  compares the presumed word  134  with a library  136  of word possibilities. In a next step  712 , the CPU  108  determines whether the presumed word  134  is found in the library  136  or not. 
         [0091]    If the presumed word  134  is in the library  136 , then in a next step  714  the CPU  108  accepts the presumed word as input. 
         [0092]    If, however, the presumed word  134  is not in the library  136 , then in a next step  750  the CPU  108  divides the BPT sequence  382  into the BPT sequence segments  428  according to the row ID values  282  of the sequence of row ID values  385 . The BPT sequence  382  is divided so that consecutive BPTs  224  of the BPT sequence  382  that have the same row ID value  282  are in the same BPT sequence segment  428 . Consecutive BPTs  224  that have different row ID values  282  are points where the sequence  382  becomes divided. 
         [0093]    In a next step  752 , the CPU  108  identifies the possible alternative BPT sequences  420  for each sequence segment  428 . The possible alternative BPT sequences  420  for each segment are combinations of BPTs with the same number of button presses as the corresponding segment of the received BPT sequence, as previously disclosed in FIGS. 15-18 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis) except applied to an entire word. 
         [0094]    In a next step  720  and  721 , the CPU  108  converts each alternative BPT sequence  420  to an alternative character sequence  445  based on the BPV sequence  380 , and the characters  200  and menu positions  242  of the user interface  150  of  FIG. 2 , as previously disclosed in FIGS. 21-26 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis) except applied to an entire word. 
         [0095]    In a next step  754 , the CPU  108  connects one alternative character sequence  445  or presumed sequence  134  from each BPT sequence segment  428  in the same order as the BPTs sequence segments  428  from which the character sequences or presumed sequences are derived in order to build the reconnected alternative character sequence  462 . In one embodiment, the CPU  108  identifies a plurality of reconnected alternative character sequences  462  by making unique combinations of alternative character sequences  445  and/or presumed sequences  134  using one sequence  445 ,  134  from each BPT sequence segment  428 . In another embodiment, the CPU identifies all possible reconnected alternative character sequences  462  by identifying every unique combination of alternative character sequences  445  and presumed sequences  134  using one character sequence  445 ,  134  from each sequence segment  428 . 
         [0096]    In a next step  722 , the CPU  108  compares each reconnected alternative character sequence  462  with the library  136  of word possibilities. Next, in a step  724  the CPU  108  determines whether any reconnected alternative character sequence  462  is found in the library  136 . 
         [0097]    If at least one reconnected alternative character sequence  462  is in the library  136 , then in the step  726  the CPU  108  accepts one of the found alternative sequences  462  as input. If no alternative sequence  462  is in the library  136 , then in the step  714  the CPU  108  accepts the presumed word  134  as input. 
         [0098]      FIG. 10  shows first and second flowcharts  152 ,  153 . The first flowchart  152  shows variables of the method  607  of  FIGS. 4A and 4B  and the method  706  of  FIG. 9 . The second flowchart  153  shows example values for the variables of the first flowchart  152 . The first flowchart  152  incorporates within it the flowchart 138 of FIG. 5 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis), which shows the progression of variables through the method  607  of  FIGS. 4A and 4B  that leads to the presumed word  134 . The first flowchart  152  also shows the progression of variables through the method  706  of  FIG. 9  that leads to the possible reconnected alternative character sequences  462 . 
         [0099]    Of note in the first flowchart  152  is the variable ‘sequence of row ID values’  385 . Acquisition of row ID values  282  in step  680  of the method  607  of  FIGS. 4A and 4B  enables BPT sequence segmentation in step  750  of the method  706  of  FIG. 9 . Sequence segmentation is beneficial because it reduces the number of alternative BPT sequences  420  possible for a given sequence  382 . 
         [0100]    Furthermore, acquisition of row ID values  282  requires no extra effort on the part of the user. As described in  FIG. 2 , the row ID value  282  is part of the identity of each selection button  110 . No decision or additional actuation recognizable to the user is required for the CPU  108  to receive the row ID value  282 . Acquisition of values for the variable ‘sequence of row ID values’  385  is transparent to the user. 
         [0101]    The first flowchart  152  of  FIG. 10  has four input variables: ( 1 ) ‘sequence of button press values’  380 , ( 2 ) ‘co-press’  210 , ( 3 ) ‘duration’  208 , and ( 4 ) ‘sequence of row ID values’  385 . Along one path of the flowchart  152 , the variables ‘co-press’  210  and ‘duration’  208  together determine the variable ‘sequence of button press types’  382 , which occurs as a result of repeated loops through steps  620  and  640  of  FIGS. 4A and 4B . Next, the variables ‘sequence of button press values’  380  and ‘sequence of button press types’  382  together determine the variable ‘sequence of total button press values’  386 , which occurs in step  672  of the method  607  of  FIGS. 4A and 4B . Finally, the variable ‘sequence of total button press values’  386  determines the variable ‘presumed word’  134  which occurs in step  674  of the method  607  and is based on the user interface  150  of  FIG. 2 . 
         [0102]    Along another path of the flowchart  152 , the variable ‘sequence of row ID values’  385  and the variable ‘sequence of BPTs’  382  together determine the variable ‘BPT sequence segments’  428 , which occurs in a step  750  of the method  706 . Next in the flowchart, the variable ‘BPT sequence segments’  428  determines the variable ‘number of button presses per sequence segment’  202 , which occurs within step  752  of the method  706 . Next in the flowchart, the variable ‘number of button presses per sequence segment’  202  determines the variable ‘possible alternative BPT sequences per segment’  420 , which also occurs in step  752 . Next, the variables ‘sequence of button press values’  380  and ‘possible alternative BPT sequences per segment’  420  together determine the variable ‘possible alternative sequences of total BPVs per segment’  426 , which occurs within step  720 . Next, the variable ‘possible alternative sequences of total BPVs per segment’  426  determines the variable ‘possible alternative character sequences per segment’  445 , which also occurs within step  720 . Next, the variable ‘possible alternative character sequences per segment’  445  determines the variable ‘reconnected alternative character sequences’  462 , which occurs in step  754  of the method  706 . Finally, the variables ‘reconnected alternative character sequences’  462  and ‘presumed word’  134  are compared with the variable ‘library of words’  136  to determine the variable ‘identified word’  130 , which occurs in steps  710  and  724 . 
         [0103]    The second flowchart  153  shows example values for each variable of the first flowchart  153  for the embodiment of the user interface  150  of  FIG. 2 . 
         [0104]    The variable ‘sequence of button press values’  380  has the value ‘+2 +3 +2 −2’  381 . The variable ‘sequence of row ID values’  385  has the value ‘A-A-B’  386 . The variable ‘co-press’  210  has the values ‘pair’ or ‘not’  211 . The variable ‘duration’  208  has the values ‘&lt;ETP’ or ‘&gt;ETP’  209 . The variable ‘sequence of button press types’  382  has the value ‘pair-short-long’  383 . The variable ‘sequence of total button press values’  386  has the value ‘+5 +2 −4’  387 . The variable ‘presumed word’  134  has the value ‘l i p’  135 . The variable ‘button press type sequence segments’  428  has the values ‘pair-short’ and ‘long’  429 . The variable ‘number of button presses per sequence segment’  202  has the values ‘ 3 ,  1 ’  203 . The variable ‘possible alternative BPT sequences per segment’  420  has as values an array of BPTs ‘S S S, S S L, S L S . . . P L, L’  421 . The variable ‘possible alternative sequences of total BPVs per segment’  426  has as values an array of value sequences ‘+2 +3 +2, +2 +3 +4, +2 +6 +2 . . . +5 +4, −4’  427 . The variable ‘possible alternative character sequences per segment’  445  has as values an array of character sequences ‘i j i, i j k, i m i . . . l k; r’  446 . The variable ‘reconnected alternative character sequences’  462  has as values an array ‘i j i r, i j k r, i m i r . . . l k r’  463 . The variable ‘identified word’  130  has the value ‘l i p’. 
         [0105]    The values of the second flowchart  153  are examples used to demonstrate the embodiments of  FIGS. 2, 4 and 9 . The scope of the invention is not limited by the variables and particular values shown here, but rather by the scope of the claims. 
         [0106]      FIG. 11  shows the user interface  150  of  FIG. 2 , a table  185  of value assignments for variables of the method  706  of  FIG. 9 , and a list of input variables  186  for the method  607  of  FIGS. 4A and 4B . The user interface  150 , table  185 , and list of variables  186  are examples used to demonstrate the embodiments of  FIGS. 2, 4 and 9 . The scope of the invention is not limited by the variables and values shown here, but rather by the scope of the claims. 
         [0107]    The table  185  is divided into rows and columns. Rows are grouped first by the row ID value  282  and then by the button press type  224 . Each column is one variable: the variable ‘row ID value’  282 , the variable ‘co-press’  210 , the variable ‘duration’  208 , the variable ‘button press type’  224 , the variable ‘button press values’  222 , the variable ‘total button press value’  228  and the variable ‘character’  200 . 
         [0108]    Each line of the table  185  is a unique combination of the variables row ID value  282 , button press type  224 , and button press value  222 . For the embodiment of the user interface  150  of  FIG. 2 , two selection button rows  280  with four selection buttons  110  per row enable  26  unique variable combinations. 
         [0109]    The list  186  highlights which of the variables of the method  706  of  FIG. 9  are input variables. The input variables are: (1) ‘button press values’  222 , (2) ‘co-press’  210 , (3) ‘duration’  208  and (4) ‘row ID value’  282 . The remaining variables of the first table (button press type&#39;  224 , ‘total button press value’  228 , and ‘character’  200 ) all follow from the input variables  186  and the user interface  150 , as shown by the flowcharts of  FIG. 10 . 
         [0110]      FIG. 12  shows a table that compares characteristics of two different input methods. One method shown is the method  706  of  FIG. 9 , also known as the reduced-button input method. Another method shown is a 26-button input method  132 . A standard QWERTY keyboard is one example of the 26-button method  132 . 
         [0111]    The characteristics compared in the table of  FIG. 12  are: input variables, possible values for the input variables, level of control, and factor determining the level of control. 
         [0112]    The reduced-button method  706  has four input variables: (1) button press value  222 , (2) co-press  210 , (3) duration  208  and ( 4 ) row ID value  282 . These four variables appear as inputs in the first flowchart  152  of  FIG. 10  and in steps  620 ,  640 ,  658 ,  668  and  678  of the method  607  of  FIGS. 4A and 4B . Possible values of these variables for the user interface  150  of  FIG. 2  are: (1) −3, −2, +2 or +3, (2) pair or not, (3) &lt;ETP or &gt;ETP, and (4) A or B. 
         [0113]    The 26-button method  132  has one input variable: button press value  222 . Possible values for the button press value  222  in the case of the 26-button method are the characters themselves: a, b, c, d . . . and so on. 
         [0114]    Level of control over the four variables for the reduced-button method  706  is high for the button press value variable  222  and row ID value  282 , but low for the co-press  210  and duration  208 . The factor that determines the high level of control over the button press value variable  222  and the row ID value  282  is the button size. Because the reduced button method  706  requires fewer buttons compared to the number of characters that are selectable, relative to other input methods there is space available to increase the button size. For example, for the 13:4 ratio between characters to buttons shown in the interface  150  of  FIG. 2 , only eight buttons are required to offer every character of the English alphabet. Therefore even in a compact application like a mobile device, button size can be large enough for a human finger to press them without error, so the level of control is considered high. 
         [0115]    The factors determining the low level of control for the variables co-press  210  and duration  208  are the moment of button press and the moment of button release. Both these variables  208 ,  210  are time dependent and in a typical application need to be controlled to a precision of less than tenths of a second. Achieving that level of control is difficult on a routine basis, so for that reason the level of control over these variables is considered low. However, due to the predictability of button press timing errors, the low level of control over the variables co-press  210  and duration  208  can be overcome with BPT error analysis. 
         [0116]    Level of control over the button press value variable  222  for the 26-button method  132  is low. As with the reduced button method  706 , the factor determining the level of control for the button press value  222  is button size. But the difference with the 26-button method  132  is that due to the requirement to provide 26 buttons, the size of each individual button must be small in a compact application. In use, the small button size leads to button press errors, therefore the level of control for the button press value variable  222  is considered low for the 26-button method  132 . 
         [0117]      FIGS. 13-15  show an example of word identification that uses a row ID value  282 . For the example of  FIGS. 13-15 , the presumed word  134  is ‘world’. 
         [0118]      FIG. 13  shows the user interface  150  of  FIG. 2 , a table of values for each of the variables ‘character’  200 , ‘menu row’  244 , ‘menu position’  242 , ‘button press values’  222  and ‘button press type’  224 , and three sequence variables ‘sequence of row ID values’  385 , ‘sequence of BPVs’  380 , and ‘sequence of BPTs’  382 . 
         [0119]    Values for the variable ‘character’  200  derive directly from the word  134 . Values for the variable ‘menu row’  244  and ‘menu position’  242  derive from the position of each character  200  in the menu  240  according to the user interface  150 . The value for the variable ‘sequence of row ID values’  385  derives from iterative cycles through steps  678  and  680  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPVs’  380  derives from iterative cycles through steps  658  and/or  668  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPTs’  382  derives from iterative cycles through steps  660 ,  662 , and/or  664  of the method  607 . For the presumed word  134  ‘world’, the value for the sequence of row ID values  385  is ‘B-B-B-A-A’, the value for the sequence of BPVs  380  is ‘+3 −3 −2 −2 +2 +3 −3’, and the value for the sequence of BPTs  382  is ‘short-pair-short-pair-short’. 
         [0120]      FIGS. 14 and 15  show how the presumed word  134  and a plurality of reconnected alternative character sequences  462  are derived from the sequence of BPVs  380 , the sequence of BPTs  382 , and the sequence of row ID values  385  of  FIG. 13 . 
         [0121]    The BPT sequence  382  is divided so that consecutive BPTs  224  that have the same row ID value  282  are in the same BPT sequence segment  428 . Consecutive BPTs  224  that have different row ID values  282  are points where the sequence  382  becomes separated. For the example of  FIGS. 14 and 15 , the first three BPTs  224  of the BPT sequence  382  have the same row ID values  282 , B, and the last two BPTs of the BPT sequence have a row ID value the same as each other but different from the first three BPTS of the sequence  382 , A. Therefore the BPT sequence  382  ‘short-pair-short-pair-short’ is divided into two BPT sequence segments  428 : the first segment  432  ‘short-pair-short’ and the second segment  434  ‘pair-short’. 
         [0122]    The number of button presses  202  in the BPT sequence segment  428  determines the possible alternative BPT sequences  420  for the segment, just as the number of presses determines the possible alternative sequences  420  for an entire BPT sequence  382 . The alternative BPT sequences  420  are determined as shown in FIGS. 15-18 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis). For the example of  FIGS. 14 and 15 , the first BPT sequence segment  432  has four button presses and therefore 28 possible alternative BPT sequences  420 . The second BPT sequence segment  434  has three button presses, and therefore eleven possible alternative BPT sequences  420 . Each alternative BPT sequence  420  in each BPT sequence segment  428  is converted to a total BPV sequence  386  (not shown) based on the BPV sequence  380  and then to an alternative character sequence  445  according to the user interface  150  of  FIG. 2 , as previously disclosed in steps of the method 700 of FIG. 19 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis).  FIG. 15  lists the alternative character sequences  445  as shown. 
         [0123]    One character sequence  445  or presumed sequence  134  from each BPT sequence segment  428  is reconnected (indicated by dashed lines  463 ) with one character sequence or presumed sequence from every other BPT sequence segment in the same order as the BPT sequence segments  428  from which the character sequences are derived and, in that way, builds one of the reconnected alternative character sequences  462 . In one embodiment, the CPU  108  identifies a plurality of unique reconnected alternative character sequences  462  by connecting, in different combinations, a character sequence  445  or a presumed sequence  134  from each segment  428 . In one embodiment, all possible combinations of reconnected alternative character sequences  462  are identified. In a further embodiment, all possible combinations of reconnected alternative character sequences  462  are compared with a library  136  of word possibilities. In a further embodiment, if a reconnected alternative character sequence  462  is found in the library  136  and the presumed word  134  is not found in the library, then the CPU  108  accepts as input the found reconnected alternative character sequence  462  in place of the presumed word  134 . 
         [0124]    For the example of  FIGS. 14 and 15 , examples of reconnected alternative character sequences  462  are ‘w o r j i d’, ‘w o r j i a’, ‘w r q r  1  d’, ‘w r q r j i d’ and so on. In one embodiment, all possible combinations of reconnected alternative character sequences  462  are compared with a library  136  of word possibilities. None of the possible reconnected alternative character sequences  462  are known words, therefore the presumed sequence  134  ‘w o r  1  d’ is the identified word  130  ‘world’. 
         [0125]      FIGS. 16-19  show yet another example of word identification that uses a row ID value  282 . For the example of  FIGS. 16-19 , the presumed word  134  is ‘music’. 
         [0126]      FIG. 16  shows the user interface  150  of  FIG. 2 , a table of values for each of the variables ‘character’  200 , ‘menu row’  244 , ‘menu position’  242 , ‘button press values’  222  and ‘button press type’  224 , and three sequence variables ‘sequence of row ID values’  385 , ‘sequence of BPVs’  380 , and ‘sequence of BPTs’  382 . 
         [0127]    Values for the variable ‘character’  200  derive directly from the word  130 . Values for the variable ‘menu row’  244  and ‘menu position’  242  derive from the position of each character  200  in the menu  240  according to the user interface  150 . The value for the variable ‘sequence of row ID values’  385  derives from iterative cycles through steps  678  and  680  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPVs’  380  derives from iterative cycles through steps  658  and/or  668  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPTs’  382  derives from iterative cycles through steps  660 ,  662 , and/or  664  of the method  607 . For the word  134  ‘music’, the value for the sequence of row ID values  385  is ‘A-B-B-A-A’, the value for the sequence of BPVs  380  is ‘+3 [−2 +3] [−3 +2] +2 −2’, and the value for the sequence of BPTs  382  is ‘long-pair-pair-short-long’. 
         [0128]      FIGS. 17-19  show how the presumed word  134  and a plurality of reconnected alternative character sequences  462  are derived from the sequence of BPVs  380 , the sequence of BPTs  382 , and the sequence of row ID values  385  of  FIG. 16 . 
         [0129]    The BPT sequence  382  is divided so that consecutive BPTs  224  that have the same row ID value  282  are in the same BPT sequence segment  428 . Consecutive BPTs  224  that have different row ID values  282  are points where the sequence  382  becomes separated. For the example of  FIGS. 17-19 , the row ID value  282  changes between the first and second positions of the sequence of row ID values  385  (from A to B) and back again between the third and fourth positions of the sequence  385  (from B to A). Therefore the BPT sequence  382  ‘long-pair-pair-short-long’ is divided into three BPT sequence segments  428 : the first segment  432  ‘long’, the second segment  434  ‘pair-pair’, and a third segment  436  ‘short-long’. 
         [0130]    The number of button presses  202  in the BPT sequence segment  428  determines the possible alternative BPT sequences  420  for the segment, just as the number of presses determines the possible alternative sequences  420  for an entire BPT sequence  382 . The alternative BPT sequences  420  are determined as shown in FIGS. 15-18 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis). For the example of  FIGS. 17-19 , the first BPT sequence segment  432  has one button press and therefore only one possible alternative BPT sequence  420 . The second BPT sequence segment  434  has four button presses, and therefore 28 possible alternative BPT sequences  420 . The third BPT sequence segment  436  has two button presses, and therefore four possible alternative BPT sequences  420 . 
         [0131]    Each alternative BPT sequence  420  in each BPT sequence segment  428  is converted to a total BPV sequence  386  (not shown) based on the BPV sequence  380  and then to an alternative character sequence  445  according to the user interface  150  of  FIG. 2 , as previously disclosed in steps of the method 700 of FIG. 19 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis).  FIGS. 18 and 19  list the alternative character sequences  445  for each of two different possible BPV sequences  380  as shown. 
         [0132]    One character sequence  445  or presumed sequence  134  from each BPT sequence segment  428  is reconnected (indicated by dashed lines  463 ) with one character sequence or presumed sequence from every other BPT sequence segment in the same order as the BPT sequence segments  428  from which the character sequences are derived and, in that way, builds one of the reconnected alternative character sequences  462 . In one embodiment, the CPU  108  identifies a plurality of unique reconnected alternative character sequences  462  by connecting, in different combinations, a character sequence  445  or presumed sequence  134  from each segment  428 . In one embodiment, all possible combinations of reconnected alternative character sequences  462  are identified. In a further embodiment, all possible combinations of reconnected alternative character sequences  462  are compared with a library  136  of word possibilities. In a further embodiment, if a reconnected alternative character sequence  462  is found in the library  136  and the presumed word  134  is not found in the library, then the CPU  108  accepts as input the found reconnected alternative character sequence  462  in place of the presumed word  134 . 
         [0133]    The BPT sequence  382  includes a ‘pair’ BPT  450 , so there is more than one BPV sequence  380  a user could input to get the intended word  135  ‘world’. As a result, more than one set of alternative character sequences  445  exists.  FIGS. 20 and 21  show two of eight possible sets of reconnected alternative character sequences  462  that could occur.  FIGS. 18 and 19  show two of four possible sets of reconnected alternative character sequences  462  that could occur. For the example of  FIG. 18  the received BPV sequence  380  is ‘+3 [−2 +3] [−3 +2] +2 −2’ and the possible reconnected alternative character sequences  462  are ‘m u s i e’, ‘m u s k e’, ‘j us i c’, ‘j us i e’, ‘m r w q v i c’, ‘m r w q x i c’ and so on. For the example of  FIG. 19  the received BPV sequence  380  is ‘+3 [−2 +3] [+2 −3] +2 −2’ and the possible reconnected alternative character sequences  462  are ‘m u s i e’, ‘m u s k e’, ‘j u s i c’, ‘j u s i e’, ‘m r w v q i c’, ‘m r w v n i c’ and so on. In either case, none of the possible reconnected alternative character sequences  462  are known words, therefore the presumed sequence  134  ‘m u s i c’ is the identified word  130  ‘music’. 
         [0134]      FIGS. 20-22  show yet another example of word identification that uses a row ID value  282 . For the example of  FIGS. 20-22 , the intended word is ‘music’ but based on the BPT sequence  380  received the presumed word  134  is ‘jrtvic’. 
         [0135]      FIG. 20  shows the user interface  150  of  FIG. 2 , a table of values for each of the variables ‘character’  200 , ‘menu row’  244 , ‘menu position’  242 , ‘button press values’  222  and ‘button press type’  224 , and three sequence variables ‘sequence of row ID values’  385 , ‘sequence of BPVs’  380 , and ‘sequence of BPTs’  382 . 
         [0136]    Values for the variable ‘character’  200  derive directly from the word  130 . Values for the variable ‘menu row’  244  and ‘menu position’  242  derive from the position of each character  200  in the menu  240  according to the user interface  150 . The value for the variable ‘sequence of row ID values’  385  derives from iterative cycles through steps  678  and  680  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPVs’  380  derives from iterative cycles through steps  658  and/or  668  of the method  607  of  FIGS. 4A and 4B . The value for the variable ‘sequence of BPTs’  382  derives from iterative cycles through steps  660 ,  662 , and/or  664  of the method  607 . For the word  134  ‘jrtvic’, the value for the sequence of row ID values  385  is ‘A BBB A A’, the value for the sequence of BPVs  380  is ‘+3 −2 +3 −3 +2 +2 −2’, and the value for the sequence of BPTs  382  is ‘short-short-pair-short-short-long’. 
         [0137]      FIGS. 21 and 22  show how the presumed word  134  and a plurality of reconnected alternative character sequences  462  are derived from the sequence of BPVs  380 , the sequence of BPTs  382 , and the sequence of row ID values  385  of  FIG. 20 . 
         [0138]    The BPT sequence  382  is divided so that consecutive BPTs  224  that have the same row ID value  282  are in the same BPT sequence segment  428 . Consecutive BPTs  224  that have different row ID values  282  are points where the sequence  382  becomes separated. For the example of  FIGS. 20-22 , the row ID value  282  changes between the first and second positions of the sequence of row ID values&#39;  385  (from A to B) and back again between the fourth and fifth positions of the sequence  385  (from B to A). Therefore the BPT sequence  382  ‘short-short-pair-short-short-long’ is divided into three BPT sequence segments  428 : the first segment  432  ‘short’, the second segment  434  ‘short-pair-short’, and a third segment  436  ‘short-long’. 
         [0139]    The number of button presses  202  in the BPT sequence segment  428  determines the possible alternative BPT sequences  420  for the segment, just as the number of presses determines the possible alternative sequences  420  for an entire BPT sequence  382 . The alternative BPT sequences  420  are determined as shown in FIGS. 15-18 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis). For the example of  FIGS. 20-22 , the first BPT sequence segment  432  has one button press and therefore only one possible alternative BPT sequence  420 . The second BPT sequence segment  434  has four button presses, and therefore 28 possible alternative BPT sequences  420 . The third BPT sequence segment  436  has two button presses, and therefore four possible alternative BPT sequences  420 . 
         [0140]    Each alternative BPT sequence  420  in each BPT sequence segment  428  is converted to a total BPV sequence  386  (not shown) based on the BPV sequence  380  and then to an alternative character sequence  445  according to the user interface  150  of  FIG. 2 , as previously disclosed in steps of the method 700 of FIG. 19 of U.S. Application No. 62/155372 (Method of Word Identification that uses Button Press Type Error Analysis).  FIGS. 22  lists the alternative character sequences  445  for one possible received BPV sequence  380  as shown. 
         [0141]    One character sequence  445  or presumed sequence  134  from each BPT sequence segment  428  is reconnected (indicated by dashed lines  463 ) with one character sequence or presumed sequence from every other BPT sequence segment in the same order as the BPT sequence segments  428  from which the character sequences are derived and, in that way, builds one of the reconnected alternative character sequences  462 . In one embodiment, the CPU  108  identifies a plurality of unique reconnected alternative character sequences  462  by connecting, in different combinations, a character sequence  445  or presumed sequence  134  from each segment  428 . In one embodiment, all possible combinations of reconnected alternative character sequences  462  are identified. In a further embodiment, all possible combinations of reconnected alternative character sequences  462  are compared with a library  136  of word possibilities. In a further embodiment, if a reconnected alternative character sequence  462  is found in the library  136  and the presumed word  134  is not found in the library, then the CPU  108  accepts as input the found reconnected alternative character sequence  462  in place of the presumed word  134 . 
         [0142]    For the example of  FIGS. 20-22  the received BPV sequence  380  is ‘+3 −2 +3 −3 +2 +2 −2’ and the possible reconnected alternative character sequences  462  are ‘j r t v i e’, ‘j r t v k e’, ‘j r t v k c’, ‘j r t v g’, ‘j r w q v i e’, ‘m u s i c’ and so on. The presumed word  134  ‘jrtvic’ is not a known word, but one of the possible reconnected alternative character sequences  462  is a known word: ‘music’. Therefore a particular reconnected alternative character sequence  135  ‘m u s i c’ is accepted as input in place of the presumed word  134  ‘jrtvic’. 
         [0143]    The various embodiments described above can be combined to provide further embodiments. All of the U.S. patents, U.S. patent application publications, U.S. patent applications, foreign patents, foreign patent applications and non-patent publications referred to in this specification and/or listed in the Application Data Sheet are incorporated herein by reference, in their entirety. Aspects of the embodiments can be modified, if necessary to employ concepts of the various patents, applications and publications to provide yet further embodiments. 
         [0144]    These and other changes can be made to the embodiments in light of the above-detailed description. In general, in the following claims, the terms used should not be construed to limit the claims to the specific embodiments disclosed in the specification and the claims, but should be construed to include all possible embodiments along with the full scope of equivalents to which such claims are entitled. Accordingly, the claims are not limited by the disclosure.