X-Git-Url: https://git.sesse.net/?p=rdpsrv;a=blobdiff_plain;f=rdpsrv.c;h=e97515b53d965d29f04594b7f678aeb80de7e98a;hp=f417616724d502081eda6352e82c2721159dc318;hb=b6e6afccf37f4ad0515ef2a698f714fdf1bf23b3;hpb=e0d6c6eb80e1c3ce8c95954002bb3c6642681758 diff --git a/rdpsrv.c b/rdpsrv.c index f417616..e97515b 100644 --- a/rdpsrv.c +++ b/rdpsrv.c @@ -58,6 +58,49 @@ int create_server_socket() 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() { @@ -82,12 +125,11 @@ int serve_client() switch (data_pdu_type) { case RDP_DATA_PDU_INPUT: printf("Input PDU\n"); + handle_input_pdu(s); break; default: printf("Unknown data PDU type %u\n", data_pdu_type); }; - -// rdp_send_bitmap_update(); } } }