|
|
@ -195,14 +195,33 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|
|
|
switch (msg)
|
|
|
|
switch (msg)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case 15: /* key down */
|
|
|
|
case 15: /* key down */
|
|
|
|
|
|
|
|
/* Before we handle the first character we synchronize
|
|
|
|
|
|
|
|
capslock and numlock. */
|
|
|
|
|
|
|
|
/* We collect the state during the first synchronize
|
|
|
|
|
|
|
|
( see msg 17) */
|
|
|
|
|
|
|
|
if (!mod->bool_keyBoardSynced)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
LLOGLN(11, ("Additional Sync event handled : %d", mod->keyBoardLockInfo));
|
|
|
|
|
|
|
|
mod->inst->input->SynchronizeEvent(mod->inst->input, mod->keyBoardLockInfo);
|
|
|
|
|
|
|
|
mod->bool_keyBoardSynced = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
|
|
|
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 16: /* key up */
|
|
|
|
case 16: /* key up */
|
|
|
|
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
|
|
|
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 17: /* Synchronize */
|
|
|
|
case 17: /* Synchronize */
|
|
|
|
LLOGLN(11, ("Synchronized event handled"));
|
|
|
|
LLOGLN(11, ("Synchronized event handled : %d",param1));
|
|
|
|
mod->inst->input->SynchronizeEvent(mod->inst->input, 0);
|
|
|
|
/* In some situations the Synchronize event come to early.
|
|
|
|
|
|
|
|
Therefore we store this information and use it when we
|
|
|
|
|
|
|
|
receive the first keyboard event
|
|
|
|
|
|
|
|
Without this fix numlock and capslock can come
|
|
|
|
|
|
|
|
out of sync. */
|
|
|
|
|
|
|
|
mod->inst->input->SynchronizeEvent(mod->inst->input, param1);
|
|
|
|
|
|
|
|
if (!mod->bool_keyBoardSynced)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
mod->keyBoardLockInfo = param1;
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 100: /* mouse move */
|
|
|
|
case 100: /* mouse move */
|
|
|
|
LLOGLN(12, ("mouse move %d %d", param1, param2));
|
|
|
|
LLOGLN(12, ("mouse move %d %d", param1, param2));
|
|
|
@ -256,13 +275,11 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|
|
|
case 107: /* wheel up */
|
|
|
|
case 107: /* wheel up */
|
|
|
|
flags = PTR_FLAGS_WHEEL | 0x0078;
|
|
|
|
flags = PTR_FLAGS_WHEEL | 0x0078;
|
|
|
|
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
|
|
|
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 108:
|
|
|
|
case 108:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 109: /* wheel down */
|
|
|
|
case 109: /* wheel down */
|
|
|
|
flags = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
|
|
|
|
flags = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
|
|
|
|
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
|
|
|
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 110:
|
|
|
|
case 110:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 200:
|
|
|
|
case 200:
|
|
|
|