Capacitive sensor latency compensation
By combining self-capacitance and mutual capacitance scanning technologies, touch position movement is identified and adjusted to compensate for latency, solving the problem of inaccurate user input caused by latency of capacitive sensors in computing devices, improving responsiveness and reducing system costs.
Patent Information
- Application Number
- CN201980093523.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2019-10-16
- Publication Date
- 2026-01-02
- Estimated Expiration
- 2039-10-16
AI Technical Summary
In computing devices, the latency of capacitive sensors causes a time delay between user input and system response, affecting user experience and the accuracy of human-computer interaction. Especially during rapid dynamic input, existing technologies are unable to effectively compensate for the latency, forcing users to adjust their input behavior to counteract the latency effect.
By combining self-capacitance scanning and mutual capacitance scanning, the motion between self-capacitance and mutual capacitance touch positions is determined, and the mutual capacitance touch position is adjusted based on motion estimation to predict the input position, thereby achieving delay compensation.
It improves the responsiveness and accuracy of user input, reduces the need for users to adjust their input behavior, lowers system power consumption and processing costs, and extends the lifespan of the display panel and capacitive sensors.
Smart Images

Figure CN113518965B_ABST
Abstract
Description
BACKGROUND
[0001] Some computing devices can include proximity (e.g., touch or presence) sensors that are capable of detecting user input. For example, a computing device can include a presence-sensitive display (i.e., a display with proximity sensors) that is capable of displaying graphical objects and receiving user input to enable a user to interact with the displayed graphical objects. Some example interactions include a user moving their finger across the presence-sensitive display to drag an object and / or cause the computing device to scroll.
[0002] One example of a proximity sensor is a capacitive sensor. A capacitive sensor panel is constructed from a matrix of row and column electrodes on either side of a dielectric material. The electrodes are typically constructed from a transparent capacitive material such as indium tin oxide (ITO) so that they can be placed over the display module and not be visible to the user. The dielectric material is typically a glass substrate. The touch panel module can be attached to the surface of the display module (e.g., a liquid crystal display (LCD) or organic light emitting diode (OLED) display) and can be placed under the protective cover glass. The electrodes can be connected to a touch controller that can drive the electrodes with a voltage signal and sense resulting changes in capacitance.
[0003] When an electrode is driven with a voltage signal, the intrinsic capacitance of the electrode to other objects (e.g., a human finger, another electrode, or ground) can be measured. Changes in the surrounding environment can have an effect on changes in the intrinsic capacitance of the electrode. SUMMARY
[0004] In general, the techniques of this disclosure are directed to techniques for compensating for latency incurred via the use of capacitive proximity sensors to detect user input. In direct manipulation scenarios (e.g., on mobile phones, tablets, and smart watches), there is a sensitive display that can be attached to the top of a display panel (e.g., an LCD or OLED panel) and enables users to manipulate objects on the display in accordance with the movement of their fingers. In such scenarios, latency can become problematic. In particular, it is desirable for the time between when a user provides their input and when the corresponding response from the system is observed to be as small as possible (e.g., because users expect the system to be highly responsive to their input). For example, if a user is using his finger to drag an object rendered on the display, the user expects the object to follow the user's finger precisely without lag, anticipation, or stuttering. High latency not only makes users frustrated from a visual perspective, but also results in suboptimal human-machine interaction. For example, the system can misinterpret input from the user or fail to detect the input completely. The user can feel compelled to adapt their input behavior in an attempt to try and counteract some of the latency effects, such as by slowing down their input or using their finger to draw a different path. The user can not be able to input commands or data into the system as quickly as they otherwise would have, or they can have to perform additional inputs in order to compensate for previous inputs that were misinterpreted by the system. These additional inputs can place further demands on the system, such as in terms of increased power consumption due to increased usage, increased processing costs, and reduced lifespan of the display panel and / or capacitive proximity sensors.
[0005] A capacitive proximity sensor can scan for input on a periodic basis. The time between successive scans defines a minimum interval before a change in input can be observed. A touch controller can perform signal processing and algorithmic computation on the sensor data (e.g., to resolve the sensor data into high resolution coordinates). The touch controller can output these coordinates directly for use by an application, or they can be further processed before being output for use by an application. An application can communicate a graphical response to the input via a graphics system, and ultimately cause the display to update based on the response, which can be slowed down by the update frequency (e.g., refresh rate) of the display.
[0006] A capacitive proximity sensor can be capable of performing several different types of input scans, each of which presents advantages and drawbacks. Some example input scan types include self-capacitance scans and mutual capacitance scans. Self-capacitance scans provide the advantages of high speed and lower power requirements, but can be affected by "ghosting" effects when multiple contacts are present (e.g., in the case of a user using multiple fingers to perform one gesture). Mutual capacitance scans are slower and require more power than self-capacitance scans, but are not affected by ghosting.
[0007] In accordance with one or more techniques of this disclosure, a computing device can utilize a combination of self- and mutual-capacitance scanning to obtain an estimate of dynamic motion (e.g., input direction and velocity) in user input. For example, the computing device can identify self-capacitance touch locations based on self-capacitance scanning and mutual touch locations based on mutual-capacitance scanning. The computing device can determine which of the self-capacitance touch locations correspond to touch locations in the mutual touch locations (e.g., and discard locations in the self-capacitance touch locations that do not correspond to touch locations in the mutual touch locations), and determine motion between the corresponding touch locations of the mutual- and self-capacitance touch locations. The computing device can utilize the obtained estimate of dynamic motion to adjust an estimate of static touch locations to anticipate where actual input locations will be when input locations are received by the application. In this way, the computing device can compensate for latency (e.g., introduced during processing of scan data). As such, the techniques of this disclosure enable the computing device to more smoothly and / or accurately track user input, thereby providing an improved human-machine interaction and user experience.
[0008] The techniques of this disclosure can also address the balance between responsiveness and processing cost of a computing device to user input without compromising on power consumption. Users can no longer need to adapt their input behavior to try and counteract some latency effects experienced on known systems. Users can be able to input instructions or data into the system more quickly and / or efficiently, and they can avoid having to perform additional inputs to compensate for previous inputs that would normally be misinterpreted by the system. Not having to perform these additional corrective inputs can provide savings in power consumption and processing cost for the system, as well as provide for improved longevity of the display panel and / or capacitive proximity sensor.
[0009] In one example, a method includes identifying, by one or more processors of a computing device and based on mutual-capacitance data generated by a presence-sensitive display of the computing device, one or more mutual-capacitance touch locations; identifying, by the one or more processors and based on self-capacitance data generated by the presence-sensitive display, one or more self-capacitance touch locations; determining, by the one or more processors, motion between corresponding touch locations of the one or more mutual-capacitance touch locations and the one or more self-capacitance touch locations; adjusting, by the one or more processors and based on the determined motion, the one or more mutual-capacitance touch locations to obtain one or more adjusted mutual-capacitance touch locations; and utilizing, by the one or more processors, the one or more adjusted mutual-capacitance touch locations as user input.
[0010] In another example, a computing device includes a presence-sensitive display; and one or more processors configured to identify one or more mutual capacitance touch locations based on mutual capacitance data generated by the presence-sensitive display of the computing device; identify one or more self-capacitance touch locations based on self-capacitance data generated by the presence-sensitive display; determine motion between corresponding touch locations of the one or more mutual capacitance touch locations and the one or more self-capacitance touch locations; adjust the one or more mutual capacitance touch locations based on the determined motion to obtain one or more adjusted mutual capacitance touch locations; and utilize the one or more adjusted mutual capacitance touch locations as user input.
[0011] In another example, a non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device to identify one or more mutual capacitance touch locations based on mutual capacitance data generated by a presence-sensitive display of the computing device; identify one or more self-capacitance touch locations based on self-capacitance data generated by the presence-sensitive display; determine motion between corresponding touch locations of the one or more mutual capacitance touch locations and the one or more self-capacitance touch locations; adjust the one or more mutual capacitance touch locations based on the determined motion to obtain one or more adjusted mutual capacitance touch locations; and utilize the one or more adjusted mutual capacitance touch locations as user input.
[0012] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF DRAWINGS
[0013] Figure 1 is a conceptual diagram illustrating an example computing device including a presence-sensitive display in accordance with one or more aspects of the disclosure.
[0014] Figure 2 is a conceptual diagram illustrating example self-capacitance data generated by a presence-sensitive display of a computing device in accordance with one or more techniques of the disclosure. Figure 1 is a block diagram illustrating further details of an example of the computing device of
[0015] Figure 3 is a conceptual diagram illustrating example self-capacitance data generated by a presence-sensitive display of a computing device in accordance with one or more techniques of the disclosure.
[0016] Figure 4 is a conceptual diagram illustrating example mutual capacitance data generated by a presence-sensitive display of a computing device in accordance with one or more techniques of the disclosure.
[0017] Figure 5 is a cropped set of mutual capacitance data in accordance with one or more techniques of the disclosure.
[0018] Figure 6 is a timeline illustrating example operations of a computing device utilizing self- and mutual-capacitance scanning to receive user input in accordance with one or more techniques of this disclosure.
[0019] Figure 7 is a flowchart illustrating example operations of an example computing device performing latency compensation in accordance with one or more aspects of this disclosure.
[0020] Figure 8 is a conceptual diagram illustrating reconstructed self-capacitance data generated based on self-capacitance data in accordance with one or more techniques of this disclosure. Figure 3
[0021] Figure 9 is a conceptual diagram illustrating example capacitance scan data as an input object moves downward on a presence-sensitive display in accordance with one or more techniques of this disclosure.
[0022] Figure 10 is a conceptual diagram illustrating example capacitance scan data as an input object moves upward on a presence-sensitive display in accordance with one or more techniques of this disclosure. DETAILED DESCRIPTION
[0023] Figure 1 is a conceptual diagram illustrating an example computing device 2 that includes a presence-sensitive display 12. Figure 1 Only one particular example of a computing device 2 is illustrated, and many other examples of a computing device 2 can be used in other instances. In Figure 1 an example, the computing device 2 can be a wearable computing device, a mobile computing device, or any other computing device capable of receiving user input. Figure 1 The computing device 2 can include a subset of the components included in the example computing device 2, or can include additional components not shown in Figure 1
[0024] In Figure 1 an example, the computing device 2 can be a mobile phone. However, the computing device 2 can also be any other type of computing device, such as a camera device, a tablet computer, a personal digital assistant (PDA), a smart speaker, a laptop computer, a desktop computer, a gaming system, a media player, an e-book reader, a television platform, a car navigation system, or a wearable computing device (e.g., a computerized watch). As shown in Figure 1 the computing device 2 includes a user interface component (UIC) 10, a UI module 14, a user application module 16, and a processor(s) 22.
[0025] UIC 10 can act as a corresponding input and / or output device for mobile computing device 2. For example... Figure 1 As shown, UIC 10 includes a presence-sensitive display 12. UIC 10 can be implemented using various technologies. For example, UIC 10 can use a presence-sensitive input screen as an input device, such as a capacitive touchscreen or a projected capacitive touchscreen. UIC 10 can also use any one or more display devices as an output (e.g., display) device, such as a liquid crystal display (LCD), a dot matrix display, a light-emitting diode (LED) display, an organic light-emitting diode (OLED) display, electronic ink, or a similar monochrome or color display capable of outputting visual information to the user of computing device 2. Figure 1 In the example, presence-sensitive display 12 can be a presence-sensitive display capable of receiving user input and displaying graphical data.
[0026] UIC 10 can detect input (e.g., touch and non-touch input) from the user of the corresponding computing device 2. For example, presence-sensitive display 12 can detect input indications by detecting one or more gestures from the user (e.g., the user touching, pointing, and / or swiping at or near one or more locations on or near presence-sensitive display 12 using a finger or stylus). UIC 10 can output information to the user in the form of a user interface, which can be associated with the functions provided by computing device 2. Such a user interface can be associated with computing platforms, operating systems, applications, and / or services (e.g., email messaging applications, chat applications, internet browser applications, mobile or desktop operating systems, social media applications, video games, menus, and other types of applications) that are executed on or accessible from computing device 2.
[0027] UI module 14 manages user interaction with UIC 10 and other components of computing device 2. In other words, UI module 14 can act as an intermediary between the various components of computing device 2 to make decisions based on user input detected by UIC 10 and generate output at UIC 10 in response to that user input. UI module 14 can receive instructions from applications, services, platforms, or other modules of computing device 2 to cause UIC 10 to output a user interface. UI module 14 can manage the input received by computing device 2 as a user view and interact with the user interface presented at UIC 10, and update the user interface in response to receiving additional instructions from applications, services, platforms, or other modules of computing device 2 that process the user input.
[0028] Computing device 2 can include modules 14 and 16. Modules 14 and 16 can perform the described operations using software, hardware, firmware, or a combination of software, hardware, and / or firmware resident at and / or executing on computing device 2. Computing device 2 can execute modules 14 and 16 with one or more processors. Computing device 2 can execute modules 14 and 16 as virtual machines executing on underlying hardware. Modules 14 and 16 can execute as services or components of an operating system or computing platform. Modules 14 and 16 can execute as one or more executable programs at an application layer of a computing platform. Modules 14 and 16 can be otherwise arranged remotely to computing device 2 or accessed therefrom, such as one or more network services operating at a network in a network cloud.
[0029] Processor(s) 22 can implement functions and / or execute instructions within computing device 2. Examples of processor(s) 22 include, without limitation, one or more digital signal processors (DSPs), general purpose microprocessors, application- specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor," as used herein can refer to any of the above structures or any other structure suitable for implementation of the techniques described herein.
[0030] User application module 16 can execute at computing device 2 to perform any of a variety of operations. Examples of user application module 16 include, without limitation, a music application, a photo viewing application, a map application, an electronic messaging application, a chat application, an internet browser application, a social media application, an electronic game, a menu, and / or other type of application that can operate based on user input.
[0031] In operation, user application module 16 can cause UI module 14 to generate a graphical user interface (GUI) for display at UIC 10. UIC 10 can output the graphical user interface based on instructions from user application module 16. As Figure 1 As shown in the example of FIG. 1, user application module 16 can be a photo viewing application that causes UI module 14 to generate a GUI including a picture of a mountain for display at UIC 10.
[0032] A user can desire to provide user input to user application module 16. For example, in the example of FIG. 1, where user application module 16 can be a photo viewing application, the user can want to zoom in or zoom out of the picture of the mountain displayed at UIC 10. Figure 1 In the example of FIG. 1, where user application module 16 can be a photo viewing application, the user can want to zoom in or zoom out of the picture of the mountain displayed at UIC 10. In this example, to zoom out, the user can perform a pinch-out gesture by placing their index finger at location 18A, placing their thumb at location 18B, and sliding their thumb and index finger together (in the direction shown by the arrows).
[0033] The presence-sensitive display 12 can detect the user input. For example, where the presence-sensitive display 12 is a capacitive touch panel, the presence-sensitive display 12 can detect the user input via mutual capacitance scanning triggered based on results of self-capacitance scanning. To illustrate, the presence-sensitive display 12 can perform periodic self-capacitance scanning to determine whether any input objects (e.g., a finger, a stylus, etc.) are present near the presence-sensitive display 12. In response to the self-capacitance scanning indicating that at least one input object is present near the presence-sensitive display 12, the presence-sensitive display 12 can perform mutual capacitance scanning to identify touch points for each of the at least one input object. Further details of self-capacitance scanning are discussed below with reference to Figure 3 Further details of mutual capacitance scanning are discussed below with reference to Figure 4 Further details of mutual capacitance scanning are discussed below with reference to
[0034] While it can be sufficient to use mutual capacitance scanning data to identify touch points when an input object is static (i.e., not moving), such techniques can not be satisfactory for identifying touch points for a moving object. As discussed above, the presence-sensitive display 12 can perform latency compensation to predict where an input object is moving (e.g., to account for latency introduced in processing scanning data). The performance of latency compensation can involve determining a predicted touch point based on at least two temporally distinct touch points for a particular object (e.g., a first touch point for the object at a first time and a second touch point for the object at a second time after the first time). However, as discussed below, a relatively large amount of time between successive mutual capacitance scans can result in a large temporal gap between at least two temporally distinct touch points for a particular object. The large temporal gap can reduce the effectiveness of latency compensation.
[0035] In accordance with one or more techniques of this disclosure, the computing device 2 can perform latency compensation using touch points determined based on mutual capacitance scanning data and touch points determined based on self-capacitance scanning data. For example, the computing device 2 can identify one or more mutual capacitance touch locations based on mutual capacitance data generated by the presence-sensitive display 12 and identify one or more self-capacitance touch locations based on self-capacitance data generated by the presence-sensitive display 12. The computing device 2 can determine motion between corresponding touch locations of the one or more mutual capacitance touch locations and the one or more self-capacitance touch locations. Based on the determined motion, the computing device 2 can adjust the one or more mutual capacitance touch locations to obtain one or more adjusted mutual capacitance touch locations (e.g., predicted touch points). The computing device 2 can utilize the one or more adjusted mutual capacitance touch locations as user input. For example, the adjusted mutual capacitance touch locations can be provided to the user application module 16.
[0036] The computing device 2 can perform one or more actions based on the user input. For example, the user application module 16 can cause the UI module 14 to generate an updated GUI for display at the UIC 10 that is modified based on the user input. For example, in the example where the user application module 16 can be a photo viewing application and the user is performing a pinch gesture to zoom in on a picture of a mountain, the user application module 16 can cause the UI module 14 to generate a GUI that includes a zoomed-out representation of the photo of the mountain for display at the UIC 10. Figure 1
[0037] Figure 2 is a block diagram illustrating further details of one example of a computing device 1 in accordance with one or more techniques of this disclosure. Figure 1 is a block diagram illustrating further details of one example of a computing device 1 in accordance with one or more techniques of this disclosure. Figure 2 As discussed above, the UIC 10 of the computing device 2 can include a presence-sensitive display 12 and processor(s) 22. As shown in Figure 2 As shown in
[0038] The electrodes 24 can form a matrix of rows and columns of electrodes on either side of a dielectric material. The electrodes 24 can be constructed of a transparent conductive material such as indium tin oxide (ITO). As such, the electrodes 24 can be placed above a display component (e.g., the display panel 28) and not visible to a user. The dielectric material can be a glass substrate.
[0039] The touch controller 26 can perform one or more operations to sense user input via the electrodes 24. For example, the touch controller 26 can output a voltage signal across the electrodes and sense resulting changes in capacitance (e.g., caused by the presence of a finger or other object over or near the presence-sensitive display 12). When one of the electrodes 24 is driven by a voltage signal, the intrinsic capacitance of the electrode to other objects, such as a human finger, another electrode, or ground, can be measured. Changes in the surrounding environment affect the change in intrinsic capacitance of the electrodes. The touch controller 26 can output an indication of the sensed user input to one or more other components of the computing device 2, such as the UI module 14.
[0040] The display panel 28 can be a display device capable of rendering a graphical user interface. Examples of the display panel 28 include, without limitation, a liquid crystal display (LCD), a dot matrix display, a light emitting diode (LED) display, an organic light emitting diode (OLED) display, e-ink, or a similar monochrome or color display capable of outputting visual information to a user of the computing device 2.
[0041] Display controller 30 can perform one or more operations to manage the operation of display panel 28. For example, display controller 30 can receive instructions from UI module 14 that cause display controller 30 to control display panel 28 to render a particular graphical user interface.
[0042] As discussed above, UI module 14 can act as an intermediary between various components of computing device 2 to make decisions based on user input detected by UIC 10 and to generate output at UIC 10 in response to the user input. As Figure 2 illustrated in FIG. 3, UI module 14 can include touch driver 32 and display driver 34. Touch driver 32 can interact with touch controller 26 and operating system 36 to process user input sensed via presence-sensitive display 12. Display driver 36 can interact with display controller 30 and operating system 36 to process output for display at display panel 28, which can change based on user input received via electrodes 24.
[0043] Operating system 36, or components thereof, can manage interactions between applications and users of computing device 2. As Figure 2 illustrated in the example of FIG. 3, operating system 36 can manage operations between user application module 16 and a user of computing device 2. In some examples, UI module 14 can be considered a component of operating system 36.
[0044] As discussed above, presence-sensitive display 12 can use one or both of self- and mutual-capacitance scanning to detect user input. In particular, electrodes 24, touch controller 26, and touch driver 32 can operate in conjunction to generate mutual-capacitance data based on mutual-capacitance scanning and self-capacitance data based on self-capacitance scanning. Further details of self-capacitance scanning are discussed below with reference to Figure 3 Further details of mutual-capacitance scanning are discussed below with reference to Figure 4 .
[0045] Figure 3 is a conceptual diagram illustrating example self-capacitance data generated by a presence-sensitive display of a computing device in accordance with one or more techniques of this disclosure. Reference is made to Figure 1 and 2 computing device 2 of FIG. 3 to discuss self-capacitance data 300. However, other computing devices can generate self-capacitance data 300. Figure 3
[0046] To perform a self-capacitance scan (also referred to as a surface capacitance scan), touch controller 26 can drive one of electrodes 24 with a signal and measure the capacitance across the entire electrode (e.g., with respect to ground). When another conductive object approaches the electrode, a capacitor is formed between them, reducing the capacitance between the electrode and ground. Touch controller 26 measures the capacitance by driving all of electrodes 24 in each direction (e.g., all rows and then all columns) and measuring their capacitances. In the case where electrodes 24 include r rows of electrodes and c columns of electrodes, a self-capacitance scan yields r + c measurements, which are collectively referred to as self-capacitance data 300.
[0047] Figure 3 Self-capacitance data 300 can represent self-capacitance data measured by presence-sensitive display 12 when a user performs the pinch gesture shown in FIG. 1 IB. As shown in FIG. 1 IB, a user can perform a pinch gesture by placing his or her fingers at locations 18A and 18B. As shown in FIG. 1 IB, the pinch gesture can cause the presence-sensitive display 12 to display a zoomed-out view of the user interface. Figure 1 Self-capacitance data 300 can represent self-capacitance data measured by presence-sensitive display 12 when a user performs the pinch gesture shown in FIG. 1 IB. As shown in FIG. 1 IB, a user can perform a pinch gesture by placing his or her fingers at locations 18A and 18B. As shown in FIG. 1 IB, the pinch gesture can cause the presence-sensitive display 12 to display a zoomed-out view of the user interface. Figure 3 Self-capacitance data 300 can represent self-capacitance data measured by presence-sensitive display 12 when a user performs the pinch gesture shown in FIG. 1 IB. As shown in FIG. 1 IB, a user can perform a pinch gesture by placing his or her fingers at locations 18A and 18B. As shown in FIG. 1 IB, the pinch gesture can cause the presence-sensitive display 12 to display a zoomed-out view of the user interface.
[0048] Figure 4 is a conceptual diagram illustrating example mutual capacitance data generated by a presence-sensitive display of a computing device in accordance with one or more techniques of this disclosure. Reference is made to Figure 1 and 2 Computing device 2 of Figure 4 mutual capacitance data 400 is discussed. However, other computing devices can generate mutual capacitance data 400.
[0049] To perform a mutual capacitance scan, touch controller 26 can exploit the inherent capacitive coupling between the row and column electrodes that exist in electrodes 24 at locations where they overlap (i.e., cells). For example, touch controller 26 can drive a single electrode (e.g., row) of electrodes 24 and measure the capacitance on intersecting electrodes (e.g., columns) of electrodes 24. Touch controller 26 can repeat the process until all cells have been sensed. In the case where electrodes 24 include r rows of electrodes and c columns of electrodes, a mutual capacitance scan yields r x c measurements, which are collectively referred to as mutual capacitance data 400. For mutual capacitance data 400, darker cells indicate higher values.
[0050] Self-capacitance sensing can be a fast and efficient method for sensing the presence of a contact in the vicinity of the presence-sensitive display 12. However, by measuring each electrode out of its entirety, self-capacitance sensing cannot sense the location of a contact along each electrode. Even with measurements of all rows and all columns together, self-capacitance sensing is subject to a "smearing" effect when there are multiple contacts present. That is, each contact will cause a drop in capacitance of the closest row electrode and the closest column electrode. When there are more than one contact present, multiple drops will be sensed on each axis, which will create "smear" contact points in addition to the true contact points (as shown in Figure 8
[0051] Mutual capacitance sensing can be slower and less efficient than self-capacitance sensing because mutual capacitance sensing involves each cell sensing individually. However, mutual capacitance sensing generates a complete "image" of the panel, which can allow the touch controller 26 to clearly separate each contact.
[0052] Figure 5 is a cropped set of mutual capacitance data in accordance with one or more techniques of the present disclosure. Figure 5 The mutual capacitance data 500 of Figure 5 As shown in Figure 5 by bringing an input object, such as a finger, in proximity to the presence-sensitive display, the capacitance of several cells can change. As discussed herein, based on these changes in capacitance, the touch controller 26 can use the mutual capacitance data to identify a touch contact. For each identified touch contact, the touch controller 26 can identify a centroid and covered cells. In the example of
[0053] Figure 6 is a timeline illustrating example operations of a computing device utilizing both self-capacitance scans and mutual capacitance scans to receive user input in accordance with one or more techniques of the present disclosure. As shown in Figure 6 The touch controller 26 can perform a self-capacitance scan (SS) to generate self-capacitance data at some regular interval (e.g., every 8 milliseconds). The touch controller 26 can analyze the self-capacitance data to determine whether any contact can be detected. For example, the touch controller 26 can determine that a contact can be detected if at least one of the row capacitance values 302 exceeds a threshold and / or at least one of the column capacitance values 304 exceeds a threshold.
[0054] In response to detecting at least one touch in the self-capacitance data, the touch controller 26 may perform a mutual capacitance scan (MS) to generate mutual capacitance data. The touch controller 26 may analyze this mutual capacitance data to identify a touch point. For example, the touch controller 26 may identify a value in the mutual capacitance data as a touch point if that value is greater than a threshold. In some examples, the touch controller 26 may utilize an image processing algorithm (e.g., a watershed) to segment the mutual capacitance data into regions, each region containing a touch point. As discussed above, the touch controller 26 may output an indication of the touch point to one or more other components of the computing device 2, such as processor(s) 22.
[0055] However, since no contact is detected in the self-capacitance data, the touch controller 26 can avoid performing a mutual capacitance scan. In this way, the touch controller 26 can utilize the self-capacitance scan as an initial low-resolution trigger to selectively perform a higher-resolution mutual capacitance scan. By performing an initial self-capacitance scan, the touch controller can eliminate the power and processing cost of mutual capacitance scanning when there is no contact on or near the panel.
[0056] like Figure 6 As shown, in the first two scans, the touch controller 26 can detect a contact based on self-capacitance data. Thus, in the first two scans, the touch controller 26 can perform a subsequent mutual capacitance scan. The result of this mutual capacitance scan is processed and reported to other components of the computing device 2. However, since no contact is detected in the third scan, the touch controller 26 can omit the execution of the mutual capacitance scan.
[0057] During user interaction, the movement of a user's finger (e.g., relative to the presence-sensitive display 12) can be an arbitrary high-bandwidth signal. For example, when scrolling over a document while reading it, a user's finger can move at ~200 mm / s; when rapidly scrolling over a long list of items, a user's finger can move at ~400 mm / s. Similarly, a user's finger may change its direction or dynamics (speed, acceleration, etc.) extremely rapidly. When the computing device 2 cannot sense or respond to these changes quickly enough, latency becomes perceptible to the user and degrades their experience.
[0058] For example, in Figure 6In the example of a presence-sensitive display 12, inputs on the presence-sensitive display 12 can be sampled every 8 ms (~120 Hz). If a user's finger drags an object on the presence-sensitive display 12 at 200 mm / s, that sampling interval means that the finger will travel 1.6 mm before the touch controller 26 observes its new position. In some cases, additional processing to respond to that sample can take another 24 ms: a total of 32 ms, or 6.4 mm of travel.
[0059] This gap between a user's finger and a dragged object can be perceived and can degrade the user experience. For example, if the user's finger suddenly stops, the object will continue to move as it "catches up" to the finger, or in the case of some latency-compensating techniques, the object can overshoot the finger (e.g., because the computing device 2 cannot react to changes in input quickly enough). The user can have to provide further input to correct the overshoot.
[0060] Some latency-compensating techniques exploit a history of high-resolution points reported by a touch sensor (e.g., reported by the touch controller 26 and / or the touch driver 32) to estimate motion parameters and perform some form of interpolation or extrapolation. For example, new points can be extrapolated based on the last reported point and estimates of velocity and / or acceleration of the last reported point from previous reports.
[0061] Latency-compensating techniques that exploit reported points for motion estimation can be subject to one or more deficiencies. As one example, the touch controller 26 and / or the touch driver 32 can report points at a very low frequency (typically 60 or 120 Hz). This means that a latency-compensating algorithm can estimate finger position based on data that is at least 8 ms late, and thus be subject to the artifacts of overshooting / undershooting that occur irregularly when a user's finger suddenly changes direction. As another example, touch points reported by the touch controller 26 and / or the touch driver 32 can be optimized for stability and can not be suitable for discrimination. While each reported touch point is a good estimate of position, their temporal ordering is not a good estimate of motion due to design constraints of the touch processing algorithm. To estimate motion (e.g., velocity) from touch points, appreciable filtering can be needed - which introduces more latency. As a result of these deficiencies, many systems do not employ latency-compensating techniques based on motion estimation.
[0062] According to one or more techniques of this disclosure, a computing device can utilize various properties of a presence-sensitive display to obtain an estimate of dynamic motion (e.g., its direction and velocity) in user input. As one example property, the interval between self-capacitance scans and mutual-capacitance scans (e.g., 1-3 ms) can be significantly shorter than the interval between successive mutual-capacitance scans (e.g., 8-16 ms). As another example property, data from self-capacitance scans (i.e., self-capacitance data) can be used to reconstruct cell-level data using mutual-capacitance data as a "mask."
[0063] At a high level, self-capacitance scans and mutual-capacitance scans are two snapshots of user input separated by 1-3 ms (i.e., an effective sampling rate of 300-1000 Hz). If the corresponding touch locations can be estimated within each, a high-frequency estimate of motion of the corresponding touch locations can be derived. Using both self-capacitance data and mutual-capacitance data to estimate instantaneous motion can be superior to using successive mutual-capacitance scans (i.e., separated by at least 8 ms) to estimate instantaneous motion because using both self-capacitance data and mutual-capacitance data to estimate instantaneous motion can be more responsive to changes in the user's input dynamics (e.g., sudden stops). Using this estimate, latency compensation techniques (e.g., extrapolation) can thus yield more accurate and responsive results.
[0064] As discussed above, self-capacitance data can be used as a trigger to perform mutual-capacitance scans, but can not be used to determine motion or actual touch point locations due to smearing. As such, self-capacitance data is typically discarded during regular touch processing.
[0065] According to one or more techniques of this disclosure, computing device 2 can determine motion and / or actual touch point locations based on self-capacitance data. For example, touch controller 26 can determine reconstructed self-capacitance data based on self-capacitance data. Touch controller 26 can utilize mutual-capacitance data to mask the reconstructed self-capacitance data in order to reduce or eliminate smearing touch points. Touch controller 26 can utilize the masked reconstructed self-capacitance data to estimate motion of touch locations identified in mutual-capacitance data. In this way, computing device 2 can utilize both self-capacitance data and mutual-capacitance data to estimate motion of touch locations.
[0066] Figure 7 FIG. 6 is a flow diagram illustrating example operations of an example computing device to perform latency compensation according to one or more aspects of this disclosure. In Figure 1 and 2 The operations of computing device 2 are described in the context of computing device 2.
[0067] Computing device 2 can perform a self-capacitance scan to generate self-capacitance data (702). For example, touch controller 26 can perform a self-capacitance scan to generate self-capacitance data as described above with reference to Figure 3The approach under discussion uses the electrodes 24 of the presence-sensitive display 12 to perform a self-capacitance scan. As discussed above, the self-capacitance data can include row and column capacitance values (e.g., row capacitance values 302 and column capacitance values 304). The touch controller 26 can perform the self-capacitance scan at a first time tl.
[0068] The computing device 2 can perform a mutual-capacitance scan to generate mutual-capacitance data (704). For example, the touch controller 26 can perform a mutual-capacitance scan at a second time t2, using the electrodes 24 of the presence-sensitive display 12, as discussed above with reference to FIG. 3. Figure 4 The approach under discussion uses the electrodes 24 of the presence-sensitive display 12 to perform a mutual-capacitance scan. As discussed above, the mutual-capacitance data can include a capacitance value for each cell of the presence-sensitive display 12. The touch controller 26 can perform the mutual-capacitance scan at a second time t2.
[0069] The computing device 2 can identify one or more mutual-capacitance touch locations based on the mutual-capacitance data (706). For example, the touch controller 26 can analyze the mutual-capacitance data to identify clusters of values that exceed a threshold capacitance value. Each of the identified clusters can represent a mutual-capacitance touch location. For each respective identified cluster, the touch controller 26 can identify a respective estimate of the touch location (e.g., a centroid of the cluster) and a respective area of the touch location (e.g., which cells of the presence-sensitive display are covered by the respective touch location). In the example of FIG. 4, the touch controller 26 can identify touch locations 402A and 402B as mutual-capacitance touch locations. Figure 4 The approach under discussion uses the electrodes 24 of the presence-sensitive display 12 to perform a mutual-capacitance scan. As discussed above, the mutual-capacitance data can include a capacitance value for each cell of the presence-sensitive display 12. The touch controller 26 can perform the mutual-capacitance scan at a second time t2.
[0070] The computing device 2 can generate reconstructed self-capacitance data based on the self-capacitance data (708). As mentioned above, the self-capacitance data can include row and column data. To compare this data to the mutual-capacitance data (which includes a value for each cell), it can be necessary to establish a value for each cell. The self-capacitance data can be thought of as a transportation polytope representing the marginals of an unknown matrix. The values of the unknown matrix can be thought of as an example of the reconstructed self-capacitance data.
[0071] While there can be many solutions to the unknown matrix, the touch controller 26 can obtain an estimate by distributing the row and column self-capacitance data evenly across their respective lengths and multiplying them at each cell. For example, the touch controller 26 can determine a reconstructed self-capacitance value a for cell (i,j) from self-capacitance row data r and self-capacitance column data c in accordance with the following equation:
[0072] a i,j = r i / |c| · c j / |r|
[0073] Note that although the above equation may not satisfy the conditions for a real transport polyhedron solution, the numerical distribution may be sufficient.
[0074] Figure 8 The illustration is based on one or more technologies disclosed herein. Figure 3 A conceptual diagram of reconstructed self-capacitance data generated from the self-capacitance data. As discussed above, self-capacitance data may be affected by ghosting in the presence of multiple touch locations, and this ghosting may transfer to the reconstructed self-capacitance data. Figure 8 As shown, the reconstructed capacitance data 800 includes touch positions 802A-802D. Touch positions 802A and 802D can be actual touch positions, while touch positions 802B and 802C are ghosted touch positions.
[0075] In some examples, touch controller 26 can determine reconstructed self-capacitance data for all cells. In other examples, touch controller 26 can determine reconstructed self-capacitance data for a subset of cells. For example, touch controller 26 can determine reconstructed self-capacitance data for a subset of cells that includes cells covered by the corresponding area of each mutual capacitance touch position. In this way, touch controller 26 can remove ghosting touch positions 802B and 802C.
[0076] The computing device 2 can identify one or more self-capacitance touch locations (710) based on the reconstructed self-capacitance data and mutual capacitance touch locations. Each of the one or more mutual capacitance touch locations may correspond to a touch location in the one or more self-capacitance touch locations (however, due to ghosting, some touch locations in the one or more self-capacitance touch locations may not correspond to touch locations in the one or more mutual capacitance touch locations). For example, the touch controller 26 can analyze the reconstructed self-capacitance data to identify clusters of values exceeding a threshold capacitance value. Each identified cluster can represent a candidate reconstructed self-capacitance, which may be a real touch location or a ghosting touch location. For each corresponding identified cluster, the touch controller 26 can identify a corresponding estimate of the candidate touch location (e.g., the centroid of the cluster) and a corresponding area of the candidate touch location (e.g., which cells of the sensitive display 12 are covered by the corresponding candidate touch location). Figure 8 In the example, the touch controller 26 can identify touch locations 802A-802D as candidate reconstructed self-capacitive touch locations.
[0077] The touch controller 26 can perform one or more actions to remove ghosted locations. As one example, the touch controller 26 can determine reconstructed self-capacitance data for a subset of cells of the cells covered by the respective region of each mutual capacitance touch location, as discussed above. As another example, the touch controller 26 can identify, for each respective cluster in the mutual capacitance data, a respective cluster in the reconstructed self-capacitance data having a closest centroid to the centroid of the respective cluster in the mutual capacitance data. The cluster identified in the reconstructed self-capacitance data for the respective cluster in the mutual capacitance data can be considered to represent a reconstructed self-capacitance touch location corresponding to the mutual capacitance touch location represented by the respective cluster in the mutual capacitance data. In Figure 8 In the example of FIG. 8, the touch controller 26 can identify the cluster of cells surrounding touch location 802A as corresponding to mutual capacitance touch location 402A, and the cluster of cells surrounding touch location 802D as corresponding to mutual capacitance touch location 402B. In this way, the touch controller 26 can identify one or more touch locations in the reconstructed self-capacitance data corresponding to locations in one or more mutual capacitance touch locations. The identified touch locations in the reconstructed self-capacitance data can be referred to as reconstructed self-capacitance touch locations or self-capacitance touch locations.
[0078] The computing device 2 can determine motion between corresponding touch locations of one or more mutual capacitance touch locations and one or more self-capacitance touch locations (712). As discussed above, the self-capacitance data and mutual capacitance data can be captured at times tl and t2, respectively. Motion between corresponding points in the self-capacitance touch points (obtained based on the self-capacitance data captured at time tl) and points in the mutual capacitance touch points (obtained based on the mutual capacitance data captured at time t2) can reveal motion of an input object (e.g., a user's finger) between scans.
[0079] Figure 9 is a conceptual diagram illustrating example capacitance scan data as an input object moves downward on a presence-sensitive display in accordance with one or more techniques of this disclosure. Figure 9 The mutual capacitance data 902, the reconstructed self-capacitance data 904, and the difference data 906. The mutual capacitance data 902 can represent mutual capacitance data captured via the techniques discussed above with reference to Figure 4 The reconstructed self-capacitance data 904 can represent reconstructed self-capacitance data captured via the techniques discussed above with reference to Figure 8 The difference data 906 can represent a difference between the reconstructed self-capacitance data 904 and the mutual capacitance data 902.
[0080] Figure 10 is a conceptual diagram illustrating example capacitance scan data as an input object moves upward on a presence-sensitive display in accordance with one or more techniques of this disclosure.Figure 10 includes mutual capacitance data 1002, reconstructed self-capacitance data 1004, and difference data 1006. Mutual capacitance data 1002 can represent mutual capacitance data captured by the techniques discussed above with reference to FIGS. 1-3. Reconstructed self-capacitance data 1004 can represent reconstructed self-capacitance data captured by the techniques discussed above with reference to FIGS. 1-3. Difference data 1006 can represent the difference between reconstructed self-capacitance data 1004 and mutual capacitance data 1002. Figure 4 Figure 8
[0081] As can be seen from difference data 906 and 1006, the difference data has a peak at the leading edge of the motion (downward motion in difference data 906 and upward motion in difference data 1006). This is expected as the input object (e.g., a finger) is moving in that direction and mutual capacitance data is captured after self-capacitance data.
[0082] In some examples, such as where the absolute values of mutual capacitance data and reconstructed self-capacitance data can be on different scales, touch controller 26 can rescale the reconstructed self-capacitance data to the signal level of mutual capacitance data and keep the reconstructed self-capacitance data in [0,∞) when calculating the difference as follows:
[0083]
[0084]
[0085] where RSS* is the rescaled and kept reconstructed self-capacitance data, RSS is the un-scaled reconstructed self-capacitance data, MS is mutual capacitance data, and Difference is difference data.
[0086] In some examples, touch controller 26 can perform the scaling separately for each touch region identified in mutual capacitance data (e.g., for greater precision).
[0087] Touch controller 26 can use any of a variety of techniques to estimate the motion between reconstructed self-capacitance touch locations and mutual capacitance touch locations. As one example technique, touch controller 26 can mask reconstructed self-capacitance data with mutual capacitance data. For example, touch controller 26 can zero out the values of the cells in reconstructed self-capacitance data that correspond to cells in mutual capacitance data that have values less than a threshold value. Touch controller 26 can pair each touch location found in reconstructed self-capacitance data (i.e., a self-capacitance touch location) with a location identified in mutual capacitance touch locations (e.g., the closest location). Touch controller 26 can determine a vector between the paired locations that represents the direction and magnitude of the motion between the reconstructed self-capacitance touch location in the pair and the mutual capacitance touch location in the pair.
[0088] As another example technique, the touch controller 26 can adjust the mutual capacitance touch positions based on the disparity data. For example, the touch controller 26 can shift each respective mutual capacitance touch position by a weight that is calculated from the cells in the disparity data that correspond to the cells covered by the respective mutual capacitance touch position. In Figure 9 the example of FIG. 9, the disparity data 906 would decrease the weight of the mutual capacitance touch positions. In Figure 10 the example of FIG. 10, the disparity data 1006 would increase the weight of the mutual capacitance touch positions. In other words, the touch controller 26 shifts the mutual capacitance touch positions in the direction of the motion, in a direction and magnitude that is an estimate of the motion.
[0089] The computing device 2 can perform latency compensation on one or more mutual capacitance touch positions based on the motion (714). Given the touch position estimate from the mutual capacitance data and the motion estimate, the touch controller 26 can perform latency compensation by advancing the mutual capacitance touch position in the direction of the motion. The amount of compensation can depend on the latency target of the system and the subjective user experience. In some examples, the latency target can be 8-16 ms.
[0090] In some examples, the touch controller 26 can use the estimated direction and velocity of the motion to extrapolate the position of the touch position by the latency target. In some examples, the touch controller 26 can use higher order derivatives (e.g., as opposed to linear extrapolation). Using higher order derivatives can result in smoother behavior. In one example, the touch controller 26 can use higher order derivatives (e.g., estimate acceleration, extrapolate velocity, and extrapolate position) as follows:
[0091] p * = p + v At + (1 / 2)a At 2
[0092] where p * is the compensated touch position, p is the estimated static touch position, v is the estimated velocity, a is the estimated acceleration, and At is the latency target.
[0093] The compensated touch position for a particular mutual capacitance touch position can represent a prediction of where the input object that caused the particular mutual capacitance touch position will be at a future time. The future time can be represented by the latency target of the system.
[0094] There can be some inherent noise in the system (primarily electrical noise) that introduces jitter. To address this noise / jitter, the touch controller 26 can apply filtering to these motion estimates (and / or a fairly conservative latency target). As one example, the touch controller 26 can constrain the estimates by curve fitting, Taylor series, or other linear system. As another example, the touch controller 26 can process the latency-compensated output through a Kalman filter to estimate and remove system noise.
[0095] The following numbered examples will set forth one or more aspects of the disclosure.
[0096] Example 1. A method comprising: identifying, by one or more processors of a computing device and based on mutual capacitance data generated by a presence-sensitive display of the computing device, one or more mutual capacitance touch locations; identifying, by the one or more processors and based on self-capacitance data generated by the presence-sensitive display, one or more self-capacitance touch locations, each touch location of the one or more mutual capacitance touch locations corresponding to a touch location of the one or more self-capacitance touch locations; determining, by the one or more processors, motion between corresponding touch locations of the one or more mutual capacitance touch locations and the one or more self-capacitance touch locations; adjusting, by the one or more processors and based on the determined motion, the one or more mutual capacitance touch locations to obtain one or more adjusted mutual capacitance touch locations; and utilizing, by the one or more processors, the one or more adjusted mutual capacitance touch locations as user input.
[0097] Example 2. The method of example 1, wherein identifying the one or more self- capacitance touch locations comprises: identifying the one or more self-capacitance touch locations based on the one or more mutual capacitance touch locations and the self- capacitance data.
[0098] Example 3. The method of example 2, wherein identifying the one or more self- capacitance touch locations further comprises: determining, based on the self-capacitance data, reconstructed self-capacitance data; and identifying, as the one or more self-capacitance touch locations, one or more touch locations of the reconstructed self-capacitance data that correspond to locations of the one or more mutual capacitance touch locations.
[0099] Example 4. The method of any of examples 1-3, wherein adjusting a particular mutual capacitance touch location of the one or more mutual capacitance touch locations comprises: predicting a future location of the particular mutual capacitance touch location based on the motion and a latency target value.
[0100] Example 5. The method of any of examples 1-4, wherein utilizing the one or more adjusted mutual capacitance touch locations as user input comprises providing the adjusted mutual capacitance touch locations as user input to an application executing at the computing device.
[0101] Example 6. The method of example 5, further comprising outputting a graphical user interface for display at the presence-sensitive display based on instructions received from the application; and outputting an updated graphical user interface modified based on the user input for display at the presence-sensitive display based on instructions received from the application.
[0102] Example 7. The method of any of examples 1-6, wherein the presence-sensitive display comprises a capacitive touch panel.
[0103] Example 8. The method of any of examples 1-7, wherein the one or more processors comprise a touch controller and an application processor.
[0104] Example 9. The method of example 8, wherein utilizing the one or more adjusted mutual capacitance touch locations as user input comprises outputting, by the touch controller and to the application processor, the one or more adjusted mutual capacitance touch locations.
[0105] Example 10. A computing device comprising: a presence-sensitive display; and one or more processors configured to perform the method of any combination of examples 1-9.
[0106] Example 11. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a computing device to perform the method of any combination of examples 1-9.
[0107] In one or more examples, the features described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media can include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer- readable media generally can correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product can include a computer-readable medium.
[0108] By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any
[0109] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor," as used herein can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0110] The techniques of this disclosure can be implemented in a variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of one or more ICs (e.g., a chip set). Various components, modules, or units are described herein as being stored in or on one or more types of machine-readable media, such as computer-readable storage medium. Such media can include, without limitation, random access memory (RAM) storage, non-volatile memory (e.g., read only memory (ROM), flash, etc.), magnetic storage, optical storage, or any other hardware storage or memory element. Accordingly, the various storage media described herein are intended to encompass a non-transitory machine-readable medium or media. In this context, "non-transitory" means that the medium is not a carrier wave.
[0111] Various example implementations have been described. Any combination of the described systems, operations, or functions are contemplated. These and other examples are within the scope of the following claims.
Claims
1. A method for compensating for delay, comprising: One or more self-capacitance touch locations are identified by one or more processors of a computing device and based on self-capacitance data generated by the presence-sensitive display of the computing device; One or more mutual capacitance touch positions are identified by the one or more processors and based on mutual capacitance data generated by the presence-sensitive display, each of the one or more mutual capacitance touch positions corresponding to a touch position in the one or more self-capacitance touch positions; The movement between the corresponding touch positions of the one or more mutual capacitance touch positions and the one or more self capacitance touch positions is determined by the one or more processors; The one or more processors adjust the one or more mutual capacitance touch positions based on the determined motion to obtain one or more adjusted mutual capacitance touch positions; and The one or more processors utilize the one or more adjusted mutual capacitance touch positions as user input.
2. The method of claim 1, wherein identifying the one or more self-capacitive touch locations comprises: The one or more self-capacitance touch locations are identified based on the one or more mutual capacitance touch locations and the self-capacitance data.
3. The method of claim 2, wherein identifying the one or more self-capacitive touch locations further comprises: Based on the self-capacitance data, reconstructed self-capacitance data is determined; and One or more touch positions in the reconstructed self-capacitance data that correspond to the positions in the one or more mutual capacitance touch positions are identified as the one or more self-capacitance touch positions.
4. The method of claim 1, wherein adjusting the position of the one or more mutual capacitance touches comprises: For the mutual capacitance touch position among the one or more mutual capacitance touch positions, predict the future position of the mutual capacitance touch position based on the motion and delay target values.
5. The method of claim 1, wherein using the one or more adjusted mutual capacitance touch positions as user input comprises: An adjusted mutual capacitance touch position is provided as user input to an application running on the computing device.
6. The method of claim 5, further comprising: A graphical user interface is output based on instructions received from the application to be displayed at the location of the sensitive display. and Based on the instructions received from the application, an updated graphical user interface modified based on the user input is output for display at the location of the sensitive display.
7. The method of claim 1, wherein the presence-sensitive display comprises a capacitive touch panel.
8. The method according to any one of claims 1-7, wherein the one or more processors include a touch controller and an application processor.
9. The method of claim 8, wherein using the one or more adjusted mutual capacitance touch positions as user input comprises: The touch controller outputs the one or more adjusted mutual capacitance touch positions to the application processor.
10. A computing device, comprising: Sensitive displays exist; as well as One or more processors, the one or more processors being configured to perform the method according to any one of claims 1-9.
11. A non-transitory computer-readable storage medium storing instructions, which, when executed, cause one or more processors of a mobile computing device to perform the method according to any one of claims 1-9.
Citation Information
Patent Citations
Predictive Touch Surface Scanning
US20120154324A1
Determining Touch Locations and Forces Thereto on a Touch and Force Sensing Surface
US20140210791A1