/** * Function description * * @return 0 on success, otherwise a Win32 error code */ UINT android_cliprdr_monitor_ready(CliprdrClientContext* cliprdr, CLIPRDR_MONITOR_READY* monitorReady) { androidContext* afc = (androidContext*) cliprdr->custom; afc->clipboardSync = TRUE; android_cliprdr_send_client_capabilities(cliprdr); android_cliprdr_send_client_format_list(cliprdr); return CHANNEL_RC_OK; }
static BOOL android_process_event(ANDROID_EVENT_QUEUE* queue, freerdp* inst) { ANDROID_EVENT* event; rdpContext* context = inst->context; androidContext* afc = (androidContext*) context; while (android_peek_event(queue)) { event = android_pop_event(queue); if (event->type == EVENT_TYPE_KEY) { ANDROID_EVENT_KEY* key_event = (ANDROID_EVENT_KEY*) event; inst->input->KeyboardEvent(inst->input, key_event->flags, key_event->scancode); android_event_free((ANDROID_EVENT*)key_event); } else if (event->type == EVENT_TYPE_KEY_UNICODE) { ANDROID_EVENT_KEY* key_event = (ANDROID_EVENT_KEY*) event; inst->input->UnicodeKeyboardEvent(inst->input, key_event->flags, key_event->scancode); android_event_free((ANDROID_EVENT*)key_event); } else if (event->type == EVENT_TYPE_CURSOR) { ANDROID_EVENT_CURSOR* cursor_event = (ANDROID_EVENT_CURSOR*) event; inst->input->MouseEvent(inst->input, cursor_event->flags, cursor_event->x, cursor_event->y); android_event_free((ANDROID_EVENT*)cursor_event); } else if (event->type == EVENT_TYPE_CLIPBOARD) { UINT32 size; UINT32 formatId; ANDROID_EVENT_CLIPBOARD* clipboard_event = (ANDROID_EVENT_CLIPBOARD*) event; formatId = ClipboardRegisterFormat(afc->clipboard, "UTF8_STRING"); size = clipboard_event->data_length; if (size) ClipboardSetData(afc->clipboard, formatId, clipboard_event->data, size); else ClipboardEmpty(afc->clipboard); android_cliprdr_send_client_format_list(afc->cliprdr); android_event_free((ANDROID_EVENT*)clipboard_event); } else if (event->type == EVENT_TYPE_DISCONNECT) { android_event_free(event); return FALSE; } } return TRUE; }