Many computers include one or more input devices. An input device may allow a user of the computer, such as a person or another computer, to provide information to the computer. An input device may be, for example, a keyboard, a mouse, a touch screen, a microphone, a digital camera, a network interface, a radio receiver, a Universal Serial Bus (USB) port, or any other device known in the art or suitable for providing information to a computer.
An input device may accept information provided in one or more modalities, such as an audible modality, a visible modality, or a tactile modality. For example, a microphone may accept audio input (in the form of, e.g., speech), while a keyboard may accept tactile input (in the form of, e.g., keystrokes). An input device may provide information to the computer in the same modality the information was received, or translate the information to another modality. For example, a microphone may accept audio input from a user and provide audio input to a computer. By contrast, a keyboard may accept tactile input from a user and provide text-based input to the computer.
Many computers include one or more output devices. An output device may allow a computer to provide information to a user of the computer. An output device may be, for example, a display screen, a speaker, a network interface, a radio transmitter, a USB port, or any other device known in the art our suitable for outputting information from a computer.
Many computing devices, including mobile devices such as tablets and smart phones, receive input through a “touch screen.” A touch screen functions as an output device that displays content, such as content provided by an operating system or application executing on the computing device. A touch screen also functions as an input device that allows a user to provide inputs to the computing device by touching the screen. The inputs may represent commands to an operating system or an application. Some of the commands may provide content to be displayed, or may direct the computer to alter the display in some way. In this manner, a touch screen enables a user to interact with displayed content via touch.
Components associated with a touch screen may be configured to recognize different types of touches, which may be characterized by different patterns of contact with the touch screen. Different types of touches may be distinguished based on the number of simultaneous contact points, the trajectory of a motion associated with a contact point, and/or the duration of contact associated with a contact point.
Some touches may be characterized by contact instruments, such as fingers, maintaining multiple, simultaneous points of contact with the touch screen. For example, a “pinch” is a touch wherein, after two points of contact are established, a subsequent motion (such as movement of the fingers toward each other) decreases the distance between the contact points. A pinch may correspond to a command to reduce a magnification of the displayed content.
By contrast, some touches may be characterized by a finger maintaining a single point of contact with the touch screen. For example, a “tap” is a brief touch comprising an initial contact between the finger and the touch screen followed by loss of contact before a threshold time period has elapsed, without substantial intervening motion. A “press” is akin to a tap, but with contact of longer duration. A “swipe” is a touch comprising an initial contact between the finger and the touch screen and a subsequent motion of the contact point across the touch screen. A swipe may correspond to a command to pan the content displayed on the touch screen.
Multiple hardware, firmware, and software components may participate in the processing associated with the operation of a touch screen. For example, a touch sensing unit implemented in hardware or firmware may detect touch inputs, generate touch data describing the touch inputs, and transmit the touch data to low-level software controlled by the operating system, such as a touch screen driver. The low-level software may perform additional processing of the touch data, such as noise filtering, before passing the processed touch data to a higher-level software module, such as an application. Eventually, the touch data may be used by a display controller to alter the display of content on the touch screen.
The processing performed by components of a computing device may not be instantaneous. Rather, a period of time may elapse between initiation of the processing (e.g., provision of inputs to the component) and completion of the processing (e.g., provision of outputs by the component). This processing period may generally be referred to as a “latency” of the component or a “lag” associated with the component. Each component that participates in the processing associated with the operation of a touch screen may contribute to the touch screen's lag.
While a touch screen's lag may not always be perceivable to the touch screen's user, FIG. 1 illustrates a scenario in which the touch screen's lag is perceivable to a user who is manipulating the content displayed on the touch screen via touch. FIG. 1A illustrates a tablet computing device 100 equipped with a touch screen 102, which is displaying a table hockey game. The displayed portion of the table hockey game includes a puck 104, a bumper 106, and a goal 108. In FIG. 1B, the puck is moving toward the goal 108, and the user is touching the bumper 106 with the user's right index finger 110.
In FIG. 1C, the puck has moved closer to the goal and is continuing on a path toward the goal. The user is moving his finger along a path from the bumper's initial position to a position between the puck and the goal. This movement corresponds to a command to the table hockey game to move the bumper along the path traced by the user's finger. However, due to a lag associated with the touch screen, the position of the bumper is lagging behind the position of the user's finger. Thus, when the user's finger arrives at a point between the puck and the goal, the bumper is still moving toward that point. FIG. 1D illustrates the same movement of the user's finger on a touch screen with no perceivable lag.
As FIGS. 1A-1D illustrate, when touch is used to manipulate the position of an object displayed on a touch screen, the touch screen's lag may manifest itself as an undesired separation between the user's finger and the manipulated object. Though, a touch screen's lag may manifest itself in other ways or during other types of touches.