Systems for initiating the execution of a macro by simultaneously depressing multiple keys and for reducing the misclassification of keyboard input by distinguishing between rollovers in normal typing and the simultaneous depression of two keys. Only keystrokes that follow a pause are considered candidates for macro initiation. Keystrokes not separated by a pause are dispatched to the operating system for normal processing. If a user types in a normal fashion, no macro is recognized, and the user experiences no unexpected behavior. A user dictionary of macro definitions is used to determine whether the first keystroke is part of a macro input pair.
|
1. A method for receiving data into a computer, the method comprising:
associating multiple alphanumeric keys on a keyboard with data;
detecting a pause during typing;
detecting the simultaneous pressing of the multiple alphanumeric keys after the pause by;
determining if a first of the multiple alphanumeric keys is part of a standard pair;
determining if a second of the multiple alphanumeric keys is part of a standard pair;
determine if the second of the multiple alphanumeric keys is depressed within a pre-determined period of time of the first of the multiple alphanumeric keys;
determine if the first and second alphanumeric keys are both depressed for a period of time which is dependent upon the period of time elapsed between the first and second keypresses; and
if the first and second alphanumeric keys have been depressed simultaneously then use the associated data instead of the multiple alphanumeric keys simultaneously pressed as input data.
7. A method for receiving data into a computer, the method comprising:
associating multiple alphanumeric keys on a keyboard with data;
detecting the simultaneous pressing of the multiple alphanumeric keys by:
determining if a second of multiple alphanumeric keys is depressed before the previous key press of a first of multiple alphanumeric keys has been lifted;
determining if the second alphanumeric key is depressed within a pre-determined period of time of the first alphanumeric key;
determining if the first and second alphanumeric keys are both depressed for a period of time which is dependent upon the period of time elapsed between the first and second key presses; and
if the first and second alphanumeric keys have been depressed simultaneously,
determining if the first and second alphanumeric keys are a standard pair;
if they are a standard pair, using the associated data instead of the multiple alphanumeric keys simultaneously pressed as input data.
15. A method for receiving data into a computer, the method comprising:
associating multiple alphanumeric keys on a keyboard with data;
detecting a pause during typing;
detecting the simultaneous pressing of the multiple alphanumeric keys by:
determining if a second of multiple alphanumeric keys is depressed before the previous key press of a first of multiple alphanumeric keys has been lifted;
determining if the second alphanumeric key is depressed within a pre-determined period of time of the first alphanumeric key;
determining if the first and second alphanumeric keys are both depressed for a period of time which may be pre-determined or which may be dependent upon the period of time elapsed between the first and second key presses; and
if the first and second alphanumeric keys have been depressed simultaneously, determining if the first and second alphanumeric keys are a standard pair; and
if they are a standard pair, using the associated data instead of the multiple alphanumeric keys simultaneously pressed as input data.
2. The method of
detecting a pause perceptible to a user before the simultaneous pressing of the multiple alphanumeric keys.
3. The method of
detecting a pause after the simultaneous pressing of the multiple alphanumeric keys.
4. The method of
determining that the first and second alphanumeric keys have been depressed sequentially if a third alphanumeric key has been depressed during the period of time during which the first and second alphanumeric keys have been depressed.
5. The method of
determining that the first and second alphanumeric keys have been depressed simultaneously if the second alphanumeric key is lifted prior to the first alphanumeric key being lifted.
6. The method of
determining that the first and second alphanumeric keys have been depressed simultaneously if a pause during typing occurs after the first and second alphanumeric keys have been depressed and lifted.
8. The method of
9. The method of
10. The method of
11. The method of
12. The method of
13. The method of
14. The method of
16. The method of
17. The method of
18. The method of
19. The method of
20. The method of
21. The method of
22. The method of
23. The method of
|
This application claims the benefit of the filing date(s) of the following earlier application(s):
U.S. Provisional Patent Application No. 60/332,989 is incorporated by reference herein.
This invention relates to computer input, keyboards and typing. More particularly, this invention relates to speeding input to a computer through multi-key keyboard macros and, in the process, disambiguating rollover and multi-key macro initiation.
Currently, a computer user enters data by keyboard, that is, by typing. To enter a system command or move the cursors, for example, the user moves her hand out of the home-row position.
System commands are menu selections by mouse, menu commands combining the Alt key with an alphabetic character (in the Microsoft Windows™ operating system) or shortcuts combining the Ctrl key and another character. All of these methods require the user to move her hands off of the normal home-row position to press the Ctrl or Alt key or to move the mouse. Also, a user generally glances away from the screen to the keyboard or mouse to enter the command, and the user generally glances down again to return her hand(s) to (the correct position on) the keyboard. The moving of the hands from the home-row position and the pausing to look at the hands slows the entry of data. Where the entry of data is time sensitive, the slow data entry is particularly critical.
Therefore there is a need to allow a user to more efficiently enter system commands. There is a need to allow a user to enter system commands without moving her hands from the home row position or moving her eyes from the monitor.
To achieve a high level of commercial success, a computer input system must operate with an extremely low error rate. Users have been reluctant to accept input error rates on the order of even 2%. Witness, for example, the failure of speech-input systems to achieve any significant degree of market acceptance.
Therefore there is a need to allow a user to more efficiently enter data with an extremely low error rate.
Macros are a prior-art means for entering input through a keyboard. Generally speaking, macros are an association of an invocation sequence and a data sequence. The data sequence is typically much longer or much more complex than the invocation sequence. When a user types the macro invocation sequence (macro input sequence, macro activation sequence), software recognizes that sequence and replaces the invocation sequence with the associated data sequence. The user is thereby spared having to type or even remember the longer or more complex data sequence.
Macros are not an error-free proposition, particularly where the invocation sequence is the simultaneous depressing of multiple keys. There are two types of macro input classification errors: a false positive, in which two sequential keystrokes are misclassified as simultaneous keystrokes, and a false negative, in which two simultaneous keystrokes are misclassified as sequential.
Accordingly, there is a need to allow a user to more efficiently enter data with an extremely low error rate, including eliminating as much as possible the misclassification of her input.
In the Microsoft Word™ word processor, the sequence Ctrl-[decreases the font size of a selection and Ctrl-] increases the font size of a selection. For a typical user, these keystrokes are not easily remembered.
Accordingly, there is a need for macro-invocation sequences that are more easily remembered.
Rollhaus et al., U.S. Pat. No. 4,638,306 (1987) and the related Rollhaus et al., U.S. Pat. No. 4,696,280 (1987) (together, “Rollhaus et al.” herein) teach keyboard entry. Rollhaus et al. respond to conventional sequential activation of individual keys, outputting individual letters associated with the activated keys. Rollhaus et al. also respond to chords of simultaneously activated multiple keys, using these chords to retrieve stored words from a dictionary. The stored words rather than the entered chords are treated as input. Rollhaus et al. allow an user to use enter both conventional key sequences and key chords. Feedback alerts the user of inadvertent chords.
Rollhaus et al. however, do not recognize autorepeat key events. Rollhaus et al. do not work with keyboards or operating systems with this feature.
Also, Rollhaus et al. have no provision to minimize false negatives. Rollhaus et al. determine macro invocation from the difference between the time of the last key down and the time of the last key up. If this difference is above a threshold, Rollhaus et al. assume a macro has been invoked.
These and other goals of the invention will be readily apparent to one of ordinary skill in the art on reading the background above and the description below.
Herein are taught methods and apparatus for initiating the execution of a macro by simultaneously depressing multiple keys and for reducing the misclassification of keyboard input by, for example, distinguishing between rollovers in normal typing and the simultaneous depression of two keys. In one embodiment, only keystrokes that follow a pause are considered candidates for macro initiation. Keystrokes not separated by a pause are dispatched to the operating system for normal processing. If a user types in a normal fashion, no macro is recognized, and the user experiences no unexpected behavior.
In one embodiment, the method includes examining a user dictionary of macro definitions to determine whether the candidate keystroke is the first keystroke of a macro's input pair. If it is not, or if the succeeding keystroke does not complete the initiating input pair of any defined macro, or if the two keys are not pressed simultaneously, the keystroke(s) are dispatched to the operating system for normal processing. The method includes generating a probability that the two keystrokes are simultaneous.
The memory 630 typically includes software (user-level applications, an operating system and drivers for example) and files (both user and system, not shown). Keyboard drivers are well known in the art and thus not fully described herein.
The memory 630 includes drivers, macro definitions (associations) and user preferences more specific to this invention. A keyboard driver maybe modified to incorporate the instant invention, for example, by implementing a state machine 631 as described herein.
The driver 631 classifies the keyboard input, distinguishing between rollovers in normal typing and the simultaneous depression of two keys. The driver determines whether a keystroke follows a pause, step 30. The driver 631 forwards keystrokes not separated by a pause to the operating system for normal processing, step 10. Only keystrokes preceded by a pause are considered candidates for macro initiation. If a user types in a normal fashion, no macro is recognized, and the user experiences no unexpected behavior.
The driver 631 examines a user dictionary of macro definitions to determine whether the candidate keystroke is the first keystroke of a macro's input pair, step A0. If it is not, or if the succeeding keystroke does not complete any candidate input pairs, step 50, or if the two keys are not pressed simultaneously, step 70. the keystroke or keystrokes are dispatched to the operating system for normal processing, step 10.
If the driver 631 determines the keystroke sequence ambiguous, then the driver 631 attempts to resolve the ambiguity, step 760.
If the ambiguity cannot be resolved, then several recovery actions, step 850, are possible. In one embodiment, the ambiguous keystrokes are discarded. Since the user has paused before and after the sequence, the user may notice the lack of output and unambiguously repeat the keystroke sequence.
In another embodiment, the macro is recognized and expanded. The expansion is passed on to the operating system.
In yet another embodiment, a user may determine which of these two actions the driver should take in the face of unresolved ambiguity. A dialog box may be displayed, asking the user to choose whether to invoke the macro.
The state machine 631 maintains several timers: a PauseBeforeMacro timer, a SecondKeystrokeWithin timer, a BothKeysDowrMinimum timer, a BothDownMaximum timer, an AcceptOneKeyLifted timer and a QuietAfterMacro timer. Each of these timers is described in turn below.
Tables 2A–2C show that a user generally pauses for 200–1 000 ms before simultaneously striking the two keys in a macro-activation sequence and then pauses again before resuming normal typing. Therefore, the state machine 631 only considers two-character sequences preceded by a pause as candidates for a macro and requires a pause afterwards if the data are ambiguous. The pauses before and after (the latter as necessary) reduce false positives. A typist rarely pauses, quickly types two characters (with rollover) and then pauses again. (Certain two-character words, most notably “we,” are exceptions and specially treated.)
The PauseBeforeMacro timer fires when typing has ceased for a predetermined amount of time. In one embodiment, the PauseBeforeMacro time is 200–1000 ms, depending on the user's typing speed as shown in Table 1. Similarly, the QuietAfterMacro timer fires when typing has ceased for a predetermined amount of time. The QuietAfterMacro time is the same as the PauseBeforeTime time in one embodiment.
The SecondKeystrokeWithin timer holds the maximum amount of time that can elapse between two keypresses if a user attempts to press two keys simultaneously. SecondKeystrokeWithin has a value of 5–0100 ms. The value depends on the degree of friction experienced by a key during a keypress. Small variations in the friction experienced by different keys result in a delay between the registration of the two keyDown events when two keys are pressed simultaneously, and this requires a higher value for the parameter. Keyboards with a minimal amount of friction operate with a value toward the lower limit. The SecondKeystrokeWithin time is 75 ms in one embodiment.
The BothKeysDownMinimum timer holds the minimum amount of time that two keys need to be down to be potentially (not conclusively) simultaneous. The BothKeysDowrMinimum time is ranges from 30 to 50 ms, depending on the keydown time of the second keystroke (t2d). Since the second keystroke's keydown time can range from 0 to SecondWithin, in one embodiment, a linear interpolation yields the formula of Equation (1):
BothKeysDownMinimum=30+20*(t2d/SecondWithin) (1)
The BothKeysDownMaximum timer holds the additional time, beyond BothKeysDownMinimum, that two keys need to be down to conclusively conclude the key sequence as simultaneous key presses. The BothKeysDownMaximum time is 45 ms in one embodiment.
The AcceptOneKeyLifted timer relates to the user pressing two keys simultaneously and then lifting one up in order to execute the macro one time. If the user subsequently depresses the lifted key before releasing the held key, the macro is repeated. This feature is particularly useful in cursor movement. This timer has a value which is greater than the time one key is lifted during a rollover, and is 50 ms in one embodiment.
The Typing state 210 is the initial and default state of the state machine 631. On entering the Typing state 210, the machine 631 forwards any keystrokes held as macro candidates to the operating system and sets the PauseBeforeMacro timer. With each keystroke received, the machine 631 resets the PauseBeforeMacro timer, transition 211. (The exceptions are the modifier keys Shift, Alt, Ctl and, optionally, Oriental character set keys 212 such as Hangul, Hanja, Junja, Kana and Kanji, transition 212.) As long as the machine 631 receives keystrokes before the PauseBeforeMacro timer fires, the state remains Typing 210. The machine 631 forwards these keystrokes to the operating system. As long as the user types in a nearly continuous manner, no macro detection occurs, and the keyboard behaves in the fashion of the prior art.
When the PauseBeforeMacro timer fires, the machine 631 detects that the user has paused and enters the Paused state 230, transition 231.
In the Paused state 230, the state machine 631 evaluates keystrokes as candidates for activating macros. If the machine 631 receives a keypress for a key which is not part of a macro invocation pair, the machine 631 returns to the Typing state 210 to await another pause by the user, transitions 231 and 222. If, on the other hand, the keypress corresponds to one of the keys in any invocation pair, the machine 631 stores the associated key code and keydown time (t1d) and then transitions to the FirstKeyDOwn state 240, transition 232.
In the FirstKeyDOwn state 240, the machine 631 sets the SecondKeystrokeWithin timer. If this time elapses with no additional keystrokes, if the first keypress is lifted or if a second keydown occurs for a key which does not appear in any of the macro-activation key pairs in the macro-activation list, then the state machine 631 transitions back to the Typing state 241, transitions 241 and 242.
If, however, the machine 631 receives a keydown and that key matches the mating key of a macro-activation key pair associated with the first keypress, then the machine 631 stores the second keypress and its keydown time and transitions to the SecondKeyDown state 250, transition 243.
In the SecondKeyDown state 250, the machine 631 sets the BothKeysDownMinimum timer. If the machine receives any keystroke before this time elapses, the machine 631 returns to the Typing state 210, transition 251. If not, the machine 631 transitions to the Ambiguous state 260, transition 252. The machine 631 ignores autorepeat keydown events (events whose character codes match the first or second keypresses, transition 253).
To have gotten to the Ambiguous state 260, the machine 631 has experienced two keydown events. In this state, the machine 631 sets the timer BothKeysDownMaximum. If this interval passes with no intervening keyup or keydown events, then both keys will have been down for a total of the BothKeysDownMinimum and BothKeysDownMaximum times, 75–95 ms in one embodiment. Tables 2A–2C shows that this amount of time suffices to unambiguously classify the sequence as a macro activation. Accordingly, the machine 631 transitions to the ExecuteMacro state 270, transition 261.
If, however, a keyup event occurs before BothKeysDownMaximum ms elapses, then the machine 631 stores the keyup time (tUp) and the identity of the key and then transitions to the AmbiguityResolution state 280, transition 262.
If a keydown event occurs in the Ambiguous state 260, then the state machine 631 assumes a three-key rollover and transitions back to the Typing state 210, transitions 261 and 222. The Typing state 210 releases the three keystrokes analyzed.
In the ExecuteMacro state 270, the machine 631 expands the macro according to the macro dictionary, forwarding the macro associated with the simultaneous keystrokes on to the operating system.
In the AmbiguityResolution state 280, the machine 631 tests the input sequence to determine whether the sequence is simultaneous. If the machine 631 classifies the sequence as simultaneous, then the machine transitions to the ExecuteMacro state 270, transition 281. If the machine 631 classifies the sequence as sequential, then the machine 631 transitions back to the Typing state 210, transition 282 and 222, where keypresses are forwarded to the operating system. If the machine 631 cannot disambiguate the sequence, it attempts to recover as described herein.
Otherwise, the machine 631 starts the AcceptOneKeyLifted timer. If the machine receives no keystroke before the timer fires, on the firing of the timer, the machine 631 conclusively classifies the gesture as simultaneous and transitions to the OneLifted state 279 in the ExecuteMacro compound state 270, transition 287. The user may lift one finger after pressing both keys in order to pause the macro and then restart or repeat the macro by pressing the lifted key again.
If the second key is lifted before AcceptOneKeyLifted ms elapses, then the state machine 631 transitions to the PausingAfter state 289, transition 288 and starts the QuietAfterMacro timer. If a keydown event occurs before this time elapses, then the machine 631 conclusively concludes that user's gesture is sequential typing and transitions to the SendKeystrokesToOS state 290, transition 290.
If no keyup events occur during the QuietAfterMacro interval, the state machine 631 transitions to the AnalyzingKeystrokes state 292, transition 291.
In the AnalyzingKeystrokes state 292, the user has paused, pressed two keys, released them and paused again.
F=(time both keys are down)−0.7*(time between first and second keydown). (2)
In Table 3, values of the function of 12 or less always indicate sequential keystrokes, values of 43 and higher always indicate simultaneous keystrokes and intermediate values are ambiguous.
Classification errors for values between 12 and 43 disappear if the wireless keyboard data are removed from the table. Timing data for wireless keyboards is inherently noisy due to delays in transmission and reception of the keystroke. Thus, in one embodiment, different ranges of the function are used to classify the sequences, depending on whether the keyboard is wireless or directly wired.
If PauseBeforeAutoRepeat ms elapse since the macro was executed (determined by retrieving the system's pause before auto repeat time), the system enters the Repeating state 273. The Windows™ system registry, for example, stores the autorepeat time in the key HKKEY_CURRENT_USER\ControlPanel\Keybd:InitialDelay.
In the Repeating state 273, autorepeat events repeat the execution of the macro, transition 275. This continues until the user key lifts a key. The machine 631 then transitions to the OneKeyLifted state 279, transition 276.
In the OneLifted state 279, the machine 631 ignores the auto repeat events, transition 277. A keydown event for the lifted key returns the machine 631 to the FirstExecution state 271, transition 27A, where the delay is simulated again by the PauseBeforeAutoRepeat timer. A keyup or a keydown which does not correspond to the lifted character in this state completes the execution of the macro and transitions the machine 631 to the Completed state 278, transition 27B.
The instant invention reduces the frequency of false positive errors by only considering sequences in which the user pauses before initiating a macro and pauses again after releasing the two keys. Table 2A illustrates the keystroke timing data for a 70 wpm typist typing the sentence, “The price is ε200.” (using the invention's eu macro for the Euro symbol).
Table 1 shows the average time between keyboard events for various typing speeds. A typing speed of 70 wpm equates to an average time between events of 71.43 ms. As the data show, the operator spontaneously paused for 325 ms before striking the ‘eu’ key pair and another 500 ms after lifting both keys. Thus, for fairly proficient typists, the system can distinguish between normal connected typing and pausing.
Table 1 shows that slower typists are less likely to produce rollovers. Indeed, there are none in the example. Also, in keeping with their slower rhythm, slower typists, pause for a longer time before initiating the macro sequence.
Therefore, in various embodiments, a computer monitors the user's typing and adjusts one or more pause times to the user's typing speed. In another embodiments, a computer allows the user to manually do so. Table 1 also shows the average time between events and the pause time for various typing speeds, according to one embodiment.
Indeed, the invention now being fully described, one of ordinary skill in the art will readily appreciate the many changes and modifications that can be made thereto without departing from the spirit or scope of the appended claims. For example, while the examples focus on two-key macros, macros of three or more keys are also possible.
As another example, an embodiment of the invention may replace many of the hard-to-remember macros used in common applications. The Microsoft® Word™ word processor Ctrl-[ and Ctrl-] macros respectively increase and decrease the font size of a selection. These may be replaced by the mnemonic f+ and f−.
Likewise, the mnemonic macro eu can replace the NumLock Alt 0128 sequence that produces the euro symbol, ‘ε’. Indeed, Table 4 lists a number of mnemonic European key pairs. The keys typed as ‘6’ (for ‘^’) ‘/’ ‘\’ ‘;’ (for ‘:’) ‘.’ and ‘'’ appear to the user to be automatically paired with a vowel character to accent it.
As still another example, the analysis to produce the function determining the probability of simultaneity was a discriminant analysis. A neural network can produce the probability function, as can any other probability analysis known in the art.
Still further, a population of computer users suffers from repetitive stress and other conditions requiring them to minimize their use of the mouse. These users would be well served by activating system commands without lifting their hands from the keyboard.
TABLE 1
typing
slow
high avg ms
speed
slow
chars/sec
between events
quietBefore
quietAfter
10
7
0.70
714.29
1000
750
20
14
1.40
357.14
600
450
30
21
2.10
238.10
500
375
40
28
2.80
178.57
400
300
50
35
3.50
142.86
300
225
60
42
4.20
119.05
250
187.5
70
49
4.90
102.04
250
187.5
80
56
5.60
89.29
250
187.5
90
63
6.30
79.37
250
187.5
100
70
7.00
71.43
250
187.5
110
77
7.70
64.94
150
112.5
120
84
8.40
59.52
125
93.75
130
91
9.10
54.95
125
93.75
140
98
9.80
51.02
125
93.75
150
105
10.50
47.62
125
93.75
160
112
11.20
44.64
125
93.75
Table 1 shows suggested calculations for quietBefore and quietAfter parameters, based on the average time between events. Empirically (and illustrated in Tables 2A–2C), the longest interval between naturally occuring keyboard events is based on a typing speed approximately 30% less than the average rate. Also, as borne out by the data in Tables 2A–2C, the pause after a macro invocation tends to be shorter than the pause afterwards.
TABLE 2A
character
action
time
state
delta t
notes
T
ds
20873264
Typing
0
T
us
20873404
Typing
140
u
20873454
Typing
50
H
d
20873554
Typing
100
H
u
20873664
Typing
110
E
d
20873774
1Dn
110
E
u
20873875
Typing
101
d
20874005
Typing
130
u
20874145
Typing
140
P
d
20874215
Typing
70
P
u
20874345
Typing
130
R
d
20874385
1Dn
40
R
u
20874465
Typing
80
I
d
20874596
Typing
131
I
u
20874696
Typing
100
C
d
20874736
Typing
40
C
u
20874826
Typing
90
E
d
20875016
1Dn
190
E
u
20875126
Typing
110
d
20875166
Typing
40
u
20875287
Typing
121
I
d
20875317
Typing
30
I
u
20875427
Typing
110
S
d
20875537
Typing
110
S
u
20875657
Typing
120
d
20875777
Typing
120
u
20875897
Typing
120
U
d
20876618
1Dn
721
pause
E
d
20876659
2Dn
41
U
u
20876729
1Up
70
E
u
20876779
3QAfter
50
2 d
20877239
Typing
460
pause
2 u
20877370
Typing
131
0 d
20877480
Typing
110
0 u
20877570
Typing
90
0 d
20877750
Typing
180
0 u
20877860
Typing
110
—
d
20878301
1Dn
441
—
u
20878411
Typing
110
ds
20891750
Paused
13339
Table 2A shows, for a 40 wpm typist, the character typed, whether the stroke is down or up, the time of the event, the state to which a transition occurs as a result of the input, the difference in time between the event and the previous event.
TABLE 2B
character
action
time
state
delta t
T
ds
20935683
Typing
0
T
u
20935824
Typing
141
H
d
20935864
Typing
40
H
u
20935954
Typing
90
E
d
20936054
1Dn
100
E
u
20936134
Typing
80
d
20936174
Typing
40
u
20936284
Typing
110
P
d
20936334
Typing
50
P
u
20936455
Typing
121
R
d
20936495
1Dn
40
R
u
20936565
Typing
70
I
d
20936655
Typing
90
I
u
20936755
Typing
100
C
d
20936795
Typing
40
C
u
20936865
Typing
70
E
d
20937005
1Dn
140
rollov-
er wi
d
20937065
Typing
60
E
u
20937115
Typing
50
u
20937216
Typing
101
I
d
20937256
Typing
40
I
u
20937326
Typing
70
S
d
20937406
Typing
80
S
u
20937486
Typing
80
d
20937636
Typing
150
u
20937736
Typing
100
E
d
20938397
1Dn
661
paused
U
d
20938437
2Dn
40
E
u
20938497
1Up
60
U
u
20938548
3QAfter
51
2 d
20939128
Typing
580
pause
afte
2 u
20939229
Typing
101
0 d
20939269
Typing
40
0 u
20939369
Typing
100
0 d
20939459
Typing
90
0 u
20939559
Typing
100
—
d
20940030
1Dn
471
—
u
20940150
Typing
120
Table 2B shows, for a 55 wpm typist, the character typed, whether the stroke is down or up, the time of the event, the state to which a transition occurs as a result of the input, the difference in time between the event and the previous event.
TABLE 2C
character
action
time
state
delta t
notes
T
ds
21095183
Typing
0
ds =
down s
T
us
21095293
Typing
110
H
d
21095373
Typing
80
H
u
21095423
Typing
50
E
d
21095463
1Dn
40
E
u
21095523
Typing
60
d
21095563
Typing
40
rollover
P
d
21095633
Typing
70
rollover
u
21095683
Typing
50
rollover
R
d
21095724
1Dn
41
p&r
down
P
u
21095774
Typing
50
R
u
21095824
Typing
50
I
d
21095884
Typing
60
I
u
21095964
Typing
80
C
d
21096014
Typing
50
C
u
21096074
Typing
60
E
d
21096184
1Dn
110
E
u
21096254
Typing
70
d
21096294
Typing
40
u
21096435
Typing
141
I
d
21096475
Typing
40
I
u
21096525
Typing
50
S
d
21096575
Typing
50
S
u
21096655
Typing
80
d
21096695
Typing
40
u
21096815
Typing
120
timer
21097015
Paused
200
U
d
21097106
1Dn
91
eu
macr
E
d
21097146
2Dn
40
U
u
21097206
1Up
60
E
u
21097246
3QAfter
40
2 d
21097646
Typing
400
2 u
21097736
Typing
90
0 d
21097787
Typing
51
0 u
21097867
Typing
80
0 d
21097937
Typing
70
0 u
21098027
Typing
90
—
d
21098167
Typing
140
—
u
21098267
Typing
100
Table 2C shows, for a 75 wpm typist, the character typed, whether the stroke is down or up, the time of the event, the state to which a transition occurs as a result of the input, the difference in time between the event and the previous event.
TABLE 3
2d down
bothDown
chars
kbd
60
0
sequential
th
serial connect
−42
60
0
sequential
th
serial connect
−42
50
0
sequential
th
serial connect
−35
60
10
sequential
df
serial connect
−32
60
20
sequential
ei
serial connect
−22
60
20
sequential
eu
serial connect
−22
60
20
sequential
eu
serial connect
−22
60
20
sequential
we
serial connect
−22
50
20
sequential
as
serial connect
−15
50
20
sequential
ei
serial connect
−15
50
20
sequential
eu
serial connect
−15
60
30
sequential
df
serial connect
−12
60
30
sequential
ei
serial connect
−12
60
30
sequential
we
serial connect
−12
40
20
sequential
as
serial connect
−8
40
20
sequential
ie
serial connect
−8
40
20
sequential
th
serial connect
−8
50
30
sequential
df
serial connect
−5
50
30
sequential
we
serial connect
−5
60
40
sequential
we
wireless
−2
30
20
sequential
eu
serial connect
−1
30
20
sequential
ie
serial connect
−1
60
41
sequential
eu
wireless
−1
50
40
sequential
eu
wireless
5
20
20
sequential
ie
serial connect
6
20
20
sequential
ie
serial connect
6
30
30
sequential
as
serial connect
9
30
30
sequential
df
serial connect
9
30
30
sequential
ei
serial connect
9
note: we wi
amb = ambiguity for
the sequence ‘we’
30
30
sequential
we
serial connect
9
on a wireless
keyboard
40
40
sequential
df
serial connect
12
50
50
simultaneous
eu
error
wireless
15
we wi amb
wireless amb
50
50
simultaneous
eu
error
wireless
15
we wi amb
wireless amb
50
50
simultaneous
we
error
wireless
15
we wi amb
wireless amb
50
51
sequential
we
wireless
16
we wi amb
wireless amb
60
60
sequential
we
wireless
18
we wi amb
wireless amb
30
40
sequential
as
serial connect
19
we wi amb
wireless amb
40
50
sequential
eu
error
wireless
22
we wi amb
wireless amb
wired ambiguity
40
50
sequential
we
error
wireless
22
we wi amb
wireless amb
wired ambiguity
40
50
simultaneous
we
wireless
22
we wi amb
wireless amb
wired ambiguity
20
40
simultaneous
eu
serial connect
26
we wi amb
41
60
simultaneous
eu
wireless
31.3
we wi amb
40
60
simultaneous
we
wireless
32
we wi amb
50
70
simultaneous
eu
wireless
35
we wi amb
50
70
simultaneous
eu
wireless
35
we wi amb
20
50
simultaneous
eu
serial connect
36
we wi amb
20
50
simultaneous
eu
serial connect
36
we wi amb
20
50
simultaneous
ie
serial connect
36
we wi amb
20
50
simultaneous
ie
serial connect
36
we wi amb
20
50
simultaneous
ie
serial connect
36
we wi amb
40
70
sequential
we
error
wireless
42
we wi amb
40
70
sequential
we
error
wireless
42
we wi amb
40
70
simultaneous
we
wireless
42
we wi amb
40
70
simultaneous
we
wireless
42
we wi amb
10
50
simultaneous
eu
serial connect
43
20
60
simultaneous
eu
serial connect
46
20
60
simultaneous
eu
serial connect
46
20
60
simultaneous
ie
serial connect
46
20
60
simultaneous
ie
serial connect
46
20
70
simultaneous
ie
serial connect
56
0
60
simultaneous
df
serial connect
60
0
60
simultaneous
th
serial connect
60
0
70
simultaneous
as
serial connect
70
0
70
simultaneous
th
serial connect
70
0
70
simultaneous
th
serial connect
70
0
70
simultaneous
we
serial connect
70
0
70
simultaneous
we
serial connect
70
end
0 ser
0
70
simultaneous
we
serial connect
70
0
70
simultaneous
we
serial connect
70
0
71
simultaneous
as
serial connect
71
0
71
simultaneous
as
serial connect
71
0
71
simultaneous
we
serial connect
71
0
71
simultaneous
we
serial connect
71
0
80
simultaneous
as
serial connect
80
0
80
simultaneous
df
serial connect
80
0
80
simultaneous
th
serial connect
80
0
81
simultaneous
df
serial connect
81
0
81
simultaneous
th
serial connect
81
0
90
simultaneous
df
serial connect
90
0
90
simultaneous
df
serial connect
90
0
90
simultaneous
th
serial connect
90
10
101
simultaneous
as
serial connect
94
0
101
simultaneous
as
serial connect
101
0
110
simultaneous
df
serial connect
110
TABLE 4
eu
a6
â (the ‘{circumflex over ( )}’ is the uppercase
character for 6).
a/
á
a\
à
a;
ä (the colon is the uppercase
character for semi-colon).
a.
å
a′
ã (the tilde is the uppercase
character for ′).
c,
ç
e/
é
e\
è
e:
ë
e6
ê
i6
î
i/
í
i\
ì
i:
ï
o6
ô
o/
ó
o\
ò
o;
ö
o′
õ
n′
ñ tilde
u6
û
u/
ú
u\
ù
u;
ü
y/
ý
Patent | Priority | Assignee | Title |
10185833, | Feb 19 2013 | The University of Tulsa | Compliance method for a cyber-physical system |
10469483, | Dec 12 2017 | Electronic device facilitating password entry and recall | |
11586297, | Jun 14 2019 | Fluid chord/character entry | |
7773089, | Dec 03 2004 | SONY NETWORK ENTERTAINMENT PLATFORM INC ; Sony Computer Entertainment Inc | Displaying character strings based on font information |
7836412, | Dec 03 2004 | DeliverHealth Solutions LLC | Transcription editing |
8028248, | Dec 03 2004 | DeliverHealth Solutions LLC | Transcription editing |
8117034, | Mar 29 2001 | Nuance Communications, Inc | Synchronise an audio cursor and a text cursor during editing |
8209444, | Nov 03 2010 | GIGA-BYTE TECHNOLOGY CO., LTD. | Keyboards providing macro functions and macro function setting method using the same, and computer program products thereof |
8380509, | Mar 29 2001 | Nuance Communications, Inc | Synchronise an audio cursor and a text cursor during editing |
8504369, | Jun 02 2004 | DeliverHealth Solutions LLC | Multi-cursor transcription editing |
8706495, | Mar 29 2001 | Nuance Communications, Inc | Synchronise an audio cursor and a text cursor during editing |
8869067, | Jan 13 2009 | Ricoh Company, Limited; Ricoh Company Limited | Operating device, control panel, and image forming apparatus including same |
9632992, | Dec 03 2004 | DeliverHealth Solutions LLC | Transcription editing |
9836131, | May 19 2014 | Bengler AS | Method of generating symbols from a chording keyboard |
Patent | Priority | Assignee | Title |
4638306, | Jan 30 1984 | Quixote Corporation | Keyboard entry system |
4672186, | Oct 01 1981 | BancTec Inc. | Digital document scanning system |
4694280, | Jan 30 1984 | Quixote Corporation; QUIXOTE CORPORATION, A CORP OF DE | Keyboard entry system |
4891786, | Feb 22 1983 | International Business Machines Corp | Stroke typing system |
5384825, | Jul 01 1993 | Motorola Mobility LLC | Method for memory dialing for cellular telephones |
5535421, | Mar 16 1993 | Chord keyboard system using one chord to select a group from among several groups and another chord to select a character from the selected group | |
5805911, | Feb 01 1995 | Microsoft Technology Licensing, LLC | Word prediction system |
5855002, | Jun 11 1996 | Pegasus Micro-Technologies, Inc. | Artificially intelligent natural language computational interface system for interfacing a human to a data processor having human-like responses |
5903259, | Mar 31 1997 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for mapping remote control buttons onto keyboard stroke combinations |
6094197, | Dec 21 1993 | Xerox Corporation | Graphical keyboard |
6331850, | Nov 12 1997 | BUFFALO PATENTS, LLC | Collapsible keyboard |
6401065, | Jun 17 1999 | Nuance Communications, Inc | Intelligent keyboard interface with use of human language processing |
6650254, | Mar 13 2000 | EROGODEX | Computer input device with individually positionable and programmable switches |
6809724, | Jan 18 2000 | Seiko Epson Corporation | Display apparatus and portable information processing apparatus |
6943776, | Jul 24 2000 | Computer-compatible, visualizably presented, intuitive and self-explanatory manual input system | |
20020167494, | |||
20020193080, | |||
20040169642, | |||
20050104867, | |||
20050235210, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Date | Maintenance Fee Events |
Nov 08 2006 | ASPN: Payor Number Assigned. |
Mar 30 2010 | M2551: Payment of Maintenance Fee, 4th Yr, Small Entity. |
Mar 31 2014 | M2552: Payment of Maintenance Fee, 8th Yr, Small Entity. |
Apr 16 2018 | M2553: Payment of Maintenance Fee, 12th Yr, Small Entity. |
Date | Maintenance Schedule |
Mar 27 2010 | 4 years fee payment window open |
Sep 27 2010 | 6 months grace period start (w surcharge) |
Mar 27 2011 | patent expiry (for year 4) |
Mar 27 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 27 2014 | 8 years fee payment window open |
Sep 27 2014 | 6 months grace period start (w surcharge) |
Mar 27 2015 | patent expiry (for year 8) |
Mar 27 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 27 2018 | 12 years fee payment window open |
Sep 27 2018 | 6 months grace period start (w surcharge) |
Mar 27 2019 | patent expiry (for year 12) |
Mar 27 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |