The present disclosure relates generally to input devices for processing systems, and more particularly, relates to cursor-directing devices, such as a computer mouse that is rotatable relative to a support surface.
As is well-known, a computer mouse is a hand-operated device typically used for navigating a cursor displayed on a computer screen for control of graphical user interfaces. The mouse functions by detecting translational, or two-dimensional motion along its support surface, and translating this motion into movement of the cursor. A conventional mouse usually includes at least one input or control button or an equivalent touch-sensitive location, but may commonly include multiple buttons or touch sensitive locations, and may include one or more scroll balls, and/or scroll wheels that provide additional input or control. It is believed that typical configuration of the mouse, although serviceable for input purposes, requires more complex motions, and therefore is a less intuitive experience for a user than is possible with other configurations and functionalities of the mouse.
Accordingly, embodiments of the invention provide new computer mice and methods for navigation with a mouse. These computer mice and navigation techniques offer particular advantages to navigate content displayed on a computer screen.
Example embodiments provide various computer mice and techniques for navigation with a computer mouse. In general, examples of the invention as described herein allow for additional movement of a mouse adapted to operate on a support surface. The examples are described herein primarily in the context of having a rotatable mouse situated on the support surface where a rotation of the mouse relative to a pivot point translates into a particular event.
As an example, such a mouse has a bottom surface with a convex shape. This convex shape allows the mouse to be rotatable on the support surface. This mouse includes a surface tracking sensor that detects translational movement of the mouse along the support surface. Additionally included are one or more orientation sensors that detect the rotational movement of the mouse.
A rotation of the mouse is used for moving content displayed on a processing system, such as a computer. As one example, a rotational movement of the mouse may translate into a scroll event that, when processed by the processing system, scrolls the displayed content. In another example, a rotational movement of the mouse may translate into a yaw event that, when processed by the processing system, rotates the displayed content.
The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
The description that follows includes illustrative systems, methods, techniques, instruction sequences, and computing machine program products that embody the present invention. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures and techniques have not been shown in detail.
The rounded bottom eases the mouse 102 to be moved relative to the pivot point 106 in the form of a rotational movement. As used herein, it should be noted that the concepts of “movement relative to a pivot point 106” and “rotational movement” may be used interchangeably. The mouse 102 may rotate around one or more axes, such as X longitudinal axis 181, Y lateral axis 182, and/or Z vertical axis 183 relative to pivot point 106. The X longitudinal axis 181 is an axis that passes through the mouse 192 from its front end to its back end. The following terminology is used herein, where a rotation of the mouse 102 around the X longitudinal axis 181 is a “roll.” The mouse 102 may also rotate around the Y lateral axis 182, which is an axis that passes from its left side to its right side. A rotation of the mouse 102 around the Y lateral axis 183 is a “pitch.” The Z vertical axis 183 is an axis that is perpendicular to both the X longitudinal axis 181 and the Y lateral axis 182. Rotation of the mouse 102 around the Z vertical axis 183 is a “yaw.”
The bottom surface of the mouse 102 may have a variety of different convex shapes.
The surface tracking sensor 404 is configured to detect movement of the mouse 102 along a support surface. An example of such a surface tracking sensor 404 is an optical sensor 456. The optical sensor 456 detects features of the support surface by, for example, taking images of the support surface. The optical sensor 456 includes a light source, such as a light-emitting diode (LED) or a laser diode, that illuminates the support surface. As explained in more detail below, movement of the mouse 102 along the support surface may be derived from the detected features. Another example of a surface tracking sensor 404 is a trackball mechanism. The trackball mechanism includes a ball retained within a casing such that the ball can rotate in any direction, in response to movement of the mouse 102 along the support surface. Two rollers included within the ball mechanism roll against the ball to generate electrical signals from which two-dimensional coordinates may be derived.
An orientation sensor, such as one of the orientation sensors 402 depicted in
In the embodiment depicted in
Another example of such an orientation sensor 402 is an accelerometer 454 used for measuring acceleration. For example, the accelerometer 454 can measure the acceleration resulting from a rotation of the mouse 102 and, as explained in more detail below, also the direction of gravity. The velocity and rotational position (or orientation) of the mouse 102 may be derived from the measured acceleration. It should be appreciated that the accelerometer 454 may include, for example, a piezoelectric accelerometer, a piccolo accelerometer, a magnetic induction accelerometer or a laser accelerometer in the form of MEMS device. The accelerometer 454 may be configured to measure acceleration along one axis (e.g., X longitudinal axis, Y lateral axis or Z vertical axis), along dual axes, or along all three axes.
However, in the example embodiment depicted in
To correct for the uneven support surface, the accelerometer 454 can be used to detect the direction of gravity, which can be expressed as a vector. As a result, when the gyroscopes 450 and 452 are calibrated, the accelerometer 454 can detect that the mouse 102 is slightly rotated. The gyroscopes 450 and 452 may therefore be calibrated in reference to the direction of gravity. For example, a gravity vector may be detected by the accelerometer 454 during calibration of the gyroscopes 450 and 452. After calibration, the controller 406 may subtract the gravity vector from or add the gravity vector to angular displacements detected by the gyroscopes 450 and 452 in order to compensate for the slight rotation detected by the accelerometer 454.
It should be appreciated that the calibration of the mouse 102 may be manually or automatically triggered. To calibrate the mouse 102, the mouse 102 needs to be stationary. This stationary position of the mouse 102 is used as a reference point to calculate or identify relative movement. In automatic calibration, the mouse 102 can detect that it is stationary by referencing the accelerometer 454. In this example embodiment, the accelerometer 454 can be configured to also detect acceleration along a direction parallel to the support surface. That is, the accelerometer 454 can detect acceleration of the mouse 102 along the support surface. The controller 406 may be configured to calibrate the gyroscopes 450 and 452 in reference to this detected acceleration along the support surface. As an example, if the accelerometer 454 does not detect acceleration along the support surface, then the mouse 102 is most likely to be in a stationary state. There is a possibility that the mouse 102 may be moving at a constant rate or velocity, but such movement is rare. Alternatively, the mouse 102 can also detect that it is stationary by referencing the surface tracking sensor 404. If the surface tracking sensor 404 does not detect movement of the mouse 102 along a support surface, then the mouse 102 is in a stationary state. As a result, in automatic calibration, the controller 406 may automatically calibrate the gyroscopes 450 and 452 when the accelerometer 454 does not detect acceleration along the support surface or when the surface tracking sensor 404 does not detect movement along the support surface.
The accelerometer 454 may also be used in manual calibration of the gyroscopes 450 and 452. For example, a user may manually instruct the mouse 102 to calibrate itself. With the receipt of the calibration request, the controller 406 analyzes the signals from the accelerometer 454 to identify whether the accelerometer 454 detects movement of the mouse 102 along the support surface. If the accelerometer 454 does not detect acceleration, then the controller 406 initiates a calibration operation of the gyroscopes 450 and 452. On the other hand, if the accelerometer 454 detects acceleration along the support surface, then the mouse 102 is not stationary and therefore, the controller 406 overrides the instructions from the user and does not initiate a calibration operation.
It should be appreciated the accelerometer 454 may also detect movement of the mouse 102 along the support surface. Such movement may be calculated by integrating the acceleration of the mouse 102. However, in this example embodiment, the accelerometer 454 is not used to detect such movement along the support surface because the optical sensor 456 is generally more accurate in detecting such movements.
The controller 406 is a circuit configured to process electrical signals from the orientation sensors 402 and surface tracking sensor 404. An example of the controller 406 includes a microprocessor within which a set of instructions, for causing the machine to process the electrical signals, may be executed. Another example of the controller 406 is an application-specific integrated circuit (ASIC). The controller 406 is configured to process input signals from the surface tracking sensor 404 and the orientation sensors 402, which may include translating the input signals from the surface tracking sensor 404 into two-dimensional coordinates. A two-dimensional coordinate defines a position of the mouse 102 along the support surface. The two-dimensional coordinate includes at least one value that defines a position of the mouse 102 along the X longitudinal axis and at least one other value that defines the position along the Y lateral axis. The values may define the position of the mouse 102 relative to the last known position or relative to a pre-defined reference point. The range of values depends on the accuracy or resolution of the surface tracking sensor 456. For example, a value that defines a position of the mouse 102 along the X longitudinal axis may range from −128 to +127, where a negative value defines a left direction while a positive value defines a right direction. Surface tracking sensor 456 with higher accuracies result in a larger range of values available for the two-dimensional coordinate. It should be appreciated that the translation of input signals into a two-dimensional coordinate may include a variety of well-known processing techniques, such as filtering and integrating the input signals from the surface tracking sensor 456.
Processing may also include the translation of input signals from the orientation sensors 402 into magnitudes of rotation. A “magnitude of rotation,” as used herein, refers to an amount of rotational movement of the mouse 102 that may be expressed as degrees, a one byte value having 256 levels of resolution or other values. As an example, the magnitude of rotation that defines a rotation of the mouse 102 may also range from −128 to +127, where a negative value defines a clockwise rotation while a positive value defines a counterclockwise rotation. The range of values also depends on the resolution of the surface tracking sensor 456. It should also be appreciated that the translation of input signals into magnitudes of rotation may include a variety of well-known processing techniques, such as filtering and integrating the input signals from the orientation sensors 402.
Still referring to
It should be noted that, in another example embodiment, the mouse 102 may not include the controller 406 for processing the input signals from the orientation sensors 402 and the surface tracking sensor 404. Instead, the input signals are directly transmitted to a processing system (not shown) having another controller (e.g., central processing unit (CPU)) that can process the input signals.
As discussed above, the optical sensor 456 detects features of the support surface 104 by, for example, taking images of the support surface 104. In addition to identifying a movement of the mouse 102 along the support surface 104 based on the features, the controller 406 can also calibrate the gyroscope 504 in reference to such features. As discussed above, the mouse 102 needs to be stationary during calibration of the gyroscope 504. In an example embodiment, the mouse 102 can detect that it is stationary by referencing the features of the support surface 104. Here, the controller 406 can be configured to identify a quality of the support surface 104 (or SQUAL) from the features. The controller 406 may calculate a value that defines the quality. For example, the quality of the support surface may be a number of features that are found in the image captured by the optical sensor 456. A high quality means that features of the support surface 104 are highly identifiable. On the other hand, a low quality means that features of the support surface 104 are not easily identified. The quality of the support surface is dependent on a variety of factors, such as the type of support surface 104, color of the support surface 104, and distance of the mouse 102 from the support surface 104.
The mouse 102 may check the quality of the support surface 104 while in calibration mode. As an example, if the quality exceeds a particular threshold, then the gyroscope 504 can be calibrated. On the other hand, if the quality falls below this particular threshold, then the gyroscope 504 cannot be calibrated. For example, if the mouse 102 is lifted from the support surface 104, then the quality may be low because features of the support surface 104 cannot be detected at a far distance. A low quality may therefore identify that the mouse 102 is lifted and not stationary. The gyroscope 504 may not be calibrated when the quality of the support surface 104 is low or falls below a particular threshold. If the mouse 102 is resting on or in contact with the support surface 104, then the quality may be high because features of the support surface 104 are more easily detectable at a close distance. To be stationary, the mouse 104 needs to be resting on the support surface 104. The gyroscope may therefore be calibrated when the quality of the support surface 104 is high or exceeds this particular threshold. By examining the acceleration along the support surface 104 detected by the accelerometer 454, as discussed above, and examining the quality of the support surface 104, the controller 406 can more accurately identify that the mouse 102 is stationary in order to initiate a calibration operation.
At the same time, one or more orientation sensors detect movement relative to a pivot point at 604. Such a rotational movement is then translated into a magnitude of rotation at 608, which is discussed above. The magnitude of rotation is then transmitted in the form of a control signal to a processing system at 610.
In the context of translating the two-dimensional coordinate into a movement event, for example, the movement event includes move up, move down, move right or move left. It should be appreciated that the translation process may include a variety of operations on the two-dimensional coordinate, such as filtering the two-dimensional coordinate, calculating an average of a series of two-dimensional coordinates, integrating the two-dimensional coordinate, and other operations. In an example, a one bit value assigned to a movement event may identify the occurrence of a movement event. For example, when the mouse is moved to the right, the two dimensional coordinate may be translated into a one bit value, and this one bit value is transmitted in a packet, along with an HID header that identifies the one bit value to correspond with a move right command, to a processing system in communication with the mouse at 720. The processing system receives the packet, maps the packet to a move right command, and may then move a cursor or a displayed content to the right in pre-defined increments. It should be noted that the displayed content can include any suitable content rendered by a computer or processing system. Examples of displayed content include graphical user interface (GUI), images, documents, and videos.
The frequency of transmission of the movement event may correspond to a velocity and/or acceleration of the mouse. For example, a large number of movement events may be transmitted to the processing system within a time period when the mouse is moving at a high velocity. Conversely, a low number of movement events may be transmitted to the processing system within the same time period when the mouse is moving at a low velocity.
At the same time, one or more orientation sensors are detecting movement of the mouse relative to a pivot point at 710. Such a rotational movement is then translated into a magnitude of rotation at 712, which is discussed above. Instead of directly transmitting this magnitude of rotation to the processing system, the magnitude of rotation may be further translated into a scroll event or a yaw event. A scroll event is an input that maps to a command that, when processed by a processing system, translates the input into a scroll of displayed content along a horizontal direction or a vertical direction. As depicted in
It should be appreciated that translation of the magnitude of rotation into events may also include a variety of operations such as, for example, comparing the magnitude of rotation to a pre-defined threshold value. If the magnitude of rotation exceeds this threshold value, then a scroll event or a yaw event is generated. A one bit value, for example, may also represent the occurrence of a scroll event or a yaw event. As an example, when the mouse is rolled in a clockwise direction, the magnitude of rotation may be translated into a one bit value and this one bit value is transmitted in a packet, along with an HID header that identifies the one bit value to correspond with a scroll right command, to a processing system in communication with the mouse at 720. The processing system that receives the packet and may then scroll displayed content to the right in pre-defined increments, which is described in more detail below. The frequency of transmission of the scroll event or yaw event may correspond to the rate of rotation of the mouse. For example, a large number of movement events may be transmitted to the processing system within a time period when the mouse is rotated as a quick rate. On the other hand, a low number of movement events may be transmitted to the processing system within the same time period when the mouse is rotated at a low rate.
In an alternate example embodiment, the processing system may further translate the two-dimensional coordinate into a movement event at 804 and translate the magnitude of rotation into either a scroll event or a yaw event at 806, the translation processes being described above. In effect, instead of the mouse doing the translation processing, the processing system is configured to process the two-dimensional coordinate and magnitude of rotation into events, which may be used by the processing system to move displayed content.
In the diagram depicted in
In the example of
Example processing system 1000 includes processor 1002 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), main system memory 1004 and static memory 1006, which communicate with each other via bus 1008. The processing system 1000 may further include video display unit 1010 (e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)). The processing system 1000 also includes optical media drive 1004, user interface (UI) navigation device 1014 (e.g., a mouse), disk drive unit 1016, signal generation device 1018 (e.g., a speaker) and network interface device 1020.
The disk drive unit 1016 includes machine-readable medium 1022 on which is stored one or more sets of instructions and data structures (e.g., software 1024) embodying or utilized by any one or more of the methodologies or functions described herein. Software 1024 may also reside, completely or at least partially, within main system memory 1004 and/or within processor 1002 during execution thereof by processing system 1000, with main system memory 1004 and processor 1002 also constituting machine-readable, tangible media. Software 1024 may further be transmitted or received over network 1026 via network interface device 1020 utilizing any one of a number of well-known transfer protocols (e.g., Hypertext Transfer Protocol (HTTP)).
While machine-readable medium 1022 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches) that store the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present application, or that is capable of storing, encoding or carrying data structures utilized by or associated with such a set of instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media, and carrier wave signals.
While the invention(s) is (are) described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the invention(s) is not limited to them. In general, techniques for mouse navigation may be implemented with facilities consistent with any hardware system or hardware systems defined herein. Many variations, modifications, additions, and improvements are possible.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the invention(s).