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

Button Requires _CRS Wakeable Requires On-SOC GPIO Edge Reporting (assuming ActiveLow)
Windows Yes Yes Both
Volume Up Yes Yes Both
Volume Down Yes Yes Both
Rotation Lock No Yes Both
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 functions, see HID button report descriptors.

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

Table 2 Report Triggers for non-GPIO Buttons

Individual button reporting Source Usage requirements Report trigger Repeated
Power System Control 0x81 (Power) Physical Button – Up No
Windows Keyboard 0xE3 (Win) Physical Button – Up No
Volume Up Consumer Collection 0xE9 (Volume Up) Physical Button – Down Yes
Volume Down Consumer Collection 0xEA (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 shouldn't be repeated if the combination is held.

Table 3 Report Triggers for non-GPIO Button Combinations

Button combination reporting Usage requirements Report trigger Repeated
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

Note