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

Send comments about this topic to Microsoft