return server_sock;
}
+void handle_input_pdu(STREAM s)
+{
+ uint32 time;
+ uint16 message_type, device_flags, param1, param2;
+ uint16 num_events;
+ int i;
+
+ in_uint16_le(s, num_events); // number of events
+ in_uint8s(s, 2); // pad
+
+ for (i = 0; i < num_events; ++i) {
+ rdp_recv_input(s, &time, &message_type, &device_flags, ¶m1, ¶m2);
+ printf("Input event at time %u\n", time);
+
+ switch (message_type) {
+ case RDP_INPUT_SYNCHRONIZE:
+ printf("- Type: Synchronize (ignored)\n");
+ break;
+ case RDP_INPUT_CODEPOINT:
+ printf("- Type: Codepoint (ignored)\n");
+ break;
+ case RDP_INPUT_VIRTKEY:
+ printf("- Type: Virtual key (ignored)\n");
+ break;
+ case RDP_INPUT_SCANCODE:
+ printf("- Type: Scancode (ignored)\n");
+ break;
+ case RDP_INPUT_MOUSE:
+ printf("- Type: Mouse\n");
+ printf("- Device flags: %x\n", device_flags);
+ printf("- Position: (%u,%u)\n", param1, param2);
+
+ // debug
+ rdp_send_bitmap_update(param1, param2);
+
+ break;
+ default:
+ printf("- Unknown type %x\n", message_type);
+ break;
+ }
+ printf("\n");
+ }
+}
int serve_client()
{
switch (data_pdu_type) {
case RDP_DATA_PDU_INPUT:
printf("Input PDU\n");
- rdp_send_bitmap_update();
+ handle_input_pdu(s);
break;
default:
printf("Unknown data PDU type %u\n", data_pdu_type);