The Set Keyboard IME Status PDU is sent by the server when the user session employs input method editors (IMEs) and is used to set the IME state. This PDU is accepted and ignored by non-IME aware clients.
file:///C:/ts_dev/TestSuites/MS-RDPBCGR/TestSuite/Src/TD/latest_XMLS_16may/RDPBCGR/ _rfc_ms-rdpbcgr2_1_7_2_2.xml
Inheritance: RdpbcgrServerPdu
        /// <summary>
        /// Decode Set Keyboard IME Status PDU
        /// </summary>
        /// <param name="data">data to be parsed</param>
        /// <param name="decryptedUserData">decrypted user data</param>
        /// <param name="type">security header type</param>
        /// <returns>decoded Set Keyboard IME Status PDU</returns>
        public StackPacket DecodeSetKeyboardImeStatusPDU(
            byte[] data,
            byte[] decryptedUserData,
            SecurityHeaderType type)
        {
            Server_Set_Keyboard_IME_Status_Pdu pdu = new Server_Set_Keyboard_IME_Status_Pdu();

            // data index
            int dataIndex = 0;

            // SetKeyboardImeStatusPDU: commonHeader
            pdu.commonHeader = ParseMcsCommonHeader(data, ref dataIndex, type);

            // user data index
            int userDataIndex = 0;

            // SetKeyboardImeStatusPDU: setKeyBdImeStatusPduData
            pdu.setKeyBdImeStatusPduData = ParseTsSetKeyboardImeStatusPdu(decryptedUserData, ref userDataIndex);

            // Check if data length exceeded expectation
            VerifyDataLength(decryptedUserData.Length, userDataIndex, ConstValue.ERROR_MESSAGE_DATA_LENGTH_EXCEEDED);
            return pdu;
        }
        public override StackPacket Clone()
        {
            Server_Set_Keyboard_IME_Status_Pdu cloneImePdu = new Server_Set_Keyboard_IME_Status_Pdu(serverSessionContext);
            cloneImePdu.commonHeader = commonHeader.Clone();
            cloneImePdu.setKeyBdImeStatusPduData.UnitId = setKeyBdImeStatusPduData.UnitId;
            cloneImePdu.setKeyBdImeStatusPduData.shareDataHeader = setKeyBdImeStatusPduData.shareDataHeader;
            cloneImePdu.setKeyBdImeStatusPduData.ImeState = setKeyBdImeStatusPduData.ImeState;
            cloneImePdu.setKeyBdImeStatusPduData.ImeConvMode = setKeyBdImeStatusPduData.ImeConvMode;

            return cloneImePdu;
        }