KEYBOARD_EXTENDED_ATTRIBUTES structure (ntddkbd.h)

KEYBOARD_EXTENDED_ATTRIBUTES specifies the extended attributes of a keyboard.

Syntax

typedef struct _KEYBOARD_EXTENDED_ATTRIBUTES {
  UCHAR Version;
  UCHAR FormFactor;
  UCHAR KeyType;
  UCHAR PhysicalLayout;
  UCHAR VendorSpecificPhysicalLayout;
  UCHAR IETFLanguageTagIndex;
  UCHAR ImplementedInputAssistControls;
} KEYBOARD_EXTENDED_ATTRIBUTES, *PKEYBOARD_EXTENDED_ATTRIBUTES;

Members

Version

Type: UCHAR

The version of this structure.

Only KEYBOARD_EXTENDED_ATTRIBUTES_STRUCT_VERSION_1 supported.

FormFactor

Type: UCHAR

Keyboard Form Factor (Usage ID: 0x2C1).

Value Description
0x00 Unknown Form Factor.
0x01 Full‐Size keyboard.
0x02 Compact keyboard. Such keyboards are less than 13” wide.

KeyType

Type: UCHAR

Keyboard Key Type (Usage ID: 0x2C2).

Value Description
0x00 Unknown Key Type.
0x01 Full‐travel keys.
0x02 Low‐travel keys such as those on laptop keyboards.
0x03 Zero‐travel or virtual keys.

PhysicalLayout

Type: UCHAR

Keyboard Physical Layout (Usage ID: 0x2C3).

Value Description
0x00 Unknown Layout
0x01 101 (e.g., US)
0x02 103 (Korea)
0x03 102 (e.g., German)
0x04 104 (e.g., ABNT Brazil)
0x05 106 (DOS/V Japan)
0x06 Vendor‐specific – If specified, VendorSpecificPhysicalLayout must also be specified.

This value does not refer to the legend set printed on the keys, but only to the physical keyset layout, defined by the relative location and shape of the textual keys in relation to each other. This value indicates which of the de facto standard physical layouts to which the keyboard conforms. These layouts are commonly understood.

VendorSpecificPhysicalLayout

Type: UCHAR

A numeric identifier of the particular Vendor‐specific Keyboard Physical Layout (Usage ID: 0x2C4).

Values for this field are defined by the hardware vendor but 0x00 is defined to not specify a Vendor‐specific Keyboard Physical Layout. If non‐zero, PhysicalLayout must have value 0x06. If this identifier is 0x00, PhysicalLayout must not have the value 0x06.

IETFLanguageTagIndex

Type: UCHAR

String index of a String Descriptor having an IETF Language Tag (Usage ID: 0x2C5).

Actual string can be obtained via IOCTL_HID_GET_INDEXED_STRING IOCTL in kernel-mode drivers or HidD_GetIndexedString call in user-mode applications.

This Language Tag specifies the intended primary locale of the keyboard legend set, conformant to IETF BCP 47 or its successor.

If an appropriate IETF Language Tag is not available, such as for custom, adaptive or new layouts, the value is set to 0x00.

ImplementedInputAssistControls

Type: UCHAR

Bitmap for physically implemented input assist controls. (Usage ID: 0x2C6).

Bit Description
All 0 No Keyboard Input Assist controls are implemented.
Bit 0 Previous Suggestion
Bit 1 Next Suggestion
Bit 2 Previous Suggestion Group
Bit 3 Next Suggestion Group
Bit 4 Accept Suggestion
Bit 5 Cancel Suggestion
All other bits reserved.

Remarks

This structure is used with a IOCTL_KEYBOARD_QUERY_EXTENDED_ATTRIBUTES request to return information about the extended attributes that a keyboard supports.

This information comes from HID Keyboard Report Descriptor described in HID Usage Table Review Request 42: Consumer Page Keyboard Assist Controls.

Requirements

Requirement Value
Header ntddkbd.h (include Ntddkbd.h)

See also

IOCTL_KEYBOARD_QUERY_EXTENDED_ATTRIBUTES

IOCTL_KEYBOARD_QUERY_ATTRIBUTES

HID Usage Table Review Request 42: Consumer Page Keyboard Assist Controls