Methods and systems for rich haptic feedback with touch screens
By generating haptic feedback signals based on touch event characteristics, the method addresses the lack of physical feedback in touch-based devices, enhancing interaction accuracy and intuitiveness.
Patent Information
- Application Number
- PCT/CN2024/140547
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-12-19
- Publication Date
- 2026-06-25
AI Technical Summary
Touch-based input devices lack physical feedback, making accurate interaction difficult, especially when used as display devices, and existing haptic technologies have limitations in complexity and effectiveness.
Generate haptic feedback signals based on characteristics of continuous touch events, such as distance, speed, and trajectory, using haptic feedback devices like linear resonant actuators, to provide nuanced feedback for touch interactions.
Enhances user interaction by providing richer, more detailed feedback, guiding users to target locations and simulating tactile sensations, improving accuracy and intuitiveness of touch-based interactions.
Smart Images

Figure CN2024140547_25062026_PF_FP_ABST
Abstract
Description
METHODS AND SYSTEMS FOR RICH HAPTIC FEEDBACK WITH TOUCH SCREENSFIELD
[0001] The present application relates to touch-sensitive input and, in particular, methods and systems for providing rich haptic feedback.BACKGROUND
[0002] Touch-based input devices are ubiquitous in modern computing devices. They are used in laptops, automobiles, smartphones, tablets, smartwatches, and countless other devices. In general, touch-based input devices, such as capacitive touchscreens or trackpads, have replaced conventional physical keys, buttons, dials, and knobs. One of the drawbacks of touch-based input devices is the lack of physical feedback to guide interactions. Moreover, when the touch-based input device also serves as a display device, like in the case of a smartphone or touch-screen laptop, the use of the screen for touch input obscures the user interface, making accurate input and selection that much more difficult to perform.
[0003] BRIEF SUMMARY
[0004] In accordance with one aspect, the present application describes a method of generating haptic feedback through a touchscreen of a computing device. The method may include defining one or more target locations within a user interface displayed on the touchscreen; detecting a continuous touch event on the touchscreen within the user interface; tracking the continuous touch event as it moves in the user interface relative to the one or more target locations; generating a haptic feedback signal having one or more signal parameters determined based on a distance between the location of the continuous touch event and the one or more target locations; and, driving one or more haptic feedback devices using the haptic feedback signal.
[0005] In some implementations, the one or more signal parameters are one or more of amplitude, duration, frequency or waveform.
[0006] In some implementations, tracking includes tracking a speed of movement of the continuous touch event and a trajectory of the continuous touch event, and generating the haptic feedback signal is further based on one of the speed of movement or the trajectory.
[0007] In some implementations, generating and driving include modifying the one or more of signal parameters of the haptic feedback signal based on a change in the distance between the continuous touch event as it moves in the user interface and the one or more target locations.
[0008] In some implementations, defining one or more target locations includes defining a plurality of granularity zones within the user interface including at least one zone corresponding to the target location, and generating includes determining the one or more signal parameters, in part, based on in which of the plurality of granularity zones the continuous touch event is located. In some cases, generating and driving includes generating the haptic feedback signal and driving the one or more haptic feedback devices when the location of the continuous touch event touches a boundary between two of the granularity zones. The boundary between two of the granularity zones may be defined as a line within the user interface but not displayed on the user interface, and the haptic feedback signal may be generated based on the location of the continuous touch event touching the line.
[0009] In some cases, the granularity zones are defined as a set of lines within the user interface but not displayed on the user interface, and a density the set of lines within a respective one of the granularity zones determines the one or more signal parameters. The granularity zones may include overlapping granularity zones and an area of overlap between two of the granularity zones may include a density of lines based on a combination of both sets of lines from the two of the granularity zones.
[0010] In some implementations, the user interface includes a virtual keyboard, and the one or more target locations include two or more of the keys on the virtual keyboard.
[0011] In some implementations, determining the one or more signal parameters includes determining the one or more signal parameters partly based on a trajectory of the continuous touch event relative to one of the one or more target locations.
[0012] In some implementations, determining the one or more signal parameters includes determining the one or more signal parameters partly based on a speed of movement of the continuous touch event.
[0013] In some implementations, the one or more target locations includes an actionable interface element, and generating the haptic feedback signal includes selecting the one or more signal parameters to create a distinctive haptic feedback when a location of the continuous touch event corresponds to the actionable interface element.
[0014] In some implementations, the user interface includes text and generating includes selecting the one or more signal parameters based on a location of the continuous touch event corresponding to end of a character, word, line, or paragraph of the text.
[0015] In some implementations, the user interface includes an interface navigation element, and wherein generating the haptic feedback signal includes selecting the one or more signal parameters based on progression of a control of the interface navigation element. In some cases, the interface navigation element includes a slider bar.
[0016] In yet another aspect, the present application describes a computing device having a touchscreen, a processor, and memory coupled to the processor, the memory storing computer-executable instructions for generating haptic feedback. The instructions, when executed by the processor, are to configure the processor to perform any one of more of the method described herein.
[0017] 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.
[0018] 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.
[0019] In a further aspect, the present application describes a computing device having means to perform any one or more of the methods described herein.
[0020] 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
[0021] Reference will now be made, by way of example, to the accompanying drawings in which:
[0022] FIG. 1 shows, in flowchart form, a simplified example method for generating haptic feedback through a touch-sensitive surface of a computing device;
[0023] FIG. 2 shows, in block diagram form, a simplified example computing device for providing rich haptic feedback;
[0024] FIG. 3 shows an example user interface on a touch-sensitive display screen;
[0025] FIG. 4 shows, in flowchart form, one example method of generating haptic feedback;
[0026] FIG. 5 shows one example use case for haptic feedback for a continuous touch event;
[0027] FIG. 6 shows, in flowchart form, another example method for generating haptic feedback through a touch-sensitive surface;
[0028] FIG. 7 shows a high-level diagram of an example computing device; and
[0029] FIG. 8 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] Haptic technology has been incorporated into user devices to provide vibratory feedback in many settings. For example, many smartphones include a vibratory feedback device that may physically vibrate the device as a notification with regard to an incoming call or message. Video game controllers may include a vibratory feedback device to issue feedback through the controller based on game play events. In some cases, these vibratory devices are eccentrically-weighted vibratory motors. Modern devices have tried to develop more nuanced and sophisticated haptic feedback.
[0032] Some experimentation has occurred with haptic technologies that do not necessarily rely on physical actuators producing vibrations. For example, some experimentation has occurred with using electric fields to produce electroadhesion effects. By modulating the field strength at a touch surface, friction, or at least the sensation of friction, can be created. In another example, experimentation has occurred with electrotactile stimulation in which electrical impulses are applied to a user’s skin through thin electrodes in the touch surface. Both of these methods have their drawbacks in terms of the electronics required, power requirements, and potential skin irritation issues.
[0033] Some experimentation has also occurred with grain-based vibrotactile compliance illusion. This technique uses mechanical vibrations from mechanical actuators. By controlling the characteristics of the mechanical vibrations, including frequency, intensity, and waveform, different sensations can be produced. A user touching a surface subjected to these vibrations may perceive the material as elastic and spongy or as rigid and stiff depending on the nature of the vibrations. In this manner, through controlling the characteristics of vibrations imparted to the user’s finger, different perceptions can be created. This grain-based vibrotactile compliance illusion technique may be utilized to produce sensations such as the perception of pressing a virtual button or creating the illusion of feeling a particular type of material.
[0034] Most existing user device haptic feedback is aimed at providing notifications. For example, a device may vibrate to signal an incoming message or phone call. In some cases, haptic vibratory feedback may be used to signal a user action, such clicking of a virtual key on a virtual keyboard. In addition to outputting an audible ‘click’ sound through a speaker, the device may produce a quick vibratory signal to give kinetic feedback that a keypress was detected.
[0035] It may be advantageous to provide for methods, devices, and systems that are able to provide more complex vibratory feedback, particularly in connection with touchscreens, so as to enable enriched user interfaces.
[0036] The present application describes and teaches methods and devices configured to provide haptic feedback in connection with continuous touch gestures. In particular, the present application describes methods of identifying a continuous touch gesture in connection with a touch-sensitive user interface having one or more user interface elements and modifying parameters of a haptic feedback signal output through a haptic actuator based on one or more characteristics of the continuous touch gesture as it interacts with the user interface. By adapting or modulating the haptic feedback signal during the course of a continuous touch gesture, a richer, more detailed feedback is possible, enabling more complex and intuitive touch-based interactions.
[0037] Through such modification of the haptic feedback, various use cases may be realized in relation to different types of user interface elements. In some cases, the feedback may signal proximity to an actionable user interface element. In some cases, the feedback may signal speed or pace of actuation of an actionable user interface element. In some cases, the feedback may have phases that signal different phases of actuation, such as progression of an actuation, or selection of an item and then movement of the item, or selection of items and then the reaching of an end point, or scrolling of items and then the reaching of an end point. Other uses cases are described herein. Different techniques for tracking the characteristics of the continuous touch gesture and modifying corresponding parameters of the haptic feedback signal are described.
[0038] Reference is first made to FIG. 1, which shows, in flowchart form, a simplified example method 100 for generating haptic feedback through a touch-sensitive surface of a computing device. The method 100 may be implemented by a computing device having a touchscreen, such as a capacitive touch screen, one or more processors, memory, and at least one haptic feedback device. The haptic feedback device may include a linear resonant actuator in some implementations. The haptic feedback device may be positioned proximate the touchscreen surface. For example, it may be located just adjacent an underside of the touchscreen in some cases. The positioning of the haptic feedback device is generally aimed an ensuring consistent and uniform kinetic feedback across the screen. In some cases, the device may include more than one haptic feedback device. In such cases, the devices may be positioned in different locations relative to the screen in order to create a particular kinetic pattern of vibratory feedback on the touchscreen surface.
[0039] The method 100 may be implemented in part by way of processor-executable instructions stored in memory and executable by the one or more processors. The instructions may cause the processors to carry out particular operations, as described herein. In some cases, the instructions may cause the one or more processors to generate signals or instructions that are output to other devices, such as a haptic device driver.
[0040] In operation 102, the computing device detects initiation of a touch event. The detection of the initial touch event may be based on signals from the capacitive touch screen. The computing device may include a touchscreen module configured to receive raw capacitive signal data from the touch screen and to determine when a touch event occurs, the location of any such events, and the characteristics or categorization of such events (e.g. whether it is a tap, a press, a swipe, etc. ) .
[0041] In operation 104, the computing device determines whether the touch event is a continuous touch event. In some cases, this is at least in part based on whether the initial touch event continues for longer than a minimum duration. For example, with a tap touch event, the capacitive signals initially detect occurrence of the event through detection of a user finger or stylus causing a greater-than-threshold change in capacitive signals at a location involving at least a minimum number of adjacent sensor points, and subsequently, within a short period of time, return to a steady-state, thereby indicating removal of the finger or stylus. This may be categorized as a tap event.
[0042] If the detected touch event continues for longer than the minimum duration, then it may be classified as a continuous touch event, which causes the computing device to track characteristics of the touch event as it continues on the touch screen, as indicated by operation 106. The characteristics tracked may include the location of the touch event, the trajectory of the touch event as it moves on the screen, the speed of the touch event as it moves on the screen, and / or other such characteristics. In some cases, the device may distinguish between long hold touch events in which the user presses on a particular location for a longer-than minimum duration and a moving touch event in which the user continues the touch but moves location of the touch over time. The detection of a moving touch event, as distinct from a long press event, may be dependent on the detected movement being more than a de minimus movement, i.e. there may be a minimum threshold distance the touch event moves before being categorized as a moving touch event. In some cases, the present haptic feedback processes are applied to moving touch events and not to long press touch events.
[0043] In operation 108, the computing device generates a haptic feedback signal having parameters determined based on one or more of the characteristics of the touch event tracked in operation 106. The parameters determined may include the amplitude of the haptic feedback signal, the frequency of the haptic feedback signal, the waveform of the haptic feedback signal, or other such parameters. As will be described below in connection with various example embodiments, the characteristics of the touch event that are used to determine haptic feedback signal parameters may include spatial characteristics, such as where the touch event is in relation to a defined target location or area on the touch screen, distance from the touch event to the target location, or whether the touch event contacts a particular region or defined ‘line’ on the screen. The line may not be a displayed line, but rather a set of grid lines or concentric circles having notional positions on the screen in some examples. In some example embodiments, the characteristics of the touch event that are used to determine haptic feedback signal parameters may include characteristics such as the speed of movement of the touch event, its trajectory relative to a defined area or point, or characteristics of a particular user interface element with which the touch event interacts, such as whether it has a defined “end” or “stopping” point, etc.
[0044] In operation 110, the computing device generates a haptic feedback signal to drive the haptic feedback device, such as a linear resonant actuator, thereby causing a kinetic signal to be output through the touchscreen. The process or tracking the characteristics of the touch event, generating a corresponding haptic feedback signal having one or more parameters based on the one or more characteristics of the continuous touch event, and outputting the haptic feedback signal via a haptic feedback device are to continue until the computing device determines that the continuous touch event has ended, as indicated in operation 112. The end of the touch event may be determined or detected based on the capacitive touch screen signals. In particular, if the signals indicate that the user’s finger has been lifted off screen, e.g. that a capacitive signal greater than a detection threshold is no longer sensed, then the touch even has ended.
[0045] Reference is now made to FIG. 2, which shows, in block diagram form, a simplified example computing device 200 for providing rich haptic feedback. The computing device 200 in this example includes capacitive touch sensors 202 that output capacitive touch data. The capacitive touch sensors 202 are associated with a capacitive touch interface. In many examples, the touch interface may be a touchscreen, but in other examples it may be another touch sensitive user interface, like a touch sensitive bezel on a smartwatch, a trackpad, a touch-sensitive gaming controller, or the like.
[0046] A touch detection, classification and tracking module 204 receives the touch data from the capacitive touch sensors 202 and determines whether and where touch events are detected on the touch interface. A user interface module 206 may receive data from the touch detection, classification and tracking module 204 in order to interpret and react to touch events. For example, the user interface module 206 may determine whether the location of a touch event corresponds to a particular user interface item or actionable element, e.g. a target location. Responsive to the touch event information, it may cause corresponding reactions that are displayed the user interface, such as movement of a cursor or pointer, highlighting of text, selection of an actionable element, dragging and / or dropping of items, etc. The range of possible touch-based user interface interactions will be familiar.
[0047] A haptic feedback engine 208 may receive data from the touch detection, classification and tracking module 204 and / or from the user interface module 206. The data may include one or more characteristics of the touch event, such as its location, speed, trajectory, intensity, etc. The determination may include determining those characteristics relative to one or more target locations. The data may include data regarding the actions carried out by the touch event with respect to the user interface, such as interactions with an actionable user interface element, selection of text characters or icons or other elements, the layout of elements on the touchscreen or other touch sensitive interface.
[0048] The haptic feedback engine 208 carried out operations such as those described above in connection with FIG. 1. That is, the haptic feedback engine 208 detects a continuous touch event based on data from the touch detection, classification and tracking module 204, determines at least one parameter of a haptic feedback signal based on one or more characteristics of the continuous touch event, and provides instructions and / or a signal to a haptic signal generator 210. In some cases, the haptic feedback engine 208 may specify particular parameters of the haptic feedback signal for generation by the haptic signal generator 210. In some cases, the haptic feedback engine 208 may generate the haptic feedback signal and provide it to the haptic signal generator 210 for amplification.
[0049] The haptic signal generator 210 produces a haptic feedback signal having the specified parameters and outputs that signal to one or more haptic feedback devices. In this example, the computing device 200 includes three linear resonant actuators (LRAs) 212 (shown individually as 212a, 212b, 212c) . The drive signal output to the LRAs 212 may be the same signal to each of the LRAs 212, or may be a different signal for each of the LRAs 212. In some cases, the haptic feedback signal may only be output to one or more of the LRAs 212 dependent on the location of the touch event. In some cases, the haptic feedback engine 208 and / or the haptic signal generator 210 determine one or more parameters for respective haptic feedback signals to drive respective ones of the LRAs 212 so as to produce a desired kinetic feedback effect from the combination of vibratory signals generated by the respective LRAs 212 when they interact through the surface of the touch interface.
[0050] Reference is now made to FIG. 3, which shows an example user interface 300 on a display screen. The display screen may be a touch-sensitive display screen. The display screen may be integrated within a computing device, such as a mobile smartphone, tablet, laptop, or other such device. The haptic feedback may be designed to guide a touch event towards a particular target.
[0051] The user interface 300 illustrates example granularity zones for haptic feedback. Notional lines are shown on the user interface 300 to illustrate the haptic feedback areas. In particular, the variation in density of the lines may indicate variation in one or more characteristics or parameters of the haptic feedback.
[0052] In a first example, a first haptic feedback zone 302 or region may be defined relative to a first target area 304 or target location. The first target area 304 may be a user interface item or element, such as an actionable or selectable item. Examples include a key on a keyboard or keypad, an icon, a menu item or pull-down menu, a button, a hyperlink, or any other such user interface item for which the device is configured to provide touch feedback. In this example, the first haptic feedback zone 302 is designed to help the user locate the user interface item, i.e. the first target area 304. That is, the haptic feedback provided within the first haptic feedback zone 302 is aimed at guiding the user’s touch to the first target area 304. This can be especially helpful in the case of touch-input devices given that the user’s fingers and / or hand obscures their view of the user interface 300.
[0053] The first haptic feedback zone 302 in this example includes notional set of concentric circles. It will be appreciated that these circles are not actually rendered on the user interface 300, but rather are defined in memory and the location of a touch event compared to the location of the circles to determine when to provide haptic feedback. In one example, each time the location of the touch event encounters or touches one of the circles, a haptic feedback output is triggered. Accordingly, as the touch event encounters each of the circles, a haptic feedback is output. The precise output may depend in part on which of the circles is touched. For example, the output may intensify in amplitude for circles closer to the first target area 304, such that as the user’s finger moves closer to the first target area 304 within the first haptic feedback zone 302, the intensity or amplitude of the haptic feedback output intensifies, thereby signaling proximity to the first target area 304.
[0054] The determination of the location of a touch event will be familiar to those ordinarily skilled in the field of capacitive touch interfaces. Likewise, tracking of the location of touch events as a user’s finger moves across a capacitive touch interface will be appreciated by those skilled in the field. In some implementations, a haptic feedback engine may receive touch event location data from a touch detection, classification and tracking module and may compare the touch event location data to haptic feedback zone data, and in particular data defining the location of the concentric circles. Based on this comparison, the haptic feedback engine may determine when a touch event location equals the location of one of the circles. In some cases, the determination of whether a touch event location equals one of the circle locations may be based on the locations corresponding within a threshold distance, such that the touch event triggers haptic output if it is determined to be within a certain distance (in millimeters, pixels, or another measurement) of one of the defined circle locations. In some cases, the engine may determine from a touch trajectory when the touch event is about to touch one of the circles and may initiate haptic feedback output just prior to occurrence of the touch event meeting one of the circles.
[0055] The haptic feedback output may be a pulse or other such output. In some cases, a different waveform used in the haptic output may be selected depending on whether the trajectory of the touch event is towards the target area or away from the target area.
[0056] A different haptic output may be defined in association with the first target area 304, such that when the touch event reaches the first target area 304 the different haptic output may be generated. The different haptic output may be classified as a “success” signal to indicate that the touch event has reached the first target area 304.
[0057] Another example is illustrated by second haptic feedback zone 306 around a second target area 308. As before, the second target area 308 or target location may be a user interface element, such as an actuator or navigation tool, a selectable button, a menu item, a hyperlink, etc. In this example, the second haptic feedback zone 306 is also defined by a set of concentric circles around the second target area 308.
[0058] In this example, the density of the lines of the concentric circle may vary. In particular, the lines may be more sense closer to the second target area 308 and less dense at the outer part of the second haptic feedback zone 306. In one example, as shown, the second haptic feedback zone 306 may include an outer set of circles 310 of a first density and an inner set of circles 312 of a second density that is higher than the first density. In another example implementation, the density may vary as a gradient from less dense at the outer edge of the second haptic feedback zone 306 to most dense at the innermost circle.
[0059] The haptic feedback signal may, in this example, be the same output signal for each of the circles; however, due to the density of the circles the feedback may be more frequent and thus more intense as a touch event moves closer to the second target area 308. That is, as a touch event moves towards the second target area 308, if at a constant speed, it will encounter lines more frequently the closer it gets to the second target area 308, which has the effect of intensifying the feedback signal output by making it more frequent, thereby signalling proximity. In another implementation, the output is determined, at least in part, based on the density of the lines at the current location of the touch event. If positioned in a more dense part of the concentric set of circles, the haptic feedback output signal is of higher intensity than if the touch is in a less dense outer portion of the second haptic feedback zone 306. In some cases, the density of the lines and the parameters of the output feedback signal may both vary. That is, inner circles may have a more intense output signal and may be more dense in their distribution on the interface 300.
[0060] A third example is shown in which a third target area 316 is defined. A third haptic feedback zone 318 is defined by a first field of lines. In this example, the lines are a field of horizontal lines, but any orientation may be used and, in some cases, a grid or matrix of lines may be defined. The first field of lines defining the third haptic feedback zone 318 has a uniform density in this example. It will also be noted that the third haptic feedback zone 318 and its first field of lines includes the third target area 316 or target location. Within the third target area 316 a second field of lines 320 is defined, interlaced or overlapped with the first field of lines defining the third haptic feedback zone 318. The second field of lines 320 may be associated with the same haptic feedback output signal as the first field of lines in some cases, such that the frequency of output increases as a touch event enters the third target area 316. In some cases, the second field of lines 320 may be associated with a different haptic feedback output signal, e.g. an output of a different intensity / amplitude, a different frequency, and / or a different waveform.
[0061] Reference is now made to FIG. 4, which shows, in flowchart form, one example method 400 of generating haptic feedback. The method 400 may be conditional on having detected a continuous touch event. A continuous touch event may be a touch event distinguished from a tap or selection touch event by its duration in some cases. For example, a continuous touch event may be one in which the touch event persists, or is detected, for longer than a minimum duration. In some examples, method 400 may be conditional on the continuous touch even being a moving touch event. The continuous touch event may be classified as a moving touch event if it persists for longer than the minimum duration and moves more than a minimum distance over a window of time.
[0062] The method 400 includes, in operation 402, determining a location of the touch event. The location may be determined based on a touch detection module that receives capacitive sensor signals from a touch screen, for example. A set of capacitive sensor signals above a threshold level may be indicative of a touch event. Detection of a touch event may, in some cases, be dependent upon detecting at least a matrix of n×n sensor locations with signals above the threshold. The location may be determined, in some implementations, based on determining a centroid of the set of adjacent signals that are above the threshold. Other techniques may be used in other implementations. The touch detection module may further be configured to determine and track the location of the continuous touch event as it persists and moves position on the touch sensitive interface. It may output or provide that location data to a haptic feedback engine or module.
[0063] In operation 404, the haptic feedback module determines whether the location of the continuous touch event has entered a target zone. The target zone may be defined based on a user interface layout. As noted above, the target zone may correspond to an actionable user interface element, such as a button, slider, icon, thumbnail, menu, etc., rendered on the display screen. If the touch event has reached that target zone, then in operation 406, the haptic feedback engine may generate and output a “success” haptic feedback signal to signify that the actionable item may now be actuated through, for instance, a tap or long press or other touch event or gesture. In some cases, the feedback signal may signify that the actionable item has now been actuated or selected. For instance, that an icon or slider or other element has been selected and can now be moved or manipulated through continuation of the continuous touch gesture.
[0064] If the location data does not indicate the continuous touch event has reached the target zone in operation 404, then the haptic feedback engine may compare the location data to the defined lines of the haptic feedback region around or near the target zone, as indicated by operation 408. Using the example of concentric circles, the haptic feedback engine determines whether the location data matches the location of any one of the concentric circles, as indicated by operation 410. The determination of a match may be made if the location data is within a certain distance of the defined location of the circles in some cases. In some cases, the circles may be defined as annular rings having a thickness, such that they include two or more pixels in a radial direction.
[0065] If the location of the touch event indicates that the continuous touch event has reached one of the circles then in operation 412, the engine generates and outputs a haptic feedback signal. In one example, the signal is the same irrespective of which circle is touched. In some other examples, the signal may be determined based in part on which of the circles has been touched. For example, the parameters of the feedback signal may change depending on which circle has been touched. In one example, the amplitude and / or frequency of the signal may change depending on whether the circle is closer to the target zone or farther away from the target zone. In some cases, the waveform of the feedback signal may vary depending on which circle is touched. In some cases, the parameters of the signal may change dependent on whether the continuous touch event meets the line on a trajectory towards the target zone or away from the target zone.
[0066] In some cases, the density of the lines defined on the interface may vary with proximity to the target zone. In such cases, the haptic feedback signal output on encountering a line may be the same irrespective of which line is encountered.
[0067] Although not illustrated in the flowchart, it will be appreciated that if the continuous touch event ends, i.e. the finger or stylus is lifted from the touch sensitive surface such that the touch event is no longer detected, then the method 400 ceases until a new continuous touch event is detected.
[0068] Reference is now made to FIG. 5, which shows one example use case for haptic feedback for a continuous touch event. FIG. 5 illustrates a virtual keyboard 500 displayed on a touch-sensitive user interface.
[0069] One of the challenges with using a virtual keyboard is the lack of tactile feedback for touch typing. Moreover, the user’s fingers and hands typically obscure the image of the keyboard on the touchscreen. With a physical keyboard, the key edges and sculpting of the surface provide the user with tactile queues to facilitate proper positioning for touch typing. Many physical keyboards also include a raised nub or ridge on particular keys, such as the F key and the J key, to assist the user in establishing proper position. Those keys may serve as anchor points for the index fingers in finding the correct hand position by touch.
[0070] In this example, the virtual keyboard 500 includes two target areas 502 centered at the F and J keys. Each target area 502 has a surrounding haptic feedback zone 504 or region. The haptic feedback zone 504 in this example is defined by a set of concentric rings or circles. Although illustrated in FIG. 5 for ease of explanation, it will be understood that the rings or circles are defined in memory in the computing device and are not rendered on the touchscreen.
[0071] When fingers are placed on the touchscreen atop the virtual keyboard 500, the computing device may determine that the touch is a continuous touch event rather than a key strike based on the duration of the touch event and / or its pressure or force. A continuous touch event that is within or that enters the haptic feedback zone 504 may cause haptic signal output based on contact with one or more of the circles, so as to signal that the touch event is near but not yet at the target area 502. One the continuous touch event (s) reach the target area (s) 502, a different haptic feedback signal may be output to signal that the user has reached the target area (s) 502. In some cases, the success haptic feedback signal may be selected so as to give the illusion of a nub or ridge in the area of the F and / or J key. Through selecting a suitable amplitude, frequency, duration, and waveform, the sensation of touching a ridge or nub may be simulated.
[0072] In another implementation involving a virtual keyboard, different keys may correspond to different haptic feedback signals. For example, special keys may have a unique haptic feedback signature, to further enhance touch typing. As examples, a “shift” , “ctrl” , “enter” or other such keys may be provide with unique feedback signals to aid users in identifying when in contact with those keys.
[0073] In some cases, instead of generating a pulse or other haptic output based on a touch event contacting a mesh line, the system may monitor the location and movement speed of a touch event. It may further determine a density of mesh lines in the area or location of the touch event. Areas with higher density mesh lines correspond to more frequent haptic feedback signals. The speed of movement may also be a factor, in which intensity and / or frequency of the haptic signal may be varied based on the speed of movement. For instances, faster continuous touch movement may result in less frequent but more intense haptic output, whereas slower movement may correspond to finer, more frequent, pulses that enhance the perception of texture or friction.
[0074] Reference is now made to FIG. 6, which shows, in flowchart form, another example method 600 for generating haptic feedback through a touch-sensitive surface. In this example, the user interface includes a target point and the haptic feedback is aimed at providing tactile guidance to the target point. In this example, the feedback is based on a determination of distance or proximity to the target point. In some cases, this method 600 may be used in implementing a concentric-circle based haptic feedback, as discussed above.
[0075] In operation 602, the computing device determines a location of the touch event. The location may be determined based on a touch detection module that receives capacitive sensor signals from a touch screen, for example. A set of capacitive sensor signals above a threshold level may be indicative of a touch event. Detection of a touch event may, in some cases, be dependent upon detecting at least a matrix of n×n sensor locations with signals above the threshold. The location may be determined, in some implementations, based on determining a centroid of the set of adjacent signals that are above the threshold. Other techniques may be used in other implementations. The touch detection module may further be configured to determine and track the location of the continuous touch event as it persists and moves position on the touch sensitive interface. It may output or provide that location data to a haptic feedback engine or module.
[0076] In operation 604, the haptic feedback module determines the distance between the touch event location and the target point. Any distance measurement algorithm may be used. With the location and the target point being defined using x and y coordinates, a hypotenuse calculation may be carried out to measure distance between them for example.
[0077] In operation 606, the module may assess whether the touch location is sufficiently close to the target point to output any haptic feedback. That is, in some cases, the haptic feedback regarding the target point may only be triggered if the touch location is within a feedback zone or region around the target point and not in some other distant location on the touch-sensitive surface. If the touch event is too far away from the target point to result in haptic feedback, then the method 600 loops back to operation 602 to continue to monitor its location.
[0078] If the distance is within the target zone, the module determines whether the location of the continuous touch event has reached the target point in operation 608. The target point may correspond to an actionable user interface element, such as a button, slider, icon, thumbnail, menu, etc., rendered on the display screen in some case. Reaching the target point may be determined by determining whether the distance between the touch location and the target point is less than some minimum distance. If the touch event has reached that target point, then in operation 610, the haptic feedback engine may generate and output a “success” haptic feedback signal to signify that the target point has been reached. The “success” signal may be a continuous vibration or unique pulsing pattern, in some implementations. This may signal, for example, that the actionable user interface element may now be operated through, for instance, a tap or long press or other touch event or gesture. In some cases, the feedback signal may signify that the actionable item has now been actuated or selected. For instance, that an icon or slider or other element has been selected and can now be moved or manipulated through continuation of the continuous touch gesture. The success signal may be output when the target point is first reached and then suppressed as long as the continuous touch event remains within the threshold distance, i.e. as long as it is still at the target point. If the touch event leaves the target point (or ends) , then the feedback process may restart.
[0079] If the distance calculation does not indicate the continuous touch event has reached the target point in operation 604, then the haptic feedback engine may determine the trajectory and / or speed of the continuous touch event in some cases, as indicated by operation 612. The trajectory may be classified as “towards” or “away from” the target point in some cases. The speed of the continuous touch event may be a measurement of speed based on change in location over some recent window of time, in some cases. It may be quantized and classified in some cases, such as into categories like “static” , “slow” , “medium” , or “fast” .
[0080] In operation 614, the device generates and outputs a haptic feedback signal. The parameters of the signal may be selected based, at least in part, on the distance measurement. In some cases, the parameters may further be selected or based on the trajectory and / or speed determined in operation 612.
[0081] In one example, the distance measurement may be compared to a set of radial distances, where the set of radial distances correspond to the set of concentric circles or rings around the target point. A lastRadiusCrossed parameter may be used to track the index of the last circle or ring that the touch event crossed. If the distance measurement indicates that the touch event has crossed a new circle or radius, then it may trigger the haptic feedback signal output of operation 614. In some cases, the index of the circle may be a factor in determining one or more parameters of the haptic output signal.
[0082] In some implementations, haptic feedback may be used to simulate texture for virtual objects. For example, an icon or other interface element may be perceived as having a distinct tactile feel different from other areas of the screen. In some cases, the interface element may, through haptic feedback signals, feel as though it is raised and / or roughly textured. Giving icons or elements a different haptic texture may enable users to more easily identify when an icon or element is being touched or selected. Elements can include buttons, sliders, text, hyperlinks, menus or other interface elements.
[0083] Haptic feedback signals can be adjusted to change “granularity” . In the context of haptic feedback, granularity refers to the combination of waveform, intensity / amplitude, frequency, and duration that give rise to different tactile sensations or illusions. “Timber” refers to the perceived rigidity or hardness of the surface signalled by the haptic feedback. The sharpness of the feedback may be adjusted based on the waveform and amplitude in some cases. The perception of a harder object may be realized through producing a sharper more rigid tactile sensation. The variation in timber allows the device to signal material properties of virtual objects to improve touch-based interaction with the user interface.
[0084] “Intensity” refers to the magnitude or amplitude of the feedback. The intensity may be adjusted based on proximity to certain elements or actions. For example, pressing a virtual button may result in a stronger feedback compared to interacting with a text field, signalling different significance.
[0085] “Roughness” may be simulated based on waveform and intensity. Through customizing the haptic signal output, a tactile simulation of texture can be created. The perceived roughness increases as the granularity o the surface features increases. Roughness may be characterized by macro roughness and micro roughness in some cases. Macro roughness is for simulating large-scale texture variations that are easily perceived by a user. The use of sinusoidal and / or square wave signals with varying frequencies and amplitudes can produce variations in perceived roughness as a finger touch is moved across a broad area of the touch surface.
[0086] Micro roughness refers to finer, more detailed texture variations. In some implementations, the device may generate haptic feedback signals that are based on signals captured from accelerometers used to perceive specific surfaces. The stored haptic feedback signals may be output to drive vibratory actuators to reproduce those sensations for those specific surfaces. This may include signals intended to produce the illusion of grains or small ridges.
[0087] Timber may also be categorized at two levels: macro timber and micro timber. Macro timber refers to the simulation of large-scale rigidity differences, such as a transition from a soft to a hard surface or a transition or a transition from a smooth to a rough texture. Macro timber can produce the sensation of encountering an edge or step. Macro timber may be realized in some cases through a combination of square and / or sine wave signals.
[0088] Micro timber takes a stored signal for a particular texture or surface and, using a low pass filter, smooths that signal to some degree to soften its transitions. This enables the perception of softer or more delicate textures.
[0089] In some implementations, the texture rendering for virtual elements may be a two-or three-phase feedback process. Initially, the user interface may be rendered showing an actionable or selectable item. For example, the user interface may show an icon for a selectable item. The texture rendering may produce haptic feedback of a first type when a continuous touch event encounters the icon. The feedback may, at a macro level, signal the icon as a raised and / or rigid or hard area, to give the sensation of having touched a selectable item present on the screen.
[0090] A long hold or firm press on the icon may result in selecting the icon. Haptic feedback may be used to signal that the icon has been selected, such as through the sending of a continuous soft vibration or one or more quick pulses. As the user “drags” a selected item, like the icon, across the screen the device may produce haptic feedback to give the sensation of roughness or resistance as the element is moved. This may give the perception of weight and / or friction to signal that the user is moving a user interface element by way of the continuous touch gesture. The feedback may be adjusted as the movement continues based on the touch event’s speed and / or location.
[0091] Haptic feedback may also be used to aid in text selection in some implementations. When working with a text document or text display, haptic feedback may be used to signal character boundaries and / or word boundaries. The feedback may be triggered only when actively selecting text, i.e. once a selection operation has been initiated and the user’s pen or finger navigate across text to make the selection, tactile feedback may be provided at each character or each word to better signal the progression of the selection. In some cases, with each character selected or highlighted, the intensity of the haptic feedback signal may pulse, increase, or change pattern to signify each selection. In some cases, the end-of-line or end-of document point may result in a further, sharper, haptic feedback signal to indicate the boundary.
[0092] In another example, the haptic feedback process may be applied to a 1-dimensinoal level adjustment, such a slider control. Such sliders are commonly used for things like volume control, brightness settings, zoom level, etc. The haptic feedback may be configured to give a tactile sensation of increasing intensity as the slider is moved towards one end of the range. A distinctive haptic feedback signal may be used to signal the end-of-range, i.e. to signal that the minimum or maximum setting has been reached.
[0093] In a further example, the 1-dimensional user interface element may be a circular or annular touch interface, such as on a smartwatch or the like. In some cases, rather than reaching an end-of-range, the circular menu may “loop” back to a first option or item. A distinctive haptic feedback signal may be output to signal the transition from the last item back to the first item, for example in the case of a menu or list of options or items.
[0094] In many user interfaces, options or item are presented in a scrollable list or carrousel or grid. The items may be shown as thumbnails, previews, tiles, icons, etc. Using swiping gestures, the menu of items may be scrolled on the screen. In many cases, the end of a list of scrollable items may be visually indicated by way of an “elastic” bounce-back of the list to visually signal the end of the list. Haptic feedback signals may be output to signal the end of the scrollable list either with or without the visual indication. The haptic feedback signals may be selected to reproduce a spongy, bouncy, or elastic sensation. In some cases, as the list is approaching the end during scrolling a haptic feedback signal may be output to signal increasing resistance or friction, as though stretching an elastic band. At the end, a strong and sudden vibration may be used to signal the limit and to simulate the “snap back” of an elastic band. This gives tactile feedback to signal the end of a scrollable interface element.
[0095] It will be appreciated that although the above-described operations may be carried out through a touch event on the same touch-sensitive screen on which the user interface is displayed, in some cases they may be implemented on a computing device having a trackpad or other touch sensitive surface separate from the screen on which the user interface is displayed. In such cases, the touch interaction on the touch surface may manipulate a cursor or pointer on the display screen and the haptic feedback may be provided through the touch sensitive surface, e.g. the trackpad.
[0096] It will also be appreciated that while the above-described examples refer to a touch event, the present application is applicable to concurrent touch events, i.e. multi-touch. In some implementations, a computing device may include more than one actuator for outputting haptic feedback signals. In some cases, the actuators may be positioned in particular locations with regard to the touch-sensitive surface, thereby enabling a particular one of the touch events from among two or more touch events to be targeted with particular haptic feedback through the selection of one or more of the haptic actuators for output of a feedback signal.
[0097] The present application is further applicable to use of a pen or stylus and the receipt of haptic feedback through the pen or stylus.
[0098] The present application may include use of palm sensing to detect the present of a user’s palm and / or other user interactions with the touch-sensitive surface that are identifiable as non-touch events. That is, the device may be configured to identify and filter out touch data that is classifiable as incidental or unintentional touch data.
[0099] In one implementation, surface haptics may be used in connection with stylus usage so as to simulate the sensation of writing on paper. Linear resonant actuators are positioned at or near the edges of a touchscreen device. Palm detection technology is used to identify when a user’s palm contacts the surface while utilizing the pen or stylus. The device may utilize focussed vibration zones to localize feedback based on the user’s hand position and stylus interactions. For example, the actuator closets to the user’s palm, e.g. furthest from the stylus point of contact, may be activated to create a directional feedback loop, enhancing the perception that vibrations originate from the user of the stylus on “paper” .
[0100] Reference will now be made to FIG. 7, which shows a high-level diagram of an example computing device 700. The example computing device 700 includes a variety of modules. For example, the example computing device 700 may include a processor 710, a memory 720, an I / O module 740, and a communications module 750. As illustrated, the foregoing example modules of the example computing device 700 are in communication over a bus 760.
[0101] The processor 710 in this example is a hardware processor. The processor 710 may, for example, be one or more ARM, Intel x86, PowerPC processors, or the like.
[0102] The memory 720 allows data to be stored and retrieved. The memory 720 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 700.
[0103] The I / O module 740 allows the example computing device 700 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 740 may serve to interconnect the example computing device 700 with one or more input devices. Input devices may, for example, include one or more of a touchscreen input, keyboard, trackball or the like. The I / O module 740 may serve to interconnect the example computing device 700 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 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, light-emitting diodes (LEDs) ) , and printers.
[0104] In the example embodiments herein, the I / O module 740 includes at least one display and at least one touch-sensitive input device. In some embodiments, the display and the touch-sensitive input device are both implemented by way of a capacitive touch-screen.
[0105] The communications module 750 allows the example computing device 700 to communicate with other electronic devices and / or various communications networks. For example, the communications module 750 may allow the example computing device 700 to send or receive communications signals. As an example, the communications module 750 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 750 may allow the example computing device 700 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 650 may allow the example computing device 700 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 750 may be integrated into a component of the example computing device 700. In some examples, the communications module may be integrated into a communications chipset.
[0106] Software instructions are executed by the processor 710 from a computer-readable medium. For example, software may be loaded into random-access memory from persistent storage within memory 720. Additionally, or alternatively, instructions may be executed by the processor 710 directly from read-only memory of the memory 720.
[0107] FIG. 8 depicts a simplified organization of software components stored in memory 720 of the example computing device 700. As illustrated, these software components include, at least, application software 810 and an operating system 800.
[0108] The application software 810 adapts the example computing device 700, in combination with the operating system 800, to operate as a device performing a particular function. While a single application software 810 is illustrated in FIG. 8, in operation, the memory 720 may include more than one application software and different application software may perform different operations.
[0109] The operating system 800 is software. The operating system 800 allows the application software 810 to access the processor 710, the memory 720, the I / O module 740, and the communications module 750. The operating system 800 may, for example, be iOSTM, AndroidTM, LinuxTM, Microsoft WindowsTM, or the like.
[0110] The application software 810 and / or operating system 800 may, when executed, cause the processor 710 to carry out operations to implement at least some portion of one or more of the methods described herein.
[0111] 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.
[0112] 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.
[0113] 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.
[0114] 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.
[0115] 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.
[0116] 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 "a plurality 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.
[0117] 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.
[0118] 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.
[0119] 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.
[0120] 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.
[0121] 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.
[0122] 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.
[0123] 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.
[0124] 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.
[0125] 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 generating haptic feedback through a touchscreen of a computing device, the method comprising:defining one or more target locations within a user interface displayed on the touchscreen;detecting a continuous touch event on the touchscreen within the user interface;tracking the continuous touch event as it moves in the user interface relative to the one or more target locations;generating a haptic feedback signal having one or more signal parameters determined based on a distance between the location of the continuous touch event and the one or more target locations; and,driving one or more haptic feedback devices using the haptic feedback signal.2.The method of claim 1, wherein the one or more signal parameters are one or more of amplitude, duration, frequency or waveform.3.The method of claim 1, wherein tracking includes tracking a speed of movement of the continuous touch event and a trajectory of the continuous touch event, and wherein generating the haptic feedback signal is further based on one of the speed of movement or the trajectory.4.The method of claim 1, wherein generating and driving include modifying the one or more of signal parameters of the haptic feedback signal based on a change in the distance between the continuous touch event as it moves in the user interface and the one or more target locations.5.The method of any one of claims 1 to 4, wherein defining one or more target locations includes defining a plurality of granularity zones within the user interface including at least one zone corresponding to the target location, and wherein generating includes determining the one or more signal parameters, in part, based on in which of the plurality of granularity zones the continuous touch event is located.6.The method of claim 5, wherein generating and driving includes generating the haptic feedback signal and driving the one or more haptic feedback devices when the location of the continuous touch event touches a boundary between two of the granularity zones.7.The method of claim 6, wherein the boundary between two of the granularity zones is defined as a line within the user interface but not displayed on the user interface, and wherein the haptic feedback signal is generated based on the location of the continuous touch event touching the line.8.The method of claim 5, wherein the granularity zones are defined as a set of lines within the user interface but not displayed on the user interface, and wherein a density the set of lines within a respective one of the granularity zones determines the one or more signal parameters.9.The method of claim 8, wherein the granularity zones include overlapping granularity zones and wherein an area of overlap between two of the granularity zones includes a density of lines based on a combination of both sets of lines from the two of the granularity zones.10.The method of claim 1, wherein the user interface includes a virtual keyboard, and wherein the one or more target locations include two or more of the keys on the virtual keyboard.11.The method of any one of claims 1 to 10, wherein determining the one or more signal parameters includes determining the one or more signal parameters partly based on a trajectory of the continuous touch event relative to one of the one or more target locations.12.The method of any one of claims 1 to 10, wherein determining the one or more signal parameters includes determining the one or more signal parameters partly based on a speed of movement of the continuous touch event.13.The method of any one of claims 1 to 10, wherein the one or more target locations includes an actionable interface element, and wherein generating the haptic feedback signal includes selecting the one or more signal parameters to create a distinctive haptic feedback when a location of the continuous touch event corresponds to the actionable interface element.14.A computing device, comprising:a touchscreen;a processor; anda memory coupled to the processor, the memory storing computer-executable instructions for generating haptic feedback, wherein the instructions, when executed by the processor, are to configure the processor to perform the method claimed in any one of claims 1 to 13.15.A non-transitory computer-readable medium containing instructions for generating haptic feedback, wherein the instructions, when executed by a processor, are to cause the processor to perform the method claimed in any one of claims 1 to 13.16.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 13.17.A computing device comprising means to perform the method of any one of claims 1 to 13.