Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND APPARATUS FOR EFFICIENT TEXT ENTRY AND EDITING
Document Type and Number:
WIPO Patent Application WO/1998/007087
Kind Code:
A1
Abstract:
A text entry and editing facilitation system employs predetermined alphanumeric keys of a keyboard responsive to a special control key for entering cursor movement, mark/delete and other actions without requiring removal of the typist's hands from the home row of the keyboard. The alphanumeric keys involved in entering these actions are selected such that their locations and spatial interrelationship on the keyboard relates to the location of a cursor displayed on the screen.

Inventors:
NORTH ROBERT W (US)
Application Number:
PCT/US1997/014180
Publication Date:
February 19, 1998
Filing Date:
August 11, 1997
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NORTH ROBERT W (US)
International Classes:
G06F3/023; G06F3/0489; (IPC1-7): G06F3/023
Foreign References:
US4847799A1989-07-11
EP0365305A21990-04-25
EP0602790A21994-06-22
Other References:
ALAN SIMPSON: "Mastering Wordperfect 6.1 for Windows", 1995, SYBEX INC., ALAMEDA, CA, US, XP002049767
ALAN SIMPSON: "Mastering WordPerfect 6.1 for Windows", 1995, SYBEX INC., ALAMEDA, CA, US, XP002049768
Attorney, Agent or Firm:
Reinemann, Michael R. (LLP 30 Rowes Whar, Boston MA, US)
Download PDF:
Claims:
CLAIMS
1. A system for entering and editing text into a computer having a monitor for displaying the text along with a cursor on a screen and a keyboard for converting activated alphanumeric keys into codes interpretive by the computer, the system comprising: an application program interfacing with an operating system for controlling the computer, the application program configuring the codes to specific functions for controlling the display of text on the screen; and means for facilitating entry and editing of text, the text facilitating means coupled to the application program in layered structural relation to enable alteration of the specific functions configured by the application program by reconfiguring the keyboard so that text entry and editing operations are executed by the computer in response to activation of selected alphanumeric keys having predetermined spatial and positional locations in relation to the position of the cursor on the screen.
2. The computer system of claim 1 further comprising a processor responsive to the operating system for executing the application program.
3. The computer system of claim 2 further comprising a memory for storing input data and commands associated with the application program.
4. The computer system of claim 3 wherein the facilitating means further comprises a special control key wherein activation of said special control key in combination with at least one preselected alphanumeric key reconfigures said at least one alphanumeric key to a cursor movement/mark key, thereby causing said cursor to move across the screen in direct relation to the spatial and positional location of the activated alphanumeric key.
5. The computer system of claim 4 wherein activation of said special control key in combination with a preselected alphanumeric key located to the right of a center point of said keyboard causes said cursor to move toward the right of said screen.
6. The computer system of claim 5 wherein the extent of rightward movement of said cursor is directly related to the distance of said preselected alphanumeric key from the center point of said keyboard.
7. The computer system of claim 4 wherein activation of said special control key in combination with a preselected alphanumeric key located to the left of a center point of the keyboard causes said cursor to move toward the left of said screen.
8. The computer system of claim 7 wherein the extent of leftward movement of said cursor is directly related to the distance of said preselected alphanumeric key from the center point of said keyboard.
9. The computer system of claim 4 further comprising a home row of alphanumeric keys centrally located on said keyboard.
10. The computer system of claim 9 wherein activation of said special control key in combination with a preselected alphanumeric key located above said home row causes said cursor to move upward across said screen.
11. The computer system of claim 10 wherein activation of said special control key in combination with a preselected alphanumeric key located below said home row causes said cursor to move down across said screen.
12. The computer system of claim 4 wherein activation of said special control key in combination with at least one preselected alphanumeric key reconfigures said at least one alphanumeric key to a delete/mark key for deleting a portion of displayed text.
13. The computer system of claim 12 wherein the extent of the deleted text is directly related to the spatial and positional location of the preselected alphanumeric key on said keyboard.
14. The computer system of claim 4 wherein the special control key is a CAPS LOCK key of a standard keyboard.
15. The computer system of claim 3 wherein the facilitating means further comprises a special control key wherein activation of said special control key in combination with at least one preselected alphanumeric key reconfigures said at least one alphanumeric key into an action command key, thereby causing a corresponding text editing function to be performed.
16. The computer system of claim 15 wherein said at least one alphanumeric key is the "B" key and the corresponding text editing function that is performed is bold.
17. The computer system of claim 15 wherein said at least one alphanumeric key is the "M" key and the corresponding text editing function that is performed is move/cut.
18. The computer system of claim 15 wherein said at least one alphanumeric key is the "," key and the corresponding text editing function that is performed is copy.
19. The computer system of claim 15 wherein said at least one alphanumeric key is the " ." key and the corresponding text editing function that is performed is delete.
20. The computer system of claim 3 wherein the facilitating means further comprises means for recognizing a string of pre¬ selected alphanumeric keys, which include a begin string signal, an action command signal and an end string signal, thereby causing a corresponding text editing function to be performed.
21. The computer system of claim 18 wherein the begin string signal is the " ." key, the action command signal is the "U" key and the end string signal is the "/" and the corresponding text editing function is underline.
22. A computer system comprising: a monitor including a screen for displaying text and a cursor; a video controller for controlling operation of said monitor; a cursor control coupled to said video controller for causing said monitor to display a cursor at a predetermined location on said scre¬ en; a processor responsive to an operating system for executing an application program; a memory for storing input data, application programs, and commands; and means for facilitating entry and editing of text coupled with said application program and said processor, said facilitating means comprising a keyboard having a special control key and a plurality of alphanumeric keys, said alphanumeric keys including a plurality of cursor movement/mark keys, wherein movement of the cursor is responsive to activation of said special control key in combination with a selected one of said cursor movement/mark keys, thereby causing said cursor location to change on said screen in a manner related to the location of said selected alphanumeric key on said keyboard.
Description:
METHOD AND APPARATUS FOR EFFICIENT TEXT ENTRY AND EDITING

BACKGROUND OF THE INVENTION

A. Field of the Invention

This invention relates generally to text entry and editing sys¬ tems, and more particularly, to a method and apparatus for improving the speed and efficiency of text entry and editing for personal, portable and other computers that use keyboards.

B. Description of the Related Art

Computer systems such as personal computers typically employ keyboards for the entry of text and commands for control of text appearing on video monitors. A conventional keyboard incorporates multiple keys that, when manually pressed, activate (i.e., close) electromechanical switches. The keys are mounted in a housing or boot, typically made of hard pfastic. Each key bears a label designating an alphanumeric character or function assigned to the key. An encoder converts the key-switch closures into corre- sponding character-specifying or command-specifying codes, such as those established by the American National Standards Institute (ANSI). The codes can then be programmatically interpreted for use in controlling a display of text on the monitor.

When interpreting the codes, the computer's control program configures each code to a specific character or function identified in a stored key-assignment table. By invoking a program which will intercept the default key codes, a user can change or re-configure the key code and, in turn, change the character or function designation of each key. Conventional ANSI keyboards are well suited for text entry and editing in word processing and other application programs. Such a

keyboard typically has a main grouping of alphanumeric keys ar¬ ranged in a "QWERTY" format typical of conventional typewriters, so named because of the layout of the top, left "alpha" keys of the key¬ board. The QWERTY format referred to herein is that which has become standardized in the United States.

A QWERTY arrangement of that type lends itself to touch-ty¬ ping for speed and efficiency. As commonly employed, touch-typing entails a method of typing that assigns a particular finger to each key, and makes it possible to type without looking at the keyboard. During such typing, the fingers generally rest on "home" keys (e.g., the "A"-"S"-"D"-"F" keys for the left hand fingers and the M J H -"K"-"L"-";" keys for the right hand fingers) that are disposed in a "home row" of the keyboard (the "home row" includes the key to the left of the "A" key, and the key to the right of the ";" key). Usually, only one or two fingers are lifted from the home row at any particular time for making keystrokes. After every keystroke, the fingers are returned to the home keys.

The touch-typist typically does not remove all of his fingers from the home row during typing, and does not remove his eyes from the display to examine the keys he is pressing. Since the fingers are not entirely moved from the home-row keys, the touch-typist is immediately ready after every keystroke for another, with minimal delay in between for re-orienting his fingers on the keyboard. This minimizes the movement necessary to accomplish a task. With a conventional ANSI keyboard, the alphanumeric keys typically produce both upper case and lower case characters depending on whether a "shift" or toggle-type "caps-lock" key is pressed in combination with selected character keys. These keys change the codes that the character keys generate when pressed.

Such keyboards also have other groupings of keys peculiar to computers. One of these groups forms a numeric keypad, typically disposed on the far right side of the keyboard. Another group provides function keys, typically on the top or far left of the keyboard, which may cause the CPU to execute functions or commands such as moving, copying or deleting text.

The keyboard also provides a grouping of cursor keys that control the location of the cursor on the display. Depending on which key is pressed, the cursor keys direct cursor movement, e.g., up, down, left or right, or to a home position (e.g., at the top right of the display raster), to an end position (e.g., at the bottom left of the display raster) or to a corresponding location on the preceding or next output "page" of the display. Since text appearing on the display wraps from line to line, e.g., from the top left corner of the display to the bottom right corner, the cursor keys can position the cursor at any location within the text by moving the cursor "left" or "right" on the screen.

Typically, cursor keys are embedded in the numeric keypad. Often, they are provided (at least for the first four of the above listed movements) by a separate cluster of four keys typically laid out in an inverted "T" configuration. The home, end, page up and page down cursor controls are usually provided in yet another cluster of keys. The keyboard also provides special "control" keys (SCK) that work in conjunction with other keys to perform some function. The "ALT" (Alternate) and the "CTRL" (Control) keys are typically the most used control keys. Other "control" keys include the "Caps Lock" and the "Shift" keys.

In order to obtain other cursor movements, a combination of a control key (e.g., the "Ctrl" key of the keyboard) and selected ones of the above-described cursor movement keys can be pressed. For

SUBSTITUTE SHEET (RULE 25)

example, one combination moves the cursor to the end of a next word in the text, and another to the end of the line in which the cursor is located. Conventional ANSI keyboards in personal computers as just described have become widely used in text entry. A significant drawback with such keyboards, however, is that both cursor movement and function keystrokes require a user to lift his entire hand from the home position to re-locate it on the appropriate key grouping or cluster, i.e., the cursor movement keys or function keys. This typically requires the user also to remove his eyes from the display so as to check his hand positions. This procedure can significantly slow text entry and editing since it compromises the techniques and advantages realized through touch-typing.

A growing number of commercially-available word processing programs, such as WordPerfect ®, permit the additional use of a mouse or track ball to control cursor position and/or activate functions. Many users find such input devices handy since conventional keyboard-entry of functions and commands can be too complicated. For example, it may be difficult to remember the particular keys in a conventional keyboard that, when pressed, result in the execution of a desired function or command. Unfortunately, use of such alternative input devices requires the removal of a typist's hands and eyes from where they should remain for efficient touch-typing.

DESCRIPTION OF THE INVENTION

A. Brief Summary of the Invention

Briefly, the present invention resides in a text entry and editing facilitation system in which a touch-typist may naturally and intuitively edit a document using the same efficient finger movements that enabled him to press alphanumeric keys without looking away

from the display or lifting his fingers entirely from the home-row of keys. In accordance with this novel system, predetermined alphanumeric keys when pressed in conjunction with a non-alphanu¬ meric special control key (SCK) (such as the "Caps Lock," "Control," or "Alternate" key) cause the computer to execute specific operations. That is, these alphanumeric keys not only perform their conventional role of entering text, they also are used for entering actions and commands. Ergonomically, the preferred SCK resides to the left of the "A" key on the home-row and is pressed with the little finger of the left hand.

The essence of the invention lies in the "natural", "intuitive" and "efficient" use of the fingers by the touch-typist. Significantly, the alphanumeric keys involvsd in entering actions are selected such that their locations and spatial interrelationships on the keyboard relate to the position of a cursor displayed on a screen. To illustrate, some of the keys that move the cursor and sometimes "mark" the text displayed on the screen are arranged in a linear array, e.g., in the home row, with the CURSOR/MARK LEFT keys (that function to move the cursor to the left of the screen) being on the left side of the keyboard and CURSOR/MARK RIGHT keys (that function to move the cursor to the right of the screen) being on the right side of the keyboard. This arrangement enables the typist's left hand to use the CURSOR/MARK LEFT keys (in combination with the special control key (SCK)) when positioning the cursor to the left of the screen, while freeing the typist's right hand to manipulate the

CURSOR/MARK RIGHT keys (in combination with the SCK) to move the cursor in the opposite direction. Such correspondence between left and right hands, left and right sides of the keyboard, and left and right cursor directions naturally promotes typing efficiency and can

be quickly mastered by the typist because of its intuitively logical inferences.

Moreover, within the CURSOR/MARK LEFT array and the CURSOR/MARK RIGHT array, the keys are selected to effect the position of the cursor relative to the corresponding fingers on the left and right hands of the typist. In other words, the touch-typist can use (i) the index finger of each hand (in combination with the SCK) to move the cursor in 1 -character increments along an indicated direction, (ii) the second finger of each hand to move the cursor in 1- word increments, (iii) the middle fingers to move it 1 -sentence increments, and (iv) the little finger of each hand to move the cursor to the beginning or end of a line. Again, this aspect of the invention establishes an intuitively logical correspondence between the finger locations of each hand used to effect cursor movement along with both the locations of the keys in the arrays and the extent of move¬ ment of the cursor.

As a further illustration of the intuitive logic embodied within the invention, the touch-typist can move the cursor up or down using the right index finger's natural extension when striking the "Y" key in the row of keys above the home-row, or the "N" key in the row below. Thus, when the "Y" key is pressed in conjunction with an SCK (e.g. the "Caps Lock" key) the cursor moves up, and when this latter special key is pressed with the "N" key the cursor moves down. The invention also provides delete/mark keys that are used (in combination with the SCK) to naturally, efficiently, and intuitively delete or mark text. By moving the cursor with the right fingers on the home-row as described above, the touch-typist establishes the right index finger as the "character" finger, the second finger as the "word" finger, the third finger as the "sentence" finger and the fourth

finger as the "end-of-line" finger. When any of these fingers presses a key directly above its location on the home-row (as performed naturally and typically by the touch-typist) in conjunction with an SCK pressed by the little left finger, the text defined as related to that finger is deleted. Specifically, the right index finger rests on the "J" key and moves the cursor right one character at a time when pressed in conjunction with an SCK. This "character" finger typically is used by the touch-typist to press the "U" key above, and when pressed in conjunction with the SCK, the "U" key deletes one character. Thus the word finger (resting on "K") can be used to delete a word when the "I" key directly above is pressed in conjunction with the SCK, and so on. As with the other aspects of the invention, this technique is logical, natural and intuitive to the typist.

In symmetry with the arrangement described above, the touch- typist uses the index finger of the left hand to type both the "F" key and the key above, i.e., the "R" key. In accordance with the invention, the same index finger (when used in combination with an SCK) moves the cursor one character to the left when the "F" key is pressed and deletes one character to the left of the cursor when the "R" "delete/mark" key is pressed. Of course, this delete/mark arrangement of key designations is logical, natural and intuitive to a touch-typist.

Cutting and pasting text operations may be discharged naturally, intuitively and with minimal motion (i.e., not lifting the fingers from the keyboard) according to still yet another aspect of the invention. The typist can press the appropriate delete key (in combination with the SCK) to cut and store the deleted text in the computer memory. The typist can then move the cursor to the location in a document where the text is to be inserted and press a

dedicated undelete key, e.g. the "H" key, (in combination with the SCK) to paste or insert the text.

Further, the touch-typist can carry out most other text editing/enhancing commands, such as copying, underlining, holding, etc., with equal efficiency, intuitiveness and logic. In one embodiment of the invention, the typist initially presses one of a plurality of start string commands, e.g., the "/" key, followed by one of the alphanumeric keys indicative of a text editing/enhancing command, e.g., "B" for the bold command, and finally an end string or delimiter command (e.g., a "/" key). This end string command functions to erase the resulting typed string command, e.g. "/B/ n , on the screen, while further placing the computer program in the requested text edit/enhance mode, e.g. "bold". At this point, the monitor preferably displays an indication of the entered command; the typist then marks the text to be edited or enhanced by using the delete/mark keys (in combination with the SCK). Instead of being deleted, the text is marked and the edit or enhance function is executed on that marked text, e.g. the text is bolded.

In another embodiment, the touch-typist again begins by pressing a start string command key, e.g., the "/" key, followed by one of the alphanumeric keys indicative of a text edit or enhancing command, e.g., "U" for the underline command, and then an end string or delimiter (e.g., a "/" key). As with the end string command, the command string, e.g. the "/U/", is deleted from the text and the computer program migrates into a requested command mode. The touch-typist then positions the cursor as described above, thereby blocking or marking the text to be edited or enhanced, and completes the task with a final string or delimiter (e.g., a "/" key). In response, the program automatically edits or enhances the text by, in this example, "underlining" the text. Notably, these actions are

accomplished efficiently without the typist either removing his fingers completely off the home-row of keys, touching the external cluster of "cursor"/"function" keys, using a mouse or taking his eyes off of the screen. Accordingly, the text entry and editing facilitation system pro¬ vided by the invention improves the efficiency of text entry and editing by employing an ergonomically arranged keyboard and streamlined command entry procedures that reduce the number of keystrokes compared to conventional systems.

B. Brief Description of the Drawings

For a fuller understanding of the nature of the invention, refer¬ ence should be had to the following detailed description taken in con¬ nection with the accompanying drawings, in which:

Fig. 1 is a pictorial view of a personal computer system in ac- cordance with an illustrative embodiment of the invention;

Fig. 2 is a functional block diagram of the computer system of Fig. 1 ;

Fig. 3 is a functional representation of the keyboard of Fig. 1 ; Fig. 4A-4B are another functional representation of the keyboard of Fig. 1 ; and

Fig. 5-11 are functional block diagrams in flow chart form of the text entry and editing facilitation (TEEF) system of Fig. 2.

C. Detailed Description of the Preferred Embodiments

1. Computer System Figs. 1 and 2 show a computer system 10 employing an im¬ proved system for text entry and editing in accordance with the invention. The computer system 10 preferably includes at least a sys¬ tem unit 12, a video monitor 16 including a display screen 18 (e.g., a liquid crystal display or cathode ray tube) for providing a visual out-

SUBSTΠΓUTE SHEET (RULE 26)

put to a user, and a keyboard 20. The system unit 12 incorporates a central processing unit or CPU 22, a memory 24 (typically, both read-only and random-access memory devices, not separately illus¬ trated), and a video controller 26, all interconnected for communica- tion by a system bus 29. The CPU 22 decodes and executes instructions, typically in the form of computer programs 240 stored in the memory 24. The monitor 16 and the keyboard 20 are also connected to the system bus 29 for communication with the other components 22-26. The computer programs 240 include an operating system 25, application programs 27, such as a word processing program 28, and a text entry and editing facilitation (hereinafter "TEEF" ) program 30. From an operational and functional standpoint, the computer pro¬ grams 240 can be viewed as a layered structure, in which each pro- gram depends for operation on the layer beneath. Accordingly, the word processor 28 depends for execution on the operating system 25, and the TEEF program 30 depends for operation on the word processor. To achieve this, the word processor 28 incorporates various "hooks" (e.g., routine and procedure calls) that pass control back to the operating system 25 during execution. The TEEF program 30 likewise has hooks that pass control back to the word processor program 28, often changing or re-configuring the "normal" functions in the word processor 28 as described hereinbelow.

The operating system 25 is preferably conventional, e.g., DOS or Windows, which include, e.g., a basic input/output system called a BIOS. The operating system 25 further comprises a collection of routines that control the overall operation of the computer 10, performing such tasks as memory management, processing inter¬ rupts, scheduling and controlling input/output.

The word processing program 28 is preferably a conventional, commercially-available product, such as WordPerfect® or Microsoft Word®, it can be used (preferably without modification to its code) in conjunction with a separate TEEF program when practicing the invention. Accordingly, the TEEF program preferably constitutes a separate item of commerce and would typically be dedicated for use with a specific application, such as a word processor, e.g., the above-mentioned WordPerfect program. Alternatively, an application can be furnished with the TEEF program integrated therein and sold together as a unit of commerce.

The video controller 26 is also conventional and includes a display buffer 32 for storing information received from the CPU 22. In addition, the video controller 26 has a screen painting system 36 for generating display signals that control visual images displayed on the monitor 16 in response to control and data signals received from the CPU 22. The display buffer 32 and the screen painting system 36 are interconnected by a video bus 38 for communication.

2. Keyboard Layout and the TEEF System During operation, the TEEF system 30 (Fig. 2) provides improved text entry, manipulation, navigation and editing capability using a novel alphanumeric keyboard layout 20A and 20B, depicted respectively in Figs. 3 and 4. Keyboard layout 20A of Fig. 3 exhibits certain high-level aspects of the invention, while keyboard layout 20B exhibits those aspects plus additional features in accordance with an illustrative embodiment of the invention.

Central to the invention is the use of what conventionally are character-producing keys in combination with a special control key ("SCK") 21 to produce cursor movement, text-marking, text-deletion, text-enhancing or other predetermined functions. When the SCK 21 is not pressed, the keyboard 20 (Fig. 1 ) operates normally as initially

configured. However, when the SCK 21 is pressed, the keyboard 20 is essentially re-configured, permitting entry by touch-typing of many of the actions and functions that, in known word processors and other text entry and editing software, typically require use of key clusters or pads other than the QWERTY key arrangement of the alphanumeric keys.

The SCK 21 is preferably an "outside" key; that is, a key other than those used to designate characters, such as, e.g., the "Ctrl" key or the "Caps Lock" key on a conventional keyboard. One of these keys is assigned the responsibility of being the SCK 21 using a keyboard-assignment routine of the operating system 26 in a conventional manner as known to one skilled in the art. In a preferred embodiment, the Caps Lock key (the key normally found to the left of the "A" key in the home-row) serves as the SCK 21 and the novel system 30 described herein is provided without sacrificing the normal function of the Caps Lock key as follows. When the Caps Lock key is pressed in conjunction (i.e., simultaneously) with an alphanumeric key, it serves as the SCK 21. When pressed alone, however, the Caps Lock key toggles to cause either all upper-case or all lower-case letters to be displayed on the monitor 16 (Fig. 1 ). The CPU 22 receives Caps Lock key codes whenever that key is pressed, and determines whether keys have been pressed along with the SCK 21. Personal computers of AT class or higher provide the CPU with this capability. Therefore, whenever reference is made hereinafter to pressing the SCK 21 , it shall denote pressing the Caps Lock key in conjunction with an alphanumeric key thereby initiating the novel system 30 and re-configuring the codes associated with activated alphanumeric keys as interpreted by the computer 10.

Another significant aspect of the invention involves the physical relationship of the cursor/mark keys in the keyboard layout

20A (Fig. 3) to the physical properties of displayed text and movement of a displayed cursor 60 (Fig. 1 ) on the screen 18. Specifically, the keyboard layout 20A has a horizontal linear array of CURSOR/MARK LEFT keys 54 located on the left side of a home row 52 and a similar array of CURSOR/MARK RIGHT keys 56 located on the right side of the home row 52. In response to pressing the CUR¬ SOR/MARK LEFT keys 54 in combination with the SCK 21 , a display cursor control 58 (Fig. 2) of the CPU 22 causes the screen painter 36 to move the cursor 60 in a direction toward the left side of the display screen 18, as indicated by arrow L in Fig. 1. In contrast, the display cursor control 58, in response to pressing of the CUR¬ SOR/MARK RIGHT keys 56 (Fig. 3) in combination with the SCK 21 , causes the cursor 60 to move toward the right side of the display screen 18, as indicated by arrow R in Fig. 1. Thus, the typist uses his left fingers to press the CURSOR/MARK LEFT keys 54 to move the cursor 60 in the left direction, while using his right fingers to press the CURSOR/MARK RIGHT keys 56 to move the cursor 60 to the right.

Analogously, the display cursor control 58 (Fig. 2) causes the cursor 60 (Fig. 1 ) to move up and down, i.e., in the direction of arrows U and D in response to keystrokes on CURSOR/MARK UP keys 62A, 62B and CURSOR/MARK DOWN keys 64A, 64B (Fig. 3) in combination with the SCK 21. As with the CURSOR/MARK LEFT and RIGHT keys 54, 56 the CURSOR/MARK UP keys 62A and 62B and CURSOR/MARK DOWN keys 64A and 64B are spatially located and arranged in the keyboard layout 20A in a manner related to the direction of their function.

The keyboard layout 20A has other horizontal linear arrays of keys designated as DELETE/MARK keys 66 and 68 preferably located in a common row 70 parallel to and immediately above the

home row 52. As described below, a delete/mark control 72 (Fig. 2) of the CPU 22 responds to keystrokes on these DELETE/MARK keys 66, 68 in combination with the SCK 21 to delete or mark (i.e., select) text. Text selecting or marking identifies a portion of the dis- played text to be acted upon in some way such as copying, moving, etc.

In addition, the keyboard layout 20A may have ACTION keys 74A and 74B and matching FUNCTION keys 75 in the same rows 76 and 78 as the CURSOR/MARK UP and CURSOR/MARK DOWN keys 62A, 64B. An action/function control 80 of the CPU 22 (Fig. 2) causes specified actions or functions as described below to be carried out in response to keystrokes on these ACTION keys 74A, 74B and FUNCTION keys 75.

Moreover, the keyboard layout 20A incorporates so-called "UN" keys 82 for un-doing a previous function, such as un-deleting previously deleted text, or un-moving or un-copying previously moved or copied text. The UN keys 82 are preferably located in the center of the keyboard layout 20A, and their operations will be explained below. To this point, the description of the invention has introduced a few basic concepts of key location/function relationships. Other as¬ pects of the invention will now be described with reference to Figs. 3 and 4A-4B. As shown in FIG. 3, most of the keys within each array of cursor/mark and delete/mark keys (e.g., within the CURSOR/MARK LEFT and CURSOR/MARK RIGHT key groups 54, 56; within the

DELETE/MARK LEFT and DELETE/MARK RIGHT key groups 66, 68; and within the CURSOR/MARK UP and DOWN groups 62A, 62B, 64A and 64B) can also be arranged to take advantage of the spatial relationship between keys and cursor; i.e., the keys farther away from the center of the keyboard 20 (where the UN keys 82 are

preferably located) move the cursor 60 (Fig. 1 ) a farther distance in the displayed text than those keys nearer the center of the keyboard 20. In other words, to move the cursor 60 a farthest distance, the fingers located farthest from the operator's thumbs (when disposed above the home row 52) are used.

Accordingly, a bi-lateral symmetry (or, viewed another way, a mirror image effect) around the center of the keyboard 20 is achieved, with the fingers of each hand performing keystrokes having similar effects with respect to cursor movement, marking and delet- ing, but in opposite directions. This permits logical, ergonomic keyboard operation for improved "head-up, hands-on" touch-typing. With reference to Fig. 4A-4B, the specifics of keyboard use will now be described.

Cursor/Mark kevs As noted, certain alphanumeric keys become Cursor/Mark keys

54, 56 when pressed in conjunction with the SCK 21. The Cursor/Mark keys 54, 56 cause the cursor 60 to move on the display 18. In addition, when requested by an "action" key 74A, 74B or string (as explained below), the keys 54, 56 can also mark (that is, highlight) the text as follows.

The left four adjacent keys in the middle row of alphabet characters (on the QWERTY keyboard, the "A," "S," "D," and "F" keys) move the cursor 60 and, possibly, at the same time, mark the text in the left direction. Preferably, the right-most key (that is, the key closest to the center of the keyboard) moves the cursor 60, and possibly marks, one character to the left; the second from the right moves the cursor 60, and possibly marks, one word to the left; the third moves the cursor 60, and possibly marks one sentence to the left (whether or not the beginning of the sentence is on another line;

and the fourth moves the cursor 60, and possibly marks, to the beginning of the line.

Counting from the left and in the middle row of alphabet char¬ acters, the seventh through the eleventh keys (on the QWERTY key- board, the "J," "K," L," ";" and "'" keys) move the cursor 60, and possibly at the same time, mark the text in the right direction. Preferably, the seventh and left-most key (that is, the key closest to the center of the keyboard 20) moves the cursor 60, and possibly marks, one character to the right; the eighth key from the left moves the cursor 60, and possibly marks, one word to the right; the ninth key moves the cursor 60, and possibly marks, one sentence to the right; the tenth key moves the cursor 60, and possibly marks, to the end of the line, and the eleventh key moves the cursor 60, and possibly marks, to the end of the paragraph. The tenth key, the ";" key, when pressed twice in succession together with the SCK 21 , moves the cursor 60, and possibly marks, to the next "cell," "column" or "field" to the right.

The left-most four adjacent keys in the bottom row of alphabet characters (in the QWERTY keyboard, the "V," "C," "X," and "Z" keys) move the cursor 60 and, possibly at the same time, mark the text in the down direction. Preferably, the fourth key (of the four, the one closest to the center of the keyboard) moves the cursor 60 and, possibly marks, down one paragraph; the second moves the cursor 60 and, possibly marks, down one screen; the third moves the cursor 60 and, possibly marks, down one page; and the fourth moves the cursor 60 and, possibly marks, down to the end of the document.

The left-most four adjacent keys in the row of numeric char¬ acters (in the QWERTY keyboard, the "4," "3," "2," and "1 " keys) move the cursor 60 and, possibly at the same time, mark the text in the up direction. Preferably, the fourth key (of the four, the one

closest to the center of the keyboard) moves the cursor 60 and, possibly marks, up one paragraph; the second moves the cursor 60 and, possibly marks, up one screen; the third moves the cursor 60 and, possibly marks, up one page; and the fourth moves the cursor 60, and possibly marks, up to the beginning of the document. The sixth key from the left in the bottom row of alphabet characters (in the QWERTY keyboard, the "N" key) preferably moves the cursor 60 and, possibly marks, down one line. The sixth key from the left in the top row of alphabet characters (in the QWERTY keyboard, the "Y" key) preferably moves the cursor 60 and, possibly marks, up one fine.

Delete/Mark kevs

As also noted, certain keys become Delete/Mark keys 66, 68 when pressed in conjunction with the SCK 21. Delete/Mark keys 66, 68 cause the text to be deleted or, when requested by an "action" key 74A, 74B or string (as explained below), cause the text to be marked (that is, highlighted) and trigger execution of the following functions. The seventh to the thirteenth keys from the left in the top row of alphabet characters (in a QWERTY keyboard, the "U", "I", "O", "P", "[", "]", and "\" keys) delete or mark text. Preferably, the seventh key (of the six, the one closest to the center of the keyboard) deletes or marks one character to the right; the eighth key deletes or marks one word to the right; the ninth key deletes or marks one sentence to the right; the tenth key deletes or marks from the cursor 60 to the end of the line; the eleventh key deletes or marks from the cursor 60 to the end of the paragraph; the twelfth key deletes or marks from the cursor 60 to the end of the page, and the thirteenth key deletes or marks from the cursor 60 to the end of the document. The first to the fourth adjacent keys in the top row of alphabet characters (in a QWERTY keyboard, the "Q", "W", "E", and

"R" keys) also delete or mark text. Preferably, the fourth key from the left (typically the "R" key) deletes or marks the character to the immediate left of the cursor 60; the third key (typically the "E" key) deletes or marks from the line on which the cursor 60 resides; the second key (typically the "W" key) deletes or marks the paragraph on which the cursor resides, and the first key deletes or marks the page on which the cursor resides.

Special Function Commands

Further, certain keys are designated as "special function" keys when they are pressed in conjunction with the SCK 21. Refer to the three "UN" keys 82 (Fig. 3). Counting from the left in the middle row of alphabet characters on a QWERTY keyboard, the fifth key (typically the "G" key) preferably unmoves and uncopies text from a Copy/Move Buffer 620 (Fig. 2); the sixth key (typically the "H" key) functions as a first level undelete of text from a Delete Buffer 618 (FIG. 2); and, in the top row of alphabet characters, the fifth key from the left (typically the "T" key) functions as a second level undelete of text from a Second-Level Delete Buffer 619 (Fig. 2). The "Tab" key, when pressed in conjunction with the SCK 21 key, preferably "indents" the entire paragraph, not just the first line of the paragraph. The "backspace" key changes all previous upper case letters in a sentence, except the first character, to lower case letters. This function corrects the string of capital letters caused by mistakenly pressing the "Caps Lock" key. The "Shift" key preferably toggles the system 30 on and off.

Action commands

The system 30 preferably includes two types of "Action" commands: "Single Keystroke" and alphanumeric "String" commands. As for the Single Keystroke commands, when the SCK

21 is pressed in conjunction with certain keys, a program "action" call (explained below) is executed. For example, pressing the SCK 21 in conjunction with the "M" key preferably calls for a "move" or "cut" action. In the preferred embodiment of the invention, there are at least four single keystroke action commands. As explained in detail below, by pressing the SCK 21 in conjunction with the "B" key, the "M" key, the "," key, or the " ." key, the actions of "bold," "move/cut," "copy," and "delete" are respectively called.

When the user precedes certain alphanumeric strings by a "begin string signal" (such as a space [i.e., pressing the space bar], a cursor move key [i.e., "t", "<-", " !" , "->" , etc.] or a punctuation mark key) and follows it by an "end string signal" (such as a "/"), another program "action" call is executed as explained below. For example, the string "U" when preceded by a "." and followed by a "/" (i.e. ".U/",) calls for "Underline" action. The characters ".U/" are subsequently deleted when the system 30 recognizes an action string command.

After a user selects either a "single keystroke" or "string" action command in the first step of an action command, he has two options in the next and final step. In a first option, the user presses a "delete/mark" key 66, 68 as explained above. Instead of "deleting" designated text, this key 66, 68 now "marks" or "highlights" the designated text, and executes the active action on the designated text. For example, when the user wants to underline a line, the user first selects the "underline" action by pressing "U" (preceded by a begin string signal and followed by an end string signal) and then presses the "delete/mark line" key (e.g., the SCK 21 in conjunction with "E"). This latter key now marks and underlines a line. In another example, after the user selects the "move/cut" action in the system 30, the key combination that previously deleted a sentence, (e.g., the

SCK 21 in conjunction with "O") now marks and moves/cuts a sentence by placing the text in the copy/move buffer 620.

In a second option, the user presses a "cursor/mark" key 54, 56 as explained above. In addition to moving the cursor 60 the designated distance, this key "marks" or "highlights" the text, and leaves the selected "action" function active for further adjustment until the user executes the "end action" key (such as a "/"), at which time the desired action is executed. For example, assume that the user wants to underline two words. First, the user selects the "underline" action by pressing ".U"; second, he presses the

"cursor/mark word right" key twice (e.g., the SCK 21 in conjunction with "K") to mark two words; and third, he presses an "end" command ("/") to complete the action, thereby underlining the two marked words. When the user types a "string" action command and the string is not one that the system 30 recognizes as a preprogrammed (i.e., internal) action command, the system 30 transfers the string to the main word processor program 28 to be run as an external (user created) command, possibly using the main word processor program's 28 "macro" facility, as described below.

Block Diaαrams of Fiqs. 5-11

FIGS. 5-11 show functional block diagrams in flow chart form of the operation of the TEEF system 30. FIG. 5 shows a word processor interface 100 for attaching the TEEF system 30 as depicted in FIGS. 6-11 to a conventional word processor 28 (Fig. 2), such as WordPerfect.

The interface 100 starts at block 1 1 1 when the host word processor 28 (Fig. 2) determines that an event has occurred which is eligible for sub-routine processing. An event can be defined as something that happens external to the TEEF system 30 itself, e.g., a

keystroke. If an event has occurred, the interface 100 progresses to block 1 12, in which it tests if the TEEF system 30 has been installed (registered) as a subroutine to be called. If the TEEF system 30 has not been registered as a subroutine, the flow continues to block 1 16 and the word processor 28 (Fig. 2) continues. If the TEEF system 30 is registered as a subroutine, the interface 100 progresses to block 122, where the TEEF system 30 is called with information describing the event.

Referring now to Figure 6, a main control loop 200 of the TEEF system 30 is shown. From block 122 of Figure 5, the main control loop 200 determines in block 212 whether the event is a response to a prior request by a subroutine of the TEEF main routine of FIGS. 6- 1 1 . Some actions performed in the main routine require multiple steps, so the routine regularly determines whether it itself generated the event. For example, requesting display of a menu, e.g., for setting margins, and then selecting from the menu, typically requires multiple keystrokes.

If the event is a response to a prior TEEF subroutine request, the main control loop 200 passes control to the subroutine that made the request. On the other hand, if it is not, the main control loop 200 goes to block 213, at which it tests whether the event is a keystroke. If the event is not a keystroke, control flows to block 223, which returns to block 123 of Figure 5, and then to block 1 16.

If the event is a keystroke, block 214 tests whether the TEEF system 30 is waiting for another keystroke by querying the "waiting for keystroke" flag setting. For example, if the φ command " bold" were entered using the TEEF system 30 the appropriate subroutine would await the next keystroke to carry out the command. If a TEEF subroutine is expecting a keystroke, block 224A processes the keystroke and performs the pending action, depending on the

requested command. Then, block 224B resets the "waiting for keystroke" status flag, e.g., by setting appropriate bits in a TEEF internal buffer (not shown) to zero.

After block 214, the main control loop 200 proceeds to block 215, as it does if the answer to the test of block 214 is in the negative. Block 215 tests whether the keystroke was an internal command within the TEEF system 30, or more specifically, a single- keystroke type command rather than a string command. For example, moving the cursor 60 one character to the right using the SCK 21 in combination with the "J" key is a single-keystroke command of the type to which this test refers. On the other hand, a string command requires multiple keystrokes, such as "BOLD", which requires typing the "B" key plus hitting the SCK 21. If it is a string command, block 225 passes control to the "process string commands" subroutine, as described below in conjunction with Fig. 7A-7B.

If the keystroke represents a single keystroke command, block 216 tests whether the command is valid for the current state of the word processor 28 (Fig. 2), and more specifically, of the TEEF system 30. For example, if the user has requested the TEEF system 30 to delete text (using the SCK 21 with the period " ." key) the cursor movement commands are valid for marking the text to be deleted, but the indent command (the SCK 21 and the "q" key) is not, and block 216 tests determines whether any such limitations should render an entered command invalid. If it is invalid block 226 returns to block 125 of Figure 5, instructing the host program 28 to ignore the event, and from there to block 1 16.

On the other hand, if the command is valid as tested in block 216, block 232 clears a TEEF internal command buffer 222 (Fig. 2). Next, in block 233, 234, and 235, the main control loop 200 tests

whether the command is a "cursor/mark" command, a "delete/mark" or a "special function" command, respectively, and, depending on which it is, transfers control to respective blocks 243, 244, and 245, and from there to appropriate subroutines depicted in Figs. 8-11. If the command is found to be none of those, the main control loop 200 proceeds to block 246 to process the command as an "action" command, as depicted in Figure 7A-7B.

Fig. 7A-7B depicts a subroutine 300 for processing string commands. Block 312 determines whether "string commands" are valid. If they are not, block 332 returns to the interface 100 at block 124. If it is a valid string command, block 313 tests whether the keystroke was a "begin string" key, in which case block 323 clears the internal TEEF key collection buffer 309 used to collect key strokes. As described above, a "begin string" key may include the space bar or one of the cursor movement keys (t, «-, , -», PAGE UP, PAGE DOWN, HOME and END). Then, the subroutine 300 proceeds to block 332 and from there to block 124.

On the other hand, if the keystroke was not a "begin string" key, block 314 tests whether the keystroke was an "end string" key. The internal TEEF key collection buffer 309 (Fig. 2) stores an identification (ID) keystrokes after the "begin string" key is recognized. If it was not an "end string" key, the ID of the key is added to the TEEF key collection buffer 309 in block 324, and the routine 300 passes control to block 124 of Figure 5 so that the host program 28 may process the keystroke.

If the keystroke was an "end string" key, block 315 places the number of text delete commands required to delete the keystrokes in the TEEF key collection buffer 309 from the document text into the TEEF internal command buffer 222. Next, block 316 tests whether the key collection buffer 309 contains a valid TEEF string command.

If it is a valid TEEF string command, block 325 tests whether the internal command has a specific processing routine. If it does, block 326 causes the TEEF system 30 to go to the command's processing routine on the next call to the main control loop 200. If the string command does not have a specific processing routine, block 335 appends the command string required to process the requested command to the text delete commands in the TEEF command buffer 222.

Returning to block 316, if the key collection buffer 309 does not contain a valid command, it is assumed to be the name of a macro, and block 317 creates a macro execute command using the contents of the TEEF key collection buffer 309 as the macro's name. The block 317 then appends the macro's name to the contents of the command buffer 222. The paths of the above routines, since block 314 determined that the keystroke was an "end string" key, flow to block 336, which clears the key collection buffer 309 and proceeds to block 337, and then to block 124 of Figure 5, which causes the TEEF internal command buffer 222 to be processed as a command by the host program 28.

Figure 8 shows a cursor/mark command subroutine 400. Block 4 2 sets up the first (or only) command buffer 222 for the requested cursor movement command. Next, block 413 tests whether the requested cursor movement command requires the use of multiple routines. If it does, block 423 conditions the main control loop 200 "waiting for keystroke" status flag, e.g., by setting appropriate bits in flag buffer 215 (Fig. 2) so that control passes repeatedly back to the requested command's processing routine until the command is completed. Then, block 424 causes the command in the command buffer 222 to be processed by block 124 of Figure 5. On the other

hand, if multiple routines are not required, routine 413 goes directly from block 412 to block 424.

Figure 9 depicts the delete/mark commands routine 500. Block

512 tests whether the requested command is valid. If it is not, block 532 passes control to block 125 of Figure 5, causing the event to be ignored. If the command is valid, block 513 determines whether the delete/mark command requires use of multiple routines or commands.

If it does, block 523 conditions the main control loop 200 by setting the "waiting for keystroke" status flag in the flag buffer 215 to go directly to the requested commands processing routine until the command is completed. From there the routine 500 proceeds to block 514, as it does if it is determined in block 513 that multiple routines are not required.

Block 514 determines whether an "action" command is active. If it is, block 524 sets up an appropriate "mark" command, and block 525 sets an "action completed" flag in the flag buffer 215 (Fig.

2) to indicate that the action has been completed. Next, block 535 proceeds to block 124 of Fig. 5 for processing of the command. If block 514 determines that no "action command" is active, block 526 sets up a "delete" command, and block 536 passes control to block

124 of Fig. 5 for processing of the command.

Fig. 10 is a special function commands routine 600. Block

612 tests whether the requested command is valid. If it is not, block

632 causes the event to be ignored by returning to Fig. 5 at block 125. If it is a valid command, block 613 tests whether the command is a "retrieval" command, and, if it is a "retrieval" command, block 623 tests whether data should be retrieved from a delete buffer 618 (Fig. 2). If data should be retrieved from the delete buffer 618, block

633 sets up a command, if the retrieval is from the copy buffer 620, block 624 sets up the command, then block 634 passes control to

block 124 of Fig. 5. If the command was not a "retrieval" command, block 625 sets up the "Indent" command and proceeds through block 634 to Fig. 5 block 124 to process the command.

Fig. 11 shows a routine 700 for processing action commands. Block 712 determines whether the requested command is valid. If it is not, block 725 ignores the event and returns control to block 125 of Fig. 5. If the command is valid, block 713 sets a command for the requested action. Next, block 714 informs the main control loop 200 that an action command is active by setting an appropriate flag, and block 715 informs the main control loop 200 that an action command is waiting for a key stroke. Then, the routine passes control to block 725 for return of control to block 125 of Fig. 5 which causes the event to be ignored by the word processor 28.

In summary, a novel method and apparatus for efficient text entry and editing has been described herein. The terms and expressions which have been employed in this specification are used as terms of description and not of limitation. There is no intention in the use of such terms and expressions of excluding any equivalents of the features shown and described or portions thereof, but it is recognized that various modifications are possible within the scope of the invention claimed.