e_rdp_input_synchronize_event(rdpInput *input, UINT32 flags)
{
//To do
+ DBG("e_rdp_input_synchronize_event\n");
return TRUE;
}
static BOOL
e_rdp_mouse_event(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y)
{
- //To do
+ static int prev_w, prev_h;
+ int e_output_w, e_output_h;
+ int move_x = 0, move_y = 0;
+ uint32_t button = 0;
+ uint32_t state = 0;
+
+ E_Rdp_Peer_Context *peerContext = (E_Rdp_Peer_Context *)input->context;
+ E_Rdp_Output *output = peerContext->rdpBackend->output;
+ E_Output *e_output = output->primary_output;
+ e_output_w = e_output->config.mode.w;
+ e_output_h = e_output->config.mode.h;
+
+ if (flags & PTR_FLAGS_MOVE)
+ {
+ if (x < e_output_w && y < e_output_h)
+ {
+ state = E_INFO_EVENT_STATE_MOTION;
+ move_x = (int)(x - prev_w);
+ move_y = (int)(y - prev_h);
+ prev_w = x;
+ prev_h = y;
+ }
+ }
+
+ if (flags & PTR_FLAGS_BUTTON1)
+ button = BTN_LEFT;
+ else if (flags & PTR_FLAGS_BUTTON2)
+ button = BTN_RIGHT;
+ else if (flags & PTR_FLAGS_BUTTON3)
+ button = BTN_MIDDLE;
+
+ if (button)
+ state = (flags & PTR_FLAGS_DOWN) ? E_INFO_EVENT_STATE_PRESS : E_INFO_EVENT_STATE_RELEASE;
+
+ if (flags & PTR_FLAGS_WHEEL)
+ {
+ double value;
+ value = (flags & 0xff) / 120.0;
+
+ button = E_INFO_BUTTON_WHEEL;
+ state = E_INFO_EVENT_STATE_MOTION;
+
+ if (flags & PTR_FLAGS_WHEEL_NEGATIVE)
+ value = -value;
+
+ move_x = (int)value;
+ }
+
+ e_info_server_input_mousegen(button, move_x, move_y, state);
+
return TRUE;
}
e_rdp_extended_mouse_event(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y)
{
//To do
+ DBG("e_rdp_extended_mouse_event\n");
return TRUE;
}