Methods and systems for tracking hover-based input with capacitive touchscreens

The method enhances hover event detection on capacitive touchscreens by distinguishing signal levels and adapting processing based on hover event stability and movement, addressing challenges of noise and interference, resulting in accurate and intuitive user interactions.

WO2026137422A1PCT designated stage Publication Date: 2026-07-02HUAWEI TECH CO LTD

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2024-12-27
Publication Date
2026-07-02

Smart Images

  • Figure CN2024143355_02072026_PF_FP_ABST
    Figure CN2024143355_02072026_PF_FP_ABST
Patent Text Reader

Abstract

Methods and devices for detecting and tracking hover events in connection with a capacitive touchscreen in a computing device. A detected hover event may be processed as an interaction with regard to a user interface element at the location of the hover event on the capacitive touchscreen. The computing device may track movement of the detected hover event from the location and may process the movement of the detected hover event as continuation of the interaction with regard to the user interface element. Processing of the capacitive signals may depend on whether there is a hover event and whether the hover event is static or moving.
Need to check novelty before this filing date? Find Prior Art

Description

METHODS AND SYSTEMS FOR TRACKING HOVER-BASED INPUT WITH CAPACITIVE TOUCHSCREENSFIELD

[0001] The present application relates to capacitive touch-sensitive input and, in particular, methods and systems for receiving input based on hover interactions.BACKGROUND

[0002] Many computing devices include capacitive touch technology for receiving user input. Commonly, devices are equipped with touchscreens on which user interfaces are displayed and through which user input is received via touch events.

[0003] With capacitive touchscreens, the capacitive sensor signals may begin to increase in magnitude prior to an actual touch event as a finger or stylus is brought into close proximity to the sensor but not yet contacting the touchscreen. In some cases, this area just above the touchscreen may be used to detect “hover events” , in which a finger or stylus is held in close proximity to the screen but not in contact. However, the detection and classification of hover events is much more technically challenging than touch events.BRIEF SUMMARY

[0004] In accordance with one aspect, the present application describes a method of detecting input via a capacitive touchscreen. The method may include detecting a hover event from one or more capacitive signals from the capacitive touchscreen that are below a touch event threshold level and above a hover event threshold level, wherein the one or more capacitive signals are associated with a location on the capacitive touchscreen; processing the detected hover event as an interaction with regard to a user interface element at the location on the capacitive touchscreen; tracking movement of the detected hover event from the location; and, processing the movement of the detected hover event as continuation of the interaction with regard to the user interface element.

[0005] In some implementations, processing the detected hover event includes detecting selection of the user interface element, and continuation of the interaction includes selection of one or more adjacent interface elements as the location of the detected hover event passes those one or more adjacent interface elements. In some cases, the user interface element includes at least one text character and wherein the one or more adjacent interface elements include one or more adjacent text character.

[0006] In some implementations, processing the movement of the detected hover event includes determining that the movement exceeds a minimum threshold distance from the location before the processing the movement of the detected hover event as selection of one or more adjacent interface elements.

[0007] In some implementations, processing the detected hover event includes detecting selection of the user interface element, the user interface element is an actionable element, and the continuation of the interaction includes detecting an input operation with regard to the actionable element. In some cases, the actionable element includes a navigation element, and wherein the input operation includes causing a navigation operation. In some cases, the navigation element includes one of a slider bar, a scroll bar, a scroll wheel, a hidden menu, a pull-down menu, or an expandable menu.

[0008] In some implementations, processing the detected hover event as an interaction with regard to a user interface element at the location on the capacitive touchscreen includes rendering a blob on the capacitive touchscreen at the location, and processing the movement of the detected hover event as continuation of the interaction with regard to the user interface element includes moving the blob to track the movement on the touchscreen. In some cases, moving the blob includes altering one or more visual characteristics of the blob rendered on the touchscreen based on one or more of the speed or signal strength.

[0009] In some implementations, the method further includes detecting a transition the detected hover event into a detected touch event and processing a combination of the hover event and the detected touch event as a gesture input.

[0010] In some implementations, the capacitive touchscreen provides a plurality of capacitive signals including the one or more capacitive signals, and tracking movement of the detected hover event includes determining a decay factor based on a determination of whether the hover event is static or moving, smoothing the plurality of capacitive signals to obtain smoothed capacitive signals based on the decay factor, and tracking change in the location of the hover event based using the smoothed capacitive signals. Determining the decay factor may include determining a speed factor associated with the hover event, determining that the speed factor is above a threshold level and, as a result, determining the decay factor, at least in part, based on the speed factor. The speed factor may be a smoothed speed factor.

[0011] In some implementations, determining the decay factor includes determining a speed factor associated with the hover event, determining that the speed factor is below a threshold level and, as a result, determining the decay factor, at least in part, based on a signal strength measurement of the hover event. The signal strength measurement may be based on a sum of signal values for a matrix of capacitive signals at the location of the hover event.

[0012] In some implementations, tracking the change in location includes identifying one of the capacitive signals as a centroid of the hover event; and determining whether any of the capacitive signals adjacent to said one of the capacitive signals has a highest value and, if so, then identifying that capacitive signal having the highest value as a new centroid of the hover event. In some cases, identifying and determining are repeated until none of the capacitive signals adjacent to the new centroid have higher values.

[0013] In another aspect, the present application describes a computing device having a capacitive touchscreen, a processor, and memory coupled to the processor. The memory stores computer-executable instructions for detecting input via the capacitive touchscreen that, when executed, causes the processor to carry out one or more of the method described herein.

[0014] In yet a further aspect, the present application describes a computer-readable medium storing computer-executable instructions that, when executed by one or more processors, are to cause the one or more processors to carry out any one or more of the methods described herein.

[0015] In another aspect, the present application describes a computer program comprising instructions which, when executed by a computing device, are to cause the computing device to carry out any one or more of methods described herein.

[0016] In a further aspect, the present application describes a computing device having means to perform any one or more of the methods described herein.

[0017] Other aspects and features of the present application will be understood by those of ordinary skill in the art from a review of the following description of examples in conjunction with the accompanying figures.BRIEF DESCRIPTION OF THE DRAWINGS

[0018] Reference will now be made, by way of example, to the accompanying drawings in which:

[0019] FIG. 1A diagrammatically illustrates a capacitive touch sensor;

[0020] FIG. 1B illustrates a progression of sensor readings corresponding to a touch event;

[0021] FIG. 2 shows, in flowchart form, one example method of utilizing hover events for user interaction;

[0022] FIG. 3 shows, in flowchart form, one example method for reducing computational load in capacitive evaluations;

[0023] FIG. 4 shows, in flowchart form, one example method for updating a background noise model for a touchscreen;

[0024] FIG. 5 shows, in flowchart form, one example method for excluding holding data from hover or touch event detection;

[0025] FIG. 6 shows, in flowchart form, one example method for tracking a hover event on a computing device having a touchscreen;

[0026] FIG. 7 illustrates an example slider bar in a sequence of hover events;

[0027] FIG. 8 shows, in flowchart form, one example method for detecting a hover-based gesture;

[0028] FIG. 9 shows a high-level diagram of an example computing device; and

[0029] FIG. 10 shows a simplified example of software components within the computing device.

[0030] Like reference numerals are used in the drawings to denote like elements and features.DETAILED DESCRIPTION

[0031] Modern touch screen technology often employs capacitive sensing. In capacitive touch screens a matrix or grid of sensors (sense electrodes) produce a small localized electromagnetic field at or near the surface of the screen. When a finger (or stylus) is brought into contact with the screen, it impacts the electromagnetic field in a manner that is measurable by the underlying sensor (s) . In particular, it capacitively couples with the electrode and thereby produces a change in the electromagnetic field that is reflected in a change in measurable electrical parameters within the electrical circuit of the capacitive sensor. Each node or sensor of the matrix or grid may provide a sensor reading. By evaluating the intensity or amplitude of received sensor readings from the various nodes of the grid or matrix, a computing device can determine whether a touch event has occurred. The device may compare the readings to a threshold level and if the readings exceed a threshold level in a particular area, then it may indicate a touch event.

[0032] FIG. 1A diagrammatically illustrates a capacitive touch sensor 100. As shown, when a finger is brought into close proximity of the capacitive touch sensor 100, it interacts with the electromagnetic field, thus producing a measurable change in electrical parameters within the sensor 100. As illustrated, a capacitive touch screen may be sufficiently sensitive to detect a touch before the finger makes contact with the touch screen. This may be termed a “hover” event in some cases.

[0033] FIG. 1A further graphically illustrates a grid of capacitive sensors, showing detection of a hover event. The differently shaded pixels indicate different magnitude values detected using the capacitive sensors at those locations. Reference is now also made to FIG. 1B. FIG. 1B illustrates a progression of sensor readings corresponding to a touch event, from hover, to light touch, to heavy touch, to release. The various sensor readings may be referred to as forming a capacitive shape, as graphically illustrated by the differently shaded pixels of the grid of sensor locations.

[0034] In a first stage 102, a user’s finger descends towards a touch screen. The readings corresponding to the first stage 102 show that some of the sensors in the grid of sensors have begun to detect presence of the finger proximate to the screen, as illustrated by the different shading shown in some pixels. In a second stage 104, the user makes initial light contact with the touch screen. It will be noted that more sensors in the region of the touch point exhibit a noticeable change in value as indicated by the shading of the pixel grid. In the third stage 106, the finger makes full contact with the touch screen. It will now be noted that a significant portion of nine or more of the sensors show a noticeable reading signalling a touch event. In the fourth stage 108, the finger is pressed harder, flattening it out and causing even more sensors to detect the presence of the finger. In any of these cases, the device may determine the precise location of the touch based on an algorithm for finding a center point of the touch using the readings from the various sensors. Finally, in a fifth stage 110, the finger is drawn up and away from the touch screen, ending the touch event. It may be noted that one or two sensors still produce a faint reading from capacitive coupling of the tip of the finger as it is raised away from the screen.

[0035] The improved precision and sensitivity of capacitive touch screen sensor technology makes the detection of hover events more reliable; although, it will be appreciated that accurate detection of a hover event can be more difficult than detection of an actual touch event, since the signal levels detected by the sensors are lower and therefore more susceptible to noise issues. In one example case, the detection of a hover event, as distinguished from a touch event, is based on detection of a signal level that is above a lower threshold level or value (e.g. a hover threshold level) but that is below a higher threshold level or value (e.g. a touch threshold level) . In some cases, the “level” detected is based on an average of a set of adjacent capacitive sensors signals. For example, the detected level may be based on an N×N matrix. In some cases, the matrix is a 3×3 matrix. Other shapes or groupings of sensors may be used in determining the “level” or signal value for assessing whether a hover event is detected.

[0036] Hover interactions may enable a richer, more complex way to implement user input by expanding the interaction space to the area above the screen, particularly if used in combination with traditional touch detection or other input modalities. However, care needs to be taken to ensure that the hover gestures are reliably detectable and properly classified. Hover events present challenges such as background noise, imprecision in location determination, and noise caused by unintentional hand postures.

[0037] FIG. 2 shows, in flowchart form, one example method 200 of utilizing hover events for user interaction. The method 200 is carried out by a computing device having at least one touchscreen. The touchscreen displays a user interface. The user interface may include one or more user interface (UI) elements. At least some of the UI elements may be actionable, e.g. selectable. An actionable UI element may have a defined “activation zone” . An activation zone is the area on the screen within which a touch event is determined to be activation of the UI element. For example, the UI element may be a button having certain dimensions. The activation zone may match the dimensions of the button in some cases. In some cases, the activation zone may be defined slightly larger than the dimensions of the button, so as to enable slightly imprecise touch events to activate the button despite the location of the touch event being just adjacent to the displayed boundaries of the button. In some other cases, the activation zone may be smaller than the dimensions of the UI element, such that it only responds to a touch event within that smaller activation zone.

[0038] In operation 202, the device obtains capacitive sensor signals. These may be in the form a matrix of raw signal data for the grid of capacitive sensors in some case. Various filtering or cleaning operations may be carried out by the touchscreen sensor system in some implementations.

[0039] In operation 204, the device determines whether the capacitive sensor data indicates a touch event has occurred. That is, it determines whether one or more capacitive signals are above a touch threshold level. In some cases, the device may evaluate a grid or set of adjacent signals, such as a 3×3 matrix of signals, and may determine from the set of signals whether a touch event has been detected. This may utilize the average or median signal strength. It may involve determining whether the values or signal strengths of at least n of m of the signals are above the touch event threshold. Howsoever the touch event is detected, if the device determines that a touch event is detected then it proceeds to touch handling; if a touch even has not been detected, then the device assesses whether the capacitive signals nevertheless indicate a hover event.

[0040] In operation 206, the device determines from the capacitive sensor data whether a hover event is detected. This may include comparing the capacitive signal data to a hover event value. The hover threshold value is set between the noise floor for the capacitive screen and the touch threshold level. As above, the determination of whether a hover event is detected may be based on a grid or set of adjacent signals. The determination may be based on an average or median signal value in some cases. The determination may involve determining whether the values or signal strengths of at least n of m of the signals are above the hover event threshold. In some implementations, the number of signals above the hover event threshold that are needed to detect a hover event may be different from the number of signals above the touch event threshold that are needed to detect a touch event.

[0041] The hover event threshold may, in some cases, be dependent upon the background noise level. That is, the hover event threshold may be set at a percentage of the background noise level. In some cases, the hover event threshold may be location dependent. That is, particularly locations of the touchscreen may have a different hover event threshold than other locations of the touchscreen. In some cases, the locations with higher hover event thresholds may also be associated with higher background noise. In some cases, higher thresholds may be set near touchscreen edges, since inadvertent interactions are more likely in those zones.

[0042] In operation 208, if the signals meet the classification for a hover event, then the device may determine whether the hover event has persisted for longer than a minimum duration. That is, the device may not determine that a hover event has occurred when the capacitive signals are initially determined to be above the hover event threshold but below the touch event threshold; instead, it may detect a hover event if those signals remain in the hover event classification for a duration longer than a minimum. This avoids inadvertently detecting hover events in the moments just before or just after a finger or stylus is brought into contact with the touchscreen for a touch event.

[0043] If a hover event of sufficient duration is detected, then in operation 210 the hover event is localized (if not already done) to pin-point a location on the touch screen of the detected hover event. The location may be determined as a center point of the signals that exceed the hover event threshold in some implementations. The location may be determined as a center point of the N strongest signals that exceed the hover event threshold in some implementations. In some cases, the location may be determined as the strongest of the signals within the grid or set of signals that were detected as the hover event. The location of the hover event may then be compared to the layout of user interface and, in particular, to the location or position of the UI elements and / or activation zones associated with those UI elements. In this manner, the device determines whether the hover event is associated with a particular UI element.

[0044] In operation 212, the device progressively modifies the UI element displayed in the location of the hover event and / or modifies the activation zone associated with the UI element in that location. The modification may include increasing the size of the displayed UI element and / or the size of the associated activation zone. The modification may be progressive in the sense that it continues to be modified, e.g. increased in size, as the hover event continues, up to a maximum modification. For instance, as a hover event persists over top of a selectable UI element, such as an app icon, the displayed icon may progressively grow in size on the display beneath the hover event until it reaches a maximum size. Visually, this may have the effect of the hovering causing the underlying UI element to grow beneath the hover. The associated activation zone may similarly grow in size as the hover event persists. By growing the associated activation zone, it is easier for the user to correctly select the UI element over which the hover has been occurring, despite the fact that an eventual touch event may be slightly inaccurate vis-à-vis the original position and size of the UI element. In this manner, by hovering for a short moment before selection, precise selection of the correct UI element is made more intuitive and accurate.

[0045] In some cases, other modification may be made to the UI element in addition to, or as alternative to, increasing its size. For example, a brightness and / or intensity of the UI element display pixels may be increased or a growing visual glow surrounding the UI element may be displayed.

[0046] In the event that the hover event is eventually converted to a touch event, then in operation 204 the touch event is detected and in operation 214 the device localizes the touch event (i.e. determines the position of the touch on the touch screen) and compares it to the current activation zone (s) of the user interface. To the extent that a hover event has caused an increase in size in the activation zone associated with the UI element in the area of the touch event, then it is the enlarged activation zone that is compared to the position of the touch event.

[0047] In operation 216, the device carries out an action in response to the detected touch event. If the location of the touch event corresponds to an activation zone, then the device takes the action corresponding to that UI element. In some cases, the touch event may not correspond to a specific UI element, e.g. it may be touch on a portion of the user interface not designated as having actionable elements. This may, depending on the design of the user interface and the operating system of the device, have other effects, such at the triggering of a new menu or set of option or other functionality.

[0048] It will be appreciated that the constant analysis of all the capacitive signals from the touchscreen to identify hover events and / or touch events may be depending in terms of computational effort and battery expense. In order to reduce the demand, the device may employ global-local processing phases. When evaluating whether a hover event or touch event has occurred during an initial global phase, rather than evaluating grids of signals and determining averages or median calculations and carrying out the other operations associated with touch or hover detection on a screen-wide basis, the device may begin by simply identifying the global maximum capacitive value signal and then assessing whether or not that signal represents a hover event.

[0049] Reference is now made to FIG. 3, which shows, in flowchart form, one example method 300 for reducing computational load in capacitive evaluations. In operation 302, the device identifies a capacitive signal having a maximum signal strength from among the set of capacitive signals from the touchscreen. Having identified the global maximum signal from the full screen of capacitive signals, the device then evaluates a set of signals around that global maximum signal, as indicated by operation 304. The set of signals may be an N×N matrix of signals. As discussed above, the evaluation may be a sum of signal strengths, an average, a median, or some other measure, in some different implementations. That evaluation is then compared with a touch event threshold to determine whether the signals indicate a detected touch in operation 306. If so, then the device initiates touch event handling in operation 308.

[0050] If no touch event is detected, then the device evaluates whether the set of signals indicate a hover event in operation 310. If so, then hover event handling is triggered in operation 312.

[0051] If they are neither a touch nor a hover, then the device continues to evaluate the capacitive signals in this global phase by re-assessing the maximum capacitive signal. If touch event handling or hover event handling are triggered, then the device may engage in more local processing operations to track and evaluation the touch and / or hover event, particularly to the extent they are continuing events or are being tracked as the location of the event moves, as will be described further below. This local processing may be more focussed on detailed evaluation of localized areas, particular those configured with activation zones and / or UI elements capable of being selected and / or manipulated.

[0052] It will be appreciated that the evaluation of whether a set of signals indicates a touch event or whether they indicate a hover event can be carried out in the same operation by comparing the signals to thresholds. They are depicted as separate operations in this discussion for ease of illustration.

[0053] In order to accurately and reliably detect touch events and, in particular, hover events, the device may track a background noise model. In some cases, this is a set or matrix of baseline capacitive sensor values indicative of a noise floor. In some implementations, the background noise model (e.g. a base frame) is subtracted from a set of capacitive sensor readings before evaluating the sensors readings to determine whether a touch or hover event is detected. Determining and updating the base frame correctly will ensure more accurate event detection.

[0054] FIG. 4 shows, in flowchart form, one example method 400 for updating a background noise model for a touchscreen. The method 400 begins with initialization of the background noise model, i.e. the base frame, in operation 402. The initialization may be carried out at a time of start up or in response to another trigger event for re-initialization, such as on wake-up. The initialization may be based on an averaging of the last τ frames. The number of frames used in the averaging window may be, for example, τ = 512. Any suitable number of frames may be used.

[0055] The base frame updating may then be dependent on whether an event is detected or whether the touchscreen is not in use. While not in use, the base frame may be updated. While the user is actively utilizing the touchscreen, the base frame may remain static in some implementations. In operation 404, the device determines whether a hover event has been detected. In another embodiment, when the device determines that a hover event has occurred, then it updates the base frame in a manner different from when it updates the base frame in the case of no hover event.

[0056] If no hover event has been detected, then in operation 406 the device assesses whether the raw capacitive signal data is higher than the background noise level. That is, the raw data is subtracted from the base frame and the device assesses whether the overall difference is negative or positive. If positive, i.e. if the raw signals are at or below the base frame values, then the device may slowly adapt to that noise floor in operation 408. The device may use any suitable adaptive algorithm. In these examples, the device may use exponential decay averaging; e.g. the device may use a smoothing factor, α, intended to adapt more slowly to the recent raw data signals. If the determination in negative, i.e. if the raw signals exceed the base frame values, it may be indicative of baseline drift or a need for error correction. Accordingly, the device may select a smoothing factor, α, intended to adapt more quickly to the recent raw data signals.

[0057] Once the device detects a hover event (or touch event) in operation 404, it may cease updating the base frame while the interaction continues in some implementations. However, it does assess in operation 412 whether this is the initial detection of the start of the hover event, i.e. is this the first frame in which a hover event is identified. If so, in operation 414, in this example it resets the base frame. The reset or reinitialization may be set back or rolled back to the base frame from τ frames ago. That is, the base frame may be selected to be the base frame at t-τ. In some cases, this may be an average of the last τ frames, or an average (or weighted average in some implementations) of a small set of based frames from τ frames ago. The device may maintain, in memory, the raw signal data and / or the updated base frames of the last τ frames. The purpose is to ensure that the base frame used during tracking of the now-detected hover event is not the most-recently updated base frame, since that may include the effects of the capacitive signals that are just pre-hover-event, and therefore incorporate close-to-hover signalling. Instead, the device jumps back to a base frame or frames from some time ago that likely excludes the signals immediately preceding detection of the hover event.

[0058] In the above example, the base frame is a simple average capacitive frame. In some implementations, it may be structured to capture more complex relative noise patterns, incorporating factors such as rate of change, weighted averages, variance, and frequency data across varying time windows and spatial regions.

[0059] In addition to the challenges associated with updating a baseline background noise model, hover detection can be made more difficult in the case of handheld devices, like smartphones and tablets, due to inadvertent triggering based on holding patterns. That is, when a user holds the device in such a manner that some portion of the user’s hand is unintentionally on or proximate the touchscreen, the device may detect that as a touch or hover event, causing unexpected and unwelcome operations.

[0060] FIG. 5 shows, in flowchart form, one example method 500 for excluding holding data from hover or touch event detection. In operation 502, the device stores holding pattern data. The holding pattern data may include one or more models of holding data. The models may be standard holding pattern models associated with the form factor of the computing device. In some cases, these models may be generated from stored sensor data obtained from a large number of devices. The models may provide baseline capacitive sensor values based on particular holding patterns.

[0061] In operation 504, the computing device determines whether a touch or hover event is detected. That is, it determines whether one or more capacitive signals are sufficiently strong to suspect a touch or hover event. In operation 506, the device may compare the capacitive touch screen readings, e.g. the matrix of sensor data, or at least a portion of the data associated with the suspected touch or hover event, with the one or more stored holding patterns. The holding patterns may indicate that certain portions of the touch screen are likely to be contacted in a particular holding pose. To the extent the data indicating the suspected touch or hover event aligns with the holding pattern, the more likely that the suspected touch or hover event is actually as a result of inadvertent input from a device holding pose.

[0062] In operation 508, the device determines whether the suspected touch or hover event is a holding event. This determination may be based on the comparison between the capacitive touchscreen signal readings and the one or more holding pattern models. In some cases, the comparison may include determining a degree of fit between the readings and model. Other factors that may be taken into account include whether there is a multi-touch event. For example, if a suspected input is taking place in an area where the holding pattern model indicates a possible inadvertent holding input, and there is an active touch or hover event occurring in another part of the user interface that is determined to be intentional, then it is more likely that the suspected touch or hover event is inadvertent and not a intended multitouch event. In some cases, the user interface layout may also be a factor in determining whether the readings are an inadvertent touch event. If they generally correspond to a holding pattern model and the location of the detected hover or touch event is an inactive or unselectable portion of the user interface, e.g. an area without UI elements and / or activation zones, then the readings are more likely to be inadvertent. In some cases, a pretrained machine learning model may be used to determine whether a detected touch event corresponds to a holding pattern or not.

[0063] If, in operation 508, the device determines that the sensor signals do not correspond to a holding pattern, then in operation 514 the device carries out hover or touch event handling, as is described elsewhere herein. However, it the device determines that the sensor signals correspond to a holding pattern, then in operation 510 it may filter out the holding pattern. That is, it may cancel signals corresponding to the holding pattern. In one example, it may mask the holding pattern area to eliminate signals in the holding pattern area. In one example, the device may filter the current sensor signals or frame by subtracting the holding pattern, where the holding pattern may be a particular pattern identifies as a sufficient match in operation 508. The remaining filtered sensor signals may then be reevaluated to determine if a touch or hover event has occurred in operation 504.

[0064] In some cases, once a holding pattern is detected, the device may use that data to update its holding pattern model, as indicated in operation 512. In some cases, where the holding pattern determination is based on a machine learning model, the detected holding pattern sensor data may be input as refinement feedback to the trained model. In some other cases, the detected holding pattern sensor data may be used to slowly update the stored model of a holding pattern, perhaps using a smoothing function such as exponential decay averaging, so as to slowly adapt the stored holding pattern to the user’s particular holding pattern habits.

[0065] In another implementation, the device may be configured to perform dynamic anti-interference detection through the detection of suspected hand shapes during hover or touch interactions. In some cases, particular gestures on particular interfaces may be likely to generate interference due to the hand posture, such a pointing gesture, a keyboard typing hand pose, or the manipulation of certain virtual controls. By modeling typical hand postures applicable to particular contexts, the device can accurately detect likely hand shape and effectively filter out interference, improving user experience.

[0066] Palm interference is a significant issue due to its size, meaning the device cannot necessarily rely on the strongest signal to determine touch location. Instead, it may consider hand structure or posture, considering the size of the palm and fingers, their relative positions, and tracking data from previous finger and palm interactions. This helps the system differentiate between palm and finger contacts more effectively. This may be of particular usefulness when tracking an ongoing hover or touch gesture.

[0067] In some embodiments, the device refines interference handling by limiting the search region for touch detection. For example, in a suitable UI context input of a hover and / or touch event may be associated with a particular likely palm position, such as spaced below the finger input area. The device may be configured to dynamically adjust a notional barrier or sensitivity line. In one example the barrier or sensitivity line may be below the previous touch location. The device may then filter out palm interference by rejecting signals below the barrier while considering the capacitive blobs below the line to likely be from the palm. In some cases, this dynamic anti-interference method adjusts the threshold based on prior finger interactions, ensuring more accurate touch detection.

[0068] As noted above, hover events are more difficult to manage from a technical point-of-view in that they are less definitive than a touch event. Touch events tend to be easier to distinguish and classify due to the SNR of a touch event. Nevertheless, enabling hover interactions allows for a potentially richer mechanism for user interface with a computing device, by extending the interaction space to the area above the touchscreen. This may enable the use of more complex gestures and operations. Accurately tracking movement of a hover event, while technically challenging, would be advantageous to enabling these features.

[0069] In accordance with one aspect, the present application describes devices for tracking a hover event that alter the signal processing for touchscreen events dependent on whether the hover event is determined to be moving or not. Reference is now made to FIG. 6, which shows, in flowchart form, one example method 600 for tracking a hover event on a computing device having a touchscreen.

[0070] The method 600 includes detecting a hover event in operation 602. This includes receiving a capacitive signal from the touchscreen indicative of a hover event. Detecting a hover event may include detecting a capacitive touch event, e.g. a set of signals from one or more adjacent sensors on the touchscreen, that exceed a lower hover event threshold but do not exceed a higher touch event threshold. The classification of an event as a hover event versus a touch event may be based on the maximum amplitude sensor signal or an average or median value of signals, such as the capacitive signals in an N×N grid or other shape.

[0071] If no hover event is detected, i.e. the touchscreen is idle, then in operation 604 the device determines a smoothed capacitive signal (C) , where C is the matrix of capacitive sensor signals for the full touchscreen. The device may track the smoothed capacitive signal (C) , for example for determining a base or raw frame of sensor data that establishes a noise floor. The signal C may be determined using exponential decay averaging; e.g. the device may use a smoothing factor, α, such as is described above in connection with FIG. 4.

[0072] If the device determines in operation 602 that a hover event is detected, then in operation 606 it may determine a speed factor (SF) . In some implementations, the device may further determine a smoothed speed factor (xt) . The speed factor and / or smooth speed factor measure the change in centroid (e.g. center position) of the hover event over time. The smoothed speed factor may use a speed smoothing factor, ω, to avoid jumpiness in the speed determination from anomalies in the centroid determination for example. The speed factor may, in one example, be determined as:

[0073] The constant value is for normalization such that the speed factor ranges between 0 and 1. The smoothed speed factor may, in one example, be determined as: xt= (SF) *ω+xt-1 (1-ω)

[0074] Other algorithms may be used so as to smooth the speed factor in other implementations.

[0075] In operation 608, the device determines whether the speed factor and / or the smoothed speed factor (or both) exceed respective speed threshold values. In one example, the device may rely on the speed factor SF and may determine that the hover event is moving if SF exceeds a first speed threshold value. In another example, the device may use the smoothed speed factor, xt, and may determine that the hover event is moving if xt exceeds a second speed threshold value. In yet a further example, the device may use both the speed factor and the smoothed speed factor and may determine that the hover event is moving if both factors exceeds their respective speed threshold values.

[0076] The determination of whether the hover event is moving or not may change how the capacitive signal is processed. In particular, if the hover event is determined to be static, then in operation 610 the device may calculate a static smoothed capacitive signal. If the hover event is determined to be moving, then in operation 612 the device may calculate a moving smoothed capacitive signal. The difference in the calculations may be the degree to which smoothing is applied, i.e. the decay factor (or smoothing factor) α applied to determine the smoothed signal C. In one example, the decay factor α applied in the case of a static hover event may be lower in some circumstances. The mechanism for determining the decay factor α may also change as between a moving hover event and a static hover event.

[0077] Once the smoothed signal C, i.e. the smoothed or processed matrix of capacitive signals, has been determined, then in operation 614 the device determines a centroid of the hover event. That is, the device identifies the “blob” of signals representing the detected hover event, e.g. the set of adjacent or nearby capacitive signals that exceed the hover event threshold level, and it determines a center point or centroid of that set of signals within the matrix of signals. In some cases, the “blob” may be the N×N matrix of signals that was the basis for the hover event detection in operation 602.

[0078] Once the centroid or center point has been determined, then in operation 616 the device looks at the signal strengths, based on the smoothed signal C, in a region of interest around the centroid or center point. In one example, the region of interest is restricted to the immediately adjacent signals in the matrix of signals. In another example, the region includes signals within M positions of the centroid in the matrix, where M is an integer value greater than 1. Within that region of interest, the device identifies whether any of the signals are greater than the value of the centroid signal, as indicated by operation 618. This may include determining whether any of the signals in the smoothed signal exceed a minimum threshold value. If not, then the hover event may be too weak to be tracked. If the maximum value is the centroid value, then the hover event is accurately located and the method 600 returns to 602 to continue tracking it.

[0079] If the maximum value is a different signal within the region of interest, then the device marks that maximum as the new centroid in operation 620 and returns to operation 616 to define a new region of interest around the new centroid to assess whether there is a further local maximum in that new region of interest to which the centroid should be shifted. In this manner, the device can track shifting of the determined location of the hover event based on the smoothed signal C. Once the centroid is accurately finalized, then the method 600 returns to operation 602 to continue tracking.

[0080] Referring again to operations 610 and 612, the smoothed capacitive signal C is determined using a decay factor (or smoothing factor) α that may be determined differently in the case of a static hover versus a moving hover. In the case of a moving hover, the speed factor and / or the smoothed speed factor may be taken into account in determining the decay factor. In other words, the speed of the movement may impact the rapidity with which the capacitive sensor values of the touchscreen adapt to the current raw readings. When the hover event is static, in some cases the strength of the signals associate with the hover event, i.e. the capacitive sensor signal strength in the area of the hover, may be taken in account in determining the decay factor. In some cases, a stronger hover event signal may impact the rapidity with which the capacitive sensor values of the touchscreen adapt to the current raw readings.

[0081] In one embodiment, the determination of the smoothed capacitive signal C at a time t may be given by:

[0082] In the case of no hover event, the decay factor α may be a fixed value, in some embodiments. As discussed above in connection with FIG. 4, if determining a base frame update, the decay factor used may vary depending on whether the raw capacitive sensor data is higher than the previous smoothed capacitive frame data.

[0083] During a static hover event, the decay factor used may take into account the signal strength of the hover event. For instance, it may determine a hover signal strength value, xs, which represents the strength of the capacitive values in the area of the hover event. In one example, this may be sum or the average of an N×N matrix of values under the hover location or at the hover centroid. In some cases, it may be a 3x3 matrix of values. In one specific example, the signal strength may relate to the decay factor based on a quadratic relationship. For example, the decay factor may be determined as:

[0084] An example decay factor may range from about 0.98 to 0.75, for instance, where xs ranges from 50 to 350. A higher signal strength results in a lower decay factor, meaning that the that the smoothed capacitive signal updates more quickly to new raw data.

[0085] During a moving hover event, the decay factor used may take into account the speed of the hover event. That is, it may be determined based on the speed factor SF or the smoothed speed factor xt. In one example, the decay factor varies within a set range linearly with the speed factor or the smoothed speed factor. For example, the decay factor may be determined as: α=0.89+ (1-xt) (0.09)

[0086] In this example, the smoothed speed factor ranges between 0 and 1, meaning that the decay factor ranges between 0.89 and 0.98. A higher speed of the hover event results in a lower decay factor, meaning that the smoothed capacitive signal updates more quickly to new raw data.

[0087] The foregoing approach to tracking hover events, and to determining the decay factor with regard to smoothing of the touchscreen capacitive values dependent on whether the hover event exists and whether it static or moving, results in a smoother and more reliable user interface. This avoids or reduces jumpy cursor events and unpredictable or unexpected UI behaviour.

[0088] With a reliable mechanism for detecting and tracking hover events in a smooth manner, the user interaction with the touchscreen can be improved by leveraging hover events as predictive indicators to make certain user actions more intuitive and accurate.

[0089] As a predictive indicator of touch location, the hover event, whether static or dynamic, may be signaled onscreen through the rendering of a “blob” at the location of the hover event. The blob gives a visual feedback to the user of the likely touch location should the user advance his or her finger towards the screen. The size of the blob may be varied in accordance with strength of the hover event. That is, the stronger the hover event capacitive signals, the smaller and more accurately localized the blob that is rendered. That is, as the user’s finger gets closer to the screen, the blob shrinks towards the centroid of the hover event, providing further feedback that helps the user to accurately locate a touch event.

[0090] The blob may be rendered as a semi-transparent circular item centered at the centroid of the hover event. The transparency of the rendered blob may be varied based on the signal strength, with the blob being less transparent as the signal strength increases. In other words, the blob becomes smaller and more intense as the hover event transitions towards a touch event. The transparency of the rendered block may also or alternatively be varied based on the speed of the hover event. In one example, the speed factor or the smoothed speed factor may be used to determined blob transparency. At the speed increase, the blob may become more transparent, so as to visually signal the lower accuracy of the hover event location and pinpointing of a future touch event.

[0091] In one example, hover events may be used in the context of text cursor processing. When engaged in text cursor manipulation, each character or each word in text may be designated as a defined activation zone or region. The context may be pre-action, when simply navigation text, or during an action, such as when highlighting text, selecting text, or moving text. When navigating text, such to navigate through the text pre-action or to navigate during an action to highlight, select, or move text, a hover event may be the mechanism used to carry out the navigation, with a subsequent touch event signaling an execution or action point.

[0092] As an example, a highlight or select action may be initiated through a touch (e.g. tap) action at a certain point in the text. After the finger or stylus is lifted from the touchscreen, it may be maintained in the hover interaction area above the screen to carry out a hover event action. The hover event may be detected and tracked as the finger or stylus is moved over the text to select / highlight additional characters and / or words. To end the highlighting / selection a further touch event (e.g. tap) may occur at the point where the highlighting / selection is to end.

[0093] To improve the navigation of text using hover events, the device may implement soft boundaries behaviour with regard to individual characters or words or paragraphs. That is, as a hover event it tracked, after it reaches the end of a character or word and begins to move across the next character or word, the tracked location of the highlight / selection may “stick” to the end of the previous character or word as though caught in a slot or groove until the location of the hover event progresses far enough into the next character or word to overcome the stickiness and jump to the next slot or groove after that character or word. In this manner, selection stability is improved and accidental touch events with incorrect selection are avoided.

[0094] In one example, the selection / highlight location (e.g. the cursor location) is maintained at a current slot between characters or words until the hover event location has progressed beyond 50%toward the next slot. Put another way, if tracking on a word-by-word basis, if a cursor location has reached a slot between a first word and a second word, the hover event will need to move at least halfway to as second slot located between the second word and a third word before the cursor location will jump to the second slot. In some cases, the threshold is higher, such as 75%, before the cursor location is changed.

[0095] In another example, hover events may be used in the context of actionable UI controls. For instance, a hover event may be used in manipulating a slider-based control element. In some examples this may include a typical slider bar such as may be implemented for document navigation, zoom selection, volume control, etc. In some examples, the slider bar may be associated with previews, such as when navigating a list of images or a timeline of video, where individual frames are shown in preview form as the slider is manipulated to different time points in the video. The slider may be configured to exhibit the same “sticky” behaviour described above in connection with text navigation and hover events.

[0096] Reference is made to FIG. 7, which illustrates an example slider bar 700 in a sequence of hover events (a) through (e) . In this example, the slider bar 700 may be a video timeline slider for selecting a frame of video.

[0097] Activation of the slider bar 700 is first initiated through detection of a hover event 704 in proximity to the slider 702. The hover event 704 may, in this example, be rendered on screen by way of a transparent blob. In some cases, the hover event 704 does not come with an associated cursor or blob rendered on screen. Activation of the slider bar 700 may be based on determining that the location of the hover event 704 is on, or within a threshold distance of, the slider 702 and that the hover event remains in this location for more than a minimum duration. That is, the hover event 704 is held over (or near) the slider 702 for a minimum length of time.

[0098] Upon activation of the slider bar 700, in some cases a visual signal may be output to signal to the user than the hover event may now but used to manipulate the slider 702. In this example, this may be facilitated through highlighting the slider 702. Other visual effects may be used.

[0099] Once activated, the hover event may then be tracked as it moves along the slider bar 700 and the slider 702 may be moved accordingly. As indicated in event (c) , the movement of the slider 702 to a location on the slider bar 700 may trigger display of a video still frame, e.g. a preview 706, corresponding to that time point in the video.

[0100] As mentioned, the slider bar 700 may be segmented into specific points in the video, and the slider 702 may exhibit “sticky” behaviour. For example, even as the hover event 704 moves along the slider bar 700, such as in event (d) , the slider 702 may remain at its current location until the location of the hover event 704 has reached and passed the next “slot” or time point in the video. As indicated by event (e) , once the hover event has more than passed the next time slot, the slider 702 jumps to that position on the slider bar 700 and the new preview frame 708 is displayed.

[0101] As the hover event continues to manipulate the slider bar 700 to navigate among previews or timeslots of the video, a touch event may then be detected to fix the slider 700 in the touch location. The video playback may then continue from the frame corresponding to that time point.

[0102] In a further example, accurate detection and tracking of hover events may enable two-phase or multi-phase interactions, e.g. gestures, that involve a hover event.

[0103] Reference is now made to FIG. 8, which shows, in flowchart form, one example method 800 for detecting a hover-based gesture.

[0104] In operation 802, in this example, an initial hover event is detected. As noted above, the hover event may be detected through detecting a set of capacitive signals above a hover event threshold but below a touch event threshold. The set of capacitive signals may be monitored so as to determine that the hover event has persisted for longer than a minimum duration before being recognized as an intended hover event. In some cases, the fact that the hover event has been detected as being initiated may be visually signaled on the screen, for example through the display of a blob at the hover location, display of an otherwise-hidden menu, display of some highlighting or other visual cue with regard to a nearby UI element, etc.

[0105] In operation 804, the hover event is tracked as it moves. Tracking of hover events are described in examples above. In operation 806 the device may determine whether a gesture is detected. In some cases, the hover event itself may be a gesture. For example, particular gestures may be input by way of hover events. The gesture may be detected by pattern matching with pre-defined gestures. For example, a circular motion in which the hover event traces an approximate circle may be a defined gesture. In some cases, the capacitive signal intensity may be tracked to detect a gesture. For example, movement of the hover event towards and away from the screen but within the hover interface zone may be detected as an oscillation of the signal intensity that is a defined gesture. Any defined gesture detected may trigger an action, as indicated by operation 808, and the specific action triggered may be context dependent. The context may include the location of the hover event with regard to the user interface, the state of the user interface, etc.

[0106] Assuming that the hover event itself is not recognized as a gesture, in operation 810 the device determines whether a touch event occurs. If not, then it continues to monitor and track the hover event, as indicated by operation 812, unless it ceases.

[0107] If a touch is detected in operation 810, then in operation 814 the device determines whether the hover event and touch together are recognized as a gesture. This may include tracking the location and / or intensity of the hover event and the location and / or intensity of the touch event. Within a threshold of error, a match may be identified between the two-phase hover-touch event and a defined hover-touch gesture. If so, then in operation 816 the device takes an action based on the detected two-phase gesture. If not, then the touch event is processed as a distinct touch event and a corresponding action is taken in operation 818.

[0108] The action taken in operation 816 based on the detected two-phase gesture may be context dependent. As noted above, context may include the location of the hover and / or touch on the user interface, the state of the user interface, and other such factors.

[0109] An example two-phase gesture may include a glide-to-touch gesture, where the hover event is detected in one location and gently intensifies as it moves location on the screen until a touch event is detected. This may indicate an angled descent to the screen that is interpreted as a specific gesture that triggers a corresponding action.

[0110] Use cases for a two-phase gesture may include hover-to-reveal and touch-to activate for hidden controls or features or options. Another use case is hover-to-enlarge and touch-to-interact. Another is hover-to-highlight and touch-to-select. A further one is hover-to-preview and touch-to-commit.

[0111] It will be appreciated that in other variations of the above-described method 800, the two-phase gesture may be initiated by a touch event and followed by a hover event. For example, a gesture may include a tap / touch followed by a hover that is tracked as it moves across the screen. One example gestures could be a tap (select) and hover swipe to launch, or delete, or move and icon or item. For instance, in a two-screen environment, a tap on a thumbnail of an image or video and a hover-based swipe motion towards the other screen may open the corresponding image or video in full screen format on the other screen. As another example, a tap on a zoom icon with regard to a document or media being shown may initiate a zoom sequence where hover movements in one direction increase zoom magnification and hover movements in the opposite direction decrease zoom magnification. It will be appreciated that there are many other example use cases.

[0112] Other actions that may be associated or triggered by way of gesture may be realized using a hover-to-touch gesture or a touch-to-hover gesture. In some cases, a three-phase or more gesture may be detected, such as a touch-to-hover-to-touch gesture for example.

[0113] Reference will now be made to FIG. 9, which shows a high-level diagram of an example computing device 900. The example computing device 900 includes a variety of modules. For example, the example computing device 900 may include a processor 910, a memory 920, an I / O module 940, and a communications module 950. As illustrated, the foregoing example modules of the example computing device 900 are in communication over a bus 960. In these examples, the computing device includes a capacitive touchscreen as part of the I / O module 940. The capacitive touchscreen is able to display a user interface that may include actionable UI elements in some cases. The capacitive touchscreen is configured with a grid or matrix of capacitive sensors to receive capacitive signal data indicating whether there are any hover or touch events at any location on the touchscreen.

[0114] The processor 910 in this example is a hardware processor. The processor 910 may, for example, be one or more ARM, Intel x86, PowerPC processors, or the like.

[0115] The memory 920 allows data to be stored and retrieved. The memory 920 may include, for example, random access memory, read-only memory, and persistent storage. Persistent storage may be, for example, flash memory, a solid-state drive or the like. Read-only memory and persistent storage are a computer-readable medium. A computer-readable medium may be organized using a file system such as may be administered by an operating system governing overall operation of the example computing device 900.

[0116] The I / O module 940 allows the example computing device 900 to receive input signals and to transmit output signal. Input signals may, for example, correspond to input received from a user. Some output signals may, for example, allow provision of output to a user. The I / O module 940 may serve to interconnect the example computing device 900 with one or more input devices. Input devices may, for example, include one or more of a touchscreen input, keyboard, trackpad, or the like. The I / O module 940 may serve to interconnect the example computing device 900 with one or more output devices. Output devices may include, for example, one or more display screens such as, for example, a liquid crystal display (LCD) , a light-emitting diode (LED) display, a touchscreen display. Additionally, or alternatively, output devices may include devices other than screens such as, for example, a speaker, indicator lamps (such as, for example, LEDs) , and printers.

[0117] The communications module 950 allows the example computing device 900 to communicate with other electronic devices and / or various communications networks. For example, the communications module 950 may allow the example computing device 900 to send or receive communications signals. As an example, the communications module 950 may include a network connection, data port, or the like. Communications signals may be sent or received according to one or more protocols or according to one or more standards. For example, the communications module 950 may allow the example computing device 900 to communicate via a cellular data network, such as for example, according to one or more standards such as, for example, Global System for Mobile Communications (GSM) , Code Division Multiple Access (CDMA) , Evolution Data Optimized (EVDO) , Long-term Evolution (LTE) , 5G, 6G, or the like. Additionally, or alternatively, the communications module 950 may allow the example computing device 900 to communicate using near-field communication (NFC) , via Wi-Fi (TM) , via the Ethernet family of network protocols, using Bluetooth (TM) or via some combination of one or more networks or protocols. In some embodiments, all or a portion of the communications module 950 may be integrated into a component of the example computing device 900. In some examples, the communications module may be integrated into a communications chipset.

[0118] Software instructions are executed by the processor 910 from a computer-readable medium. For example, software may be loaded into random-access memory from persistent storage within memory 920. Additionally, or alternatively, instructions may be executed by the processor 910 directly from read-only memory of the memory 920.

[0119] FIG. 10 depicts a simplified organization of software components stored in memory 920 of the example computing device 900. As illustrated, these software components include, at least, application software 1010 and an operating system 1000.

[0120] The application software 1010 adapts the example computing device 900, in combination with the operating system 1000, to operate as a device performing a particular function. While a single application software 1010 is illustrated in FIG. 10, in operation, the memory 920 may include more than one application software and different application software may perform different operations.

[0121] The operating system 1000 is software. The operating system 1000 allows the application software 1010 to access the processor 910, the memory 920, the I / O module 940, and the communications module 950. The operating system 1000 may, for example, be iOSTM, AndroidTM, LinuxTM, Microsoft WindowsTM, or the like.

[0122] The application software 1010 and / or operating system 1000 may, when executed, cause the processor 910 to carry out operations to implement at least some portion of one or more of the methods described herein.

[0123] In the present disclosure, the terms “a” , “an” and “one” are defined to mean “at least one” , that is, these terms do not exclude a plural number of items, unless stated otherwise.

[0124] In the present disclosure, terms such as “substantially” , “generally” and “about” , which modify a value, condition or characteristic of a feature of an embodiment, should be understood to mean that the value, condition or characteristic is defined within tolerances that are acceptable for the proper operation of this embodiment for its intended application.

[0125] In the present disclosure, unless stated otherwise, the terms “connected” and “coupled” , and derivatives and variants thereof, refer herein to any structural or functional connection or coupling, either direct or indirect, between two or more elements. For example, the connection or coupling between the elements can be acoustical, mechanical, optical, electrical, thermal, logical, or any combinations thereof.

[0126] In the present disclosure, expressions such as “match” , “matching” and “matched” , including variants and derivatives thereof, are intended to refer herein to a condition in which two or more elements are either the same or within some predetermined tolerance of each other. That is, these terms are meant to encompass not only “exactly” or “identically” matching the two elements but also “substantially” , “approximately” or “subjectively” matching the two or more elements, as well as providing a higher or best match among a plurality of matching possibilities.

[0127] In the present disclosure, the expression “based on” is intended to mean “based at least partly on” , that is, this expression can mean “based solely on” or “based partially on” , and so should not be interpreted in a limited manner. More particularly, the expression “based on” could also be understood as meaning “depending on” , “representative of” , “indicative of” , “associated with” or similar expressions.

[0128] In the present disclosure, the terms "system" and "network" may be used interchangeably in embodiments of this application. "At least one" means one or more, and "aplurality of" means two or more. The term "and / or" describes an association relationship of associated objects and indicates that three relationships may exist. For example, A and / or B may indicate the following three cases: Only A exists, both A and B exist, and only B exists, where A and B may be singular or plural. The character " / " usually indicates an "or" relationship between associated objects. "At least one of the following items (pieces) " or a similar expression thereof indicates any combination of these items, including a single item (piece) or any combination of a plurality of items (pieces) . For example, "at least one of A, B, or C" includes A, B, C, A and B, A and C, B and C, or A, B, and C, and "at least one of A, B, and C" may also be understood as including A, B, C, A and B, A and C, B and C, or A, B, and C. In addition, unless otherwise specified, ordinal numbers such as "first" and "second" in embodiments of this application are used to distinguish between a plurality of objects, and are not used to limit a sequence, a time sequence, priorities, or importance of the plurality of objects.

[0129] In the present application, the phrase “at least one of…or…” is intended to cover any one or more of the listed elements, including any one of the listed elements alone, any sub-combination, or all of the elements, without necessarily excluding any additional elements, and without necessarily requiring all of the elements. The term “and / or” is intended to indicate that either of the two elements may be included or both of the elements may be included.

[0130] A person skilled in the art will understand that embodiments of this application may be provided as a method, an apparatus (or system) , a computer-readable storage medium, or a computer program product. Therefore, this application may use a form of a hardware-only embodiment, a software-only embodiment, or an embodiment with a combination of software and hardware. Moreover, this application may use a form of a computer program product that is implemented on one or more computer-usable storage media (including but not limited to a disk memory, an optical memory, and the like) that include computer-usable program code.

[0131] This application is described with reference to the flowcharts and / or block diagrams of the method, the device (system) , and the computer program product according to this application. It should be understood that computer program instructions may be used to implement each process and / or each block in the flowcharts and / or the block diagrams and a combination of a process and / or a block in the flowcharts and / or the block diagrams. The computer program instructions may be provided for a general-purpose computer, a dedicated computer, an embedded processor, or a processor of another programmable data processing device to generate a machine, so that the instructions executed by the computer or the processor of the another programmable data processing device generate an apparatus for implementing a specific function in one or more procedures in the flowcharts and / or in one or more blocks in the block diagrams.

[0132] The computer program instructions may alternatively be stored in a computer-readable memory that can indicate a computer or another programmable data processing device to work in a specific manner, so that the instructions stored in the computer-readable memory generate an artifact that includes an instruction apparatus. The instruction apparatus implements a specific function in one or more procedures in the flowcharts and / or in one or more blocks in the block diagrams.

[0133] The computer program instructions may alternatively be loaded onto a computer or another programmable data processing device, so that a series of operations and steps are performed on the computer or the another programmable device, so that computer-implemented processing is generated. Therefore, the instructions executed on the computer or the another programmable device provide steps for implementing a specific function in one or more procedures in the flowcharts and / or in one or more blocks in the block diagrams.

[0134] It will be understood that a person skilled in the art may make various modifications and variations to this application without departing from the scope of this application. This application is intended to cover these modifications and variations of this application provided that they fall within the scope of protection defined by the following claims and their equivalent technologies.

[0135] Throughout the present disclosure, a processor, a processor system, an application processor, a baseband processor, a processor circuit, or a processor core may be collectively referred to as a processor. A processor may include one or more of a central processing unit (CPU) , a digital signal processor (DSP) , a microprocessor unit (MPU) , a microcontroller unit, (MCU) , a graphics processing unit (GPU) , a field programmable gate array (FPGA) , an artificial intelligence (AI) processor, or a neural network processing unit (NPU) , or a combination of at least two of these integrated circuit forms.

[0136] Throughout the present disclosure, a memory may include one or more of the following storage media: a RAM, a static random access memory (SRAM) , a dynamic random access memory (DRAM) , a phase-change memory (PCM) , a resistive random access memory (ReRAM) , a magnetoresistive random access memory (MRAM) , a ferroelectric random access memory (FRAM) , a cache, a register, a read-only memory (ROM) , a flash memory, an erasable programmable read-only memory (EPROM) , a hard disk, and / or the like. In an example, the computer program instructions used to execute embodiments contained herein may be stored in a non-volatile memory. When a terminal runs, part or all of corresponding computer program instructions may be loaded into a memory that has a higher transmission speed with a corresponding processor, for example, the instructions may be loaded into at least a part of a memory such that the processor executes the computer program instructions to perform the steps in of embodiments described herein.

[0137] The various embodiments presented above are merely examples and are in no way meant to limit the scope of this application. Variations of the innovations described herein will be apparent to persons of ordinary skill in the art, such variations being within the intended scope of the present application. In particular, features from one or more of the above-described example embodiments may be selected to create alternative example embodiments including a sub-combination of features which may not be explicitly described above. In addition, features from one or more of the above-described example embodiments may be selected and combined to create alternative example embodiments including a combination of features which may not be explicitly described above. Features suitable for such combinations and sub-combinations would be readily apparent to persons skilled in the art upon review of the present application as a whole. The subject matter described herein and in the recited claims intends to cover and embrace all suitable changes in technology.

Claims

1.A method of detecting input via a capacitive touchscreen, the method comprising:detecting a hover event from one or more capacitive signals from the capacitive touchscreen that are below a touch event threshold level and above a hover event threshold level, wherein the one or more capacitive signals are associated with a location on the capacitive touchscreen;processing the detected hover event as an interaction with regard to a user interface element at the location on the capacitive touchscreen;tracking movement of the detected hover event from the location; and,processing the movement of the detected hover event as continuation of the interaction with regard to the user interface element.2.The method of claim 1, wherein processing the detected hover event includes detecting selection of the user interface element, and wherein continuation of the interaction includes selection of one or more adjacent interface elements as the location of the detected hover event passes those one or more adjacent interface elements.3.The method of claim 2, wherein the user interface element includes at least one text character and wherein the one or more adjacent interface elements include one or more adjacent text character.4.The method of claim 2 or claim 3, wherein processing the movement of the detected hover event includes determining that the movement exceeds a minimum threshold distance from the location before the processing the movement of the detected hover event as selection of one or more adjacent interface elements.5.The method of claim 1, wherein processing the detected hover event includes detecting selection of the user interface element, wherein the user interface element is an actionable element, and wherein the continuation of the interaction includes detecting an input operation with regard to the actionable element.6.The method of claim 5, wherein the actionable element includes a navigation element, and wherein the input operation includes causing a navigation operation.7.The method of claim 6, wherein the navigation element includes one of a slider bar, a scroll bar, a scroll wheel, a hidden menu, a pull-down menu, or an expandable menu.8.The method of claim 1, wherein processing the detected hover event as an interaction with regard to a user interface element at the location on the capacitive touchscreen includes rendering a blob on the capacitive touchscreen at the location, and wherein processing the movement of the detected hover event as continuation of the interaction with regard to the user interface element includes moving the blob to track the movement on the touchscreen.9.The method of claim 8, wherein moving the blob includes altering one or more visual characteristics of the blob rendered on the touchscreen based on one or more of the speed or signal strength.10.The method of claim 1, further comprising detecting a transition the detected hover event into a detected touch event and processing a combination of the hover event and the detected touch event as a gesture input.11.The method of any one of claims 1 to 10, wherein the capacitive touchscreen provides a plurality of capacitive signals including the one or more capacitive signals, and wherein tracking movement of the detected hover event includes:determining a decay factor based on a determination of whether the hover event is static or moving;smoothing the plurality of capacitive signals to obtain smoothed capacitive signals based on the decay factor; andtracking change in the location of the hover event based using the smoothed capacitive signals.12.The method of claim 11, wherein determining the decay factor includes determining a speed factor associated with the hover event, determining that the speed factor is above a threshold level and, as a result, determining the decay factor, at least in part, based on the speed factor.13.The method of claim 12, wherein the speed factor is a smoothed speed factor.14.The method of claim 11, wherein determining the decay factor includes determining a speed factor associated with the hover event, determining that the speed factor is below a threshold level and, as a result, determining the decay factor, at least in part, based on a signal strength measurement of the hover event.15.The method of claim 14, wherein the signal strength measurement is based on a sum of signal values for a matrix of capacitive signals at the location of the hover event.16.The method of claim 11, wherein tracking the change in location includes:identifying one of the capacitive signals as a centroid of the hover event; anddetermining whether any of the capacitive signals adjacent to said one of the capacitive signals has a highest value and, if so, then identifying that capacitive signal having the highest value as a new centroid of the hover event.17.The method of claim 16, wherein the identifying and determining are repeated until none of the capacitive signals adjacent to the new centroid have higher values.18.A computing device, comprising:a capacitive touchscreen;a processor; anda memory coupled to the processor, the memory storing computer-executable instructions for detecting input via the capacitive touchscreen, wherein the instructions, when executed by the processor, are to configure the processor to carry out the method claimed in any one of claims 1 to 17.19.A non-transitory computer-readable medium storing computer-executable instructions that, when executed by one or more processors, are to cause the one or more processors to carry out the method of any one of claims 1 to 17.20.A computer program comprising instructions which, when executed by a computing device, are to cause the computing device to carry out the method of any one of claims 1 to 17.21.A computing device comprising means to perform the method of any one of claims 1 to 17.