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.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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.