Button state transitions
This topic describes the button state transitions that are expected from devices.
Devices that support hovering
Devices that support hovering need to include the In-range and Tip usages in their descriptor. The transitions for these devices are listed in the following table.
Event | Button status (set buttons) |
---|---|
Device comes in range | In-range=on; Tip=off |
Device comes in contact with the surface of the digitizer | In-range=on; Tip=on |
Contact is moving on digitizer surface | In-range=on; Tip=on |
Contact is lifted off the digitizer surface | In-range=on; Tip=on |
Contact goes out of range | In-range=off; Tip=off |
*The X and Y coordinates reported for the “out of range” event must match those reported for the last “in range” event before the “out of range” event was detected. Even in the case where the device goes “out of range” very quickly such that “up”, and “out of range” are detected in the same scan, both events/packets need to be reported. One for “up”, and another for “out of range”.
Devices that don't support hovering
Devices that do not support hovering do not need to include the In-range usage in their descriptor. The transitions for these devices are listed in the following table.
Event | Button status (set buttons) |
---|---|
Device comes in contact with the surface of the digitizer | Tip=on |
Contact is moving on digitizer surface | Tip=on |
Contact is lifted off the digitizer surface | Tip=off |
*The X and Y coordinates reported for when the finger is lifted off the digitizer surface must be the same as those reported for the last “move” packet detected.
Pen devices that support Eraser and Inverted bit
The transitions for pen devices that support Eraser and Inverted bit are given in the following table. These are the only valid states; any other state may be rejected by Windows.
Event | Button status (set buttons) |
---|---|
Tip end of pen is hovering | In-range=on; Tip=off; Inverted=off; Eraser=off |
Tip end of pen is on the surface | In-range=on; Tip=on; Inverted=off; Eraser=off |
Tip end of pen is off the surface and hovering again | In-range=on; Tip=off; Inverted=off; Eraser=off |
Tip goes out of range | In-range=off; Tip=off; Inverted=off; Eraser=off |
Eraser end of the pen is hovering | In-range=on; Tip=off; Inverted=on; Eraser=off |
Eraser end of the pen is on the surface | In-range=on; Tip=off; Inverted=off; Eraser=on |
Eraser end of pen is off the surface and hovering again | In-range=on; Tip=off; Inverted=on; Eraser=off |
Eraser goes out of range | In-range=off; Tip=off; Inverted=off; Eraser=off |