Abstract:
An element (e.g., a location pointer in a windowed graphical user interface) shown on a computer display is moved toward a target position. A user&#39;s input is recognized which identifies a subregion of the display in which the target position is located. The element is moved discontinuously to a location within the identified subregion. Then a next user&#39;s input is recognized which identifies a sub-subregion of the subregion of the display in which the target position is located. The element is moved discontinuously to a location within the identified sub-subregion. In another aspect, an element is dragged between two locations on a computer display. User commands are accepted which indicate the two locations. Then the element is dragged between them. The user commands identify a sequence of discontinuous jumps for moving the element to the indicated location.

Description:
This application is a continuation of U.S. application Ser. No. 08/420,245, filed Apr. 11, 1995, now abandoned. 
    
    
     BACKGROUND 
     This invention relates to voice controlled cursor movement. 
     As seen in FIGS. 1A and 1B, in a graphical user interface, elements (e.g., windows, buttons, menus) displayed on a monitor 20 of a computer 18 are typically controlled using a mouse 24 and a keyboard 26. The interface elements may also be controlled by a user&#39;s spoken commands 12 which are picked up by a microphone 14 and fed through a voice control system 10. After being digitized in an A/D converter 16 in the voice control system, the user&#39;s command is &#34;recognized&#34; by a recognition engine 15 (in the form of software running in computer 18). The recognized speech is provided to software applications 17 and the operating system 19 also running on the computer, and corresponding actions are taken. For example, if the voiced command is &#34;button click&#34;, the operating system executes the button click at the current location of the cursor, just as if the mouse button had been physically clicked. An example of a voice recognition engine used to control a graphical user interface is the one included in DragonDictate, available from Dragon Systems of Newton, Mass. 
     As seen in FIG. 2, the graphical user interface may include windows 28, 30 and icons 32 representing files or programs. Windows 28, 30 may be resized, moved, opened, or closed by the user. The windows may overlap to allow viewing of a currently active window 37 and an inactive window 20 and 28. 
     The cursor 34 (in this case in the form of an arrow) is moved around by the user to indicate locations of interest. For example, if the user wants to launch the SYSEDIT program she moves the cursor to point to the SYSEDIT icon and double clicks the mouse. Also, the user may &#34;drag&#34; the cursor by positioning it at one location, holding down the mouse button, then moving the cursor to another location and releasing the button. This would allow the user to, for example, move the SYSEDIT cursor to a new location within window 30. 
     To make voice control of a graphical user interface effective, the user should be able to move the cursor around the screen and perform dragging operations using voiced commands. One way to do this is using commands such as &#34;up&#34;, &#34;down&#34;, &#34;faster&#34;, &#34;slower&#34; to cause corresponding motion of the cursor. 
     SUMMARY 
     The invention allows rapid relocation and dragging of a cursor using, e.g., voiced commands. 
     In general, the invention features moving an element (e.g., a location pointer in a windowed graphical user interface) shown on a computer display toward a target position. In the method, a user&#39;s input is recognized which identifies a subregion of the display in which the target position is located. The element is moved discontinuously to a location within the identified subregion. Then a next user&#39;s input is recognized which identifies a sub-subregion of the subregion of the display in which the target position is located. The element is moved discontinuously to a location within the identified sub-subregion. 
     Implementations of the invention may include one or more of the following features. The subregion (the sub-subregion) may be one of a grid of nine possible rectangular subregions (sub-subregions) which can be displayed to and identified by the user. The grid may be overlaid on other displayed features. The grid may be formed of windows. The grid may not be displayed when the subgrid is being displayed. The process may be iterated until the user indicates that the method should be ended. The grid may span the entire display, or only a selected portion of the display, e.g., a window. Each subregion (sub-subregion) may have an associated index which is displayed to the user. The user&#39;s inputs may be entered as voice commands which include numbers used to indicate the subregion and the sub-subregion. The subregions may be marked with arbitrary labels and the user may designate a subregion by saying one of the labels. The labels may include letters of the alphabet and could be, for example: ABC/DEF/GHI or  top left, top, top-right/left, center, right/bottom-left, bottom, bottom-right!. The user may also specify a distance for moving the element. The element may be moved to the center of the identified subregion. The system may recognize a user&#39;s input indicating that the previous step should be undone. 
     In general, in another aspect, the invention features dragging an element (e.g., any graphical element such as a cursor, an arrow, an icon, or a window) between two locations on a computer display. In the method, user commands are accepted which indicate the two locations. Then the element is dragged between them. The user commands which indicate at least one of the locations identify a sequence of discontinuous jumps for moving the element to the indicated location. 
     Other advantages and features will become apparent from the following description and from the claims. 
    
    
     DESCRIPTION 
     FIG. 1A is a front view of a personal computer. 
     FIG. 1B is a block diagram of a voice control system. 
     FIGS. 2 through 19 are views of screen displays including a mouse grid. 
     FIG. 20 is a flow diagram. 
    
    
     Voice control of cursor motion and dragging may be done by a &#34;divide-and-conquer&#34; strategy as shown in the sequence of FIGS. 3 through 9 and the flow diagram of FIG. 20. Instead of moving the cursor along a continuous path toward the target location, the cursor is quickly jumped discontinuously through a sequence of discrete positions that home in from its original location to the target location. 
     The user specifies the discrete positions along the sequence with the aid of a displayed mouse grid 40. The mouse grid 40 subdivides the screen or a portion of the screen into, e.g., nine equal-size subregions. The user indicates the next position for the cursor in the sequence of positions by voicing a command that identifies the subregion which contains the target location. The grid is then immediately scaled down to cover approximately in the identified subregion and the cursor is relocated to the center of that region. The process is repeated (with some modifications mentioned below) until the target (or a position sufficiently close to it) is reached. Nine was chosen as the number of subregions because a number which is the square of an odd integer allows the cursor to be initially placed in the center of the screen, which is comfortable to the user, and the next available number which is the square of an odd integer is twenty-five, which would be a cumbersome number of subregions. 
     For example, a user interacting with the screen in FIG. 2 may wish to move the cursor from the position shown to a target position 35 on the File Manager icon (step 60 of FIG. 20). The user first speaks the command &#34;mouse grid&#34;, which is recognized by the voice control system. This starts the mouse grid process as seen in steps 62 . . . 66. A small interface window 37 for the voice control system is continually displayed at the upper right hand corner of the screen 20 to inform the user of the state of the voice control system. 
     As seen in FIG. 3, as soon as the system recognizes the command, it displays a grid formed of a group of seventeen elements: four evenly spaced thin horizontal windows 42a . . . 42d; four evenly spaced thin vertical windows 44a . . . 44d; and nine small windows 46a . . . 46i, each centered in and bearing an index for the subregion which it occupies. The system also automatically places the cursor at the center of the center subregion (subregion 5), and then waits for the user&#39;s next voice command (steps 68 . . . 74). 
     The seventeen windows which form the grid are all defined to be &#34;on top&#34; of other windows so that the grid always remains visible. Also, because the windows making up the grid are thin or small, they permit the user to see the windows and other elements that lie &#34;below&#34; them. 
     While the grid of FIG. 3 is being displayed, the user speaks &#34;one&#34;, the index of the subregion which contains the target location. The system responds, as shown in FIG. 4, by displaying the recognized command  1! in the voice control system window; resizing and relocating the 17 windows of the grid so that the grid essentially occupies the subregion that the user identified by the voiced command; and moving the cursor to the center of the resized and relocated grid to wait for the user&#39;s next voice command (steps 76 . . . 86). In the resized grid shown in FIG. 4, the right hand thin vertical window and the bottom thin horizontal window are relocated a few pixels to the right and beneath, respectively, the original subregion 1 of FIG. 3. This ensures that a target location which is under window 44b or window 42b (in FIG. 3) will be exposed to view in FIG. 4. 
     The process is repeated when the user speaks &#34;seven&#34; to indicate the subregion where the file manager icon is displayed. As shown in FIG. 5 (step 88), the grid is again resized and relocated in a similar manner and the cursor is relocated to the center of the center subregion of the new grid. Unlike the larger grids, however, the subregion indices are now shown outside the grid to permit the user to see what is within the grid. The label for the center subregion is omitted, as are any labels that would be outside the border of the screen 20. 
     After the user speaks &#34;six&#34;, the grid is again redrawn, this time as shown in FIG. 6. The cursor is now positioned to permit the file manager program to be invoked. This could be done by the user speaking an execution command such as &#34;button double click&#34;. Thus, by speaking the simple sequence &#34;mouse grid&#34;, &#34;1&#34;, &#34;7&#34;, &#34;6&#34;, the user moved the cursor to the target location quickly. 
     If desired, the cursor location may be controlled even more finely. Beginning in FIG. 7, if the user speaks &#34;six&#34;, the grid is reconfigured, as shown in FIG. 8. If the entire smaller grid were redrawn, much of the image within the grid would be obscured by the grid elements. Instead, subregion 6 from the prior screen is redrawn as a single box but without the further subdivisions within the box being shown. By again speaking &#34;six&#34; the user can cause the system to display a smaller box which is representative of, though larger than, the undisplayed subregion 6 within the box shown on FIG. 8. 
     The process is repeated (FIG. 9) until the cursor reaches the target location. When the grid becomes too small to conveniently undergo further shrinking, it continues to be displayed without further shrinking as a reminder to the user that the system is in mouse grid mode. Spoken voice commands then move the cursor a set number of pixels in the indicated direction, such as three pixels up, down, left or right, e.g., if the user said &#34;six&#34; the cursor would move three pixels to the right. 
     When the cursor is at the target location, the user may speak a command to remove the mouse grid 40, e.g., &#34;stop&#34;, or to take any other action that is permissible, e.g., a mouse click, (steps 90 . . . 98). Or the user may take the action directly by a keystroke or by actually clicking the mouse button. 
     In another approach, when a subregion is chosen by a user, the portion of the displayed image which is within the subregion may be enlarged to fill the whole screen with the grid superimposed on it. This feature could be made available as a toggled alternative display mode. 
     As an additional feature, the user may reverse the steps that caused resizing of the grid, for example, to correct a mistake in the sequence. The spoken command to achieve this could be the word &#34;undo&#34;. For example, if the user speaks &#34;undo&#34; while viewing FIG. 6, the grid would return to its state shown in FIG. 5. Multiple &#34;undo&#34; steps could be permitted. 
     Instead of applying the grid to the full screen, it may be applied to only a selected (e.g., the active) window, by speaking the phrase &#34;mouse grid on window&#34;, as seen in FIG. 10. Subsequent grids, as shown in FIGS. 11, 12, and 13 will be redrawn within subregions within the window. 
     The cursor movement procedure may also form the basis for dragging the cursor. First the user applies the Mouse Grid function to move the cursor to the object to be dragged (e.g., the File Manager icon in FIG. 13). Next the user would speak a phrase such as &#34;mark here&#34;, as shown in FIG. 14, to indicate that the place from which the dragging is to occur is the present cursor location. (Or the user could use the mouse to move the cursor to the location that is to be the subject of the &#34;mark here&#34; command.) The file manager title is then highlighted to confirm the action to the user. Although it would be possible for the &#34;mark here&#34; command to actually execute a button click to select the file manager, in one implementation that is not done and the button click must be commanded separately. However the mouse grid would vanish after the &#34;mark here&#34; command. 
     The user then uses the mouse grid (or the mouse itself, if desired)again to mark the location at which the dragging is to end, the destination, as seen in FIGS. 15 and 16. Finally the user speaks a voice command, e.g., &#34;drag to here&#34;, telling the computer to execute the dragging action, as shown in FIG. 17. The result is the dragging action shown in the sequence of FIGS. 17 through 19. The activity of dragging is discontinuous from the point of view of the user (i.e., he or she gives a single command, &#34;drag to here&#34;). But the display shows a continuous motion of the element from its old location to the new one. 
     Referring again to FIG. 1B, the recognition engine provides recognized speech commands to a mouse grid process 21. When the recognized speech command is one handled by the mouse grid process, it provides corresponding instructions to the operating system (including Windows) to cause the commanded actions to occur. 
     A pseudo-code description of one possible implementation of the mouse grid process, suitable for use with DragonDictate, is set forth in Appendix A, and additional explanation is included in Appendix B. 
     Other embodiments are within the scope of the following claims.