2.2.7.1.6 Input Capability Set (TS_INPUT_CAPABILITYSET)

The TS_INPUT_CAPABILITYSET structure is used to advertise support for input formats and devices. This capability is sent by both client and server. The keyboardLayout, keyboardType, keyboardSubType, and keyboardFunctionKey fields of the server-to-client TS_INPUT_CAPABILITYSET structure SHOULD<28> be set to zero, and the imeFileName field of the server-to-client TS_INPUT_CAPABILITYSET structure SHOULD<29> be filled with zeros.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

capabilitySetType

lengthCapability

inputFlags

pad2octetsA

keyboardLayout

keyboardType

keyboardSubType

keyboardFunctionKey

imeFileName (64 bytes)

...

...

capabilitySetType (2 bytes): A 16-bit, unsigned integer. The type of the capability set. This field MUST be set to CAPSTYPE_INPUT (13).

lengthCapability (2 bytes): A 16-bit, unsigned integer. The length in bytes of the capability data, including the size of the capabilitySetType and lengthCapability fields.

inputFlags (2 bytes): A 16-bit, unsigned integer. Input support flags.

Flag

Meaning

INPUT_FLAG_SCANCODES

0x0001

Indicates support for using scancodes in the Keyboard Event notifications (sections 2.2.8.1.1.3.1.1.1 and 2.2.8.1.2.2.1).

INPUT_FLAG_MOUSEX

0x0004

Indicates support for Extended Mouse Event notifications (sections 2.2.8.1.1.3.1.1.4 and 2.2.8.1.2.2.4).

INPUT_FLAG_FASTPATH_INPUT

0x0008

Advertised by RDP 5.0 and 5.1 servers to indicate support for fast-path input.

INPUT_FLAG_UNICODE

0x0010

Indicates support for Unicode Keyboard Event notifications (sections 2.2.8.1.1.3.1.1.2 and 2.2.8.1.2.2.2).

INPUT_FLAG_FASTPATH_INPUT2

0x0020

Advertised by all RDP servers, except for RDP 4.0, 5.0, and 5.1 servers, to indicate support for fast-path input. Clients that do not support this flag will not be able to use fast-path input when connecting to RDP 5.2, 6.0, 6.1, 7.0, 7.1, 8.0, 8.1, 10.0, 10.1, 10.2, 10.3, 10.4, and 10.5 servers.

INPUT_FLAG_UNUSED1

0x0040

An unused flag that MUST be ignored by the client if it is present in the server-to-client Input Capability Set.

INPUT_FLAG_MOUSE_RELATIVE

0x0080

This flag MUST be ignored by the server if it is present in the client-to-server Input Capability Set and the protocol version specified in the Client Core Data (section 2.2.1.3.2) is less than 0x00080011. If the protocol version is greater than or equal to 0x00080011, then this flag indicates that the client supports relative mouse mode (section 2.2.8.1.1.3.1.1.7 and section 2.2.8.1.2.2.7).

TS_INPUT_FLAG_MOUSE_HWHEEL

0x0100

Indicates support for horizontal Mouse Wheel Event notifications (sections 2.2.8.1.1.3.1.1.3 and 2.2.8.1.2.2.3).

TS_INPUT_FLAG_QOE_TIMESTAMPS

0x0200

Indicates support for Quality of Experience (QoE) Timestamp Event notifications (section 2.2.8.1.2.2.6). There is no slow-path support for Quality of Experience (QoE) timestamps.

At a minimum, the INPUT_FLAG_SCANCODES flag MUST be set, as server-side RDP keyboard input handling is restricted to keyboard scancodes and Unicode input (unlike the code-point or virtual codes supported in [T128]).

pad2octetsA (2 bytes): A 16-bit, unsigned integer. Padding. Values in this field MUST be ignored.

keyboardLayout (4 bytes): A 32-bit, unsigned integer. The active input locale identifier, also known as the "HKL" (for example, 0x00000409 for a "US" keyboard layout and 0x00010407 for a "German (IBM)" keyboard layout). For a list of input locale identifiers, see [MSFT-DIL]. The active input locale identifier is only specified in the client Input Capability Set and SHOULD be the same as the keyboard layout specified in the Client Core Data (section 2.2.1.3.2).<30>

keyboardType (4 bytes): A 32-bit, unsigned integer. Keyboard type.

Value

Meaning

0x00000001

IBM PC/XT or compatible (83-key) keyboard

0x00000002

Olivetti "ICO" (102-key) keyboard

0x00000003

IBM PC/AT (84-key) or similar keyboard

0x00000004

IBM enhanced (101- or 102-key) keyboard

0x00000005

Nokia 1050 and similar keyboards

0x00000006

Nokia 9140 and similar keyboards

0x00000007

Japanese keyboard

This value is only specified in the client Input Capability Set and SHOULD correspond with that sent in the Client Core Data.

keyboardSubType (4 bytes):  A 32-bit, unsigned integer. Keyboard subtype (an original equipment manufacturer-dependent value). This value is only specified in the client Input Capability Set and SHOULD correspond with that sent in the Client Core Data.

keyboardFunctionKey (4 bytes): A 32-bit, unsigned integer. Number of function keys on the keyboard. This value is only specified in the client Input Capability Set and SHOULD correspond with that sent in the Client Core Data.

imeFileName (64 bytes): A 64-byte field, containing the input method editor (IME) file name associated with the input locale. This field contains up to 31 Unicode characters plus a null terminator and is only specified in the client Input Capability Set and its contents SHOULD correspond with that sent in the Client Core Data.