Abstract:
A storage method and control system for creating linguistic expressions such as natural language text by both sequential and simultaneous keypresses. The system controls a programmable digital processor to receive keypresses from the operator and to translate groups of keypresses to linguistic expressions or not to translate, according to (1) the timing of the keypresses, (2) the presence or absence of a delimiter character at the beginning or end of a group of keypresses, (3) the presence or absence of the group of keypresses in a dictionary of stored groups of keypresses, and/or (4) the sequence of keypresses that preceded or followed the group.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application is a continuation-in-part of the U.S. patent application of Eric P. Goldwasser, Ser. No. 648,386 filed Sept. 7, 1984 and entitled &#34;Stroke Typing System&#34;. 
     This application is also a continuation-in-part of the U.S. patent application of Eric P. Goldwasser and Dorothy Goldwasser, Ser. No. 468,493 filed Feb. 22, 1983, and entitled &#34;Method of Creating Text Using A Computer&#34;. 
     This application is also a continuation-in-part of the U.S. patent application of Eric P. Goldwasser and Dorothy Goldwasser Ser. No. 719,060 filed Apr. 2, 1985, and entitled &#34;Quasi-Steno Keyboard for Text Entry Into a Computer.&#34; 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates generally to text processing systems and more particularly to a method of typing in which whole words or phrases are typed via a keystroke consisting of several simultaneous keypresses and/or a sequence of keypresses. 
     2. Description of the Prior Art 
     Stenotyping is a well known method of capturing very rapid speech. By using phonetic abbreviations for syllables and other abbreviations called &#34;arbitraries&#34; for common words, stenotypists can type words by simultaneously pressing keys on a steno machine keyboard. The keypresses are captured on either paper tape, magnetic tape or in a computer memory. 
     Another well known method of quickly entering text into a computer memory is programmed into the BASIC program of the IBM Personal Computer. By pressing and holding a special shift key and then pressing a second key, the word associated with the second key can be entered into the computer memory. More generally, there exist programs called &#34;keyboard enhancers&#34; which permit a user to define &#34;macros&#34;, which are sequence of keypresses to which other longer sequences of keypresses are associated. By typing the shorter sequence, the longer sequence can be entered into the computer memory. 
     Furthermore, the U.S. Pat. No. 4,464,070 discloses a text entry system for a computer which permits the entry of multiplecharacter words by pressing an individual key on a specially designed keyboard. The keyboard includes a separate &#34;stroke saver&#34; key which, while depressed, invokes the word entry mode. When the stroke saver key is not depressed, the keyboard operates as a conventional keyboard for the character by character entry of text. 
     Except for direct stenotype entry into a computer, these known text entry systems operate in two distinct &#34;modes&#34;: (1) a macro mode in which a word, phrase or command is entered into the system upon typing either a single key or two keys together, and (2) a normal typing mode in which an individual character is entered by typing a single key. Unless special function keys are provided for the direct entry of linguistic expressions, the user must always keep track of the instantaneous mode of operation and press or release appropriate keys to switch back and forth from one mode to the other. 
     SUMMARY OF THE INVENTION 
     A principal object of the present invention is to provide an improved method of entering text and/or commands into a computer memory which is both compatible with existing text entry methods and permits the entry of text and/or commands at a much higher rate of speed than is possible with conventional or standard typing. 
     This object, as well other objects which will become apparent from the discussion that follows, are achieved, according to the present invention, by interpreting individual keypresses on a standard keyboard as either (1) sequential keypresses, which are entered into the computer memory without translation, or (2) as part of a group of keypresses called a &#34;keystroke&#34; which is effectively treated as if it were another, usually larger, group of keypresses. This interpretation is effected by a computer program according to one or more of the following factors: (1) the timing of the ones of the group of keypresses; (2) the presence or absence of one or more delimiter characters at the beginning and/or end of the group of keypresses; (3) the presence or absence of the group of keypresses in a dictionary of stored keypresses; and (4) the sequence of keypresses that preceded or followed the group. 
     For example, the program may calculate the elapsed time between an individual keypress and either the preceding keypress or the first keypress of a group of keypresses. If the elapsed time between prescribed keypress and/or key release events is less than a threshold value, and/or the current keypress is not a delimiter keypress, then the current keypress may be stored in a buffer along with previous keypresses which also occurred within the threshold or after a delimiter. When the first of a group of such stored keypresses is released or the delimiter keypress or release is reached, the keystroke, consisting of the group of stored keypresses that occurred within the threshold or before the delimiter, is translated into another group of keypresses which is entered into the computer memory instead of the individual keypresses which comprise the keystroke. 
     Although the method according to the present invention is particularly adapted to the entry of text in a word processing system, it will be understood that it is equally adaptable to the entry of individual commands such as program instructions, commands for operating applications programs and the like. In order to avoid the repetitious use of the expression &#34;text and/or commands&#34;, the word &#34;text&#34; will hereinafter be used to denote both conventional text, such as English language text, and computer commands. In all cases, the &#34;text&#34; consists of individual &#34;words&#34; as well as punctuation marks and spaces which are formed of symbolic characters; i.e., the characters which are designated on the individual keys of a standard keyboard. For example, the symbolic characters may be the so-called &#34;alphanumeric&#34; characters which include upper and lower case letters, numbers as well as punctuation marks and the &#34;space&#34; character. 
     In accordance with the present invention, the individual words, punctuation marks, and spaces form prescribed &#34;linguistic expressions&#34; which may be commonly used words (one word per linguistic expression) or phrases (two or more words per linguistic expression). The linguistic expressions may include a space character at the end of the word or phrase. 
     The improved method according to the present invention may be used with a standard digital computer system having a central processing unit, a memory, a character imaging device such as a CRT display and a standard character keyboard capable of sensing keypresses by the system operator that designate individual characters, such as alphanumeric characters, each of which is identified in the computer system by an associated character code. The digital computer system is operated with its own, conventional &#34;operating system&#34; software as well as any &#34;word processing&#34; software or other applications program which requires the entry of text. The present invention serves to enter text into a &#34;text buffer&#34; section of its random access memory. From the text buffer, the text is passed to a display refresh buffer which serves to maintain the image of the text on the associated display screen. 
     More particularly, the method according to the present invention comprises the steps of: 
     (a) storing in the memory of the computer a vocabulary of linguistic expressions each of which is comprised of at least two characters which are respectively identified by &#34;first&#34; character codes; 
     (b) storing in the computer memory a vocabulary of abbreviations called &#34;keystrokes&#34;, each keystroke being associated with at least one linguistic expression and comprising at least two characters which are respectively identified by &#34;second&#34; character codes; 
     (c) accepting keypresses from the keyboard and, in response to each keypress, storing a &#34;third&#34; character code in the computer memory identifying the character designated by that keypress; and 
     (d) determining with respect to successive keypresses: 
     (1) whether such successive keypresses are associated with a keystroke, whereby their respective third character codes designate, at least in part, a particular keystroke; or 
     (2) whether at least one of the successive keypresses is not associated with a keystroke, whereby its respective third character code designates an associated individual character. 
     If the keypress under consideration is associated with a keystroke, then this keystroke, and thereby its associated linguistic expression, is identified by retrieving the second character codes of the keystroke, and the characters comprising the linguistic expression are imaged on the display screen using the first character codes which identify its characters. The imaged characters are concatenated with the text characters previously imaged on the display screen. 
     On the other hand, if the keypress under consideration is not associated with a keystroke, typically because it is typed alone, that is, without being a part of a keystroke, then the character associated with that keypress is imaged on the display screen, using the third character code which identifies this character. As in conventional text processing, the imaged character is concatenated with the text characters previously imaged on the display screen. In this way, the user is permitted to type in the normal mode or to perform &#34;stroke typing&#34; according to the invention, without having to press a control key or otherwise indicate to the software program that a particular keypress is simply the input of a single character or is part of a keystroke. 
     As mentioned above, the symbolic characters designated by the keypresses may be alphanumeric characters, which include letters, numbers, punctuation marks and a space. Preferably, the successive keypresses that comprise a keystroke designate a letter in the respective linguistic expression plus at least one other alphanumeric character, such as a number or a space. Thus, for example, the linguistic expression &#34;the&#34; plus a space may be entered into the computer by typing &#34;t&#34; and &#34;slash&#34;, or by typing &#34;t&#34; and &#34;space&#34;, substantially simultaneously. 
     The present invention thus facilitates the rapid entry of text into a computer system without interfering, in any way, with the normal typing capability and features of the machine. The rapid entry of text is made possible by the typing of so-called &#34;keystrokes&#34;, which are respectively associated with so-called &#34;linguistic expressions&#34; that are entered into the computer and concatenated with the current line of text. The present invention is therefore denominated a &#34;stroke typing system&#34;. 
     The method of interpreting whether or not successive keypresses are associated with a keystroke (or whether they represent successive characters in a standard typing mode) is preferably implemented by one or more of the following &#34;algorithms&#34;: 
     (1) The determination as to whether or not successive keypresses are associated with a keystroke may be made in accordance with the timing of the keypresses. In this case, the algorithm keeps track of the instants of time that each key is depressed (T P ) and/or released (T R ). In any given sequence of keypresses, it is possible to determine one or more of the following: 
     
         (T.sub.P -T.sub.PO)&lt;T.sub.1, 
    
     
         (T.sub.R -T.sub.RO)&lt;T.sub.2, 
    
     
         (T.sub.R -T.sub.P)&gt;T.sub.3. 
    
     In the first of these formulae, the determination is made whether the respective instants of time that the successive keyboard keys are depressed fall within a respective first time window (T 1 ). In this case, T P  is the instant of time that the current keyboard key is depressed, and T PO  is the instant of time that either the previous keyboard key or the first keyboard key (that has not yet been released) was depressed. 
     Similarly, the second formula requires that the respective instants of time that the keys, in a group of key depressions, are released fall within a prescribed second time window (T 2 ). This test is advantageous because, when two or more keys are &#34;stroked&#34;, they are normally released substantially simultaneously. 
     Finally, as an alternative or in addition to the tests with respect to the time windows T 1  and T 2 , each key may be tested to determine whether the period during which it was depressed (T R  -T P ) exceeds a prescribed third time window (T 3 ). This test is advantageous because, when several keys are &#34;stroked&#34; together they are normally depressed for a longer period of time than when individual keys are depressed. 
     It will be appreciated, from the description above, that the determination as to whether a keypress is associated with a keystroke depends on the individual time windows T 1 , T 2  and T 3 . According to a particular feature of the present invention, these time windows may be of different length for different keystroke characters (since certain characters are normally depressed for a longer period of time than others, during standard typing) and for different users of the text entry system (in accordance with the respective typing skill of each operator). According to a still further preferred feature of the present invention, the time window(s) are automatically adapted to the user of the text entry system in dependence upon the skill of the user and in response to prompts by the user. 
     Still another method of determining whether or not successive keypresses are associated with a keystroke, which depends upon the timing of each keypress (both the instant of time of depression (T P ) and time of release (T R )) involves determining whether all the instants of time of depression for a sequence of keypresses precede all the instants of time of release. In this case, it is assumed that, with a keystroke, all the keys associated with that keystroke will be depressed before any of such keys are released. 
     (2) A second method according to the invention for determining whether or not successive keypresses are associated with a keystroke involves the use of a known &#34;delimiter character&#34; which may, for example, be a space or a slash character. If a key which designates such a delimiter character is depressed in succession with other alphanumeric keys, and if the sequence of characters, designated by the keypresses, are capable of being translated into a linguistic expression, then the sequence of keypresses is determined to be a keystroke. 
     For example, if the delimiter character is a space, and the computer system user types keys designating &#34;n&#34;, &#34;o&#34;, and &#34;v&#34; plus a &#34;space&#34;, and if the sequence &#34;nov-space&#34; has been previously designated as a translatable keystroke, then this sequence of keypresses is determined to be a keystroke. As an example, this keystroke could be translated into the linguistic expression &#34;November&#34;. 
     (3) A third method according to the invention for determining whether a keypress is associated with a keystroke may be implemented by attempting to translate all the characters in the computer keypress buffer into a linguistic expression, upon release of each key, whenever two or more characters are present in the keypress buffer. Thus, when only one key has been depressed and then released, it is assumed that the standard typing mode has been invoked, and the designated character is simply concatenated with the text characters previously imaged on the character display screen. However, when two or more keys are depressed before one of these keys is released, an attempt is made, upon release of each key, to translate the contents of the keypress buffer into a linguistic expression. If the contents do not appear in the dictionary of keystrokes, then it is assumed that the standard typing mode has been invoked. If the sequence of keypresses does appear in the dictionary, they are considered to be a keystroke and the associated linguistic expression is concatenated with the text characters previously imaged on the character display screen. 
     (4) A fourth method according to the invention for determining whether a keypress is associated with a keystroke involves checking the sequence of keypresses that preceded this keypress. For example, if the operator types the characters &#34;b&#34;, &#34;e&#34;, and &#34;a&#34; sequentially and then strokes the characters &#34;u&#34; and &#34;space&#34; simultaneously, the stroke &#34;U-space&#34; may be translated to the linguistic expression &#34;utiful-space&#34; so that when this linguistic expression is concatenated to the text, the word &#34;beautiful&#34; and a following space will have been added to the text by a combination of individual sequential keypresses followed by a keystroke. Another example involves the punctuation character &#34;comma&#34;. If the operator has just stroked a word and then strokes &#34;comma-space&#34;, the characters &#34;backspace&#34;, &#34;comma&#34;, &#34;space&#34; will be added to the text to put the comma immediately after the last character of the text word rather than after the space that follows the last text word. However, if individual keypresses preceded the &#34;comma-space&#34; stroke, then the &#34;comma&#34; and &#34;space&#34;  keypresses will be interpreted as two individual keypresses and their associated characters will be added to the text in the order in which the keys were pressed. 
     While these four methods or &#34;algorithms&#34; for determining whether a keypress is associated with a keystroke have been described herein as preferred embodiments of the present invention, it will be appreciated that other, equivalent algorithms may also be used. All such algorithms which are capable of automatically making the determination as to the presence or absence of a &#34;keystroke&#34;, invoking the image of multiple characters on the character imaging device, are considered to be within the scope of the present invention. 
     In another preferred and advantageous feature of the present invention, linguistic expressions may be imaged as a result of either typing a single keystroke or by initially typing a portion of the linguistic expression in a normal typing mode followed by either the same or a different keystroke. This feature is helpful to the user who is unable to recall the keystroke for the linguistic expression. After typing an initial portion of the linguistic expression, the group of characters forming the keystroke may be highlighted on the display screen to call attention to the fact that the word or phrase is a linguistic expression. Thereafter, the user may type, for example, one further letter in the linguistic expression plus at least one other alphanumeric character such as a space, to complete the entry of the linguistic expression. 
     In still another preferred and advantageous feature of the present invention, the linguistic expressions include suffixes of inflected forms of root words and the system operates to adjust the spelling of a previously imaged root word and the suffix, when the suffix is a linguistic expression, to form a correctly spelled inflected form of the previously imaged root word. For example, the linguistic expression, and suffix, may be the plural form of a noun. By typing the keystroke for the plural form (which may, e.g., be &#34;s-slash&#34;) the system changes the root word to its plural (e.g., &#34;country&#34; to &#34;countries&#34; or &#34;mouse&#34; to &#34;mice&#34;). This feature may be invoked whether or not the previously imaged root word was entered by normal typing (character by character) or was itself a linguistic expression that was entered by means of a keystroke. 
     In still another preferred and advantageous feature of the present invention, the linguistic expressions include a word or phrase plus a space, thereby eliminating the need for typing the space bar following the linguistic expression. Thus, for example, the word &#34;the&#34; plus a space may be entered by depressing the keys designating &#34;t&#34; and &#34;space&#34; substantially simultaneously (whereas in normal typing this expression would require the successive depression of keys representing &#34;t&#34;, &#34;h&#34;, &#34;e&#34; and &#34;space&#34;). 
     In still another preferred and advantageous feature of the present invention, new linguistic expressions may be added to the system automatically in dependence upon their frequency of use. In particular, the system preferably keeps track of the frequency of usage of words or phrases which are entered by normal typing (i.e., character by character). The most frequently used words or phrases may be adopted as new linguistic expressions either automatically or in response to a prompt by the user. In the latter case, the user may be queried by the system by means of a screen image or by tones or spoken words produced by the system loudspeaker. 
     When a new linguistic expression is adopted, both it and an associated keystroke are stored in the system memory. The keystroke may be chosen by the user to be easily typed and easily remembered. 
     In still another preferred and advantageous feature of the present invention, a representation of the character keyboard is imaged on the display device, with the keyboard characters imaged in the same relative positions as they appear on the keyboard. In addition, one or more linguistic expressions are displayed above or below each key, with the linguistic expressions that are imaged adjacent a key being associated, in some way, with that key. 
     For example, beneath the key with the letter &#34;t&#34; on the screen keyboard, may be imaged the linguistic expression &#34;the&#34; (it being understood that the entire linguistic expression is &#34;the-space&#34;). This display is thus a memory aid for the user who will recall that pressing the character &#34;t&#34; plus the spacebar substantially simultaneously will call forth the linguistic expression &#34;the-space&#34;. 
     The term &#34;screen keyboard&#34; will be used hereinafter to denote the keyboard which is imaged on the display screen (in contrast with the conventional, physical keyboard which is used for typing). The term &#34;screen keyboard&#34; will sometimes be abbreviated hereinafter as &#34;skeyboard&#34;. 
     As indicated above, the linguistic expressions imaged adjacent to associated skeyboard characters may have a character in common with the skeyboard character with which they are associated. This common character may be the initial character of each linguistic expression or may be a character subsequent to the initial character. In the latter case, all of the displayed linguistic expressions may commence with the same initial character. The system user may invoke this display by typing a desired initial character (for example &#34;t&#34;) in the normal manner (standard typing). Thereafter, up to 36 linguistic expressions (one for each alpha character and one for each number from 0-9), all commencing with &#34;t&#34; may be displayed on the skeyboard. If desired, more than one linguistic expression may be displayed in association with each key. 
     Preferably, the characters of each displayed linguistic expression which are used in its associated keystroke are displayed in a different manner than the remaining characters of that linguistic expression. For example, the characters used in the keystrokes may be displayed with greater brightness than the remaining characters. Furthermore, if a space is used in the keystroke associated with the displayed linguistic expression, the differently displayed characters may include a symbol representing a space. 
     In addition, or as an alternative, the characters of each displayed linguistic expression which are used in its associated keystroke are displayed in the text in a different manner than the remaining characters of that linguistic expression. Thus, no matter whether the linguistic expressions are entered by the user by normal typing or by means of keystrokes, the user may readily see which ones of the words and phrases in the text correspond to predetermined linguistic expressions and may also see the keystrokes that may be typed to call up these linguistic expressions by &#34;stroke typing&#34;. 
     In still another preferred and advantageous feature of the present invention, a keyboard is used which includes a key capable of switching a mode between &#34;on&#34; and &#34;off&#34; states. (Alternatively, a keystroke may be used for this purpose.) For example, in the keyboard associated with the IBM PC, the &#34;Alt&#34; key arranged immediately to the left of the spacebar may be used for this purpose. With such a keyboard, the imaging of the screen keyboard may be implemented only when the mode is in the &#34;on&#34; state so that the system is responsive to the state of the mode for imaging or not imaging, respectively, the skeyboard. With this arrangement, the user may bring up the skeyboard at will for assistance in training and may remove the skeyboard from the screen after having been trained or when invoking standard typing. 
     A principal advantage of the skeyboard as thus employed is that the user is permitted to begin stroke typing according to the invention immediately, without completing any sort of training program. That is, the skeyboard at all times displays the options available to users to stroke type words. As the user gains further familiarity with the system, its advantages will be more readily used and will permit more efficient stroke typing. However, the advantages of the invention begin accruing to the user immediately. 
     Typical prior art systems require the user to indicate by way of a mode switch or the like whether a particular keypress is to be interpreted as the input of a single character code or is intended to retrieve a word from a dictionary of stored words. This requires that the user knows which words are stored, or consult a dictionary of stored words. By comparison, the system of the present invention signals the user, even after having begun typing the word in the ordinary fashion, that he can complete the word by stroke typing it according to the invention. In this way, the user need never concern himself with the mode of typing; instead, when a particular word can be conveniently stroke-typed, the system will simply so indicate to the user, as described immediately below. This greatly eases the education of the user to the advantages provided by the system. As noted, this is a significant improvement over typical prior art systems, which require extensive training programs and/or memorization of lists of stored words before they can be effectively used. 
     In still another preferred and advantageous feature of the present invention, an audible sound is produced after at least one character of a linguistic expression has been entered into the system by the user by means of standard typing. Such sound is intended to alert the user that he/she is typing a linguistic expression which can be entered into the system by means of a keystroke. The audible sound may be, for example, at least one beep tone. The beep tones may indicate, by number and/or pitch, the position of the character or characters of the linguistic expression which are contained in the associated keystroke after the entire linguistic expression has been entered. For example, a single beep tone may indicate the letter &#34;t&#34; in the linguistic expression &#34;the-space&#34;. 
     Alternatively, the audible sound may be a synthesized voice pronouncing the character or characters of the linguistic expression which are contained in the associated keystroke after the linguistic expression has been entered. 
     In still another preferred and advantageous feature of the present invention, the system operates to allow a user to add a word or phrase to the vocabulary of linguistic expressions by first entering this word or phrase by standard typing. Following entry of the word or phrase, typed character by character, the user enters a prompt, by depressing one or more keys on the keyboard, which instructs the system to add the word or phrase to the linguistic expressions stored in memory. 
     If only one word is to be entered as a linguistic expression, the prompt may be the keystroke consisting of a space and a slash. If two or more words are to form the linguistic expression, the prompt may be a keystroke consisting of at least one alphanumeric character plus a number. The alphanumeric character(s) designate(s) the key entry as being a prompt and the number designates the number of words which are to be added to the vocabulary of linguistic expressions as a single linguistic expression. 
     For example, if the user has typed, by standard typing, the sentence: 
     &#34;Let&#39;s go for a ride in the country.&#34; 
     After typing this sentence, the user may wish to designate the phrase &#34;in the country&#34; as a linguistic expression. If so, he/she may stroke &#34;/3&#34;, whereupon the phrase &#34;in the country&#34; is added to the vocabulary of linguistic expressions. If, by mistake, the user types &#34;/2&#34; or &#34;/4&#34;, thereby designating too few or too many words in the linguistic expression, this error may be corrected, according to a further feature of the invention, by stroking the keys representing a &#34;+&#34; and a space to add one word to the linguistic expression, or stroking the keys representing a &#34;-&#34; and a space to subtract a word from the linguistic expression. 
     After adding the word or phrase to the vocabulary of linguistic expressions, either the system or the user must define the &#34;keystroke&#34; which is to be used to call up this linguistic expression. This system may do this automatically or this keystroke may be entered into the system by typing, character by character, the individual characters which form the keystroke. For example, if the linguistic expression includes only one word, the new keystroke may comprise the first letter of this word plus a number. If the linguistic expression includes two or more words, the new keystroke may comprise the first letter of the first word, plus a space, plus a number. Alternatively, the new keystroke may comprise the first letters of each one of the words of the linguistic expression. 
     In still another preferred and advantageous feature of the present invention, the linguistic expressions may be quickly searched and found by associating with each keystroke an address code which is the address of the linguistic expression in memory. This technique permits rapid linking of keystrokes and linguistic expressions, thus minimizing the delay between entry of keystrokes and imaging of their respective linguistic expressions. 
     In still another preferred and advantageous feature of the present invention, a word spelling help method is provided to assist users of the computer system in entering correctly spelled words. According to this method, a dictionary of correctly spelled words is stored in the computer memory, with each word being defined by a plurality of characters identified by respective &#34;first&#34; character codes. Thereafter, keypresses are accepted from the keyboard and, in response to each keypress, a &#34;second&#34; character code is stored in the memory identifying the character designated by that keypress. The computer displays the successive characters which are entered via the keyboard and identified by the respective &#34;second&#34; character codes and also displays, from its dictionary, those words which commence with the characters just typed. 
     Thus, for example, if the user wishes to enter the word &#34;supercalafragalisticexpealodotious&#34; and does not know how to spell it, he/she simply commences to type the word, character by character. After the letters &#34;superca&#34; have been entered, the selection of words from the dictionary beginning with these letters will have sufficiently narrowed so that the correctly spelled word can be easily found on the screen. 
     Preferably, the keyboard includes a key capable of switching a mode between &#34;on&#34; and &#34;off&#34; states, and the spelling help mode is executed only when the mode is in the &#34;on&#34; state. Thus, the user of the system can quickly switch in and out of the spelling help method, so that it is visable and used only when necessary. 
     The foregoing and other objects, features and advantages of the present invention will become apparent from the following, more particular description of the preferred embodiments of the invention, as illustrated in the accompanyng drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of an interactive text processing system embodying the present invention. 
     FIG. 2 is a functional diagram of the microprocessor shown in FIG. 1. 
     FIG. 3 is a functional diagram illustrating the data flow path between portions of the memory and the microprocessor and the display refresh buffer. 
     FIG. 4 is a diagrammatic view of the display shown in FIG. 1. 
     FIG. 5 is an elevational view of a display screen according to a preferred embodiment of the present invention. 
     FIG. 6 is an enlarged view of a section of the display screen shown in FIG. 5. 
     FIG. 7, which comprises FIGS. 7A, 7B, 7C, 7D, 7E, 7F, 7G, 7H and 7I, are an operational flow diagram for controlling the text processing system to perform the functions of the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The invention will now be described as embodied in an interactive text processing system of the type shown in FIG. 1. This embodiment utilizes the following computer hardware and software: 
     (1) IBM Personal Computer with at least 128K of memory, a monochrome display and at least one diskette drive; and 
     (2) IBM Disk Operating System (DOS) software. 
     The IBM hardware and software is available commercially from IBM Corp., Yamato Road, Boca Raton, Florida. This embodiment utilizes approximately 96K of memory (in addition to DOS) and is designed to operate with any &#34;well-behaved&#34; word processing program. Depending upon the size of the word processing program, additional memory may be necessary. 
     As shown in FIG. 1, the text processing system comprises a normal typewriter style keyboard 10, a microprocessor 11, a display refresh buffer 12, a display device 14, a printer 15, and an auxiliary direct access storage device 16 such as a disk or diskette drive. A clock 17 for keeping the various components of the system in synchronism is also shown in FIG. 1 and is effectively coupled to each of the units. 
     The keyboard 10 is connected to the microprocessor 11 by means of a bus 20. The microprocessor 11, as shown in FIG. 2, comprises an input port 21, an output port 22, a random access memory 23, and a process execution unit 24. 
     Functionally, memory unit 23 stores both instructions and data in specified sections which will be described in more detail later in the specification. Data is entered into memory 23 from keyboard 10 as bytes of binary information through input port 21. As shown in FIG. 3, the section of RAM 23 which receives the data from keyboard 10 is designated the keypress buffer 26. Data to be displayed is transferred by a series of instructions from the keypress buffer 26 to a keyboard buffer 28 and then to a text buffer section 27. From there the data is supplied to the display refresh buffer 12 through output port 22 of the microprocessor 11. This is achieved in a conventional way by a series of move instructions. 
     The microprocessor 11 may be an INTEL Model 8088, or any of the recognized functionally equivalent, currently available microprocessors. 
     The display refresh buffer 12 is shown as a separate buffer connected between the output port 22 and the display device 14. The buffer 12, in practice, is normally a part of the display device 14 and functions to control the generation of characters on the screen of the display device 14 by exercising on-off control of the beam as it traces a series of horizontal and vertical lines across the screen. 
     FIG. 4 is a schematic representation of the screen 40 of the display device 14. As shown in FIG. 4, the screen 40 has, for example, the capability of displaying 25 lines of characters where each line consists of 80 character column positions. In practice, one character position consists of a matrix of dot positions or picture elements sometimes referred to as &#34;pixels&#34; or &#34;pels&#34;. A typical character matrix for a display of the type represented by device 14 would be a matrix of nine wide by fourteen high pels, which has been designated by reference character 42 in FIG. 4. The interaction of the refresh buffer and the display 14 is to convert the characters stored at a location in the buffer 12 to the corresponding character as formed in a 9×14 dot matrix at the equivalent location on the display screen 40. Display 14 generally is provided with its own set of electronics to achieve that conversion. The microprocessor 11 need only supply the address and load the buffer 12 with the appropriate characters. 
     It will be understood that all of the above described functions and interactions involving the microprocessor 11 are achieved through suitable programs and data which are also stored in the memory 23 shown as memory blocks 30, 31, 32 and 33 of FIG. 2 and which are called into action in response to data from the keyboard 10 or interrupt signals generated by the various components of the system shown in FIG. 1. 
     The preferred embodiment of the present invention comprises a set of instructions, stored in memory block 30, for controlling the text processing system of FIG. 1 for accepting keypresses and key releases from the keyboard 10 and either translating groups of keypresses into linguistic expressions which have been previously stored in the memory blocks 31 and 33 and then displaying said linguistic expressions on the display 12, or displaying the individual characters associated with the keypresses on the display screen according to whether the keypresses satisfy one or more decision algorithms which will be described below. The entries in the &#34;dictionary&#34; in memory block 31 include both the linguistic expressions and an appended address code which points to an associated abbreviation in the memory block 32 of abbreviations or keystrokes. The abbreviations in memory block 32 also include an appended address code which points back to the associated linguistic expression in memory block 31. Memory block 31 contains linguistic expressions which can be stroked immediately without typing any individual characters first. Memory block 33 contains linguistic expressions which can be typed with a combination of individual sequential keypresses followed by a keystroke. The linguistic expressions in block 33 are organized so that they may be rapidly displayed on the skeyboard. Both memory blocks 31, 32 and 33 include indexes which are used to quickly fine the approximate location of a given abbreviation or linguistic expression. 
     Preferably the program stored in memory block 30 provides a self-teaching display screen to assist the user in learning &#34;stroke typing&#34;. This display screen includes a screen keyboard or &#34;skeyboard&#34; with one or more linguistic expressions (e.g., words) associated with each key. If so, these linguistic expressions are selected by means of the dictionary, and an associated index, stored in memory block 33. 
     Whenever the operator presses or releases a key on the keyboard 10 an interrupt signal is sent over the bus 20 to the input port 21 of the microprocessor 11. This interrupt signal causes the microprocessor&#39;s process execution unit 24 to jump out of the program being executed and to execute instructions stored in the memory block 30. Some of these instructions fetch a code from the keyboard 10 which indicates whether a key was pressed or released and which key it was. Then other of these instructions determine, based on the yet-to-be-described algorithms, whether to store in the keyboard buffer 28 the character code associated with this key, or to translate a group of keypresses including this keypress to a linguistic expression stored in memory block 31 or 33, and instead to store the character code associated with this linguistic expression in the keyboard buffer 28. 
     Once the character code or codes are stored in the keyboard buffer, the microprocessor 11 causes the associated characters to be displayed on the display device 14 in the conventional way in the course of executing an application program stored in the memory 23. 
     FIG. 5 illustrates a preferred embodiment of an image displayed on the screen 40 of the display device 14 in accordance with the present invention. FIG. 6 is an enlarged view of a small section of this display. 
     In this embodiment, the text is entered and scrolled upward in an area indicated by the dashed outline 150. It will be understood that the dashed lines representing this outline 150 are not displayed on the screen. Within the area 150, are displayed one or more lines of text 152 as this text is entered by the system user. 
     Above the area 150 is displayed the enlarged image of a standard &#34;QWERTY&#34; keyboard. Preferably, the &#34;keys&#34; of this keyboard are indicated by lighted boxes with the alphanumeric character associated with each key imaged in &#34;reverse video&#34; within the box. FIG. 6 illustrates three such imaged &#34;keys&#34;  comprising illuminated boxes 154 with a darkened character 156 within each box. 
     The boxes 154 are sufficiently large to permit a word (linguistic expression) 158 to be imaged immediately below the character 156. The characters of the word 158 are preferably the same size as the characters imaged in the lines of text 152, whereas the characters 156 representing keyboard characters are preferably substantially enlarged. The characters forming the word 158 are also imaged in reversed video unless they exceed the area of the box 154. 
     Immediately above each box 154 is imaged a second word (linguistic expression) 160 in normal video. Like the word 158, this second word 160 is also associated with the character 156 within the box. 
     Finally, within or above the boxes for some of the numbered keys--such as &#34;1&#34;, &#34;2&#34; and &#34;3&#34;--are imaged still further words (linguistic expressions) 162, 164 and 166, etc. Like the words 160 above the letter keys, the words 162-166 above the boxes are in normal video, whereas the words 168-172 within the boxes are in reverse video. 
     In operation of the stroke typing system according to the present invention, the user or operator of the computer can either enter text into the computer by standard typing, wherein each word is entered character by character, or by &#34;stroke typing&#34; wherein linguistic expressions are entered by means of &#34;keystrokes&#34;. During normal typing, the character associated with each keypress is imaged on the display screen in the lower area 150 of the screen, concatenated on the line of text 152 with the text characters previously imaged on the screen. 
     At least during a training phase, the user enters keystrokes with the aid of the prompts provided by the displayed screen keyboard (&#34;skeyboard&#34;) in the upper area of the screen. Initially, the &#34;default&#34; or &#34;null&#34; linguistic expression associated with each letter 156 is displayed below the respective letter as a word 158. This word, e.g., &#34;quiet&#34; associated with &#34;Q&#34;, may be entered by typing the letter &#34;q&#34; and the spacebar substantially simultaneously. 
     The system provides both &#34;standard&#34; words 158 for selection by the user plus what may be termed &#34;personal&#34; words 160. Whereas the standard words--namely, those most commonly used by the public in creating text--are originally built into the system, the personal words are selected by the user, either manually or automatically with the aid of the computer. The personal words may be relatively uncommon words which are frequently typed by the particular operator. 
     For example, beneath the &#34;W&#34; in FIG. 6 is the standard word &#34;went&#34;; whereas above the &#34;W&#34; is the uncommon, personal word &#34;Wilbur&#34;. This personal word is frequently entered by the user in creating text; it may, for example, be the user&#39;s own name. 
     If the word to be typed by the user is neither the default (null) standard word (e.g., &#34;went&#34;) nor the default (null) personal word (e.g., &#34;Wilbur&#34;), the user may type the first letter of the word he/she intends to enter using the normal typing mode. Thereafter, all of the words 158, 160, 162, 164 and 166 are changed to words beginning with the letter that was typed. 
     For example, if the user types &#34;W&#34; then the standard words 158 appearing below each letter will be common words beginning with &#34;W&#34;. Preferably these displayed words include the skeyboard letter with which they are associated as the second or subsequent letter of the word. 
     Thus, after typing &#34;w&#34; the word &#34;enter&#34; beneath the skeyboard letter &#34;E&#34; may change to &#34;well&#34;, etc. These words are thus also linguistic expressions which may be &#34;stroked&#34; into the computer system although the initial letter or letters of this linguistic expression have already been typed. In this case, the remainder of the word &#34;well&#34;, after the initial &#34;W&#34;, may be entered into the system by typing the keystroke &#34;e-space&#34;. 
     Not only is it possible to add personal words 160 to the system in dependence upon statistical frequency of usage, but the system user can add his/her own personal words at any time by first typing the word in the regular manner and then stroking a slash with the spacebar. By doing so, the user instructs the system to assign to the word the stroke consisting of the first letter of the word and the next available number. This word is then displayed next to this number (&#34;1&#34;, &#34;2&#34;, &#34;3&#34;, etc.) on the skeyboard whenever the first letter of this word is subsequently typed. Three such words, 162, 164 and 166 are shown as being displayed on the screen of FIG. 5. 
     It will be appreciated that a display of the type illustrated in FIG. 5 with its associated program can be of assistance to the user in spelling words. As the user enters a new word, character by character, the computer displays a selection of correctly spelled words commencing with the characters that the user has entered. As each additional character is typed, the field of possible words is narrowed so that the user is presented a smaller and smaller selection of correctly spelled words from which to choose. 
     In addition, the stroke typing system according to the present invention has many teaching aids that the user may use in both an active and passive way. The skeyboard teaches the strokes for many words as the user types in the normal, sequential, character-by-character manner. When the user so types a word fully that could have been stroked, he/she is reminded in several ways that there is a stroke associated with that word and he/she is presented with visual and/or aural stimuli to teach him/her the stroke. 
     FIG. 7 shows a flow diagram for the operation of the stroke typing system of the present invention. This flow diagram closely follows an actual software program, designed for use with an IBM Personal Computer operating with IBM DOS and with a &#34;well-behaved&#34; word processing application program. 
     The program of FIG. 7 operates in conjunction with a dictionary of linguistic expressions stored in memory block 31, a dictionary of abbreviations, stored in memory block 32, and a dictionary that is used to put words on the skeyboard, stored in memory block 33, all of these dictionaries having suitable indices associated therewith. 
     The software program is set forth in the attached Appendix A to this specification whereas a typical portion of a dictionary for displaying words on the skeyboard and its associated index are set forth in Appendices B and C, respectively. 
     The contents of Appendices A, B and C are protected by copyright. 
     When the stroke typing system is loaded by the operator, the program and the associated dictionaries and indices are loaded into memory locations 30, 31, 32 and 33. The immediate stroke dictionary is loaded at location B500 past the beginning of the program and its associated dictionary of linguistic expressions is loaded at D500 past the beginning of the program. An index to the stroke dictionary is loaded at 9500 past the beginning of the program; an index to the associated dictionary of linguistic expressions is loaded at A500 past the beginning of the program. 
     As noted above, Appendix B contains a portion of the &#34;skeyboard dictionary&#34; that is used to put words on the letter keys of the skeyboard. Appendix C contains a portion of the index for this dictionary. The dictionary will reside in memory at the location 4200 past the start of the program and the index will reside at 2700 past the start of the program. Within the index at location 0 is the number twenty six (1A) which is the number of letters which can start a word. Following the number are the twenty six letters in the order that they appear on the keyboard. After a space character at location 1B, there are twenty six pairs of two byte pointers starting at location 1C corresponding to the twenty six first letters. The first pointer of each pair points into the index to the second letters that can follow the first letter associated with that pair of pointers. Actually it points to the number of second letters that can follow that first letter and immediately following the number are the second letters. Hence at location 1C the first pointer of the pair associated with the first letter &#34;Q&#34; points to location 84, at which the number 1 indicates that there is only one second letter that can follow &#34;Q&#34; and at location 85 we find that second letters is &#34;U&#34;. At location 20 the first pointer of the pair associated with the first letter &#34;W&#34; points to location A6, at which the number 6 indicates that there are 6 possible second letters that can follow the first letter &#34;W&#34;. Starting a location A7 we find these six are &#34;ERIOAH&#34;. The second pointer of each pair points into the dictionary to the location of the words. At 1E of the index the second pointer associated with the first letter &#34;Q&#34; points to location O1 in the dictionary at which we find the word &#34;Q--uality&#34;. The two bytes between the &#34;Q&#34; and the &#34;u&#34; contain a two byte displacement 0062 which indicates how for the &#34;U&#34; key of the skeyboard is from the first key of the skeyboard, the &#34;Q&#34; key (&#34;Q&#34; being coincidentally also the first letter of the word). At B4 of the index the second pointer of the pair associated with the sequence &#34;WR&#34; points to location FC in the dictionary where we find &#34;WR--iter--ong&#34;. This tells us that there are two words in the dictionary with &#34;WR&#34;, &#34;writer&#34; and &#34;wrong&#34;. The displacement 0072 before the &#34;i&#34; of &#34;iter&#34; indicates how far the &#34;I&#34; key is from the &#34;Q&#34; key and the displacement 0004 before the &#34;o&#34; of &#34;ong&#34; indicates how far the &#34;O&#34; key is from the final &#34;r&#34; of &#34;writer&#34; when &#34;writer&#34; is put on the skeyboard. 
     It will be appreciated that the foregoing organization of the dictionary permits very rapid display of words on the skeyboard. Furthermore, by permitting certain tasks to be carried out between keypresses, the organization shortens the processing time immediatelly following the &#34;space&#34; keypresses following a word. Another organization that makes more efficient use of memory at the expense of speed eliminates the displacement bytes and uses the first letter of the rest of the word to locate the proper position on the skeyboard. More space can be saved by eliminating the typed part of the word (&#34;wr&#34; above) from the dictionary. Still more space can be saved by using just 5 bits for each letter and a 5 bit delimiter between words. 
     Another organization is contemplated to indicate which suffixes are valid for each word and the spelling of the suffix form. A pointer to a suffix template will follow each word. The template will consist of several bytes. The first seven bits of the first byte will indicate whether each of seven suffixes (&#34;s&#34;, &#34;ed&#34;, &#34;ing&#34;, &#34;ly&#34;, &#34;tion&#34;, &#34;ment&#34; and &#34;er&#34;, respectively) are valid for the word with a standard spelling. Bit 8 will indicate if any one of these seven has a non-standard spelling or if there is another suffix valid for this word. If so then the next byte will contain, in the first 6 bits the number of the suffix and in the last two bits, the number of letters to delete from the end of the rood word before adding the suffix. There will be such a byte for each valid suffix for this word that is not one of the seven and for each of the seven with a non-standard spelling. 
     For those suffix forms as &#34;countries&#34; or &#34;mice&#34; which cannot be formed by deleting characters from the end of the root form and then adding the suffix, the suffix number of zero will indicate that the next several bytes control the formation of the suffixed word. The first of these next several bytes will contain the suffix number and a bit to indicate whether the suffix should be added. The next byte will contain the number of characters to delete from the root word. The following bytes will contain the characters to add. 
     Reference numerals identifying the respective blocks in the flow diagram of FIG. 7 are indicated at the upper right-hand corner of each block. Cross-references to the lines of program code, if present, associated with each block are indicated at the bottom of each block. 
     The operation of the program will now be described with reference to its associated blocks in the flow diagram: 
     When a key on the keyboard 10 is pressed or released, the program is entered at block 100 from the computer operating system. At block 102 the contents of the 8088 microprocessor registers are saved and the keyboard scan code associated with the key is fetched from the keyboard at block 104. If it will be needed later, the time of this keypress or keyrelease is stored at block 106. Thereafter, a test is done at block 108 to see if this key event (keypress or key release) at time t a  is within the gross time threshold T x  from the last key even at a timet b . If the time difference t a  -t b  falls outside the threshold T x , then the associated ASCII code is put in the keypress buffer 26 at block 109 and a jump is taken to block 242 so that the keypresses in the keypress buffer can be put into the keyboard buffer 28 untranslated. If it does fall within the threshold or if the decision algorithm does not require the time of the keypress or release, then at block 110 the shift status is checked. If it is on then at block 112 a flag is set to capitalize this character and a jump to block 118 is taken. If the shift is off, then at block 114 the scan code is checked to see if it represents a punctuation keypress or keyrelease. If it does, then a jump to the standard keyboard interrupt code is taken at block 122 so that this keypress or keyrelease can be handled by that code, which in most cases will put the corresponding ASCII code in the system keyboard buffer. If it does not represent a punctuation character, then at block 116 the capitalization flag is turned off and at block 118 a test is performed to determine if this is a shift keypress. If it is, then at block 120 the first character capitalization flag is set and a jump to the standard code is taken at block 122. If it is not a shift keypress, then at block 124 a test is performed to determine if it is a keypress or a keyrelease for a non-alphanumeric character and, if so, a jump is taken to the standard code at block 122. If it is an alphanumeric character, then at block 126 the scan code is translated to ASCII and at block 128 a test is performed to determine whether the scan code indicates that a key was pressed or that a key was released. If it was a keypress, then at block 130 the restore screen flag is tested to determine if the document screen must be restored following a dictionary display operation. If so then at block 132 the document screen is restored and at block 134 the restore screen flag is turned off. In either case the ASCII code for the key that was pressed is stored in the keypress buffer immediately after previously stored keypress codes at block 136. At block 138 a test is performed to determine if the screen keyboard (&#34;SKEYBOARD&#34;) display of linguistic expressions is required to be updated because said keypress is an alphabetic keypress. If not then a jump is taken to block 268 where an end of interrupt code (&#34;EOI&#34;) is issued and the registers are restored and the routine returns at block 270. If the skeyboard needs to be updated, then at block 140 the words on the skeyboard are saved in memory locations from which the words can later be retrieved if need be, and at blocks 142 to 148 new words are put on the skeyboard. At block 142 the skeyboard is initialized by moving the appropriate characters to either the text buffer 27 or the non-screen memory location. 
     At block 144 the section of memory 33 is searched for standard words or linguistic expressions that begin with the sequence of characters (including the one corresponding to the current keypress) that follow the last space character of the text, and those linguistic expressions are moved to locations in the non-screen memory or the text buffer 27 from which they are automatically displayed on the keys of the skeyboard by standard system functions. The section of memory 33 that holds these standard words is organized so that, as each letter of a word is typed, pointers into both the dictionary of linguistic expressions and an index into said dictionary are adjusted to point to the letters that can follow so that the next screen of linguistic expressions can be quickly located in said section of memory 33. At block 146 the previously used words are put above the keys of the skeyboard. At block 148 the personal words added by the user are put above the number keys. Then a jump is taken to block 268. If at block 128 it is determined that it was a key release rather than a keypress that caused the routine to be invoked, then at block 152 a check is done to see if the personally added word flag is on. If it is, then at block 154 it is turned off and at block 200 the appropriate characters of the text word are highlighted and the appropriate keys of the skeyboard are highlighted and the number of beeps is set up or the character names to talk are set up. If the personally added word flag is not on then at block 156 a test is performed to determine if this key release together with the keypresses in the keypress buffer and the corresponding releases which have occurred satisfy a decision algorithm. 
     As pointed out in the Summary of the Invention above, there are essentially four distinct types of decision algorithms, according to the present invention: 
     (1) The determination as to whether or not successive keypresses are associated with a keystroke may be made in accordance with the timing of the keypresses. In this case, the algorithm keeps track of the instants of time that each key is depressed (T P ) and/or released (T R ). In any given sequence of keypresses, it is possible to determine one or more of the following: 
     
         (T.sub.P -T.sub.P0)&lt;T.sub.1, 
    
     
         (T.sub.R -T.sub.R0)&lt;T.sub.2, 
    
     
         (T.sub.R -T.sub.P)&gt;T.sub.3. 
    
     In the first of these formulae, the determination is made whether the respective instants of time that the successive keyboard keys are depressed fall within a respective first time window (T 1 ). In this case, T P  is the instant of time that the current keyboard key is depressed, and T PO  is the instant of time that either the previous keyboard key or the first keyboard key (that has not yet been released) was depressed. 
     Similarly, the second formula requires that the respective instants of time that the keys, in a group of key depressions, are released fall within a prescribed second time window (T 2 ). This test is advantageous because, when two or more keys are &#34;stroked&#34;, they are normally released substantially simultaneously. 
     Finally, as an alternative or in addition to the tests with respect to the time windows T 1  and T 2 , each key may be tested to determine whether the period during which it was depressed (T R  -T P ) exceeds a prescribed third time window (T 3 ). This test is advantageous because, when several keys are &#34;stroked&#34; together they are normally depressed for a longer period of time than when individual keys are depressed. 
     It will be appreciated, from the description above, that the determination as to whether a keypress is associated with a keystroke depends on the individual time windows T 1 , T 2  and T 3 . According to a particular feature of the present invention, these time windows may be of different length for different keystroke characters (since certain characters are normally depressed for a longer period of time than others, during standard typing) and for different users of the test entry system (in accordance with the respective typing skill of each operator). According to a still further preferred feature of the present invention, the time window(s) are automatically adapted to the user of the text entry system in dependence upon the skill of the user and in response to prompts by the user. 
     Still another method of determining whether or not successive keypresses are associated with a keystroke, which depends upon the timing of each keypress (both the instant of time of depression (T P ) and time of release (T R )) involves determining whether all the instants of time of depression for a sequence of keypresses precede all the instants of time of release. In this case, it is assumed that, with a keystroke, all the keys associated with that keystroke will be depressed before any of such keys are released. 
     (2) A second type of decision algorithm according to the invention for determining whether or not successive keypresses are associated with a keystroke involves the use of a known &#34;delimiter character&#34; which may, for example, be a &#34;space&#34; or a &#34;slash&#34; character. If a key which designates such a delimiter character is depressed in succession with other alphanumeric keys, and if the sequence of characters, designated by the keypresses, are capable of being translated into a linguistic expression, then the sequence of keypresses is determined to be a keystroke. 
     For example, if the delimiter character is a space, and the computer system user types keys designating &#34;n&#34;, &#34;o&#34;, and &#34;v&#34; plus a &#34;space&#34;, and if the sequence &#34;nov-space&#34; has been previously designated as a translatable keystroke, then this  sequence of keypresses is determined to be a keystroke. As an example, this keystroke could be translated into the linguistic expression &#34;November&#34;. 
     (3) A third decision algorithm according to the invention for determining whether a keypress is associated with a keystroke may be implemented by attempting to translate all the characters in the computer keypress buffer, or all the characters corresponding to keypresses which have been released, into a linguistic expression upon release of each key, whenever two or more characters are present in the keypress buffer. Thus, when only one key has been depressed and then released, it is assumed that the standard typing mode has been invoked, and the designated character is simply concatenated with the text characters previously imaged on the character display screen. However, when two or more keys are depressed before one of these keys is released, an attempt is made, upon release of each key, to translate the contents of the keypress buffer into a linguistic expression. If the contents do not appear in the dictionary of keystrokes, then it is assumed that the standard typing mode has been invoked. If the sequence of keypresses does appear in the dictionary, they are considered to be a keystroke and the associated linguistic expression is concatenated with the text characters previously imaged on the character display screen. 
     (4) A fourth decision algorithm according to the invention for determining whether a keypress is associated with a keystroke involves checking the sequence of keypresses that preceded this keypress. For example, if the operator types the characters &#34;b&#34;, &#34;e&#34;, and &#34;a&#34; sequentially and then strokes the characters &#34;u&#34; and &#34;space&#34; simultaneously, the stroke &#34;u-space&#34; may be translated to the linguistic expression &#34;utiful-space&#34; so that when this linguistic expression is concatenated to the text, the word &#34;beautiful&#34; and a following space will have been added to the text by a combination of individual sequential keypresses followed by a keystroke. Another example involves the punctuation character &#34;comma&#34;. If the operator has just stroked a word and then strokes &#34;comma-space&#34;, the characters &#34;backspace&#34;, &#34;comma&#34;, &#34;space&#34; will be added to the text to put the comma immediately after the last character of the text word rather than after the space that follows the last text word. However, if individual keypresses preceded the &#34;comma-space&#34; stroke, then the &#34;comma&#34; and &#34;space&#34; keypresses will be interpreted as two individual keypresses and their associated characters will be added to the text in the order in which the keys were pressed. 
     In the flow diagram of FIG. 7 the decision algorithm takes place in block 156. As is shown to the right of the block 156, this decision may consist of (1) evaluating the relevant timing thresholds at 158, 160 and 162; (2) determining whether the key release is associated with a delimiter character at 164; or (3) determining whether at the time of the key release, any or all of the keypresses have been matched by key releases at 166 and 168. 
     If the decision algorithm described above is not satisfied, then either a jump is taken to block 242 where the unsorted keypresses in the keypress buffer are moved to the keyboard buffer or a jump to block 268 is taken if there are no keypresses in the keypress buffer. If the algorithm is satisfied, then at block 170 a test is performed to determine if there is only one keypress in the keypress buffer 26. If so, then at block 172 a test is performed to determine if the keypress is a space bar keypress. If it is not then a test is performed at block 174 to see if the capitalize character flag is on and, if it is on, then at block 176 the ASCII code is changed to capitalize the character. Whether or not the capitalize character flag is on the appropriate flags are set at block 178, and at block 180 the character is put in the system keyboard buffer 28 and a jump is taken to block 264 where the keypress buffer is initialized. If at block 172 the keypress is a space bar keypress, then a pointer to the last text word is obtained at block 190 and at blocks 192, 194 and 196 this text word is compared to the linguistic expressions in the vocabularies of linguistic expressions stored in memory. 
     At block 192 the immediate dictionary 31 of &#34;immediately strokable&#34; words is checked, at block 194 the dictionary of personally added words is checked, and at block 196 the skeyboard dictionary 33 of standard words that are displayed on the keys of the skeyboard is checked. If the last text word is found in any of these dictionaries, then at block 200 the appropriate characters of the text word are highlighted, the appropriate keys of the skeyboard are highlighted, the number of beeps is set up and/or the character names to talk are set up. These features are provided as teaching aids to the user. 
     Specifically, the teaching aids may prompt the user to learn the keystrokes associated with linguistic expressions. In the preferred embodiment of the invention, one or more of the following teaching aids may be employed when a linguistic expression is entered, character by character, without the aid of its associated keystroke: 
     (1) The characters comprising the keystroke, which are imaged as keyboard characters on the skeyboard, may be imaged in a different manner than the remaining characters; e.g., by reverse video, different size or different brightness; 
     (2) The characters within the linguistic expression displayed on the skeyboard may be imaged in a different manner than the remaining characters of that linguistic expression; 
     (3) The keystroke characters within the linguistic expression displayed in the body of the text may be imaged in a different manner than the remaining characters of that linguistic expression; and/or 
     (4) Beep tones generated by the computer may indicate, by number and/or pitch, the position of the character or characters, and/or synthesized voice may pronounce the character or characters of the linguistic expression which are contained in the associated keystroke after an entire linguistic expression has been imaged. 
     Continuing with the flow diagram, if the last text word is not found at blocks 192, 194 or 196 then it is added to the dictionary of previously used words at block 198. In either case, a jump is taken to block 180 where the space character is moved to the system keyboard buffer, and then a jump is taken to block 264. If at block 170 it is found that there is more than one keypress in the keypress buffer, then at block 202 the keypress buffer is saved and at block 204 it is sorted to facilitate parsing it at block 206. From block 206 a jump is taken to one of blocks 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 230, 232, 234, or 240 depending on the contents of the keypress buffer 26. If the code to get a word or linguistic expression from a number key is there, then this code will include a numeric character and at block 208 this number is used to find the word or linguistic expression that is on that number key on the skeyboard. If there is a word or linguistic expression on that number key, it is put in the keyboard buffer 28 and a jump is taken to block 260. If there is no word or linguistic expression on that key, then a beep is sounded to alert the operator and a jump is taken to 242 where the saved unsorted contents of the keypress buffer are put in the keyboard buffer. If the code to get a word or linguistic expression from a letter key is there, then this code will include a letter character and at block 210 this letter is used to find the word or linguistic expression that is on that letter key on the skeyboard that was saved at block 140. If there is a word or linguistic expression on that letter key, it is put in the keyboard buffer 28 and a jump is taken to block 260. If there is no word or linguistic expression on that key, then a beep is sounded to alert the operator and a jump is taken to 242 where the saved unsorted contents of the keypress buffer are put in the keyboard buffer. If the code to add the last text word to the personal dictionary is there, then at block 212 this word and its stroke abbreviation are added to the personal dictionary and a jump to block 260 is taken. If the code to get a word from the personal dictionary is there, then at block 214 the personal dictionary is searched for the corresponding stroke. If it is there, the personal word is put in the keyboard buffer 28 and a jump is taken to 260. If it is not, then a beep is sounded to alert the operator and a jump is taken to 242 where the saved unsorted contents of the keypress buffer are put in the keyboard buffer. 
     If the code to add a punctuation character to the last word of text is there, then at block 216 a backspace character is put in the keyboard buffer followed by this punctuation character, followed by a space, and a jump is taken to block 264. If the code to get a previously used word or linguistic expression from above a letter key is there, then this code will include a letter character and at block 218 this letter is used to find the word or linguistic expression that is above that letter key on the skeyboard that was saved at block 140. If there is a word or linguistic expression above that key, it is put in the keyboard buffer 28 and a jump is taken to 260. If there is no word or linguistic expression above that key, then a beep is sounded to alert the operator and a jump is taken to 242 where the saved unsorted contents of the keypress buffer are put in the keyboard buffer. If the code to add the last few text words to the personal phrase dictionary is there, then at block 230 this phrase of words and its stroke abbreviation are added to the personal phrase dictionary and a jump to block 260 is taken. If the code to add or subtract a word or words to or from this phrase is there, then at block 232 this word or words are added or subtracted to or from the aforesaid phrase, and a jump to block 260 is taken. If the code to get a phrase from the phrase dictionary is there, then at block 234 the phrase dictionary is searched for the stroke. If it is there, the phrase is put in the keyboard buffer 28 and a jump to 260 is taken. If it is not, then a beep is sounded to alert the operator and a jump is taken to 242 where the saved unsorted contents of the keypress buffer are put in the keyboard buffer. If the code to display a portion of one of the dictionaries is there, then at block 220 the document screen is saved, the restore screen flag is turned on and this portion of the dictionary is displayed. A jump to block 264 is then taken. If the code to turn on or off the optional skeyboard is there, then at block 222 a pointer is changed to direct the skeyboard characters to the screen or non-screen memory, and a jump to block 264 is taken. If the code to turn on or off the optional beep or talk feature is there, then at block 224 tables are adjusted to turn on or off the beep or talk feature, and a jump to block 264 is taken. If the code (e.g., a slash) designating the entry of a suffix to be added to the last text word is there, then at block 226 the dictionary is searched for this last text word and the associated &#34;suffix template&#34;. If this suffix template indicates that the last text word has a standard spelling for this suffix, then a backspace character is put in the keyboard buffer. However, if the suffix template indicates that the last text word has a non-standard spelling for this suffix, then characters are put in the keyboard buffer to change the last text word so that it will be spelled correctly when the suffix is added. In either case, a jump is taken to block 240. If however, the suffix template indicates that the last text word cannot take this suffix, then a beep is sounded to alert the operator, and a jump is taken to 242 where the saved unsorted contents of the keypress buffer are put in the keyboard buffer. 
     At block 240 the flags are checked to see if the sorted keypress buffer should be translated. If not, then at blocks 242 and 244 the unsorted keypress buffer is put in the keyboard buffer. If the flags are set for translation, then at blocks 248 and 250 the dictionary of stroke abbreviations is searched for the stroke in the sorted keypress buffer. If this stroke is found in the dictionary of stroke abbreviations, then the pointer to the associated linguistic expression (translation) is obtained at block 252. If this stroke is not found in the dictionary of stroke abbreviations, then the pointer to the unsorted keypress buffer is obtained at block 242. In either case, this pointer is used to put either the translation or the unsorted keypress buffer in the keyboard buffer at either block 254 or 244. The appropriate flags are then set at block 256 or block 246 and a jump is taken to block 260. At block 260 the skeyboard is moved to either the display or non-display memory. The skeyboard is then reset at block 262 to the initial words which are displayed before the first letter of a word is typed. At block 264 the keypress buffer is reset and at block 266 the first character capitalization flag is turned off. At block 268 an EOI command is issued and the registers are restored. Finally at 270 the program returns control to the computer operating system. 
     Numerous additional features may be added to the stroke typing system described above. For example, in addition to the capability of adding linguistic expressions which may be accessed by keystrokes, a user may wish to delete linguistic expressions that are rarely used. In particular, the system may be programmed to respond to a prompt, entered into the keyboard by the user, plus the entry of the linguistic expression to be deleted, to remove such linguistic expression from the vocabulary of linguistic expressions. 
     There has thus been shown and described a novel stroke typing system which fulfills all the objects and advantages sought therefor. Many changes, modifications, variations and other uses and applications of the subject invention will, however, become apparent to those skilled in the art after considering this specification and the accompanying drawings which disclose the preferred embodiments thereof. All such changes, modifications, variations and other uses and applications which do not depart from the spirit and scope of the invention are deemed to be covered by the invention which is limited only by the claims which follow. ##SPC1##