Button reporting

The in-box general-purpose I/O (GPIO) button driver reports to Windows, based on the interrupts that are received on the defined GPIO resources of the button array.

The in-box GPIO button driver reports the button presses and combinations listed in Table 1 GPIO Button Reporting.

Table 1 GPIO Button Reporting

ButtonRequires _CRS WakeableRequires On-SOC GPIOEdge Reporting (assuming ActiveLow)
Windows YesYesBoth
Volume Up YesYesBoth
Volume Down Yes YesBoth
Rotation Lock NoYesBoth
Power Yes Yes Both


All non-GPIO based implementations must follow the same reporting scheme.

The order of definition is Power, Windows, Volume Up, Volume Down, and Rotation Lock. For examples of how to create HID descriptors for these, see HID button report descriptors.


Previous requirements described the use of Win + O for Rotation Lock. Although this combination is still functional, it is not impervious to keyboard layout changes, whereas Win + F14 is layout-agnostic.

Table 2 Report Triggers for non-GPIO Buttons

Individual button reportingSourceUsage requirementsReport triggerRepeated
Power System Control 0x84 (Power) Physical Button – UpNo
Windows Keyboard0xE3 (Win)Physical Button – Up No
Volume Up Consumer Collection0xE9 (Volume Up) Physical Button – Down Yes
Volume Down Consumer Collection0xEA (Volume Down) Physical Button – Down Yes
Rotation Lock Keyboard 0xE3 = 0x69 (Win + F14) Physical Button – Down No


The following keyboard combinations must be reported based on their completion, and should not be repeated if the combination is held.

Table 3 Report Triggers for non-GPIO Button Combinations

Button combination reportingUsage requirementsReport triggerRepeated
Windows + Power

0xE0 + 0xE2 + 0x4C

(Ctrl + Alt + Del)

Physical Power Button – Down No
Windows + Volume Up

0xE3 + 0xE0 + 0x69

(Win + Ctrl + F14)

Physical Volume Button - Down No
Windows + Volume Down

0xE3 + 0x6A

(Win + F15)

Physical Volume Button - Down No





Send comments about this topic to Microsoft