libfreerdp-core: fix async input mode for FocusInEvent, KeyboardPauseEvent
This commit is contained in:
parent
9b28562cc1
commit
736bcf2bd6
@ -64,11 +64,11 @@ typedef struct rdp_input_proxy rdpInputProxy;
|
|||||||
|
|
||||||
typedef void (*pSynchronizeEvent)(rdpInput* input, UINT32 flags);
|
typedef void (*pSynchronizeEvent)(rdpInput* input, UINT32 flags);
|
||||||
typedef void (*pKeyboardEvent)(rdpInput* input, UINT16 flags, UINT16 code);
|
typedef void (*pKeyboardEvent)(rdpInput* input, UINT16 flags, UINT16 code);
|
||||||
typedef void (*pKeyboardPauseEvent)(rdpInput* input);
|
|
||||||
typedef void (*pUnicodeKeyboardEvent)(rdpInput* input, UINT16 flags, UINT16 code);
|
typedef void (*pUnicodeKeyboardEvent)(rdpInput* input, UINT16 flags, UINT16 code);
|
||||||
typedef void (*pMouseEvent)(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
|
typedef void (*pMouseEvent)(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
|
||||||
typedef void (*pExtendedMouseEvent)(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
|
typedef void (*pExtendedMouseEvent)(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
|
||||||
typedef void (*pFocusInEvent)(rdpInput* input, UINT16 toggleStates, UINT16 x, UINT16 y);
|
typedef void (*pFocusInEvent)(rdpInput* input, UINT16 toggleStates, UINT16 x, UINT16 y);
|
||||||
|
typedef void (*pKeyboardPauseEvent)(rdpInput* input);
|
||||||
|
|
||||||
struct rdp_input
|
struct rdp_input
|
||||||
{
|
{
|
||||||
|
@ -231,12 +231,16 @@
|
|||||||
#define Input_UnicodeKeyboardEvent 3
|
#define Input_UnicodeKeyboardEvent 3
|
||||||
#define Input_MouseEvent 4
|
#define Input_MouseEvent 4
|
||||||
#define Input_ExtendedMouseEvent 5
|
#define Input_ExtendedMouseEvent 5
|
||||||
|
#define Input_FocusInEvent 6
|
||||||
|
#define Input_KeyboardPauseEvent 7
|
||||||
|
|
||||||
#define FREERDP_INPUT_SYNCHRONIZE_EVENT MakeMessageId(Input, SynchronizeEvent)
|
#define FREERDP_INPUT_SYNCHRONIZE_EVENT MakeMessageId(Input, SynchronizeEvent)
|
||||||
#define FREERDP_INPUT_KEYBOARD_EVENT MakeMessageId(Input, KeyboardEvent)
|
#define FREERDP_INPUT_KEYBOARD_EVENT MakeMessageId(Input, KeyboardEvent)
|
||||||
#define FREERDP_INPUT_UNICODE_KEYBOARD_EVENT MakeMessageId(Input, UnicodeKeyboardEvent)
|
#define FREERDP_INPUT_UNICODE_KEYBOARD_EVENT MakeMessageId(Input, UnicodeKeyboardEvent)
|
||||||
#define FREERDP_INPUT_MOUSE_EVENT MakeMessageId(Input, MouseEvent)
|
#define FREERDP_INPUT_MOUSE_EVENT MakeMessageId(Input, MouseEvent)
|
||||||
#define FREERDP_INPUT_EXTENDED_MOUSE_EVENT MakeMessageId(Input, ExtendedMouseEvent)
|
#define FREERDP_INPUT_EXTENDED_MOUSE_EVENT MakeMessageId(Input, ExtendedMouseEvent)
|
||||||
|
#define FREERDP_INPUT_FOCUS_IN_EVENT MakeMessageId(Input, FocusInEvent)
|
||||||
|
#define FREERDP_INPUT_KEYBOARD_PAUSE_EVENT MakeMessageId(Input, KeyboardPauseEvent)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Static Channel Message Queues
|
* Static Channel Message Queues
|
||||||
|
@ -2265,6 +2265,20 @@ static void input_message_ExtendedMouseEvent(rdpInput* input, UINT16 flags, UINT
|
|||||||
MakeMessageId(Input, ExtendedMouseEvent), (void*) (size_t) flags, (void*) (size_t) pos);
|
MakeMessageId(Input, ExtendedMouseEvent), (void*) (size_t) flags, (void*) (size_t) pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void input_message_FocusInEvent(rdpInput* input, UINT16 toggleStates, UINT16 x, UINT16 y)
|
||||||
|
{
|
||||||
|
UINT32 pos = (x << 16) | y;
|
||||||
|
|
||||||
|
MessageQueue_Post(input->queue, (void*) input,
|
||||||
|
MakeMessageId(Input, FocusInEvent), (void*) (size_t) toggleStates, (void*) (size_t) pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void input_message_KeyboardPauseEvent(rdpInput* input)
|
||||||
|
{
|
||||||
|
MessageQueue_Post(input->queue, (void*) input,
|
||||||
|
MakeMessageId(Input, KeyboardPauseEvent), NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Event Queue */
|
/* Event Queue */
|
||||||
static int input_message_free_input_class(wMessage* msg, int type)
|
static int input_message_free_input_class(wMessage* msg, int type)
|
||||||
{
|
{
|
||||||
@ -2287,6 +2301,12 @@ static int input_message_free_input_class(wMessage* msg, int type)
|
|||||||
case Input_ExtendedMouseEvent:
|
case Input_ExtendedMouseEvent:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Input_FocusInEvent:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Input_KeyboardPauseEvent:
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
status = -1;
|
status = -1;
|
||||||
break;
|
break;
|
||||||
@ -2339,6 +2359,23 @@ static int input_message_process_input_class(rdpInputProxy* proxy, wMessage* msg
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Input_FocusInEvent:
|
||||||
|
{
|
||||||
|
UINT32 pos;
|
||||||
|
UINT16 x, y;
|
||||||
|
|
||||||
|
pos = (UINT32) (size_t) msg->lParam;
|
||||||
|
x = ((pos & 0xFFFF0000) >> 16);
|
||||||
|
y = (pos & 0x0000FFFF);
|
||||||
|
|
||||||
|
IFCALL(proxy->FocusInEvent, msg->context, (UINT16) (size_t) msg->wParam, x, y);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Input_KeyboardPauseEvent:
|
||||||
|
IFCALL(proxy->KeyboardPauseEvent, msg->context);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
status = -1;
|
status = -1;
|
||||||
break;
|
break;
|
||||||
@ -2463,12 +2500,16 @@ void input_message_proxy_register(rdpInputProxy* proxy, rdpInput* input)
|
|||||||
proxy->UnicodeKeyboardEvent = input->UnicodeKeyboardEvent;
|
proxy->UnicodeKeyboardEvent = input->UnicodeKeyboardEvent;
|
||||||
proxy->MouseEvent = input->MouseEvent;
|
proxy->MouseEvent = input->MouseEvent;
|
||||||
proxy->ExtendedMouseEvent = input->ExtendedMouseEvent;
|
proxy->ExtendedMouseEvent = input->ExtendedMouseEvent;
|
||||||
|
proxy->FocusInEvent = input->FocusInEvent;
|
||||||
|
proxy->KeyboardPauseEvent = input->KeyboardPauseEvent;
|
||||||
|
|
||||||
input->SynchronizeEvent = input_message_SynchronizeEvent;
|
input->SynchronizeEvent = input_message_SynchronizeEvent;
|
||||||
input->KeyboardEvent = input_message_KeyboardEvent;
|
input->KeyboardEvent = input_message_KeyboardEvent;
|
||||||
input->UnicodeKeyboardEvent = input_message_UnicodeKeyboardEvent;
|
input->UnicodeKeyboardEvent = input_message_UnicodeKeyboardEvent;
|
||||||
input->MouseEvent = input_message_MouseEvent;
|
input->MouseEvent = input_message_MouseEvent;
|
||||||
input->ExtendedMouseEvent = input_message_ExtendedMouseEvent;
|
input->ExtendedMouseEvent = input_message_ExtendedMouseEvent;
|
||||||
|
input->FocusInEvent = input_message_FocusInEvent;
|
||||||
|
input->KeyboardPauseEvent = input_message_KeyboardPauseEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
rdpInputProxy* input_message_proxy_new(rdpInput* input)
|
rdpInputProxy* input_message_proxy_new(rdpInput* input)
|
||||||
|
@ -150,6 +150,8 @@ struct rdp_input_proxy
|
|||||||
pUnicodeKeyboardEvent UnicodeKeyboardEvent;
|
pUnicodeKeyboardEvent UnicodeKeyboardEvent;
|
||||||
pMouseEvent MouseEvent;
|
pMouseEvent MouseEvent;
|
||||||
pExtendedMouseEvent ExtendedMouseEvent;
|
pExtendedMouseEvent ExtendedMouseEvent;
|
||||||
|
pFocusInEvent FocusInEvent;
|
||||||
|
pKeyboardPauseEvent KeyboardPauseEvent;
|
||||||
};
|
};
|
||||||
|
|
||||||
int input_message_queue_process_message(rdpInput* input, wMessage* message);
|
int input_message_queue_process_message(rdpInput* input, wMessage* message);
|
||||||
|
Loading…
Reference in New Issue
Block a user