U.S. patent application number 15/004423 was filed with the patent office on 2017-07-27 for haptic feedback for a touch input device.
The applicant listed for this patent is Microsoft Technology Licensing, LLC. Invention is credited to Steven Nabil Bathiche, Anatoly Yuryevich Churikov, Aric A. Fitz-Coy, Carl E. Picciotto, Flavio Protasio Ribeiro.
Application Number | 20170212591 15/004423 |
Document ID | / |
Family ID | 57966131 |
Filed Date | 2017-07-27 |
United States Patent
Application |
20170212591 |
Kind Code |
A1 |
Churikov; Anatoly Yuryevich ;
et al. |
July 27, 2017 |
Haptic Feedback for a Touch Input Device
Abstract
Techniques for haptic feedback for a touch input device are
described. Generally, haptic feedback is provided for different
user interactions with a touch input device, such as interactions
with applications, services, and so forth. According to various
embodiments, how haptic feedback is initiated depends on whether
different functionalities directly support haptic feedback. For
instance, techniques described herein enable haptic feedback to be
provided whether or not a particular functionality directly
supports haptic feedback.
Inventors: |
Churikov; Anatoly Yuryevich;
(Las Vegas, NV) ; Protasio Ribeiro; Flavio;
(Bellevue, WA) ; Picciotto; Carl E.; (Clyde Hill,
WA) ; Fitz-Coy; Aric A.; (Seattle, WA) ;
Bathiche; Steven Nabil; (Kirkland, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Technology Licensing, LLC |
Redmond |
WA |
US |
|
|
Family ID: |
57966131 |
Appl. No.: |
15/004423 |
Filed: |
January 22, 2016 |
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 2203/014 20130101;
G06F 3/03547 20130101; G06F 3/04883 20130101; G06F 3/0488 20130101;
G06F 3/0416 20130101; G06F 3/016 20130101 |
International
Class: |
G06F 3/01 20060101
G06F003/01; G06F 3/0354 20060101 G06F003/0354; G06F 3/041 20060101
G06F003/041; G06F 3/0488 20060101 G06F003/0488 |
Claims
1. A system comprising: a haptic-enabled touch input device; at
least one processor; and one or more computer-readable storage
media including instructions stored thereon that, responsive to
execution by the at least one processor, cause the system perform
operations including: receiving an indication of input via the
touch input device; ascertaining whether haptic feedback for the
input is to be initiated by an external haptic event received from
an external functionality that is external to the touch input
device, or whether haptic feedback is to be initiated by an
internal haptic event generated by the touch input device in
response to the input; and causing the touch input device to output
haptic feedback based on one of the external haptic event or the
internal haptic event.
2. A system as recited in claim 1, wherein the touch input device
comprises one or more of a haptic-enabled trackpad, a
haptic-enabled touchscreen, or a haptic-enabled pen.
3. A system as recited in claim 1, wherein the one or more
computer-readable storage media comprises firmware of the touch
input device.
4. A system as recited in claim 1, wherein the operations further
include determining that the external functionality directly
supports haptic feedback, wherein said ascertaining comprises
ascertaining that the haptic feedback for the input is to be
initiated by an external haptic event, and said causing comprises
causing the touch input device to output haptic feedback based on
the external haptic event.
5. A system as recited in claim 1, wherein the external
functionality comprises an application that currently has focus,
the operations further include determining that the application
directly supports haptic feedback, and wherein said ascertaining
comprises ascertaining that the haptic feedback for the input is to
be initiated by an external haptic event received from the
application, and said causing comprises causing the touch input
device to output haptic feedback based on the external haptic
event.
6. A system as recited in claim 1, wherein the external
functionality comprises an operating system, the operations further
include determining that the operating system directly supports
haptic feedback, and wherein said ascertaining comprises
ascertaining that the haptic feedback for the input is to be
initiated by an external haptic event received from the operating
system, and said causing comprises causing the touch input device
to output haptic feedback based on the external haptic event.
7. A system as recited in claim 1, wherein the operations further
include determining that the external functionality does not
directly support haptic feedback, wherein said ascertaining
comprises ascertaining that the haptic feedback for the input is to
be initiated by an internal haptic event, and said causing
comprises causing the touch input device to output haptic feedback
based on the internal haptic event.
8. A system as recited in claim 1, wherein the external
functionality comprises an application that currently has focus,
the operations further include determining that the application
does not directly support haptic feedback, and wherein said
ascertaining comprises ascertaining that the haptic feedback for
the input is to be initiated by an internal haptic event, and said
causing comprises causing the touch input device to output haptic
feedback based on the internal haptic event.
9. A system as recited in claim 1, wherein the external
functionality comprises an operating system, the operations further
include determining that the operating system does not directly
support haptic feedback, and wherein said ascertaining comprises
ascertaining that the haptic feedback for the input is to be
initiated by an internal haptic event, and said causing comprises
causing the touch input device to output haptic feedback based on
the internal haptic event.
10. A system as recited in claim 1, wherein said ascertaining
comprises ascertaining that the haptic feedback for the input is to
be initiated by an internal haptic event, and said causing
comprises: ascertaining one or more attributes of a gesture used to
provide the input to the touch input device; and causing output of
the haptic feedback based on the one or more attributes.
11. A computer-implemented method, comprising: receiving an
indication of input to a touch surface of a touch input device;
ascertaining whether haptic feedback for the input is to be
initiated by an external haptic event received from an external
functionality that is external to the touch input device, or
whether haptic feedback is to be initiated by an internal haptic
event generated by the touch input device in response to the input;
and causing the touch input device to output haptic feedback based
on one of the external haptic event or the internal haptic
event.
12. A method as described in claim 11, further comprising
determining based on haptic data whether the external functionality
directly supports haptic feedback, and wherein said ascertaining
comprises one of: in an event that the haptic data indicates that
the external functionality directly supports haptic feedback,
ascertaining that the haptic feedback for the input is to be
initiated by the external haptic event received from an external
functionality; or in an event that the haptic data indicates that
the external functionality does not directly support haptic
feedback, ascertaining that the haptic feedback is to be initiated
by the internal haptic event generated by the touch input device in
response to the input.
13. A method as described in claim 11, further comprising receiving
a notification that the external functionality directly supports
haptic feedback, wherein said ascertaining comprises ascertaining
that the haptic feedback for the input is to be initiated by an
external haptic event, and said causing comprises causing the touch
input device to output haptic feedback based on the external haptic
event.
14. A method as described in claim 11, wherein said ascertaining
comprises ascertaining that the haptic feedback for the input is to
be initiated by an internal haptic event, and said causing
comprises: ascertaining one or more attributes of a gesture used to
provide the input to the touch input device; mapping the attributes
of the gesture to haptic feedback; and causing output of the haptic
feedback.
15. A computer-implemented method, comprising: receiving an
indication of input to a touch input device; determining that an
external functionality external to the touch input device does not
directly support haptic feedback; ascertaining, responsive to said
determining, that haptic feedback for the input is to be initiated
by an internal haptic event generated by the touch input device in
response to the input; ascertaining one or more attributes of a
gesture that caused the input; and causing the touch input device
to output haptic feedback in response to the internal haptic event
and based on the one or more attributes of the gesture.
16. A method as described in claim 15, wherein said determining
comprises receiving a notification that the external functionality
does not directly support haptic feedback.
17. A method as described in claim 15, wherein the external
functionality comprises an application that does not directly
support haptic feedback, and wherein the input comprises input to a
graphical user interface of the application.
18. A method as described in claim 15, wherein the external
functionality comprises an operating system that does not directly
support haptic feedback.
19. A method as described in claim 15, wherein said ascertaining
one or more attributes of the gesture comprises ascertaining one or
more of a direction of movement of the gesture relative to the
touch input device, distance of movement of the gesture, velocity
of movement of the gesture, acceleration of the gesture,
deceleration of the gesture, or an amount of pressure applied to
the touch input device while generating the gesture.
20. A method as described in claim 15, wherein the external
functionality comprises an application, and wherein said causing is
performed independent of information concerning an input context of
the application.
Description
BACKGROUND
[0001] Modern computing devices utilize a variety of different
types of feedback to indicate to users that certain functionalities
are available and that certain actions are occurring or about to
occur. For instance, when a user hovers a cursor over a hyperlink,
visual feedback can be presented that indicates that the hyperlink
is selectable to navigate to a particular network location. In
another example, audio feedback can be presented to indicate an
incoming communication, such as a new instant message.
[0002] One particularly useful type of feedback is haptic feedback,
which provides tactilely-perceptible feedback via various
mechanisms. For instance, a touchscreen may employ a tactile device
(e.g., a piezo-electric device) to provide a localized vibration
when a user presses a virtual button displayed on the touchscreen.
Such haptic feedback represents a tactile reinforcement that the
user has successfully selected the virtual button, and may be
combined with other types of feedback (e.g., visual and audio
feedback) to increase the perceptibility of certain actions and
functionalities. While haptic feedback can be leveraged in a
variety of scenarios, it can be difficult to comprehensively
incorporate across different applications and services that may not
have the ability to invoke haptic mechanisms.
SUMMARY
[0003] This Summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This Summary is not intended to identify
key features or essential features of the claimed subject matter,
nor is it intended to be used as an aid in determining the scope of
the claimed subject matter.
[0004] Techniques for haptic feedback for a touch input device are
described. Generally, haptic feedback is provided for different
user interactions with a touch input device, such as interactions
with applications, services, and so forth. According to various
embodiments, how haptic feedback is initiated depends on whether
different functionalities directly support haptic feedback. For
instance, techniques described herein enable haptic feedback to be
provided whether or not a particular functionality directly
supports haptic feedback.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] The detailed description is described with reference to the
accompanying figures. In the figures, the left-most digit(s) of a
reference number identifies the figure in which the reference
number first appears. The use of the same reference numbers in
different instances in the description and the figures may indicate
similar or identical items.
[0006] FIG. 1 is an illustration of an environment in an example
implementation that is operable to employ techniques discussed
herein.
[0007] FIG. 2 illustrates an example implementation scenario for an
application that supports haptic feedback in accordance with one or
more embodiments.
[0008] FIG. 3 depicts an example implementation scenario for an
application that does not directly support haptic feedback in
accordance with one or more embodiments.
[0009] FIG. 4 is a flow diagram that describes steps in a method
for causing output of haptic feedback in accordance with one or
more embodiments.
[0010] FIG. 5 is a flow diagram that describes steps in a method
for determining whether a haptic feedback is to be generated based
on an external haptic event or an internal haptic event in
accordance with one or more embodiments.
[0011] FIG. 6 is a flow diagram that describes steps in a method
for determining attributes of haptic feedback in accordance with
one or more embodiments.
[0012] FIG. 7 illustrates an example system and computing device as
described with reference to FIG. 1, which are configured to
implement embodiments of techniques described herein.
DETAILED DESCRIPTION
[0013] Overview
[0014] Techniques for haptic feedback for a touch input device are
described. Generally, haptic feedback is provided for different
user interactions with a touch input device, such as interactions
with applications, services, and so forth. According to various
implementations, how haptic feedback is initiated depends on
whether different functionalities directly support haptic
feedback.
[0015] For instance, consider a first scenario where a user is
providing a touch gesture to a haptic-enabled touch input device to
provide input to a graphical user interface (GUI) of an
application. Further, consider that the application directly
supports haptic feedback. An application that directly supports
haptic feedback, for instance, represents an application that
includes logic to recognize different types of user input and to
initiate specific haptic feedback based on the user input and
application context. Generally, application context refers to
various application-specific scenarios, such as GUI context,
application state, and so forth. Accordingly, in this particular
scenario the application directly supports haptic feedback, and
thus recognizes the user input to the GUI and causes the touch
input device to generate haptic feedback based on attributes of the
user input.
[0016] Consider now a second scenario where a user is providing a
touch gesture to the haptic-enabled touch input device to provide
input to a GUI of a different application. Further, consider that
the different application does not directly support haptic
feedback. An application that does not directly support haptic
feedback, for instance, represents an application that does not
include direct logic to initiate specific haptic feedback based on
user input and/or application context. Accordingly, techniques
discussed herein enable haptic feedback to be provided on the touch
input device even though the different application does not
directly support haptic feedback. For example, haptic functionality
of the touch input device (e.g., firmware, a device driver, and so
forth) recognizes attributes of the touch gesture and generates
predefined haptic feedback based on the attributes. Thus, haptic
feedback can be provided even though a particular functionality
does not directly support haptic feedback, such as a particular
application, a particular operating system, and so forth.
[0017] Accordingly, techniques described herein enable haptic
feedback to be provided across a variety of different systems and
functionalities, and in scenarios where particular systems and/or
functionalities do not directly support haptic feedback.
[0018] In the following discussion, an example environment is first
described that is operable to employ techniques described herein.
Next, a section entitled "Example Implementation Scenarios"
describes some example implementation scenarios in accordance with
one or more embodiments. Following this, a section entitled
"Example Procedures" describes some example procedures in
accordance with one or more embodiments. Finally, a section
entitled "Example System and Device" describes an example system
and device that are operable to employ techniques discussed herein
in accordance with one or more embodiments.
[0019] Having presented an overview of example implementations in
accordance with one or more embodiments, consider now an example
environment in which example implementations may by employed.
[0020] Example Environment
[0021] FIG. 1 is an illustration of an environment 100 in an
example implementation that is operable to employ techniques for
haptic feedback for a touch input device described herein. The
environment 100 includes a client device 102, which may be
configured in a variety of ways, such as a traditional computer
(e.g., a desktop personal computer, laptop computer, and so on), a
mobile device, an entertainment appliance, a smartphone, a wearable
device, a netbook, a game console, a handheld device (e.g., a
tablet), and so forth.
[0022] The client device 102 includes a variety of different
functionalities that enable various activities and tasks to be
performed. For instance, the client device 102 includes an
operating system 104, applications 106, input/output ("I/O")
devices 108, and a haptic module 110. Generally, the operating
system 104 is representative of functionality for abstracting
various system components of the client device 102, such as
hardware, kernel-level modules and services, and so forth. The
operating system 104, for instance, can abstract various components
of the client device 102 to the applications 106 to enable
interaction between the components and the applications 106.
[0023] The applications 106 represent functionalities for
performing different tasks via the client device 102. Examples of
the applications 106 include a word processing application, a
spreadsheet application, a web browser, a gaming application, a
communication application, and so forth. The applications 106 may
be installed locally on the client device 102 to be executed via a
local runtime environment, and/or may represent portals to remote
functionality, such as cloud-based services, web apps, and so
forth. Thus, the applications 106 may take a variety of forms, such
as locally-executed code, portals to remotely hosted services, and
so forth.
[0024] The I/O devices 108 are representative of different
functionalities for receiving input to the client device 102 and/or
for providing output from the client device 102. Particular
instances of the I/O devices 108, for example, represent a
dedicated input device, a dedicated output device, or a device that
both receives input and provides output. The I/O devices 108
include haptic input/output ("I/O") devices 112, which are
representative of devices that are configured to provide haptic
output. For instance, the haptic I/O devices 112 include a
touchscreen 114 and a trackpad 116, which are configured to provide
haptic feedback which is tactilely-perceptible. The touchscreen
114, for example, is not only configured to provide visual output,
but can also receive touch input and provide haptic output.
Further, the trackpad 116 can not only receive touch input for the
client device 102, but can provide various types of haptic output.
Generally, the haptic I/O devices 112 may utilize a variety of
different haptic-generating mechanisms to generate haptic feedback,
such as motors, magnets, linear resonant actuators (LRAs) (magnetic
and piezo based), piezo-electric bars, and so forth.
[0025] The haptic module 110 is representative of functionality for
enabling the client device 102 to provide various types of haptic
output. For instance, the haptic module 110 represents hardware and
logic for enabling the haptic I/O devices to output various types
of haptic feedback. The haptic module 110, for example, includes a
haptic application programming interface (API) 118, a haptic driver
120, and gesture mapping 122. Generally, the haptic API 118 and the
haptic driver 120 are representative of functionalities to enable
various other functionalities to invoke the haptic I/O devices. For
instance, the operating system 104 and the applications 106 may
call the haptic API 118 to request that a particular haptic I/O
device 112 generate haptic feedback. The haptic API 118 then
interfaces with the haptic driver 120, which in turn interfaces
with the haptic I/O devices 112 to cause the haptic I/O devices 112
to generate haptic feedback. Example interactions between the
various entities included in the environment 100 are described
below.
[0026] The gesture mapping 122 represents mappings of different
gestures to different respective types of haptic feedback. For
instance, different gesture attributes can cause different
respective types of haptic feedback to be generated. As further
detailed below, in an event that a functionality external to the
haptic I/O devices 112 (e.g., an application 106, the operating
system 104, and so forth) does not directly support haptic
feedback, the haptic module 110 can detect attributes of a gesture
applied to a haptic I/O device 112 and cause a particular type of
haptic feedback to be output by the haptic I/O device 112 based on
the attributes.
[0027] In at least some implementations, the haptic module 110 can
be implemented as part of the haptic I/O devices 112, such as in
firmware of the haptic I/O devices 112. Alternatively or
additionally, the haptic module 110 may be implemented as part of
system resources of the client device 102, such as part of the
operating system 104.
[0028] The client device 102 further includes haptic data 124,
which represents information about whether different
functionalities directly support haptic feedback. For instance, the
haptic data 124 includes identifiers for individual applications of
the applications 106, and indicates whether each of the individual
applications support haptic feedback. The haptic data 124 may also
indicate whether other functionalities directly support haptic
feedback, such as the operating system 104, other services that
reside on the client device 102, and so forth. Generally, the
haptic data 124 may be implemented as part of the haptic module
110, as part of the operating system 104, and/or as a standalone
set of haptic data that is accessible by different functionalities
of the client device 102.
[0029] Further illustrated as part of the environment 100 is a
haptic-enabled pen 126, which is representative of an instance of
the haptic I/O devices 112. Generally, the haptic-enabled pen 126
represents a handheld input apparatus that includes various
internal components that can generate haptic feedback in various
scenarios. For instance, the haptic-enabled pen 126 can provide
input to the touchscreen 114, and based on various events can
generate haptic feedback. The various implementations and scenarios
discussed below, for example, may apply to haptic feedback
generated by various haptic-enabled devices, such as the trackpad
116, the touchscreen 114, and the haptic-enabled pen 126.
[0030] Having described an example environment in which the
techniques described herein may operate, consider now a discussion
of an example implementation scenario for haptic feedback for a
touch input device in accordance with one or more embodiments.
[0031] Example Implementation Scenarios
[0032] The following section describes some example implementation
scenarios for haptic feedback for a touch input device in
accordance with one or more implementations. The implementation
scenarios may be implemented in the environment 100 discussed
above, and/or any other suitable environment.
[0033] FIG. 2 depicts an example implementation scenario 200 for an
application that directly supports haptic feedback in accordance
with one or more implementations. The scenario 200 includes various
entities and components introduced above with reference to the
environment 100.
[0034] In the scenario 200, an application 106a is active and a
graphical user interface (GUI) 202 for the application 106a is
displayed on the touchscreen 114 of the client device 102. Further,
the application 106a is configured to initiate haptic feedback
based on various application-related events. For instance, the
application 106a includes logic for interacting with the haptic
module 110, such as via the haptic API 118. Alternatively or
additionally, the application 106a is configured to initiate haptic
feedback via interaction with the operating system 104. For
instance, the operating system 104 may serve as an intermediary
between the application 106a and the haptic module 110.
[0035] Continuing with the scenario 200, a user provides input to
the trackpad 116 to interact with the GUI 202. For instance, the
user's finger 204 moves across the surface of the trackpad 116 to
move a cursor 206 within the GUI 202. In this particular example,
the user moves the cursor 206 within proximity to an action region
208. Generally, an action region refers to a region of the GUI 202
associated with a particular available action. For instance, the
action region 208 is configured to receive user input specifying a
particular location for retrieving and displaying weather-related
information.
[0036] In response to detecting the cursor 206 in proximity to
(e.g., touching and/or overlapping) the action region 208, the
application 106a fires a haptic event 210 to the haptic module 110.
For instance, the haptic event 210 is communicated directly from
the application 106a to the haptic module 110 via the haptic API
118. Alternatively, the application 106a communicates the haptic
event 210 to the operating system 104, and the operating system 104
forwards the haptic event 210 to the haptic module 110. Generally,
the haptic event 210 represents an "external" haptic event since
the haptic event 210 is generated by an external functionality that
is external to the haptic module 110 and the haptic I/O devices
112.
[0037] According to various implementations, the haptic event 210
specifies a particular type of haptic feedback to be generated by
the trackpad 116. For instance, different action regions of the GUI
202 can be linked to different types of haptic feedback.
Accordingly, in response to receiving the haptic event 210, the
haptic module 110 causes the trackpad 116 to generate haptic
feedback 212. For instance, the haptic module 110 instructs the
haptic driver 120 to cause the trackpad 116 to generate the haptic
feedback 212. The haptic feedback 212, for example, is produced by
a haptic mechanism of the trackpad 116, and is tactilely
perceptible on the surface of the trackpad 116, such as by the
user's finger 204.
[0038] In at least some implementations, the haptic module 110 is
configured to track which applications 106 directly support haptic
feedback, and which applications 106 do not. For instance, a
particular application 106 that directly supports haptic feedback
represents an application 106 that is configured to generate haptic
events to notify the haptic module 110 to generate haptic feedback.
However, a different application 106 that does not directly support
haptic feedback represents an application 106 that is not
configured to generate haptic events. Thus, the scenario 200
represents an implementation where the application 106a directly
supports haptic feedback and is thus configured to generate the
haptic event 210 to cause the haptic feedback 212 to be
generated.
[0039] FIG. 3 depicts an example implementation scenario 300 for an
application that does not directly support haptic feedback in
accordance with one or more implementations. The scenario 300
includes various entities and components introduced above with
reference to the environment 100. In at least some implementations,
the scenario 300 represents an extension and/or variation on the
scenario 200, described above.
[0040] In the scenario 300, an application 106b is active and a
graphical user interface (GUI) 302 for the application 106b is
displayed on the touchscreen 114 of the client device 102. Further,
the application 106b is not configured to initiate haptic feedback
based on various application-related events. For instance, the
application 106b does not include logic for interacting with the
haptic module 110. The application 106b, for example, does not
directly support generating haptic events.
[0041] Continuing with the scenario 300, a user provides input to
the trackpad 116 to interact with the GUI 202b. For instance, the
user's finger 204 moves across the surface of the trackpad 116 to
move the cursor 206 within the GUI 302. In this particular example,
the user provides a gesture 304 to the trackpad 116 to move the
cursor 206 and drag a scroll bar 306 downward. Since the
application 106b does not directly support haptic feedback, the
haptic module 110 detects the gesture 304 and fires a haptic event
308 to the haptic driver 120. The haptic module 110, for instance,
fires the haptic event 308 without direct interaction with the
application 106b. Alternatively or additionally, the haptic module
110 queries the operating system 104 for permission to generate
haptic feedback (e.g., fire the haptic event 308) while the
application 106b is active, e.g., has focus on the touchscreen
114.
[0042] Responsive to receiving the haptic event 308, the haptic
driver 120 causes the trackpad 116 to generate haptic feedback 310.
For instance, the operating system 104 detects that the application
106b has focus and that the application 106b does not directly
support haptic feedback, such as based on an entry in the haptic
data 124 that indicates that the application 106b does not directly
support haptic feedback. Accordingly, the operating system 104
notifies the haptic module 110 (e.g., via the haptic API 118) that
an application currently in focus does not directly support haptic
feedback. Alternatively or additionally, the operating system 104
notifies the haptic module 110 that the application 106b has focus,
and the haptic module 110 looks up the application 106b in the
haptic data 124 to determine that the application 106b does not
directly support haptic feedback.
[0043] Responsive to detecting the gesture 304 and ascertaining
that the application 106b does not directly support haptic
feedback, the haptic module 110 determines that the haptic feedback
310 is to be generated by the trackpad 116. In an example
implementation, the haptic module 110 determines a gesture type for
the gesture 304, and determines the haptic feedback 310 based on
the gesture type. The haptic module 110, for instance, determines
the gesture type based on attributes of the gesture 304. Examples
of such gesture attributes include direction of movement of the
gesture relative to the trackpad 116 (e.g., up, down, left, right,
and so forth), distance of movement, velocity of movement,
acceleration and/or deceleration, an amount of pressure applied
while generating the gesture 304, and so forth. One of more of such
gesture attributes can be considered in characterizing a gesture
type for the gesture 304.
[0044] For example, different sets of gesture attributes can
correspond to different respective gesture types. Further,
different gesture types can be mapped to different respective types
of haptic feedback, such as in the gesture mapping 122. For
instance, a tap gesture can be mapped to one type of haptic
feedback, a swipe gesture to another type of haptic feedback, a
drag gesture to still another type of haptic feedback, and so on.
In the particular example presented in scenario 300, the haptic
module 110 ascertains that the gesture 304 is a downward dragging
gesture on the trackpad 116, maps the gesture 304 to haptic
feedback identified for the gesture 304 in the gesture mapping 122,
and generates the haptic event 308 to identify the haptic feedback
310. Based on information included in the haptic event 308, the
haptic driver 120 initiates the haptic feedback 310 on the trackpad
116.
[0045] According to various implementations, the haptic module 110
causes the haptic feedback 310 to be generated by the trackpad 116
independent of a notification from the application 106b to generate
haptic feedback, and independent of any information concerning an
input context of the application 106b. For instance, the haptic
module 110 causes the haptic feedback 310 to be generated based on
attributes of the gesture 304 itself and without any input (e.g.,
context and/or instructions) from the application 106b. Thus, the
haptic event 308 represents an "internal" haptic event since the
haptic event 308 is generated internally to the haptic module 110
and/or the trackpad 116 and independent of direct interaction with
the application 106b.
[0046] Accordingly, the scenarios described above illustrate that
implementations for haptic feedback for a touch input device
described herein can differentiate between functionalities that
directly support haptic feedback and functionalities that do not
directly support haptic feedback, and can enable haptic feedback to
be generated in both cases. While these scenarios are discussed
with reference to different applications, it is to be appreciated
that implementations discussed herein can be employed with a wide
variety of different functionalities, such as different
applications, services, operating systems, and so forth. For
instance, techniques described herein can be employed to generate
haptic feedback on a device with an operating system that does not
directly support haptic feedback.
[0047] Further, while the scenarios described above are discussed
with reference to the trackpad 116, it is to be appreciated that
the scenarios may be implemented with any haptic-enabled device,
such as the touchscreen 114, the haptic-enabled pen 126, and so
forth.
[0048] Having discussed some example implementation scenarios,
consider now a discussion of some example procedures in accordance
with one or more embodiments.
[0049] Example Procedures
[0050] The following discussion describes some example procedures
for haptic feedback for a touch input device in accordance with one
or more embodiments. The example procedures may be employed in the
environment 100 of FIG. 1, the system 700 of FIG. 7, and/or any
other suitable environment. The procedures, for instance, represent
example procedures for implementing the implementation scenarios
described above. In at least some implementations, the steps
described for the various procedures are implemented automatically
and independent of user interaction.
[0051] FIG. 4 is a flow diagram that describes steps in a method in
accordance with one or more implementations. The method describes
an example procedure for causing output of haptic feedback in
accordance with one or more implementations. In at least some
implementations, the method may be performed at least in part by
the haptic module 110 and/or by the operating system 104.
[0052] Step 400 receives an indication of input to a touch surface
of a touch input device. The haptic module 110, for instance,
detects that user input is provided to a touch surface of a haptic
I/O device 112, such as one of the trackpad 116 or the touchscreen
114.
[0053] Step 402 ascertains whether haptic feedback for the input is
to be initiated by an external haptic event or an internal haptic
event. Generally, an external haptic event represents a haptic
event received by the haptic module 110 from an external
functionality that is external to the touch input device, such as
an application 106 that directly supports haptic feedback, the
operating system 104, and so forth. One example implementation of
an external haptic event is the haptic event 210 discussed above.
An internal haptic event represents a haptic event generated by the
touch input device in response to the input. One example
implementation of an internal haptic event is the haptic event 308
discussed above. An example way of determining whether a haptic
feedback is to be generated based on an external haptic event or an
internal haptic event is discussed below.
[0054] In an event that the haptic feedback for the input is to be
initiated by an external haptic event ("External"), step 404
receives the external haptic event and causes the touch input
device to output haptic feedback based on the external haptic
event. For example, the haptic module 110 receives a haptic event
from an application 106 and/or the operating system 104. Generally,
the haptic event includes information describing attributes of the
haptic feedback to be output by the touch input device. Examples of
attributes of haptic feedback include vibration frequency,
vibration amplitude, feedback duration, haptic pulse information,
variations in frequency and/or amplitude, and so forth.
[0055] In an event that the haptic feedback for the input is to be
initiated by an internal haptic event ("Internal"), step 406 causes
the touch input device to output haptic feedback based on the
internal haptic event. For example, the haptic module 110
communicates the internal haptic event to the haptic driver 120 to
cause the touch input device (e.g., one of the haptic I/O devices
112) to output haptic feedback. The internal haptic event, for
instance, includes information describing attributes of the haptic
feedback to be output by the touch input device, examples of which
are described above. In at least some implementations, attributes
of haptic feedback are determined based on attributes of a gesture
applied to the touch input device to generate the input to the
touch surface. An example way of determining attributes of haptic
feedback is discussed below.
[0056] FIG. 5 is a flow diagram that describes steps in a method in
accordance with one or more implementations. The method describes
an example procedure for determining whether a haptic feedback is
to be generated based on an external haptic event or an internal
haptic event in accordance with one or more implementations. In at
least some implementations, the method may be performed at least in
part by the haptic module 110 and/or by the operating system
104.
[0057] Step 500 determines whether a functionality external to a
touch input device directly supports haptic feedback. The haptic
module 110, for instance, determines whether an application 106
that currently has focus on the client device 102 directly supports
haptic feedback, and/or whether the operating system 104 directly
supports haptic feedback. The applications 106 and the operating
system 104, for example, represent functionalities that are
external to the touch input device, i.e., external to the haptic
I/O devices 112.
[0058] If the functionality external to the touch input device
directly supports haptic feedback ("Yes"), step 502 determines that
haptic feedback is to be generated in response to an external
haptic event. An application 106 that currently has focus, for
instance, notifies the haptic module 110 that the application
directly supports haptic feedback. Alternatively or additionally,
the operating system 104 notifies the haptic module 110 that an
application 106 that currently has focus directly supports haptic
feedback, and/or that the operating system 104 itself directly
supports haptic feedback. In at least some implementations, an
external functionality interacts with the haptic module 110 via
calls to the haptic API 118.
[0059] In yet another implementation, the haptic module 110
determines from the haptic data 124 whether a particular
application 106 and/or the operating system 104 directly support
haptic feedback. For instance, the haptic module 110 can determine
whether an external functionality directly supports haptic feedback
by ascertaining whether the haptic data 124 indicates that the
external functionality directly supports/doesn't directly support
haptic feedback.
[0060] If the functionality external to the touch input device does
not directly support haptic feedback ("No"), step 504 determines
that haptic feedback is to be generated in response to an internal
haptic event. For instance, the operating system 104 notifies the
haptic module 110 that an application 106 that currently has focus
does not directly support haptic feedback. Alternatively or
additionally, and as discussed above, the haptic module 110 can
determine whether an external functionality directly supports
haptic feedback by ascertaining whether the haptic data 124
indicates that the external functionality directly supports/doesn't
directly support haptic feedback.
[0061] FIG. 6 is a flow diagram that describes steps in a method in
accordance with one or more implementations. The method describes
an example procedure for determining attributes of haptic feedback
in accordance with one or more implementations. In at least some
implementations, the method may be performed at least in part by
the haptic module 110 and/or by the operating system 104. The
method, for instance, represents an implementation of step 406
discussed above with reference to FIG. 4.
[0062] Step 600 ascertains attributes of a gesture used to provide
input to a touch input device. Examples of gesture attributes
include direction relative to a surface to which the gesture is
applied (e.g., up, down, left, right, and so forth), distance of
movement, velocity of movement, acceleration and/or deceleration,
an amount of pressure applied while generating the gesture, and so
forth.
[0063] Step 602 maps the attributes of the gesture to haptic
feedback. For instance, different gesture attributes can be mapped
to different types of haptic feedback. In at least some
implementations, the haptic module 110 maps the attributes of the
gesture to a particular type of haptic feedback specified for the
attributes in the gesture mapping 122.
[0064] Step 604 causes output of the haptic feedback. The haptic
module 110, for instance, instructs the haptic driver 120 to output
the haptic feedback.
[0065] Accordingly, techniques discussed herein enable haptic
feedback to be provided in a wide variety of scenarios and across a
wide variety of different device configurations.
[0066] Having discussed some example procedures, consider now a
discussion of an example system and device in accordance with one
or more embodiments.
[0067] Example System and Device
[0068] FIG. 7 illustrates an example system generally at 700 that
includes an example computing device 702 that is representative of
one or more computing systems and/or devices that may implement
various techniques described herein. For example, the client device
102 discussed above with reference to FIG. 1 can be embodied as the
computing device 702. The computing device 702 may be, for example,
a server of a service provider, a device associated with the client
(e.g., a client device), an on-chip system, and/or any other
suitable computing device or computing system.
[0069] The example computing device 702 as illustrated includes a
processing system 704, one or more computer-readable media 706, and
one or more Input/Output (I/O) Interfaces 708 that are
communicatively coupled, one to another. Although not shown, the
computing device 702 may further include a system bus or other data
and command transfer system that couples the various components,
one to another. A system bus can include any one or combination of
different bus structures, such as a memory bus or memory
controller, a peripheral bus, a universal serial bus, and/or a
processor or local bus that utilizes any of a variety of bus
architectures. A variety of other examples are also contemplated,
such as control and data lines.
[0070] The processing system 704 is representative of functionality
to perform one or more operations using hardware. Accordingly, the
processing system 704 is illustrated as including hardware element
710 that may be configured as processors, functional blocks, and so
forth. This may include implementation in hardware as an
application specific integrated circuit or other logic device
formed using one or more semiconductors. The hardware elements 710
are not limited by the materials from which they are formed or the
processing mechanisms employed therein. For example, processors may
be comprised of semiconductor(s) and/or transistors (e.g.,
electronic integrated circuits (ICs)). In such a context,
processor-executable instructions may be electronically-executable
instructions.
[0071] The computer-readable media 706 is illustrated as including
memory/storage 712. The memory/storage 712 represents
memory/storage capacity associated with one or more
computer-readable media. The memory/storage 712 may include
volatile media (such as random access memory (RAM)) and/or
nonvolatile media (such as read only memory (ROM), Flash memory,
optical disks, magnetic disks, and so forth). The memory/storage
712 may include fixed media (e.g., RAM, ROM, a fixed hard drive,
and so on) as well as removable media (e.g., Flash memory, a
removable hard drive, an optical disc, and so forth). The
computer-readable media 706 may be configured in a variety of other
ways as further described below.
[0072] Input/output interface(s) 708 are representative of
functionality to allow a user to enter commands and information to
computing device 702, and also allow information to be presented to
the user and/or other components or devices using various
input/output devices. Examples of input devices include a keyboard,
a cursor control device (e.g., a mouse), a microphone (e.g., for
voice recognition and/or spoken input), a scanner, touch
functionality (e.g., capacitive or other sensors that are
configured to detect physical touch), a camera (e.g., which may
employ visible or non-visible wavelengths such as infrared
frequencies to detect movement that does not involve touch as
gestures), and so forth. Examples of output devices include a
display device (e.g., a monitor or projector), speakers, a printer,
a network card, tactile-response device, and so forth. Thus, the
computing device 702 may be configured in a variety of ways as
further described below to support user interaction.
[0073] Various techniques may be described herein in the general
context of software, hardware elements, or program modules.
Generally, such modules include routines, programs, objects,
elements, components, data structures, and so forth that perform
particular tasks or implement particular abstract data types. The
terms "module," "functionality," "entity," and "component" as used
herein generally represent software, firmware, hardware, or a
combination thereof. The features of the techniques described
herein are platform-independent, meaning that the techniques may be
implemented on a variety of commercial computing platforms having a
variety of processors.
[0074] An implementation of the described modules and techniques
may be stored on or transmitted across some form of
computer-readable media. The computer-readable media may include a
variety of media that may be accessed by the computing device 702.
By way of example, and not limitation, computer-readable media may
include "computer-readable storage media" and "computer-readable
signal media."
[0075] "Computer-readable storage media" may refer to media and/or
devices that enable persistent storage of information in contrast
to mere signal transmission, carrier waves, or signals per se.
Computer-readable storage media do not include signals per se. The
computer-readable storage media includes hardware such as volatile
and non-volatile, removable and non-removable media and/or storage
devices implemented in a method or technology suitable for storage
of information such as computer readable instructions, data
structures, program modules, logic elements/circuits, or other
data. Examples of computer-readable storage media may include, but
are not limited to, RAM, ROM, EEPROM, flash memory or other memory
technology, CD-ROM, digital versatile disks (DVD) or other optical
storage, hard disks, magnetic cassettes, magnetic tape, magnetic
disk storage or other magnetic storage devices, or other storage
device, tangible media, or article of manufacture suitable to store
the desired information and which may be accessed by a
computer.
[0076] "Computer-readable signal media" may refer to a
signal-bearing medium that is configured to transmit instructions
to the hardware of the computing device 702, such as via a network.
Signal media typically may embody computer readable instructions,
data structures, program modules, or other data in a modulated data
signal, such as carrier waves, data signals, or other transport
mechanism. Signal media also include any information delivery
media. The term "modulated data signal" means a signal that has one
or more of its characteristics set or changed in such a manner as
to encode information in the signal. By way of example, and not
limitation, communication media include wired media such as a wired
network or direct-wired connection, and wireless media such as
acoustic, radio frequency (RF), infrared, and other wireless
media.
[0077] As previously described, hardware elements 710 and
computer-readable media 706 are representative of instructions,
modules, programmable device logic and/or fixed device logic
implemented in a hardware form that may be employed in some
embodiments to implement at least some aspects of the techniques
described herein. Hardware elements may include components of an
integrated circuit or on-chip system, an application-specific
integrated circuit (ASIC), a field-programmable gate array (FPGA),
a complex programmable logic device (CPLD), and other
implementations in silicon or other hardware devices. In this
context, a hardware element may operate as a processing device that
performs program tasks defined by instructions, modules, and/or
logic embodied by the hardware element as well as a hardware device
utilized to store instructions for execution, e.g., the
computer-readable storage media described previously.
[0078] Combinations of the foregoing may also be employed to
implement various techniques and modules described herein.
Accordingly, software, hardware, or program modules and other
program modules may be implemented as one or more instructions
and/or logic embodied on some form of computer-readable storage
media and/or by one or more hardware elements 710. The computing
device 702 may be configured to implement particular instructions
and/or functions corresponding to the software and/or hardware
modules. Accordingly, implementation of modules that are executable
by the computing device 702 as software may be achieved at least
partially in hardware, e.g., through use of computer-readable
storage media and/or hardware elements 710 of the processing
system. The instructions and/or functions may be
executable/operable by one or more articles of manufacture (for
example, one or more computing devices 702 and/or processing
systems 704) to implement techniques, modules, and examples
described herein.
[0079] As further illustrated in FIG. 7, the example system 700
enables ubiquitous environments for a seamless user experience when
running applications on a personal computer (PC), a television
device, and/or a mobile device. Services and applications run
substantially similar in all three environments for a common user
experience when transitioning from one device to the next while
utilizing an application, playing a video game, watching a video,
and so on.
[0080] In the example system 700, multiple devices are
interconnected through a central computing device. The central
computing device may be local to the multiple devices or may be
located remotely from the multiple devices. In one embodiment, the
central computing device may be a cloud of one or more server
computers that are connected to the multiple devices through a
network, the Internet, or other data communication link.
[0081] In one embodiment, this interconnection architecture enables
functionality to be delivered across multiple devices to provide a
common and seamless experience to a user of the multiple devices.
Each of the multiple devices may have different physical
requirements and capabilities, and the central computing device
uses a platform to enable the delivery of an experience to the
device that is both tailored to the device and yet common to all
devices. In one embodiment, a class of target devices is created
and experiences are tailored to the generic class of devices. A
class of devices may be defined by physical features, types of
usage, or other common characteristics of the devices.
[0082] In various implementations, the computing device 702 may
assume a variety of different configurations, such as for computer
714, mobile 716, and television 718 uses. Each of these
configurations includes devices that may have generally different
constructs and capabilities, and thus the computing device 702 may
be configured according to one or more of the different device
classes. For instance, the computing device 702 may be implemented
as the computer 714 class of a device that includes a personal
computer, desktop computer, a multi-screen computer, laptop
computer, netbook, and so on.
[0083] The computing device 702 may also be implemented as the
mobile 716 class of device that includes mobile devices, such as a
mobile phone, portable music player, portable gaming device, a
tablet computer, a wearable device, a multi-screen computer, and so
on. The computing device 702 may also be implemented as the
television 718 class of device that includes devices having or
connected to generally larger screens in casual viewing
environments. These devices include televisions, set-top boxes,
gaming consoles, and so on.
[0084] The techniques described herein may be supported by these
various configurations of the computing device 702 and are not
limited to the specific examples of the techniques described
herein. For example, functionalities discussed with reference to
the haptic module 110 may be implemented all or in part through use
of a distributed system, such as over a "cloud" 720 via a platform
722 as described below.
[0085] The cloud 720 includes and/or is representative of a
platform 722 for resources 724. The platform 722 abstracts
underlying functionality of hardware (e.g., servers) and software
resources of the cloud 720. The resources 724 may include
applications and/or data that can be utilized while computer
processing is executed on servers that are remote from the
computing device 702. Resources 724 can also include services
provided over the Internet and/or through a subscriber network,
such as a cellular or Wi-Fi network.
[0086] The platform 722 may abstract resources and functions to
connect the computing device 702 with other computing devices. The
platform 722 may also serve to abstract scaling of resources to
provide a corresponding level of scale to encountered demand for
the resources 724 that are implemented via the platform 722.
Accordingly, in an interconnected device embodiment, implementation
of functionality described herein may be distributed throughout the
system 700. For example, the functionality may be implemented in
part on the computing device 702 as well as via the platform 722
that abstracts the functionality of the cloud 720.
[0087] Discussed herein are a number of methods that may be
implemented to perform techniques discussed herein. Aspects of the
methods may be implemented in hardware, firmware, or software, or a
combination thereof. The methods are shown as a set of steps that
specify operations performed by one or more devices and are not
necessarily limited to the orders shown for performing the
operations by the respective blocks. Further, an operation shown
with respect to a particular method may be combined and/or
interchanged with an operation of a different method in accordance
with one or more implementations. Aspects of the methods can be
implemented via interaction between various entities discussed
above with reference to the environment 70.
[0088] Implementations discussed herein include:
Example 1
[0089] A system for causing haptic feedback, the system including:
a haptic-enabled touch input device; at least one processor; and
one or more computer-readable storage media including instructions
stored thereon that, responsive to execution by the at least one
processor, cause the system perform operations including: receiving
an indication of input via the touch input device; ascertaining
whether haptic feedback for the input is to be initiated by an
external haptic event received from an external functionality that
is external to the touch input device, or whether haptic feedback
is to be initiated by an internal haptic event generated by the
touch input device in response to the input; and causing the touch
input device to output haptic feedback based on one of the external
haptic event or the internal haptic event.
Example 2
[0090] A system as described in example 1, wherein the touch input
device includes one or more of a haptic-enabled trackpad, a
haptic-enabled touchscreen, or a haptic-enabled pen.
Example 3
[0091] A system as described in one or more of examples 1 or 2,
wherein the one or more computer-readable storage media includes
firmware of the touch input device.
Example 4
[0092] A system as described in one or more of examples 1-3,
wherein the operations further include determining that the
external functionality directly supports haptic feedback, wherein
said ascertaining includes ascertaining that the haptic feedback
for the input is to be initiated by an external haptic event, and
said causing includes causing the touch input device to output
haptic feedback based on the external haptic event.
Example 5
[0093] A system as described in one or more of examples 1-4,
wherein the external functionality includes an application that
currently has focus, the operations further include determining
that the application directly supports haptic feedback, and wherein
said ascertaining includes ascertaining that the haptic feedback
for the input is to be initiated by an external haptic event
received from the application, and said causing includes causing
the touch input device to output haptic feedback based on the
external haptic event.
Example 6
[0094] A system as described in one or more of examples 1-5,
wherein the external functionality includes an operating system,
the operations further include determining that the operating
system directly supports haptic feedback, and wherein said
ascertaining includes ascertaining that the haptic feedback for the
input is to be initiated by an external haptic event received from
the operating system, and said causing includes causing the touch
input device to output haptic feedback based on the external haptic
event.
Example 7
[0095] A system as described in one or more of examples 1-6,
wherein the operations further include determining that the
external functionality does not directly support haptic feedback,
wherein said ascertaining includes ascertaining that the haptic
feedback for the input is to be initiated by an internal haptic
event, and said causing includes causing the touch input device to
output haptic feedback based on the internal haptic event.
Example 8
[0096] A system as described in one or more of examples 1-7,
wherein the external functionality includes an application that
currently has focus, the operations further include determining
that the application does not directly support haptic feedback, and
wherein said ascertaining includes ascertaining that the haptic
feedback for the input is to be initiated by an internal haptic
event, and said causing includes causing the touch input device to
output haptic feedback based on the internal haptic event.
Example 9
[0097] A system as described in one or more of examples 1-8,
wherein the external functionality includes an operating system,
the operations further include determining that the operating
system does not directly support haptic feedback, and wherein said
ascertaining includes ascertaining that the haptic feedback for the
input is to be initiated by an internal haptic event, and said
causing includes causing the touch input device to output haptic
feedback based on the internal haptic event.
Example 10
[0098] A system as described in one or more of examples 1-9,
wherein said ascertaining includes ascertaining that the haptic
feedback for the input is to be initiated by an internal haptic
event, and said causing includes: ascertaining one or more
attributes of a gesture used to provide the input to the touch
input device; and causing output of the haptic feedback based on
the one or more attributes.
Example 11
[0099] A computer-implemented method for causing output of haptic
feedback, the method including: receiving an indication of input to
a touch surface of a touch input device; ascertaining whether
haptic feedback for the input is to be initiated by an external
haptic event received from an external functionality that is
external to the touch input device, or whether haptic feedback is
to be initiated by an internal haptic event generated by the touch
input device in response to the input; and causing the touch input
device to output haptic feedback based on one of the external
haptic event or the internal haptic event.
Example 12
[0100] A method as described in example 11, further including
determining based on haptic data whether the external functionality
directly supports haptic feedback, and wherein said ascertaining
includes one of: in an event that the haptic data indicates that
the external functionality directly supports haptic feedback,
ascertaining that the haptic feedback for the input is to be
initiated by the external haptic event received from an external
functionality; or in an event that the haptic data indicates that
the external functionality does not directly support haptic
feedback, ascertaining that the haptic feedback is to be initiated
by the internal haptic event generated by the touch input device in
response to the input.
Example 13
[0101] A method as described in one or more of examples 11 or 12,
further including receiving a notification that the external
functionality directly supports haptic feedback, wherein said
ascertaining includes ascertaining that the haptic feedback for the
input is to be initiated by an external haptic event, and said
causing includes causing the touch input device to output haptic
feedback based on the external haptic event.
Example 14
[0102] A method as described in one or more of examples 11-13,
wherein said ascertaining includes ascertaining that the haptic
feedback for the input is to be initiated by an internal haptic
event, and said causing includes: ascertaining one or more
attributes of a gesture used to provide the input to the touch
input device; mapping the attributes of the gesture to haptic
feedback; and causing output of the haptic feedback.
Example 15
[0103] A computer-implemented method for causing output of haptic
feedback, the method including: receiving an indication of input to
a touch input device; determining that an external functionality
external to the touch input device does not directly support haptic
feedback; ascertaining, responsive to said determining, that haptic
feedback for the input is to be initiated by an internal haptic
event generated by the touch input device in response to the input;
ascertaining one or more attributes of a gesture that caused the
input; and causing the touch input device to output haptic feedback
in response to the internal haptic event and based on the one or
more attributes of the gesture.
Example 16
[0104] A method as described in example 15, wherein said
determining includes receiving a notification that the external
functionality does not directly support haptic feedback.
Example 17
[0105] A method as described in one or more of examples 15 or 16,
wherein the external functionality includes an application that
does not directly support haptic feedback, and wherein the input
includes input to a graphical user interface of the
application.
Example 18
[0106] A method as described in one or more of examples 15-17,
wherein the external functionality includes an operating system
that does not directly support haptic feedback.
Example 19
[0107] A method as described in one or more of examples 15-18,
wherein said ascertaining one or more attributes of the gesture
includes ascertaining one or more of a direction of movement of the
gesture relative to the touch input device, distance of movement of
the gesture, velocity of movement of the gesture, acceleration of
the gesture, deceleration of the gesture, or an amount of pressure
applied to the touch input device while generating the gesture.
Example 20
[0108] A method as described in one or more of examples 15-19,
wherein the external functionality includes an application, and
wherein said causing is performed independent of information
concerning an input context of the application.
CONCLUSION
[0109] Techniques for haptic feedback for a touch input device are
described. Although embodiments are described in language specific
to structural features and/or methodological acts, it is to be
understood that the embodiments defined in the appended claims are
not necessarily limited to the specific features or acts described.
Rather, the specific features and acts are disclosed as example
forms of implementing the claimed embodiments.
* * * * *