Supporting Usages in Multi-touch Digitizer Drivers (Windows 7)
In the context of Windows Touch, multi-touch refers to support of a two or more trackable contact points. This topic outlines required and optional usages for a multi-touch digitizer driver. If your digitizer device supports only a single contact point, see Supporting Usages in Touch Digitizer Drivers.
Usage identifier values are defined in the Device Class Definition for HID 1.11.
Required and Optional HID Usages
The report descriptor for a multi-touch digitizer must specify that the device is a HID touch screen (page 0x0D, usage 0x04).
In addition to the existing HID touch usages, multi-touch digitizer drivers must implement the following usages:
X (page 0x01, usage 0x30) and Y (page 0x01, usage 0x31)
Contact identifier (page 0x0D, usage 0x51)
Tip switch (page 0x0D, usage 0x42)
In-range (page 0x0D, usage 0x32)
Contact count maximum (page 0x0D, usage 0x55)
The following usages are optional, but multi-touch digitizer drivers should implement them if the digitizer hardware supports them. These usages were ratified in the Windows Vista timeframe:
Confidence (page 0x0D, usage 0x47)
Width and height (page 0x0D, usages 0x48 and 0x49)
Pressure (page 0x0D, usage 0x30)
HID Additions to Support Multi-touch
The HID Usage Tables define the following usages for multi-touch input from digitizers. Windows 7 supports these multi-touch usages, and vendors should implement them in devices and drivers.
Dynamic Value (DV)
Collection Application (CA)
Collection Logical (CL)
Actual contact count
Contact count maximum
Maximum number of contacts supported
Specifies the identifier of the current contact. An identifier must remain constant while the contact is detected by the device. Each separate concurrent contact must have a unique identifier. Identifiers can be reused if a contact is no longer detected. If the device supports "in-air" packets (the contact is hovering above the surface), the identifier must persist from the time that the contact is detected until the time that it goes out of range. In the report descriptor in the EloMT sample, the comment for this usage is "Temp Identifier."
The Collection Application for the top-level collection that contains the feature report.
A read/write value feature to get and set the current input configuration of a device. In the EloMT sample, the comment for this usage is "Input Mode."
The logical collection that contains the device configuration usages (Device Identifier and Device Mode).
The top-level collection for which the configuration is intended. Use Device Identifier if the report descriptor contains more than one multiple input top-level collection. For more information that is specific to this scenario, see Using Report Descriptors to Support Capability Discovery.
Specifies the number of valid contacts in the current packet. Drivers that use parallel or hybrid mode should include this usage. A device that cannot provide this value must use NULL for all values in the first position that do not contain valid contact information.
Contact count maximum
Specifies the total number of contacts that a multi-touch device supports. This usage must be included in the multi-touch top-level collection and not in any child collection.
The vendor-supplied driver may be queried dynamically for this value.
You can see examples of the previous usages in the EloMT sample in the WDK.