Exemplo n.º 1
0
/**
 * 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;
}
Exemplo n.º 2
0
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;
}