Revision Summary Date Revision History Revision Class Comments 12/16/2011 1.0 New Released new document. 3/30/2012 1.0 None No changes to the meaning, language, or formatting of the technical content. 7/12/2012 2.0 Major Significantly changed the technical content. 10/25/2012 3.0 Major Significantly changed the technical content. 1/31/2013 3.0 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 3.1 Clarified the meaning of the technical content. 11/14/2013 4.0 Major Significantly changed the technical content. 2/13/2014 4.0 None No changes to the meaning, language, or formatting of the technical content.
and -0x0002 is encoded as { 0x42 }. The most significant bits of the first byte encode the number of bytes in the structure and the sign. 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 c s val1 val2 (optional) c (1 bit): A 1-bit unsigned integer field containing an encoded representation of the number of bytes in this structure. Value Meaning ONE_BYTE_VAL 0 Implies that the optional val2 field is not present. Hence, the structure is 1 byte in size. TWO_BYTE_VAL 1 Implies that the optional val2 field is present. Hence, the structure is 2 bytes in size. s (1 bit): A 1-bit unsigned integer containing an encoded representation of whether the value is positive or negative. Meaning POSITIVE_VAL 0 Implies that the value represented by this structure is positive. NEGATIVE_VAL 1 Implies that the value represented by this structure is negative. val1 (6 bits): A 6-bit unsigned integer field containing the most significant 6 bits of the value represented by this structure. val2 (1 byte, optional): An 8-bit unsigned integer containing the least significant bits of the value represented by this structure. FOUR_BYTE_UNSIGNED_INTEGER The FOUR_BYTE_UNSIGNED_INTEGER structure is used to encode a value in the range 0x00000000 to 0x3FFFFFFF by using a variable number of bytes. For example, 0x001A1B1C is encoded as {0x9A, 0x1B, 0x1C}. The two most significant bits of the first byte encode the number of bytes in the structure. 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 c val1 val2 (optional) val3 (optional) val4 (optional) c (2 bits): A 2-bit unsigned integer field containing an encoded representation of the number of bytes in this structure. Value Meaning ONE_BYTE_VAL 0 Implies that the optional val2, val3, and val4 fields are not present. the structure is 1 byte in size.
RDPINPUT_PROTOCOL_V300 0x00030000 Version 3.0.0 of the RDP input remoting protocol. Servers advertising this version support specifying granular protocol features in the optional supportedFeatures field. supportedFeatures (4 bytes, optional): An optional 32-bit unsigned integer that specifies granular protocol features supported by the server. Value Meaning SC_READY_MULTIPEN_INJECTION_SUPPORTED 0x00000001 The simultaneous injection of input from up to four pen devices is supported. This field SHOULD be present if the protocolVersion field is set to RPDINPUT_PROTOCOL_V300 (0x00030000). RDPINPUT_CS_READY_PDU The RDPINPUT_CS_READY_PDU message is sent by the client endpoint and is used to indicate readiness to commence with input remoting transactions. 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 header ... flags ... protocolVersion ... maxTouchContacts header (6 bytes): An structure. The eventId field MUST be set to EVENTID_CS_READY (0x0002). flags (4 bytes): A 32-bit unsigned integer that specifies touch initialization flags. Flag Meaning CS_READY_FLAGS_SHOW_TOUCH_VISUALS 0x00000001 Touch gesture and contact visuals SHOULD be rendered by the server in the remote session. CS_READY_FLAGS_DISABLE_TIMESTAMP_INJECTION 0x00000002 The client does not support touch frame timestamp remoting. The server MUST ignore any values specified in the frameOffset field of the structure and the encodeTime field of the message. This flag SHOULD NOT be sent to a server that only supports version 1.0.0 of the input remoting protocol. The server-supported version is specified in the protocolVersion field of the message. CS_READY_FLAGS_ENABLE_MULTIPEN_INJECTION 0x00000004 The server should configure the pen injection subsystem so that the simultaneous injection of input from up to four pen devices is possible.
protocolVersion (4 bytes): A 32-bit unsigned integer that specifies the input protocol version supported by the client. Value Meaning RDPINPUT_PROTOCOL_V100 0x00010000 Version 1.0.0 of the RDP input remoting protocol. Clients advertising this version only support the remoting of multitouch frames. RDPINPUT_PROTOCOL_V101 0x00010001 Version 1.0.1 of the RDP remoting protocol. Clients advertising this version only support the remoting of multitouch frames. RDPINPUT_PROTOCOL_V200 0x00020000 Version 2.0.0 of the RDP input remoting protocol. Clients advertising this version support the remoting of both multitouch and pen frames. RDPINPUT_PROTOCOL_V300 0x00030000 Version 3.0.0 of the RDP input remoting protocol. Clients advertising this version support reading protocol features advertised in the supportedFeatures field of the RDPINPUT_SC_READY_PDU (section 2.2.3.1) structure. maxTouchContacts (2 bytes): A 16-bit unsigned integer that specifies the maximum number of simultaneous touch contacts supported by the client. RDPINPUT_TOUCH_EVENT_PDU The RDPINPUT_TOUCH_EVENT_PDU message is sent by the client endpoint and is used to remote a collection of touch frames. 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 header ... encodeTime (variable) ... frameCount (variable) ... frames (variable) ... header (6 An RDPINPUT_HEADER (section ) structure. The eventId field MUST be set to EVENTID_TOUCH (0x0003). encodeTime (variable): A FOUR_BYTE_UNSIGNED_INTEGER (section ) structure that specifies the time that has elapsed (in milliseconds) from when the oldest touch frame was generated to when it was encoded for transmission by the client. frameCount (variable): A TWO_BYTE_UNSIGNED_INTEGER (section ) structure that specifies the number of RDPINPUT_TOUCH_FRAME (section ) structures in the frames field.
y (variable) ... contactFlags (variable) ... penFlags (variable) ... pressure (variable) ... rotation (variable) ... tiltX (variable) ... tiltY (variable) ... deviceId (1 byte): An 8-bit unsigned integer that specifies the ID assigned to the pen device. If the simultaneous injection of pen was not negotiated using the RDPINPUT_SC_READY_PDU (section ) and RDPINPUT_CS_READY_PDU (section ) structures, then this ID MUST be set to zero. fieldsPresent (variable): A structure that specifies the presence of the optional penFlags, pressure, rotation, tiltX, and tiltY fields. Flag Meaning PEN_CONTACT_PENFLAGS_PRESENT 0x0001 The optional penFlags field is present. PEN_CONTACT_PRESSURE_PRESENT 0x0002 The optional pressure is present. PEN_CONTACT_ROTATION_PRESENT 0x0004 The optional rotation field is present. PEN_CONTACT_TILTX_PRESENT 0x0008 The optional tiltX field is present. PEN_CONTACT_TILTY_PRESENT 0x0010 The optional field is present.
Change Tracking This section identifies changes that were made to this document since the last release. Changes are classified as Major, Minor, or None. The revision class Major means that the technical content in the document was significantly revised. Major changes affect protocol interoperability or implementation. Examples of major changes are: A document revision that incorporates changes to interoperability requirements. A document revision that captures changes to protocol functionality. The revision class Minor means that the meaning of the technical content was clarified. Minor changes do not affect protocol interoperability or implementation. Examples of minor changes are updates to clarify ambiguity at the sentence, paragraph, or table level. The revision class None means that no new technical changes were introduced. Minor editorial and formatting changes may have been made, but the relevant technical content is identical to the last released version. The changes made to this document are listed in the following table. For more information, please contact . Section Description Revision class RDPINPUT_SC_READY_PDU Updated content for new release of Windows. Major RDPINPUT_CS_READY_PDU Updated content for new release of Windows. RDPINPUT_PEN_CONTACT Updated content for new release of Windows. Major Appendix A: Product Behavior Windows Server operating system to the list of applicable products. Major