A significant number of computers (e.g., personal computers, tablet computers, personal digital assistants (“PDAs”), cellular telephones, and the like) employ a graphical user interface (hereinafter “GUI”) to interact with users. Those skilled in the art will recognize that a GUI is an input/output (“I/O”) system characterized by the use of graphics on a computer display to communicate with a computer user. In some types of computers, the user employs an indirect input device, such as a mouse or trackball to manipulate and relocate a pointer on the computer display and generate commands. In other types of computers, a user employs a direct input device, such as a handheld pen, stylus, and the like, to directly interact with the computer display. In either instance, the user may activate the pointer at a designated position on the computer display to generate a pointer selection event using the input device. For example, a computer user with an indirect input device typically “double-clicks” a button on the input device to generate a pointer selection event. Similarly, a computer user with a direct input device may generate a pointer selection event, for example, by “double tapping” on the computer display. In either instance, the pointer selection event typically issues a command that requires the computer to perform an action. Accordingly, a user does not need to have knowledge of keyboard typing to provide input to the computer.
A GUI generally presents graphical display elements (hereinafter “GUI objects”) as two-dimensional images composed of pixels on a computer display. The pointer is a GUI object that is presented as overlaying all other GUI objects. One coordinate on a pointer is a “hot spot” that identifies a specific location (i.e., coordinate position on the computer display) where a pointer selection event may be generated. However, in order for a pointer selection event to occur, the pointer's “hot spot” must be located on a target. A computer operating system or program may be configured to display multiple targets on a computer display. For example, GUI objects commonly known as icons are typically displayed by an operating system on a computer “desktop.” When the pointer acquires an icon and a pointer selection event is generated, execution of a computer program that is represented by the icon is initiated. Moreover, a computer program may also display targets to a user. For example, resize handles are targets that allow users to change the size of a Window by causing a pointer selection event to occur on the resize handle. When a pointer selection event occurs while the “hot spot” of the pointer is on the resize handle, the area occupied by the window is changed.
Positioning the “hot spot” of a pointer over a desired target, such as a resize handle, is often difficult to accomplish, leading to frustration and lowered productivity. In some instances, users with diminished visual or physical abilities, or lack of training have difficulty in positioning a pointer. In other instances, pointer positioning difficulty may be attributable to the computer. For example, a computer display may provide a high-density presentation of material, rendering targets relatively small and making precise pointer positioning difficult.
An inability to place the hot spot of a pointer on a specific target creates problems because the desired function may not easily be performed. Instead, the user may need to repetitively readjust a pointer to perform the desired function. Thus, acquisition aids have been developed to assist users in acquiring a target with the pointer. For example, a description of one type of target acquisition aid is provided in commonly assigned, co-pending U.S. patent application Ser. No. 10/829,127 entitled “System and Method for Acquiring a Target With Intelligent Pointer Movement.” In this example, the motor space allocated to a target is enlarged so that a proportionally larger amount of movement from an input device is required to move the pointer across the target. As a result, from the user's perspective, a target feels “sticky” in that removing the pointer from the target will not occur when small and/or inadvertent input device movement occurs. However, this type of acquisition aid is most appropriate when a computer employs an indirect input device, such as a mouse or a trackball to relocate the pointer.
Enlarging the motor space of a target when a computer employs a direct input device may have effects that would not be expected by the user. For example, if a direct input device encountered an enlarged motor space target, the location where the input device contacts the computer display would separate from the location where the pointer is represented. Since a direct correlation generally exists between a direct input device and a pointer, this type of disconnection may not be expected by a user. Moreover, as a result of the disconnection between input device and pointer movement, the user would be unable to use the input device to move the pointer to every location on the computer display. Instead, at least some area of the computer display would become inaccessible.
While specific disadvantages of existing systems have been illustrated and described in this Background Section, those skilled in the art and others will recognize that the subject matter claimed herein is not limited to any specific implementation for solving any or all of the described disadvantages.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The foregoing problems discussed in the Background Section above are overcome by the present invention, embodiments of which are directed at making a computer easier to use. More specifically, in one embodiment, a method is provided that facilitates the acquisition of a target with a pointer. In this regard, the method alters normal pointer movement, when the pointer is scheduled to intersect an adjustment barrier associated with a target. The pointer movement is altered at the adjustment barrier to assist the user in keeping the pointer located on the target. Moreover, while the pointer is located on the target, the user may cause a pointer selection event to occur for the purpose of issuing a command. Alternatively, the user may generate input for the purpose of “breaking free” from a location where pointer movement is adjusted. In this regard, if the projected movement of the pointer exceeds a predetermined threshold distance from the location where the pointer intersected the adjustment barrier, pointer movement is no longer altered by aspects of the present invention.
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
The present invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally described, program modules include routines, programs, objects, components, data structures, and the like that perform particular tasks or implement particular abstract data types. The present invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located on local and/or remote computer storage media.
Generally described, a method, software system, and computer-readable medium are provided for facilitating the acquisition of a target with a pointer. In one aspect, the present invention is directed to various methods for facilitating and/or maintaining the acquisition of a target with a pointer by adjusting pointer movement. In this regard, when an input device movement event is identified, a determination is made regarding whether the projected movement of the pointer intersects an adjustment barrier associated with a target. If an adjustment barrier is scheduled to be intersected, pointer movement is adjusted so that the pointer is displayed on an adjustment barrier. Moreover, while the projected movement of the pointer remains within a predetermined distance from the adjustment barrier, pointer movement continues to be adjusted so that acquisition of the target with the pointer is easy to maintain.
As known to those skilled in the art and others, a pointer is a GUI object that is displayed to a user as any one of a number of pictorial depictions. Generally described, aspects of the present invention may be implemented using any type of GUI object for a pointer that is capable of identifying a “hot spot” on a computer display. In accordance with one embodiment, pointer movement is adjusted to help users acquire a target with a pointer. A target as used herein may be any graphical object that is displayed to a user including, but not limited to, icons, resize handles, menu items, or any other pictorial depiction that has meaning in a computing environment. The following description first provides an overview of a system in which the present invention may be implemented. Then a method that adjusts pointer movement when input causes the pointer to intersect one or more adjustment barriers, which is illustrated in accompanying diagrams, is described. The illustrative examples described herein are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Similarly, any steps described herein may be interchangeable with other steps, or several combinations of steps, in order to achieve the same result.
Now with reference to
The operating system 104 illustrated in
The computer 100 illustrated in
As further illustrated in
As will be better understood from the description provided below with reference to
When software formed in accordance with the invention is implemented in a computer, for example of the type illustrated in
For illustrative purposes, a representative section of computer display 200 that may be used to illustrate aspects of the present invention is depicted in
Generally described, when the pointer 220 intersects an adjustment barrier, a user may cause one of among several actions to be performed. For example, a user may (1) cause an input device selection event to occur; (2) generate input device movement that reverses the direction of the pointer back to an area of the computer display 200 where the adjustment barrier was intersected; or (3) generate input device movement that causes the pointer to pass through an area of the computer display 200 where pointer movement is adjusted. In instances when an input device selection event occurs, a command is input into the computer that is satisfied by existing systems. Moreover, if input device movement is generated that returns the pointer to an area of the computer display 200 where the adjustment barrier was intersected, the correlation between pointer and input device movement returns to normal unaffected by aspects of the present invention.
In instances when the user generates input device movement that causes the pointer to pass through a location where pointer movement is adjusted, aspects of the present invention cause the pointer to “jump” to the pointer's projected location. In the context of
From the user's perspective, when the pointer intersects a location where pointer movement is adjusted by aspects of the present invention, a temporary disconnection occurs between input device movement and pointer movement. The temporary disconnection allows the user to maintain acquisition of a target. However, if the user does not want to maintain acquisition of the target, the temporary disconnection between pointer and input device movement may be easily overcome. For example, when the projected movement of the pointer proceeds a predetermined threshold distance beyond an adjustment barrier, the pointer rapidly moves from the location where the pointer is currently being displayed. Thus, an adjustment barrier serves as an acquisition aid that does not enlarge the motor space of a target. As a result, in one embodiment, a user of a computer that employs a direct input device may easily acquire a target without causing a persistent disconnection between input device and pointer movement.
Now with reference to
As mentioned previously, the computer display 200 illustrated in
With reference now to
Now with reference to
In order to assist users in aligning the control button 402 at the value represented by the scale indicator 406, movement of the pointer 408 may be adjusted by aspects of the present invention. For example, the value on the slider 400 represented by the scale indicator 406 may be designated as an adjustment barrier. As a result, when the control button 402 is “dragged” across this adjustment barrier with the pointer 408, the control button 402 continues to be displayed at the value represented by the scale indicator 406 even though input may be generated that would normally cause the control button 402 to continue moving along the slider 400. Designating a location as an adjustment barrier allows users to easily position the control button 402 at a specified value on the slider 400. However, if the user generates input device movement that would normally cause the control button 402 to move beyond a predetermined distance from the adjustment barrier, aspects of the present invention allow the control button 402 to “break free” from the adjustment barrier and be displayed at a location beyond the adjustment barrier.
Now with reference to
In order to assist users in aligning the GUI object 500 below the previously stacked GUI objects 502, 504, and 506, movement of the pointer 508 may be altered by aspects of the present invention. For example, the connection point 510 may be designated as a location that maintains both a vertical and horizontal adjustment barriers. As a result, when the GUI object 500 is “dragged” into an aligned coordinate position, a temporary disconnection occurs between input device and pointer movement. The temporary disconnection allows the user to keep the GUI object 500 located at an aligned coordinate position.
While specific applications of the present invention have been described with reference to
Now with reference to
As illustrated in
At decision block 601, the adjustment routine 106 determines whether a GUI object is currently selected so that the GUI object is being “dragged” by the pointer. As mentioned previously, users frequently align GUI objects by implementing a “click and drag” technique where a single pointer event such as a button click selects the GUI object. Once the GUI object is selected, the pointer moves the GUI object to a new location where a second pointer event places the GUI object. In any event, aspects of the present invention may be used either when the pointer is “dragging” a GUI object or in instances when a GUI object is not selected. Since each GUI object has characteristics that determine whether the GUI object is at an aligned coordinate position in relation to an adjustment barrier, identifying when a pointer is located so that a GUI object is at an aligned coordinate position varies depending on the characteristics of the GUI object. Also, determining whether the GUI object is at an aligned coordinate position depends on the pointer's position on the selected GUI object. Thus, a current and projected position of the pointer that accounts for an appropriate offset is calculated when a GUI object is selected. A current and projected position of the pointer that accounts for an appropriate offset allows the adjustment routine 106 to determine whether a GUI object is placed at an aligned coordinate position in relation to an adjustment barrier. In any event, if a GUI object is currently selected, the adjustment routine 106 proceeds to block 602. Conversely, if a GUI object is not currently selected, the adjustment routine 106 proceeds to block 603, described in further detail below.
At block 602, a current and projected location of the pointer that accounts for an appropriate offset is calculated. If block 602 is reached, a GUI object is currently selected by the pointer. As described in further detail below, when a GUI object is not selected, a projected path of the pointer is identified by aspects of the adjustment routine 106 based on the current and projected position of the pointer that was received from the operating system at block 600. However, when a GUI object is selected, an adjusted path of the pointer is identified based on an adjusted current and projected location of the pointer that accounts for an appropriate offset caused by the selection of the GUI object.
At block 603, the projected path that the pointer is scheduled to be moved on the computer display is identified. In instances when a GUI object is not currently selected, the current and projected coordinate positions where the “hot spot” of the pointer is displayed before and after the input device movement event generated at block 600 are used to identify the projected path of the pointer, at block 603. As mentioned previously with reference to block 600, an operating system may be configured to communicate data to the adjustment routine 106 when an input device movement event occurs. In instances when a GUI object is selected, the current and projected coordinate positions of the pointer that accounts for the selected GUI object, calculated at block 602, is used to identify the projected path of the pointer.
As illustrated in
At block 606, the pointer is “marked” as scheduled to be displayed on the adjustment barrier that was intersected last. Aspects of the present invention maintain a data item that identifies whether a pointer movement is currently being adjusted as a result of intersecting an adjustment barrier or, conversely, whether the pointer is being displayed at a location that corresponds to the input generated by the input device. If block 606 is reached, the pointer is scheduled to intersect one or more adjustment barriers. In this instance, at block 606, the adjustment routine 106 sets the value of this data item to reflect that the pointer will intersect a barrier and is currently scheduled to be displayed on the barrier. If the pointer will only intersect one adjustment barrier, then the pointer is “marked” as scheduled to be displayed on the only adjustment barrier that will be intersected. On the other hand, if the pointer will intersect multiple adjustment barriers, than the data item is set to indicate that the pointer is currently scheduled to be displayed on the adjustment barrier that was intersected last.
At block 608, the adjustment routine 106 determines whether the input device movement event identified at block 600 would cause the projected movement of the pointer to re-intersect a previously intersected adjustment barrier. If block 608 is reached, the pointer may be displayed at an adjusted coordinate position that is on an adjustment barrier. In this instance, the user may cause one of a number of different actions to occur. For example, the user may (1) generate an input device selection event; (2) generate input device movement that reverses the direction of the pointer back to an area of the computer display where the adjustment barrier was intersected; or (3) generate input device movement that causes the pointer to pass through a threshold distance of the computer display where pointer movement is adjusted. In instances when the user generates an input device movement event that does not affect pointer movement (i.e., a pointer selection event), previously realized systems handle the event. However, in instances when a input device movement event is identified (at block 600), the adjustment routine 106 makes a determination, at block 608, regarding whether the event causes a pointer to re-intersect a previously intersected adjustment barrier.
In accordance with one aspect of the present invention, a data item is associated with each adjustment barrier that identifies the direction on the computer display in which the adjustment barrier is adjusting pointer movement. In this regard, an adjustment barrier will cause pointer movement to be adjusted in a direction that is opposite of the component direction in which the pointer intersected the adjustment barrier. For example, in the context of
At decision block 610, the adjustment routine 106 determines whether the pointer is currently “marked” as having intersected an adjustment barrier. As mentioned briefly above, the value of one or more data items may be set when the pointer is scheduled to intersect or has previously intersected an adjustment barrier as a result of a pointer movement event. For example, a data item is set or “marked,” at block 606, to indicate that the pointer is scheduled to intersect one ore more adjustment barriers as a result of a pointer movement event. In this instance when the pointer is scheduled to intersect one or more adjustment barriers or is currently being displayed on an adjustment barrier, the adjustment routine 106 proceeds to block 612. Conversely, if the value of the variable indicates that the location of the pointer is not being affected by an adjustment barrier, the adjustment routine 106 proceeds to block 616, described in further detail below.
As illustrated in
At block 614, the location where the pointer is scheduled to be displayed is set to equal the location of the adjustment barrier that was most recently intersected. If block 614 is reached, the pointer is “marked” as having intersected an adjustment barrier. Moreover, the input device movement event identified at block 600 will not cause the projected location of the pointer to either (1) move beyond the threshold distance from the adjustment barrier that was intersected last, or (2) to re-intersect an adjustment barrier where the pointer is currently being displayed. As a result, pointer movement will be adjusted by aspects of the present invention so that the pointer will be displayed on an adjustment barrier even though input device movement may have been generated that would normally cause the pointer to be displayed at a location that is beyond the adjustment barrier. In either instance, the location where the pointer will be displayed, in at least one component direction, is dictated by an adjustment barrier that was most recently intersected. As described previously with reference to
At block 616, the pointer is “marked” as being displayed at a position that corresponds to input received from an input device. As mentioned previously, aspects of the present invention maintain a data item that identifies whether a disconnection currently exists between input device movement and pointer movement. At block 616, the adjustment routine 106 sets the value of this data item to reflect that a disconnection does not currently exist in the location where the pointer will be displayed is dictated by the input device. Then, at block 618, the location where the pointer will be displayed is set to equal the projected location of the pointer that is dictated by an input device. If block 618 is reached, pointer movement will not be affected by an adjustment barrier. For example, an input device movement event may be identified that does not cause the pointer to intersect an adjustment barrier. Alternatively, the pointer may intersect one or more adjustment barriers and have a projected location that is beyond the threshold distance from the last adjustment barrier intersected. In either instance, the location where the pointer will be displayed, in at least one component direction, is dictated by the input device. As described previously with reference to
As mentioned previously, in accordance with one embodiment of the present invention, the adjustment routine 106 is executed twice in a two-dimensional environment for each input device movement event that occurs so that pointer movement may be adjusted in both the vertical and horizontal component directions that exist on a computer display. In some instances, the adjustment routine 106 may cause pointer movement to be adjusted in one component direction whereas, in another component direction, the location of the pointer is dictated by the input device. For example, the pointer may intersect a vertical adjustment barrier so that pointer movement is adjusted in the horizontal component direction. However, while the location of the pointer in the horizontal component direction is set to the adjustment barrier, in the vertical component direction the location of the pointer may be dictated by the input device in the vertical component direction. From a user's perspective, when the vertical adjustment barrier is intersected, the pointer is allowed to “slide” in the vertical component direction in accordance with input received from the input device.
While illustrative embodiments have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.