static boolean input_recv_event(rdpInput* input, STREAM* s) { uint16 messageType; if (stream_get_left(s) < 4) return false; stream_seek(s, 4); /* eventTime (4 bytes), ignored by the server */ stream_read_uint16(s, messageType); /* messageType (2 bytes) */ switch (messageType) { case INPUT_EVENT_SYNC: if (!input_recv_sync_event(input, s)) return false; break; case INPUT_EVENT_SCANCODE: if (!input_recv_keyboard_event(input, s)) return false; break; case INPUT_EVENT_UNICODE: if (!input_recv_unicode_keyboard_event(input, s)) return false; break; case INPUT_EVENT_MOUSE: if (!input_recv_mouse_event(input, s)) return false; break; case INPUT_EVENT_MOUSEX: if (!input_recv_extended_mouse_event(input, s)) return false; break; default: printf("Unknown messageType %u\n", messageType); /* Each input event uses 6 bytes. */ stream_seek(s, 6); break; } return true; }
static BOOL input_recv_event(rdpInput* input, wStream* s) { UINT16 messageType; if (Stream_GetRemainingLength(s) < 6) return FALSE; Stream_Seek(s, 4); /* eventTime (4 bytes), ignored by the server */ Stream_Read_UINT16(s, messageType); /* messageType (2 bytes) */ switch (messageType) { case INPUT_EVENT_SYNC: if (!input_recv_sync_event(input, s)) return FALSE; break; case INPUT_EVENT_SCANCODE: if (!input_recv_keyboard_event(input, s)) return FALSE; break; case INPUT_EVENT_UNICODE: if (!input_recv_unicode_keyboard_event(input, s)) return FALSE; break; case INPUT_EVENT_MOUSE: if (!input_recv_mouse_event(input, s)) return FALSE; break; case INPUT_EVENT_MOUSEX: if (!input_recv_extended_mouse_event(input, s)) return FALSE; break; default: fprintf(stderr, "Unknown messageType %u\n", messageType); /* Each input event uses 6 bytes. */ Stream_Seek(s, 6); break; } return TRUE; }