Speed typing apparatus and method6799303Abstract A speed typing method and apparatus having multiple letters associated with each key of a keyboard. By utilizing multiple characters on each key, the number of keys would be fewer than the number of letters in the alphabet using this system. Each key on the keyboard is associated with a numerical code. The system uses the numerical code associated with a typed word to access a dictionary, table of words, or at least a beginning of words stored in memory at a memory location corresponding to the input numerical code. The system may display all of the possible words or beginnings of words available to the user in response to the input code. Claims I claim: Description BACKGROUND OF THE INVENTION
TABLE 1
Code Preferred Words Words
5-5 no
on
5-5-8 now now
mow
5-5-8-7 mows
In addition, fewer than every word in the dictionary may be stored in the table memory. For instance, the user may select a limited category of information corresponding to a more finite vocabulary, such as for composing business letters or scientific papers, or addressing medicine, biology, physics, proper nouns, philosophy, and the like. The reduced dictionary diminishes the memory requirements, as well as the time needed for the computer to search the memory. Likewise, less interaction would be required by the user since there are fewer codes in memory, so that each code is further likely to be associated with fewer words, thereby increasing the speed of typing. The user is able to select which dictionary is to be used, and any dictionary could be combined with any other dictionary, or used alone or with a basic dictionary of common words. Thus, if a word is not found in one dictionary, the user could expand the search to another dictionary. Such search could also be made automatic. The user may also define a dictionary of frequently used words, and may add or remove words from any of the dictionaries. If the input numerical code is located or found in the memory table, step 108, the system proceeds to step 118. At step 118, the system will check the memory location to determine if more than one word, i.e. multiple words, are associated with the particular input code. If, however, no words are found in memory at step 108, the user will have the opportunity to correct any misspelling of the word, step 109. If the user determines that the code was entered incorrectly, step 109, the user may go back and re-enter the code, step 104. Correction of a misspelling is performed in accordance with the standard word processing operation, such as by erasing the typed code where necessary and entering the new text code. After making the correction, the system determines if a code has been found in memory for the corrected word, step 108. Assuming, on the other hand, that there was not a typing error, the user may add words in memory, step 110, by adding a particular word to the dictionary memory corresponding to the numerical digits selected. The user selects the new word by highlighting the proper letters among the group of letters displayed above and/or below the home row being typed. Or, the letters may be displayed in a window elsewhere on the screen. As the letters are highlighted and selected from the window, they are then entered into the home row. Once all the letters of the word are highlighted, the user hits ENTER, and the computer stores the new word in the memory location corresponding to the associated numerical code. If the user elects to add the word in memory, the memory is updated, step 112. The selected word is then displayed in the text of the document, step 114, and the system then returns to step 104, where it awaits the next key to be input, step 117. If, on the other hand, the user does not add any word in memory, step 110, instructions are displayed, step 116, and the system returns to wait for the next key, steps 117, 104. The instructions may indicate, for instance, that no word has been located and the user should determine whether there was a typographical error or that the user should reconsider whether to define a new word. Thus, the message may read "check spelling" or "code not recognized". Or, the system may display words corresponding to the closest code that is located in memory and indicate that no exact match has been found. If there is at least one word stored in memory that is associated with the input code at step 108, the system will proceed to step 118. At step 118, if only a single word is stored in the memory location associated with the input code, the word will be displayed, step 120. The user will have the opportunity to change (i.e. add or delete) the word stored in memory, step 122, if, for example, the word in memory is not the word desired to be displayed. As in step 110 above, the memory is updated to include, or omit, the changed word, step 124, the new word is displayed, step 126, in place of the originally displayed word, and the system, at step 127, returns to step 104. If no words are modified at step 122, indicating that the displayed word is correct, the system, at step 127, will return to step 104. The process of changing the words in memory, steps 110, 122, 152 (as will be discussed below), allows the user to update the memory for specially defined words that are not normally included in a standard dictionary. For example, a proper noun might not be in a dictionary memory and thus the operator may want to change or add the proper noun to the memory for that particular code. Thus, the user may incorporate proper nouns, technical terms, abbreviations, and so forth, into the computer memory. This is done in any suitable programming manner, such as by simply appending the new word into the memory location associated with the given code. In addition, the user may modify the memory so as to later omit terms that were previously incorporated into the memory. Assuming that there is more than one word in memory, step 118, all the words are displayed, step 142, with any preferred words being displayed at the top of the list of words. The user then has the option of selecting a word, step 144, creating preferred words, step 148, or including a new word in memory that corresponds to the code, step 152. If the user selects a word among the words displayed, step 144, the selected word is displayed, step 146, and the system returns to await the next input character, steps 147, 104. However, if no word is selected, step 144, the user may wish to create preferred words, step 148. At step 148, the user may define a displayed word or words as being a preferred word to be listed at the top of the list, step 148, or in a certain rank order. If the preferred words are modified, step 148, the memory is updated, step 150, the word is displayed, step 146, and the system again returns to step 104, step 147. The preferred words are those words that have previously been selected or designated by the user as terms that are most frequently used. The system may also be configured with the words pre-designated as being preferred words. Still yet, the system may be configured so that the preferred word is the word that was selected the last time the same code was entered by the user. As shown in Table 1, for instance, the term "now" is defined as the preferred term for code 5-5-8. Though the preferred terms are shown as a separate list in memory Table 1, they may simply be flagged as a preferred term and stored with the other words for that memory location. Finally, if the user does not select a word, step 144, and does not change the list of preferred words, step 148, the user may change, i.e. add to or modify, the words in memory, step 152. For example, as discussed above, the desired word may be missing among the displayed words, or the user otherwise wants to include a new word to be associated with the input numerical code. If so, the memory is updated at step 150 to reflect the new information, and the new word is displayed, step 146. The system then returns to step 104, where the system awaits a new character to be input, step 147. If the user does not select a word, step 144, create a preferred word, step 148, or change a word, step 152, an instruction message will be displayed, step 154. The system will then return to step 104, where it will wait for the next key to be typed, step 147. The message may indicate, for instance, for the user to "check spelling" or that the "word was skipped." Now turning to FIG. 4(b), an alternative embodiment of the flow chart of FIG. 4(a) will be discussed. As a standard practice, the system will display all the words in the manner shown in FIG. 4(a), with the preferred words displayed at the top of the list of words. However, FIG. 4(b) now allows the user to first display a list of only the preferred words. If the desired word is not found among the preferred terms, the user may then decide to see a list of all the words. Accordingly, steps 302-327 of FIG. 4(b) are similar to steps 102-127 of FIG. 4(a). Picking up at step 318, however, the user now has the election to first display a list of only the preferred words. Thus, if there is more than one word stored in the memory location associated with the input code, as verified at step 318, the system will next check for a list of preferred words, step 328. If preferred words are stored in memory, the system will display any preferred words associated with that input code, step 330. An asterisk or message will be displayed along with the preferred words so that the user knows that additional words are available aside from only the preferred terms displayed. The user may, after reviewing the list of preferred terms, step 330, decide to see the entire list of words, step 332, after which all the words are displayed, block 342, offering the operator various choices as will be discussed below. If all the words are not to be displayed, the system then determines if there are multiple preferred words stored in memory, step 334, and, if so, the user may pick among the preferred words, step 338. If a word is selected, the selected word is displayed, step 336, and the system returns to await a new keystroke, steps 337 and 304. If no word is selected, a message is displayed, step 340, and the system returns to receive the next key, steps 337, 304. Returning to step 332, if the user selects to display all the words stored in memory, step 332, or if there were no preferred words to begin with, step 328, all the words will be displayed, step 342. Accordingly, all words in the appropriate memory location are displayed on monitor 18, step 342. Once the words are displayed, step 342, the user then has the option of selecting a word, step 344, creating a list of preferred words, step 348, or including a new word in memory that corresponds to the code, step 352. Steps 342 to 354 are essentially similar to steps 142 to 154 of FIG. 4(a). At step 348, however, the user may define a displayed word or words as being preferred words or otherwise view and modify the list of preferred words or create a new list of preferred words, step 348. Referring now to FIG. 5, an example of the operation of the invention will now be described with reference to FIG. 4(a). The monitor 18 is generally shown as having a main screen 22 on which the output is displayed. Suppose, for instance, that the user desires to type the phrase "Dear Tom, Now is the time for all good men to come to the aid of their country.". After the computer formats, step 102, the user would begin typing the word "Dear" by striking the key sequence 2-2-1-5, which is recognized by the system at step 104. As each keystroke is made, the letters associated with each key are displayed on the screen 22. The letters are preferably displayed vertically upward, above the home row 25, which is shown as the center row. The home row is the line that is being typed. It is the row in which the highest preferred word is displayed. If there are no preferred words, the word displayed in the home row may be the first alphabetically listed word, or the word that was selected the last time that code was entered. Below the home row is displayed the list of words with lesser priority, which may be listed alphabetically. When a word from below the home row is selected, it is moved into the home row. It may be preferable to display the letters and words horizontally, especially when there are fewer words to edit, such that most editing will only involve selecting between one of two words. For a large number of letters assigned to a particular key, the user can elect that the system limit the letters displayed to the first three or four. An asterisk is then provided to indicate to the user that other letters are available to be scrolled. Referring to FIG. 5, for instance, when the user depresses key 8 for the letter "w", the letters "v", "w" and "x" are displayed. An asterisk is also displayed, indicating that additional letters, "y" and "z", have not been displayed. Of course, the user may elect not to display the letters, and have the option to display letters if a desired word is not displayed. Thus, for instance, the letters may only be displayed when no word code is found in memory. If a word code is found in memory, only the words will be displayed, and not the letters for the individual keys that are depressed. Suppose now that the user has finished typing the word "Now", by striking codes 5-5-8. Once 5-5-8 is entered, the user would then depress space bar 60, indicating to the system that the word has come to an end, step 106. At that point, the system 100 would search the memory and recognize the input code 5-5-8 as corresponding to one of the codes in memory 12, as depicted in Table 1, step 108. In an alternative preferred embodiment, the numerical code may be searched as the user strikes each key. Thus, when the user strikes 5 for "N", the memory will scroll past all numerical codes starting with a value less than 5. When the user next strikes 5 for "o", the memory will scroll to numerical code 5-5. (At this point, though the user hasn't completed typing that particular word, the currently available words "no" and "on" may be displayed on screen 22.) When the user next strikes 8 for "w", the system need only scroll down a short distance to locate the proper code, 5-5-8. Continuing with our example at step 118, the system will recognize that there are two words, "now" and "mow", associated with code 5-5-8. At this point, the system may sound an audible beep to alert the user to edit the document. In addition, the system will then determine that the word "now" has been marked as a preferred word. Thus, the word "Now" is displayed on screen 22 in the home row 25 and highlighted. In addition, the word "Mow" is displayed below "Now", as shown in FIG. 5. The user may display all words in any suitable manner, such as by selecting the function from a pull-down menu. The words associated with the input code are preferably displayed downward starting at the home row 25. The user may then scroll down to highlight one of the words displayed, such as "Mow" by using scrolling keys on keyboard 14 or 50, mouse 20, or cursor controller 55, step 144. Once the appropriate term is highlighted and the user depresses the ENTER key, the selected term is displayed on screen 22, step 146, and the system returns to wait for the next key, steps 147, 104. An example of scrolling downward is shown in FIG. 5 for the code 3-5-5-2. After the full code is entered, the words "gone", "home", and "good" are displayed downward, with the term "gone" being positioned in the home row 25. At the point shown in FIG. 5, however, the user has scrolled downward to highlight the term "good". Once "good" is highlighted, and the ENTER key depressed, the words "gone" and "home", as well as the letters, are removed from the display. In addition, the term "good" would be displayed in home row 25, without being highlighted, as shown for the words "for all". Of course, instead of highlighting the desired word, the system may underline the desired word, provide the displayed and/or selected words in brackets, or use any suited method or combination to distinguish selected words from the list of displayed words. Also, the word may be displayed side-by-side, as opposed to being vertically aligned, and the letters may be displayed in a window and may remain in the window until editing and placement of the desired word in the home row. Still yet, the words may be selected by being scrolled into the home row 25 and hitting ENTER. Or, the user may select a number located next to the listed words that would put that word into the home row. Of course, the words may be displayed both above and below the home row. Where there are three words, such that one word is above the home row and one word below the home row, the user would have the option to hit the "+" and "-" keys to select the word above or below the home row, respectively. In addition, the user may hit a scroll key (which is preferably positioned between the "+" and "-" keys) to view a next group of three words that would then be displayed in the same fashion. In addition, the words may be displayed in a window elsewhere on the screen. The user may further decide to add a new word (or, if no word code is located in memory due to a misspelling) to memory, step 152. Referring to FIG. 5, suppose the user inputs code 7-5-5 for his name, "Tom". A standard dictionary memory may not have the proper noun word Tom, but does have other words for that codes, including "Ton" and "Son". As described above, all letters for code 7-5-5 are displayed on screen 22 as the respective keys are depressed. In addition, in the absence of any preferred terms, the words "Ton" and "Son" are also displayed on screen 22. In order to define the new word, the user may then exercises the option to display all the letters by depressing a function key and then the user highlights the letters used to form the new word, "Tom", either by vertically scrolling the letters into the home row 25, or by moving the cursor and clicking, as shown in FIG. 5. Once all of the letters are highlighted, the user hits the ENTER key and the word is displayed in the home row 25, step 114, and all the letters and remaining words are removed from the display. Of course, the user may, instead of highlighting each individual letter, change to a standard 26-key keyboard configuration (as will be described below), in order to directly type a word. Still yet, instead of highlighting, the system may underline a letter, provide letters in brackets, or use any suited method, including the combination of underlining and highlighting, to distinguish a selected letter. The letters may also be displayed side-by-side, as opposed to being vertically aligned. Nevertheless, once the letters are selected, and a word is formed, the system then updates the memory, step 150, so that the new word "Tom" is stored in the memory location corresponding to numerical code 7-5-5 (or a message may be displayed indicating that the word was not in memory). The system then returns to step 104, where it waits for the next key to be depressed. Once the operator has completed typing, the operator may print the document on printer 16, save to document to disk, or perform any other function common to word processing systems. Now turning to FIG. 6, a flow chart is shown in accordance with yet another alternative embodiment of the invention. FIG. 6 differs from FIG. 4(a) by allowing the user to finish typing an entire sentence, paragraph, page, or document, prior to having to select the words to be finally displayed. In addition, the preferred words are now displayed in conjunction with the entire set of words, as in FIG. 4(b). Thus, instead of displaying the list of preferred words alone, the system now displays all the words, with the preferred words at the top of the list. Long lists may be scrolled in any suitable manner. As in FIGS. 4(a) and 4(b), the system starts out by first formatting itself, step 202, and reading keys, step 204. After an entire word is input, step 206, the system will check for the code in memory, step 208. If the input code is not located in memory, step 208, a message will be displayed, or the code will be displayed, step 210, and highlighted, to indicate no word has been found. If the code is found, step 208, and there is only one word, step 212, that word is displayed, step 214. Assuming that there is more than one word in memory, the system will display all the words, step 216, with the highest ordered preferred word always displayed at the home row and other words above and/or below. Here, however, since there is only one word, the step of checking for more than one word, step 212, may be removed since the single word would necessarily be displayed at step 216. After the code, word, or words have been displayed at steps 210, 214, or 216, the system will determine whether to edit or verify the document, step 218. Here, the user may select that the document is to be edited following the entry of a line of text, a paragraph, or a page and the system will remind the user at the appropriate intervals. Accordingly, after each line, sentence or paragraph of text is entered, the system will automatically prompt the user to go back and edit that line, though the user may continue typing and edit the document at a later time. Upon subsequently editing the document, the system may automatically proceed from one word to be edited to the next, skipping all word codes that only had one word in memory. Or, the system may allow the user to skip between words to be edited, by using a TAB key, a function key, or the like. The user may also have the option of using "+""-" and "0" keys to select amongst a plurality of displayed letters and/or words. For instance, assume that the user must select from amongst 9 words that are displayed on the screen for the typed word code. The words are displayed both above and below the home row, so as to be centered about the home row (with any preferred word in the home row, and the remaining words listed alphabetically or in rank of priority). The user may then hit the "+" key in order to narrow the displayed words to those above the home row (here, the top five words) and the remaining words would be removed from the display. The five displayed words are then centered about the home row and the user may then hit the "-" key to select the words displayed below the home row, if that is the location of the desired word. Once the field is narrowed to only three words, the "+" and "-" keys would select the word above or below the home row, respectively. Of course, the word in the home row may always be selected by hitting an enter key, or by the user continuing to type. In addition, the system may be configured so that only three of the nine words may be displayed at a time and the "+" and "-" keys would select the words above and below the home row, respectively, and the "0" may be used to scroll to the next set of three words. Also, the user may hit a number displayed next to the word to immediately enter that word or the user may use a cursor to select the desired word. Still yet, the user may select to edit the document at any time during the entry of text. Unless the document is to be edited, the system will return to step 204, where it awaits entry of the next key. Accordingly, the system will display alternative words and letters up until the point the document is verified. Once the document is to be edited, the system will advance to step 220. Here, the system will proceed through each input code for which there is more than one word in memory. Where there is only one word, that word is accepted and displayed in the text of the document. Where there is more than one word, the system will display the list of words with the preferred words being listed first. The system will then prompt the user to select a word, enter a new word into the dictionary, or select a word as being preferred. This process is similar to steps 118 to 147 of FIG. 4(a) as discussed above. The highest preferred word is displayed at the home row and any remaining preferred words are displayed in the order of their priority. The order of priority may be defined by the user or pre-designated in the system. This is done by the user assigning a preferred order to the list of words. Or, a rank order may be predefined by the system. Any words that have not been ranked are also displayed in alphabetical order beneath words having a greater priority. The term with the greatest priority is displayed in the home row 25. The user may then scroll down (or up, if the words are displayed above the home row) and highlight any term to be selected. If, however, the user does not select a word (such as by continuing to type), the word in the home line 25, here the preferred word, is displayed in the text of the document. The system may further be configured to permit the user to select all of the highlighted words at once. As discussed above, the first preferred word is highlighted by default, at the user's option, and the user may select a different word by scrolling downward or upward to highlight the desired word, without having to press ENTER for each individual word. If there is no preferred word, the first listed word, which is in the home row 25, is highlighted by default. All the operational steps of the invention are implemented in accordance with well-known programming techniques. For instance, the steps of indicating a word is missing, steps 110, 122, 152, selecting a preferred word, step 148, or changing the keyboard configuration, are implemented by methods that are well-known in the programming art, such as by using a pop-up menu or display window. In this manner, all the functions available to the user, such as to select a keyboard configuration, add a new word to memory, and so forth, may be implemented by a pull-down menu or in a display window that can be accessed at any time during operation of the invention or only at selected times. Other operations, such as updating the memory, steps 124 and 150, are also implemented by well-known programming methods, examples of which will be discussed below. An example of implementing the invention by the use of windows is shown, for instance, in FIG. 7, in accordance with the operation of FIG. 6. A function display window is provided for the user to select among available functions, such as to enter a new word not in memory, select a new keyboard configuration, create a preferred word, edit the document, create a preferred word, and so forth. In addition, the letters and words are also displayed in scrollable windows, with the most preferred term listed first and highlighted. The non-preferred or lesser prioritized words are then displayed below the most preferred word. The preferred term, however, need not necessarily be highlighted at the user's option. Once a word is selected, the window disappears and the word is displayed in the text of the document, such as shown for "time" in FIG. 7. Still as an alternative method of selecting words, each word or letter (in the case of defining a new word) may be displayed adjacent a number (not shown). The user may then select the word or letter by depressing the number displayed adjacent the desired word. The user may then use one hand for typing and one hand for editing or selecting words and letters, or otherwise controlling operation of the system. Now turning to FIGS. 8-20, various alternative embodiments of keyboard configurations are shown. These configurations may be pre-programmed into the system, or may be designated by the user. FIGS. 8-10 are examples of two-handed keyboard configurations and FIGS. 11-20 generally show examples of one-handed keyboard configurations. These embodiments have the user position his fingers over most of the respective keys, thereby reducing finger and hand movement and fatigue. The configuration shown in FIG. 10, corresponding to a 14-key keyboard (since key 12 is repetitive), was tested with the phrase "Now is the time for all good men to come to the aid of their country." It was found that only the word "aid" required any editing by the user since all the remaining terms were the only words for the typed code. Thus, the number of keys is significantly reduced from the standard 26 keys, to 14 keys, with the amount of required editing being minimal. Where there are four or fewer keys for one or both hands, the user may always keep four fingers positioned over the respective keys, such as for FIG. 12. Or, as with FIG. 11, the user may use two fingers, each finger assigned two keys. For five to nine keys, the user may choose to use 3 fingers of one hand by using two to three keys for each finger, such as for the configuration of FIG. 13. For twelve keys, such as with FIG. 13, the user may use four fingers of one hand. The keyboard is thus preferably configured to minimize fatigue on the user by reducing finger movement. FIG. 21 shows still yet another alternative embodiment of the invention, as implemented on a touch screen 22, such as found on a conventional computer monitor 18. Key representations 80 are displayed on the monitor 18 about a general octagonal pattern, though any suited shape may be used, including a circle or hexagon. Letters and numerical codes are assigned to each key representation as with the manual keyboards, such as shown. The user positions a pointer (not shown) in the center of the octagon and slides the pointer outward along the screen 22 into one of the key representations 80. This movement is generally shown to correspond to arrows 82. As the pointer enters the key representation, the key is activated. The letters corresponding to the key are thereby selected and the user returns the pointer to the center position of the octagon. This touch-screen system is particularly suited for persons with disabilities, and may also be configured to recognize input from suitable input devices, such as being responsive to light emitted from a pointer. With these "key" arrangements a "WRITING" technique can be used. There are well known techniques using a special writing instrument and/or tablet which can recognize the direction, the change in direction, and if desired the length of the stroke. The successive use of the same letter can be indicated by a circular movement, the length of the movement or depression of a key. With the 6 key keyboard the following methods can be used: (a) The pen caused by the user to move in one of six direction and then lifted at the end of the stroke. These directions include: (1) diagonally up to the left; (2) diagonally up to the right; (3) diagonally down to the left; (4) diagonally down to the right; (5) straight up; or (6) straight down. At the end of the word a space bar may be hit. (b) The pen stays in contact until the end of the word when it is lifted from the table which causes the space bar to be activated. The directions of the strokes are as indicated in (a) above. It is necessary for the computer to realize whether the same key is "hit" two times or more in a row. There are several different methods of achieving this: (i) the user can hit a key located on the pen with his index finger to indicate a separated activation of that key; (ii) a button could be hit by a finger of the hand not holding the "pen". This key may be located on the tablet or elsewhere. If the next letter is in the same key the user could either stroke the pen as in (a) above or push the key (button) again. Or, (iii) the user could move the pen in a direction other than those listed in (a) above, e.g., it could always move horizontally to the left--for the first repeat of the key--if the next letter is also located in the same key the user could move the pen as in (a) above. The input code may be optically-read handwritten symbols, each symbol representing a keystroke, or the input from such handwritten symbols may come from a stylus and/or tablet which conveys to the computer the shape of the symbols; that is, it can recognize the direction, change in direction, and length of the stroke. The grouping of the letters is preferably based upon a feature that the form of the letters have in common. As shown in Table 2, the letters shown in the first column have a feature in common that is shown by the shape of the symbol in the second column, and therefore easy to remember. Table 2 is only for illustrative purposes, and other variations may be used.
TABLE 2a
Column 1 Column 2 Column 3
a, c, g, q ".OR right." ".OR right.", ".OR left."
b, d, h, I, k, t ".vertline." directions: ".uparw." and ".dwnarw."
e, p, r, s "/" directions: "{character pullout}" and
"{character pullout}"
m, n ".andgate." ".andgate.", ".orgate."
u, v, w, x, y ".backslash." directions: "{character pullout}"and
"{character pullout}"
o, z, f, j, l "-" directions: ".fwdarw." and ".rarw."
In each case shown in Tables 2a and 2b, the symbols shown in columns 2 and 1 are simpler, shorter, and faster to write on the tablet then the symbols in column 1, and sets 1, 2, 3, respectively. Thus, the 26 letters of the alphabet can be represented by 6 to 16 symbols. Of course, there are many other possible choices for the symbols such as using the "-" for the letter "t", or the symbol ".andgate." for the letter "h" or the letter "d" may be represented by the symbol ".OR right.", or "{character pullout}" for the letters f, j and l. Also, other symbols may be chosen to represent the letters and fewer or more symbols may be used. The writer may either (1) raise the stylus from the tablet at the end of each letter, so that the end of a word is indicated by using a special symbol or depressing a key, or (2) the writer may keep the stylus in contact with the tablet until the end of the word and by raising the stylus a space is signaled to be made between the words. Also, if the stylus stays in contact with the tablet, in order to discern where one symbol ends and the next one begins, it is necessary to reverse the direction of the stroke for certain symbols that are used successively. Thus, the word "bit" is written by a stroke ".vertline." downward, then it is retraced upward and then retraced downward. On the other hand, if the stylus is raised after each symbol, the word "bit" would be written ".vertline..vertline..vertline.". Also, a mirror image or an upside down position may be used for certain symbols, as in a word such as "fina". Thus, after an upward stroke, the ".andgate." would be made by a downward movement which results in a ".orgate." to represent the same set of letters. The same may be done for the "{character pullout}" symbol which would become "{character pullout}". Thus, the input from such handwritten symbols may come from a stylus and/or tablet which conveys to the computer the shape of the symbol. Symbols may be chosen that conform to general shapes of the associated letters, such as ".OR right." for "abcd"; ".backslash." for "efvwx"; "-" for "ghijkl"; ".andgate." for "mno"; ".OR left." for "pqr"; ".orgate." for "tu"; and, "/" for "yzs". The grouping of these letters is based upon their alphabetical order and/or a feature that the form of the letters have in common. Column 3 shows that, when using different directions (shown in Table 2 by the arrows), and mirror images, at least 16 "symbols" are made available. For the symbol "{character pullout}", other similar symbols are "{character pullout}", "{character pullout}", and "{character pullout}". The placement of more than one letter on the same key reduces the number of keys on the keyboard. This makes it easier to remember the location of the letters. Also, because there are fewer keys, they are all closer to each other. Therefore, the movement required by the hands and fingers to reach the keys is reduced, which makes typing faster and less fatiguing. However, placing more than one letter on the same key may result in word codes that are associated with more than one word. For instance, if the letters B and M are assigned to the same key, the words "berry" and "merry" would have the same word code. The system would display both words, and the user must then "edit" the typed document by selecting the desired word. This editing step, which slows typing, can be minimized by a knowledgeable selection of the letters to be combined on the keyboard. The number of word codes that are associated with more than one word when a combination of two letters are placed on one key and the remaining 24 keys each have one letter is referred to here as frequency #1, or F#1, for that combination of letters. The value of F#1 for each combination of letters provides the basic information that is needed to select which letters should be combined on the keyboard in order to minimize the amount of editing required. To obtain this information, the following procedure was used. Two letters were first assigned to a single key on a keyboard, and the remaining 24 keys were each assigned on of the 24 remaining letters. Each key was then assigned an input element code, so that 24 input element codes were associated with one letter each, and one input element code was associated with 2 letters. These input element codes were then assigned to the letters of each word in a 21,110 word dictionary and thereby word codes were formed which were associated with each word. The word codes with two or more words assigned to it were then sorted in a numerical order with the words assigned that word code listed adjacent to their word code. A count of the number of word codes with two or more words assigned to it was then made, and the value is shown in the table of FIGS. 22(a) and (b) as F#1. This procedure was repeated for each combination of two letters in the alphabet, as represented by FIGS. 22(a), (b). Each letter of the alphabet is listed across the top horizontal row and down the left vertical column. For example, the number of word codes with more than one word assigned to it is found for the combination of E and F on a single key by following the top row across until either the letter E is located, then scanning down that column until the corresponding letter F is found. As indicated, the study found that for the E-F combination, there are 11 word codes, each associated with two words, for a total of 22 words. These 22 words are: (1) ear, far, (2) east, fact, (3) eat, fat, (4) eight, fight, (5) fief, fife, (6) chafe, chaff, (7) hale, half, (8) lief, life, (9) sere, serf, (10) scare, scarf, (11) sure, surf. It was also found that, of the word codes that have more than one word assigned to it, over 99% have two words, and only approximately 1% are associated with three or more words. Certain combinations of letters, such as "EJ" "OV", "BI", "AZ", and "FI" are associated with very few word codes that are associated with more than one word, that is, they have a low F#1 value. The selection of the combination of letters to the keys is preferably made from among those combinations of letters with the lowest F#1 value. The letter combinations with low F#1 values, between 0-32, may be organized in a single chart, according to F#1 value, to assist in the selection and arrangement of letters on keys. It was also found that many combinations of letters with a low F#1 value were alphabetical or approximately in alphabetical order. Thus, an alphabetical arrangement of the letters on the keys is possible with a low F#1 value, so that an alphabetical order may be used without a significant increase in the amount of editing required. Such letter combinations include "AB", "EF", "HI", "IJ", "IJK", "JK", "MO ", "NO", "OP", "PQ", "QR", "SU", "TU", "UV", "UW", "UX", "VW", "WX", and "YZ". It is noted that most of these combinations comprise a vowel and a consonant. This result follows from the fact that vowels and consonants are usually not interchangeable in a given sequence of letters that are arranged to form a word. In addition, as indicated by the high F#1 values, certain combinations should be avoided, such as "NR", "RT", "RP", "LR", "TN", "NL", "DT", "TL", "PT", "TS", "RD", and "RL", which are each combinations of a consonant with a consonant. From the information in FIGS. 22(a)-(b), various keyboard configurations, from 2 to 21 keys were generated. Those having between five and twenty-one keys are shown, for instance, in FIGS. 22(c)-(d). Each section of FIGS. 22(c)-(d) represents a key on a keyboard. Each key has from between one and six letters assigned to it. For instance, the eight-key keyboard has six keys with three letters each and two keys with four letters each. Each letter is assigned the input element code of the key to which it is assigned. The input element code of each letter was then assigned to the letters of each word in the dictionary. For instance, if the key with the letters ABC assigned to it has the code 1, then whenever A, B, or C appears in the dictionary, the code 1 is assigned to that letter. As a result, each word of the 21,110-word dictionary is assigned a word code. The word codes with two or more words assigned to it were then sorted in a numerical order with the words assigned to that word code adjacent to it. A count of the number of word codes with two or more words assigned to it was then made, and shown in FIGS. 22(c)-(d) as frequency #2, or F#2. A count was also made of the number of words associated with each word code associated with more than one word for each keyboard configuration, as represented by frequency #3, or F#3. The number of keys to which letters are assigned in FIGS. 22(c)-(d) range from five to twenty-one keys. The keyboard with twenty keys has four keys with two letters each, one key with three letters, and sixteen keys with one letter each. F#2 is larger than F#1 since the value of F#1 is based on only two letters being combined on a single key and the remaining 24 letters each having one letter assigned to them. F#2, in contrast, is broader than F#1 in that F#2 includes any configuration having more than two letters assigned to the same key. The increase in the number of words assigned the same word code, from F#1 to F#2, is demonstrated by the following example. Assume the following letter and code combinations: G-1, E-2, N-3, R-4, 0-5, 1-6. Then, the word code for "goner" is 15324 and the word code for "inner" is 63324. If the letter "I" is then assigned to the same key as the letter "G" (so that both letters have the code 1), then the word code for "inner" becomes 1:3324. Thus, both codes are still different for these two words. But, if the letter "N" is then also assigned to the same key as letter "O" (so that both letters have the code 3), then the word code for "goner" becomes 13324. Thus, both words now have the same word code, and F#2 is larger than F#1. F#1 give the minimum value of F#2 and is for that reason a good first indicator of the probable value of F#2. FIG. 22(d) shows the values of F#1 and F#2 for various keyboards. For fourteen keys or more F#3 is approximately twice as large as F#2 since any editing will mostly be only two words for a given word code. As the number of keys is reduced, more keys will have two or more letters and the number of word codes with three or more words assigned to it increases. Thus, with the eight-key keyboard, there are on average of about 2.33 words per word code. As shown in FIGS. 22(c)-(d), multiple keys were assigned two or more letters. Sixteen different keyboards were derived, having from 8 to 21 keys. As the number of keys having two or more letters increases, so does the number of word codes associated with two or more words. For instance, if C and D are combined on the same key, and all the other keys have one letter assigned to them, then the words "calf and "dale" would not have the same word code. Assuming, that A has input element code 1; C, D is 2, L is 3, E is 4 and F is 5, "calf" would then have the word code 2135, and "dale" would have the word code 2134. However, if the letters F and E were then both assigned the same input element code of 5, then-both words would have the same word code, namely 2135. The keyboard configurations of FIGS. 22(c)-(d) are the preferred embodiments where it is important to substantially retain an alphabetical ordering of the letters. To have a keyboard with an arrangement that is substantially alphabetically ordered, each letter must be grouped on the same key or an adjacent key with letters that are near it alphabetically. Thus, for instance, the letter "J" is preferably on the same key, or on adjacent key, as the letters "K" and/or "L". By using an alphabetical order, or a partially alphabetical order, it is easier to remember the location of the letters. Other criteria in arranging letters on the keyboard is the number of word codes having more than one word, and the frequency of commonly used words or phrases with the same word code (such as "-tion", "-ing", and "the"). As less emphasis is placed on having an alphabetical order, various other keyboard configurations will readily become apparent. For instance, consider the eleven-key configuration, which has a total F#1 of 412 word codes associated with more than one word. The first key contains the letters "A" and "B", which was determined to have 12 instances of word codes associated with more than one word. Likewise down the table, the second key, "CD" has 70 word codes, "EF" has 11, "GHI" has 42, "JKL" has 87, "MNO" has 109, "PQR" has zero, "SYZ" has 38, "TU" has 8, and "VWX" has 35, for the total of 412 word codes associated with more than one word. The F#1 value for each key is based upon the values derived in FIGS. 22(a)-(b), when there are two or more letters on a key. For instance, for the three-letter key "GHI", the combined values are taken from the two-letter combinations (that is, "GH"=36; "GI"=3; "HI"=3; for a total of 42). Of course, as more than one key is assigned more than one letter, the number of word codes associated with more than one word may become larger than the number indicated in FIG. 22(a). The totals indicated in FIG. 22(a) provide a good indication of the letter combinations that have the fewest number of word codes associated with more than one word. The number of words with the same word code is larger for the configurations with fewer keys since the fewer number of keys result in more keys having more than two letters. Of course, as the dictionary is reduced in size, such as a dictionary only having medical terms and the like, fewer word codes will be associated with more than one word. FIGS. 22(c)-(d) (in the bottom row) further show the approximate average number of lines that are typed before a word needs to be edited when the system is implemented with a 21,110 word dictionary. The amount of editing is directly related to the number of keys on the keyboard and the placement of the letters on the keys. The small keyboard with eight keys, about ten percent of the words, or about 1.1 words per line, require editing. However, for a larger keyboard there is very little editing to be done, and in fact the twenty-one key keyboard only requires approximately one word to be edited for every thousand lines of typing. The editing is further reduced by the use of preferred words. In addition, where word codes are only associated with two or three words (which accounts for the majority of keyboard configurations), the desired word will be positioned in the home row 50% or 331/3% of the time, respectively. In such cases, editing is not required and the desired word is selected by continued typing. The keyboard configurations shown in FIGS. 22(c)-(d) were also implemented with a 230,000-word dictionary. It was determined that, for a ten-key keyboard, a user encounters roughly about one word code per line that is associated with more than one word. The amount of editing, however, drops significantly as the number of keys increase. For an eighteen-key keyboard, only about one word code per page is associated with more than one word. Of course, the amount of editing required is dependent upon the material being typed. A new typist may start typing with a keyboard having fewer keys, and move toward a keyboard with more keys as typing skills progress. This graduated length method of learning to type makes it possible to progress from an eight-key keyboard or less to a twenty-key keyboard in a simplified manner, as desired. The assignment of letters to the keyboards in FIGS. 22(c)-(d) is such that someone learning to type starts with the five-key keyboard. After becoming proficient on that keyboard, the user may then proceed to use a larger keyboard. Each keyboard is substantially similar to the next larger keyboard so as to facilitate the learning process by making it easier to memorize the location of letters on the keys and the motion of the fingers to the keys. FIGS. 22(e)-(x), 26(a)-(y), 27(a)-(z) and 28(a)-(m) show the arrangement of letters for several keyboard configurations, though not necessarily corresponding to the arrangements of FIGS. 22(c)-(d). FIGS. 22(e)-(q) and 26(a)-(r) are two-handed configurations, and FIGS. 22(r)-(x), 26(s)-(y), 27(a)-(z) and 28(a)-(m) are for single-handed operation. These configurations are exemplary only, and other suitable configurations may be used. For the two-handed configurations, the right and left sides may be interchanged, and the individual keys may also be moved around or otherwise exchanged. For the one-handed configurations, the position and location of the keys may also be moved around. In addition, the rows may be interchanged. For the two-handed configurations, the left- and right-hand keys are shown as preferably being placed on a single keyboard. However, the left-hand keys may be arranged on a separate keyboard from the keys accessed by the user's right hand. These configurations generally maintain an alphabetical order, while also combining letters that minimize the amount of required editing. Though other configurations are suitable, the vowels on the one-hand configurations preferably have the following general arrangement with respect to each other: ##EQU1## For the two-handed configurations, all of the vowels are preferably accessed by one hand. In some keyboard arrangements, several letters may be placed in more than one location (i.e., placed on more than one key) in order to make them more accessible and, therefore, make for faster typing. The vowels are preferably positioned convenient to the middle and index fingers in order to make for faster typing since vowels are most frequently used. At the same time, the order of vowels is substantially alphabetical. As an additional feature of the invention, when long words are being entered, the system would recognize before the typist has typed all the letters, that there is only one word that begins with the code that has thus far been entered. At this point, the word would be printed on screen 22 and a beep would sound. The user would then start typing the next word. The user would also be able to modify the word in the manners described above. For instance, referring to Table 3, suppose the user enters the code 1-3-2. At that point, there are several possible words that the user may choose from, specifically "aid", "age", and "bid". More importantly, however, the user may continue typing to further limit the word to numerous words that cannot be determined yet, such as "aged", "ages", "ageless", "bids", "bidding", and so forth. However, if the user then strikes letter key 4, the only option left available is the word ageless. At that point, the word "ageless" may be displayed on screen 22. Accordingly, the user will not have to go to the trouble of having to entirely type the more lengthy words, such as "ageless".
TABLE 3
Code Words
. . .
1 a
1-3-2 age
aid
bid
1-3-2-2 chef
aged
bide
1-3-2-4-2-7-7 ageless
. . .
As shown in Table 3, to determine whether there are any other words beginning with the code 1-3-2, the computer 10 will have to search through codes having at least that numerical order. However, as shown in Table 4, each memory location of memory 12 may be configured so that all available options are stored at the base code, 1-3-2. Thus, once the user types 1-3-2, the limited number of options may all be displayed at that time. That is, the words "age", "aid", "bid" "chef", "aged", "bide", "ageless", and other variations such as "bidding", "chefs" and so forth, are displayed on screen 22. This embodiment is quicker and reduces memory space requirements, but is only practical where there are a limited number of subsequent variations to the input code.
TABLE 4
Code Words
. . .
1 a
1-3-2 age
aid
bid
chef
aged
bide
ageless
1-3-2-2 chef
aged
bide
1-3-2-4-2-7-7 ageless
. . .
As yet another feature of the invention, the user may at any time return to a word, such as by placing the cursor at any position within the word. When the user returns to the word, the numerical code associated with that word will be recalled. The user may then elect to display the preferred words, or all the words associated with that code. The user may also change the code to enter a new word. Another feature of the invention, as mentioned above, is that the user may be provided with the option to switch between the different keyboard configurations, including the standard 26-key QWERTY format. Though not indicated in the flow chart, the user may select to change keyboard configuration at any point during operation of the system. Essentially, the user may select any suited number of keyboard configurations, such as a 4-key, 6-key, or 8-key configuration. The memory 12 stores individual tables for each of the selectable keyboard configurations. One manner in which the proper memory location is accessed is by automatically and internally including a keyboard code as the first digit to the numerical code. For example, in order to identify the code as coming from the 6-keyboard configuration, the code "6" is automatically appended to the beginning of each word as each new word is begun, as shown in Table 5. The system would then be able to switch between keyboard configurations in the middle of a document, while still recognizing the input code as matching the particular keyboard configuration. Accordingly, the next time the system is operated, the system will default to the last-saved configuration when formatting, step 102.
TABLE 5
Code Words
. . .
6-1 a
6-1-3-2 age
aid
bid
6-1-3-2-2 chef
aged
bide
6-1-3-2-4-2-7-7 ageless
. . .
In addition, the user may also choose to define his/her own keyboard arrangement of keys in addition to the standard arrangements that have been predefined. As described above, each numeral key is used as an input numerical code that is associated with the corresponding letters. The user selects the numerical code that is to be assigned to particular letters and keys. This information is then stored in memory, and the memory is further updated to reflect the new codes to be associated with the words in memory. The computer then sorts and stores all the words associated with the same numerical code in a single memory location associated with that particular numerical code. However, the memory 12 shown by Table 5 would result in each word being stored several times, once for each keyboard configuration. In an alternative embodiment, the numerical code for each keyboard configuration is stored for each word, as shown in Table 6. The computer 10 would then search for the numerical code in accordance with the specified keyboard configuration.
TABLE 6
Code
6-Keys 8-Keys Words
2-5-5-5 2-5-5-6 door
2-5-5-5 2-6-5-6 drop
As an additional feature of the invention, the user may at any time elect to display words in memory. At that time, the user may add, delete, or otherwise modify the words stored in memory or verify the correct spelling of a word. The user may also list all words in the database or memory that start with the first letters of a typed word. In other words, a typist could type the first 4, 5 or 6 letters of a word and then select for the system to generate a list of all of the words that start with those letters. The typist can select this option while typing or editing the word. In this manner, the system may be used to determine the correct spelling of a word. Accordingly, the user need not finish typing long words, which may be displayed automatically after the user enters, for instance, the first 4, 5 or 6 letters of a word. The user then selects the desired word by highlighting the word and hitting ENTER. The word is then moved into the text of the document. As a further option, the system may be configured only to display the words corresponding to the number of letters the user depressed. That is, if the user pressed 7 letters, only 7 letter words having the first 4 keys will be displayed. The speed typing method of the present invention is compatible with conventional word processing programs, such as "WORD PERFECT" and "WORD", and can be used for either DOS, WINDOWS or Macintosh environments. Furthermore, the database of words and numerical codes may be searched in any suited manner. By providing multiple characters on a single key, the present invention simplifies learning how to type. Furthermore, less motion is required to type, thereby reducing wear on the user while increasing speed. In addition, the keyboard is not congested, making it easier to use for persons that have not learned to type. Also, there is more room on the keyboard so that the size of the keys may be made larger, thereby assisting persons with arthritis or other physical disabilities. Since the keyboard 50 is significantly reduced in size, yet retains the full spectrum of characters, the invention has particular utility with lap-top computers and hand-held electronic devices, such as electronic diaries. Since there are fewer keys, the location of each key is easier to remember and all of the keys can be reached more easily and quickly and with greater certainty of accuracy. Likewise, since the present invention reduces the number of keys required for typing, the conventional chord systems become more practical. Accordingly, the system may be configured so that the user depresses more than one key simultaneously or sequentially to select a particular code to which letters have been assigned. In a sequential system, a nine-key keyboard could be reduced to three keys, since there are nine combinations of keys that could be sequentially accessed (that is, 1-1, 1-2, 1-3, 2-1, 2-2, 2-3, 3-1, 3-2, and 3-3). Likewise, there are 16 combinations for a four-key keyboard using sequentially-operated keys. For a four-key keyboard using simultaneous selection of keys, there are ten possible combinations (namely, 1, 2, 3, 4, 1-2, 1-3, 1-4, 2-3, 2-4 and 3-4). For purposes of illustration, a particular key may be associated with the letters "v", "w", "x". If the user then presses the key one time, the system may recognize "v" and "w". Upon a second sequential actuation of the same key within a set period of time (or upon actuation of a different key), the system may detect the same code "1" twice, which may be associated with a different set of letters, for instance, with letters "x", "y" and "z". Alternately, it may be that the first actuation of a key may be associated with code "1" for "v" and "w", and the second actuation associated with code "2" for "x", "y", and "z". There is a variety of ways in which a single code or plural codes may be assigned to a single key, such as by sequential actuation of that key. Likewise, a single or plural codes may be assigned to plural keys, such as by a chord-type simultaneous actuation of the plural keys. The invention may be configured in a variety of shapes and sizes and is not limited by the dimensions of the preferred embodiment. Likewise, the terms "key" and "keyboard" as used herein need not be limited to a group of mechanical components that are physically depressed by the operator. The input code may be optically-read handwritten symbols, each symbol representing a key-stroke. The input could also be telekinetic, wherein the user focuses his eyes in a group of letters to activate that key. Still yet, the input code could be voice-initiated whereby a voice identifying system may translate a verbal "keystroke" into the coded input. Thus, the operator may verbally state "5", "5", "8" (or the desired letter), which symbols are detected converted into the 5-5-8 code and displayed as "now" or "mow" as discussed above. Or, the user may state the letter or word to be displayed. In addition, the memory tables of the invention may be integrated with dictionary information and other editing techniques currently existing in a word processing system. The dictionary need only be updated with the proper numerical codes. In yet another embodiment of the invention, function keys may be provided (or the SHIFT keys may be used) to implement various functions. For instance, a function key can be provided to control a numeric keypad, such as the numeric keypad shown on the right hand side of the conventional keyboard of FIGS. 2(a) and (b). The function key would allow the user to toggle operation of the keypad to function either as a number pad, or as a letter pad. If the user designates the keypad to operate as a number pad, the function key could then also be used to display a selection of punctuation marks, such as when the function key and the number seven (from the keypad) are depressed. Likewise, the function key could be used to directionally operate a cursor. A mode indicator light or message may also be provided to indicate whether the keypad is being used as a number pad, or as a letter pad. For purposes of further illustration, function keys can be used on a keypad similar to conventional telephone keypads. The telephone keypads typically have three rows of three keys each, all of which are numerical keys, and a bottom row having one numerical key, an asterisk key, and a pound sign key. The three rows of numerical keys may be assigned the letters of the alphabet, and the bottom row of keys may be associated with functions. In the bottom row of the telephone keypad, the numerical key (which is usually zero) would be used to designate that a capital letter is to be typed. The asterisk key may be a space bar, and the pound key would be a backspace. The sequential actuation of the function keys may be associated with various additional functions. For instance, depressing the asterisk key followed by the pound key might toggle the remaining keyboard between letters, numbers, and symbols (including punctuation). And, the sequential actuation of the number key twice, within a preset period of time (and/or prior to actuation of any other key), may operate as a cursor control. In an alternative embodiment, the telephone keypad may be configured so that the keys 1, 2, 4, 5, 7 and 8 are assigned letters; the pound key and asterisk key are assigned the "-" and "+" characters, respectively (which are used for scrolling words during editing, as discussed above); and the zero key is used to shift to other keyboard configurations. It is further noted that simultaneous actuation of two keys may further be used to implement various functions. Accordingly, there are numerous manners in which function keys may be used that are within the spirit and scope of the invention. As indicated above, the system may be configured in a hand-held computer, or portable input device, that is remotely located with its output either directly wired or transmitted wirelessly to the computer. A 3 bit binary code has 8 permutations, 001, 010, 011, 100, 101, 110, 111, 000. Six of these are assigned to the six keys on a 6 key keyboard configuration to which groups of letters are assigned. Such assignments may be as follows:
Key # Binary Code Assigned
1 ABCD 001
2 EFGH 010
3 IJKL 011
4 MNOPQ 100
5 RSTU 101
6 VWXYZ 110
For the input of additional data (e.g., punctuation, numerical data, control of cursor and other functions) the system is configured to "shift" to another binary code which would make additional code available would occur upon the input of a specific 3 bit binary code (assume "000" for this purpose). For instance, the "shift" could be from a 3 bit binary code to an 8 bit binary code, which would make 256 eight bit binary codes available. For word codes that are associated with more than one word (e.g., ACT, BAT and CAT have the binary codes 001, 001, 101, for each word) a select or identification code is necessary to distinguish the desired word. One method (discussed above) of selecting a desired word (e.g., ACT, BAT or CAT) is for the user to enter a number that appears next to the desired word above the "home row." Thus, unless the user enters the number 1 for "BAT" or the number 2 to select "CAT" the word in the home row, here "ACT", is automatically entered. If the user enters the number 1, the word BAT is moved to the home line and is displayed and can be printed. In order to store in memory or transmit or apply additional compression techniques to the word codes made up of 3 binary codes, it is necessary that every word has a unique code. To accomplish this, an appendage, such as a identification code, is added to those words that do not have a unique word code. The word code including the appendage must be checked against the other word codes listed in the dictionary to confirm that no other word has that code. For instance, if the 3 bit binary code 010 was appended to the word code for "BAT," the word code for the word "BATH" would also result. However, another 3 bit binary code, such as 110 (VWXYZ) might not cause any duplication. Wherever possible, one 3 bit binary code would be used to distinguish words having the same basic word code; however, the use of more than one 3 bit binary code could also be used. Such multiple 3 bit appendages would make possible a unique word code for every word. Another solution to creating a unique word code is to add a 3 bit binary code such as "000" to indicate a shift from the 3 bit binary code to the 8 bit binary code and then an 8 bit binary code is appended to distinguish that word code from other word codes. The 8 bit binary codes selected for this purpose would also indicate that it is the end of a word. Therefore, the space after that word would occur and that a shift back to the 3 bit code would occur next automatically. The end of a word can be indicated by a specific 3 bit binary code designated for this purpose, e.g., "111" (or the binary code of more than 3 bits used as an appendage at the end of a word code, as discussed above). The indication of the end of a word minimizes the transmission error to one word being adversely affected. With a 3 bit binary code for each letter, approximately 12.712 bits are required for a 4 letter word. An 8 bit binary code requires 32 bits for a 4 letter word. The 12.712 bits is arrived at as follows: using a 21,100 word dictionary, a 6 key keyboard has 17,008 words assigned a unique word code and therefore do not require any appendage. The remaining words, 4,092 words, which have not been assigned a unique word code are assigned to a total of 1,588 word codes. One word on each of these word codes would not be assigned an appendage since they would be different from the other word codes which were assigned appendages. The remainder, 2,504 words, would be assigned an appendage. If an average of 6 bits are required for such appendages on the 2,504 words, then the appendages require an average of 0.712 bits per word in a 21,100 word dictionary (6.times.2504.div.21,100). If the average word is a 4 letter word then 12.712 bits are required per word [(4.times.3)+0.712]. An 8 bit binary code would require 32 bits. The 3 bit binary code has 8 binary codes available. The 4 bit binary code has 16 codes available. Of these, 14 codes can be assigned to keys to which letters are assigned, one code (e.g., 111) would be used to designate the space at the end of a word and one code (e.g., 0000) for a change to another binary code for coding numbers, punctuation, function keys, cursor control, etc. If a 4 bit binary code is used for each letter approximately 16 bits are required for a 4 letter word. An 8 bit binary code requires 32 bits for a 4 letter word. The 14 bits is explained as follows: a 14 key keyboard has approximately 590 words assigned to 251 word codes. Therefore, an appendage is only needed on 259 to have a unique word code for each word (590.div.251=259). A 4 bit binary code would add an average of 1/20 of a 4 bit binary code to each word in a dictionary of 21,101 words (4.times.259.div.21,100.apprxeq.1/20). If the average word is a 4 letter word, approximately 16.05 bits are required per word. An 8 bit binary code, in contrast, would require 32 bits. Thus, it is clear that the use of a 3 bit code, with a 6 key keyboard, and a 4 bit code, for keyboards with 7 keys to those with as many as 14 keys, require less code than an 8 bit binary code used to code letters. As would be expected, the 3 and 4 bit binary codes for the word codes result in a significant reduction of required code. The word code made up of the 3 character binary code plus the appendages is transmitted to a receiver where the computer will compare the numerical value of the input code with a table of word codes in memory. The word stored in memory that is associated with the input code is then displayed. The shift of codes can be accomplished by a special code sequence such as 000, 111, 000 to shift out of a 3 bit binary code (or 0000, 1111, 0000 to shift out a 4 bit binary code) and then to move out the 4 bit binary code back to a 3 bit binary code a shift code sequence of "0000" would be used. A shift code sequence of "100000" could be used to shift back to a 4 bit binary code. There are some other economies of input, such as when a punctuation is used (which comes at the end of a sentence, such as a period or question mark), a space between the words and capitalization of the next word would be automatic. Each word in the dictionary would also be assigned a binary code made up of more than 3 binary characters so that each letter has a unique binary code (such as an 8 bit binary code). These two sets of binary codes (one with 3 and one with more than 3 binary characters for each input element) are placed adjacent to each other in the data base. When data is received, the data is decoded so that the 3 bit binary code can be used to locate the 3 bit binary code on file in the memory of the computer which receives the data. Stored adjacent to that code is the binary code which has a unique binary code assigned to each letter. The text can then be displayed and/or printed at the receiver location. When this word is received, the specific word which is desired is found next to the word code which is received in the transmission. Error in transmission is minimized by using the string of 3 ones, 111, which as discussed above, represents the space between the word and can at the same time be used as a re-sequencing key when the receiver sees the 3 ones. The use of the 3 character bit (111) minimizes the transmission error to one word being adversely affected. Data may further be compressed by having the system automatically translate text into a format for using a 3 bit binary code. Three codes would be stored in memory for each word: (1) a 3 bit code (the most compressed code), (2) a binary code having a unique code for each letter (such as an 8 bit binary code), and (3) the word code for the keyboard format being used to input the text. The 3 bit binary code may be further compressed by using well known compression techniques. In another embodiment of the invention, to further reduce the dictionary of words stored in memory, prefixes and suffixes may be stored separately. For instance, instead of saving "necessary", "unnecessary", "published" and "unpublished", only the words "necessary" and "published" need be saved. In addition, a common list of prefixes and suffixed would be separately stored in memory. When the user types "un", the system would recognize that a prefix was entered. When the remaining word is entered, the word would be located in memory and the prefix or suffix would then be appended to the located word. Similarly, plural, past, present and future tense of words may be stored in memory as common to a group of words. The system 100 may further be configured as a translation device, by including a translated word with each word listed in memory 12. The memory 12 may be organized, for instance, as shown in Table 7, which is based upon the 8-key configuration of FIG. 2(a). Here, the user may display the translated word along with, or instead of, the English word.
TABLE 7
Preferred Translated
Code Words Words Words
3-5-7-7-2 house casa
Alternatively, a foreign dictionary may be stored in memory separate from the English words. The user may then instruct the system to use the foreign dictionary in order to type in a selected language. For instance, in order to type the word "casa", which is Spanish for house, the user would simply type 1-1-7-1 (from the keyboard configuration of FIG. 2(a)). The user then has the option of printing the typed document in one or all of the various languages. In addition to storing foreign words in memory, a digitized or pre-recorded voice-signal may also be stored in association with each word in memory. Accordingly, the English word and/or the translated word, may be audibly played at the user's command. The word would be made audible through the use of a speaker or like device (not shown) in accordance with well-known techniques. The system may further be combined with a speech-recognition system, whereby the system displays words on a screen that are spoken. This combined system has particular uses for persons that have impaired hearing or otherwise disabled. The words that are spoken by a third party can be displayed on a portable device that is carried by the disabled person. In combination with the audible reproduction, the disabled person would then be able to respond to the displayed message by typing a message that is then audibly pronounced by the device to the third party. By using a reduced-size keyboard of the present invention, the typing would be significantly simplified, making the device easier to use, faster and more portable. The system could also be integrated into, or used in conjunction with, a conventional telephone. The speech-recognition system may include a microphone and may be implemented by conventional systems that are able to receive a voice signal and convert it into a recognized word for word-processing. As shown in FIG. 25, the speed typing method of the present invention may include an automatic speech recognition system (ASR) 400, including a microphone 410, so that the editing required for the word code typing system (i.e. the requirement to choose the desired word when more than one word is associated with the same word code) could be done completely or partially by the speech recognition component. Though the ASR system 400 is shown separate from system 100, it may be configured integral with computer 10. Likewise, microphone 410 may be configured integral to the ASR system 400, or to one of the keyboards 14, or directly connected to computer 10. When, during typing, the user is alerted by a distinctive beep that editing is required for the word code just entered (because there is more than one word associated with the typed word code) the user would speak the desired word into microphone 410. Alternatively, a user may return to a word to be edited, and place the cursor on the word to be edited, then speak the desired word. The system need only compare the spoken word to the words associated with the typed word code, and not to the entire dictionary of words. In this regard, only a portion of the word need be typed in order to further increase speed of typing, even though the spoken word would have to be compared to more words in the dictionary. In relation to FIGS. 4(a) and (b), ASR comes into effect after steps 144 and 338, 344, respectively. That is, once the user desires to select a word, 144, 338, 344, the word may be selected by speaking the word. The system would then search those words in memory that correspond to the typed word for a word also having the information corresponding to the spoken word. Thus, by reducing the number of words that correspond to the spoken word, the ASR is made significantly faster and more accurate. For some keyboard configurations, especially those with 2 or 3 keys, the user would vocalize every word as the word code is entered because 45% to 85% of those word codes would require editing. The 2 key keyboard would have, for instance, the letters on Key 1--A thru L and on Key 2--M thru Z. The 3 key keyboard would have, for instance, Key 1--A to H, Key 2--I to Q and Key 3--R to Z. The average number of words on the word codes is: 2.8 words per word code on a 5 key keyboard 3.39 words per word code on a 4 key keyboard 4.52 words per word code on a 3 key keyboard 11.25 words per word code on a 2 key keyboard The amount of editing required and the time involved in editing increases as the number of words per word code increases. The number of words which would be needed in the ASR vocabulary if every word which does not have a unique word code is included in that vocabulary the value shown for F#3 shown in FIGS. 22(c) and (d), range from 5918 words for the 5 key keyboard, to 13 words for the 20 key keyboard. With the 5 key keyboard the user may decide to use the ASR system only when there are more than 3 words per word code, which would result in the need to use the ASR system for one word per line. Of course, the user could decide to use the ASR system 100% of the time for editing. The user would be alerted by a distinctive beep wherever editing is required and the user would then vocalize the desired word. The word code, the words assigned to that word code, and the speech patterns for those words are stored in the database, or a plurality of databases that may be connected to, or integrated with, the system. Access to the databases is by entry of the word code and/or by entry of the spoken word through the microphone 410. The word is selected by comparison of the word spoken into the microphone to the voice patterns in the database which are associated with the typed word code in accordance with well-known techniques. The selected word is then transmitted to the appropriate place in the underlying document. If the system is not able to choose a word, a message is displayed which indicates this and the user then reverts to selecting the desired word in a manner previously described for the speed typing method. Also, if the user determines that a new word should be entered, the user would proceed to do this in a manner previously discussed for the speed typing method. In addition, if the new word has a word code which is not unique i.e. there are other words with the same word code the user would also enter this new word into the ASR vocabulary already associated with that word code. The speech recognition component may be used with the speed typing device to do punctuation, capitalization, backspacing and other types of functions. The voice command would be recognized and the desired command would be executed. The process of analyzing the word spoken into the microphone is reduced in complexity by linking the ASR system with the speed typing-word code method of the present invention because the number of words in the ASR system which require analysis at any one time is limited to the number of words associated with the word code entered by the typist, when the typist spoke the word into the microphone. It is not necessary to try to identify the spoken word out of the entire vocabulary of the ASR system, and it is only necessary to distinguish the word from the other words which are assigned the same word code. In addition, the input of the word code gives information as to the length of the word, information as to the beginning and ending of the word (by the user hitting the space bar or punctuation) and since each key stroke has only certain letters associated with it certain information as to the possible letters at each place on the word. The combination of the two systems can reduce the total amount of time needed for editing and with very few keys the speed of typing can be very fast. The speed typing-word code method can be used as an adjunct to the ASR system for the purpose of assisting the ASR system when the word spoken into the microphone could not be identified or to type in words that could not be identified, to type in new words to be entered in the ASR program, and to type text with a vocabulary not included in the ASR system. In another embodiment of the invention, a keyboard may be configured having a set of 2 to 4 or more keys at a top row, and an identical set of keys on a bottom row, which is located immediately beneath the top row. Thus, each key on the top row is identical to each respective key on the bottom row, with each key being associated with the same letter or letters. The user then switch between the rows to indicate that a new word is being started, and a space should be entered. That is, the user types a first word on the top row of keys, the second word on the bottom row of keys, and the third word on the top row of keys. Each time the user switches rows, the system would recognize that a new word is being entered and a space should precede the first typed letter. Clearly then, this type of keyboard may be designed to any suited configuration, and need not be limited in size, shape, or number of keys. In another embodiment of the invention, the user may type without having to place a space between words. This eliminates the need to hit a space bar or key, which on the average accounts for approximately 25% of all typing. For most words and sentences, it is easy to decipher typed text in which the words are not separated by a space. For example, consider the phrase "the time for all". The system is designed to add a space as each complete word is typed. Thus, as the words "the time for" are entered, the system would recognize that each was a word, and would add a space. However, it may often be the case that there the shortest word is not the desired word. For instance, in typing the phrase "now is the time", the shortest first word is "no". The "w" is then tested by adding one letter at a time to determine if there is a word code that fits such a sequence (i.e., the memory is searched for a matching word code). Here, the word "wist" would be found in memory, so that the phrase might be entered as "no wist he time". However, the user need only enter a space after "w" for the entire phrase to correct itself. In addition, if the word "wist" was not located in memory, the "w" would be tested with the prior word "no", so that they system would recognize that the word "now" was to be entered. Thus, the user may have to perform some editing as typing proceeds. The elimination of the "space bar" can be tested in the computer program and if there are no other decoding possibilities some "space bars" can be eliminated and the text stored or transmitted without those "space bars". For example, the words, "IN THE" followed by many words, such as the word "compaction", have no other possibilities. That is, the "space bar" can be eliminated between the words "IN" and "THE" but it could not be eliminated again until the end of the word compaction or the words would read "compact ion" which, of course, has a different meaning. Also, when in the mode of typing text the user may elect to eliminate the space bar between words which the user could elect to be either a specific number of words or at random. This would require more editing. For that group of letters the computer would display all the possibilities and the user would make his selection accordingly. For example, if the words "IN THE COMPACTION MODE" did not have a space until after the word MODE, the following possibilities would be given the user: "IN THE COMP ACT ION MODE" "IN THE COMPACT ION MODE" "IN THE COMP ACTION MODE" "IN THE COMPACTION MODE". The user would choose one of these 4 phrases or the program could be designed only to show the shortest words so long as all the letters are used and the user would then edit by moving the words together. A 6 key keyboard would result in approximately 2,500 words which require editing (i.e., they would have to be moved to the home row). By the use of rules of syntax and statistical information regarding the frequency of the use of certain words with other words the amount of editing required would be reduced. Certain characters, such as an apostrophe, colon, semi-colon, and hyphen, are recognized as being associated with a neighboring letter. For instance, the apostrophe indicates that the previous and following letters are to be grouped together, with certain exceptions (such as when indicating possession of a pluralized word), whereas a colon or semi-colon are to be appended to the prior letter and followed by a space. The space bar is most easily eliminated when implemented in a larger keyboards, such as 15-18 key configurations, since there are few word codes that are associated with | ||||||
