Another Xephyr focus/modifier fix

This commit is contained in:
Matthew Allum 2005-06-30 13:39:00 +00:00
parent b6c7afe0b9
commit 0929f79c1b
3 changed files with 13 additions and 10 deletions

View File

@ -579,13 +579,15 @@ ephyrUpdateModifierState(unsigned int state)
int i;
CARD8 mask;
pkeydev = LookupKeyboardDevice();
pkeydev = (DeviceIntPtr)LookupKeyboardDevice();
if (!pkeydev)
return;
keyc = pkeydev->key;
state = state & 0xff;
if (keyc->state == state)
return;
@ -642,24 +644,24 @@ ephyrPoll(void)
break;
case EPHYR_EV_MOUSE_PRESS:
ephyrUpdateModifierState(ev.key_state);
mouseState |= ev.data.mouse_down.button_num;
KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
break;
case EPHYR_EV_MOUSE_RELEASE:
ephyrUpdateModifierState(ev.key_state);
mouseState &= ~ev.data.mouse_up.button_num;
KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
break;
case EPHYR_EV_KEY_PRESS:
ephyrUpdateModifierState(ev.data.key_down.state);
ephyrUpdateModifierState(ev.key_state);
KdEnqueueKeyboardEvent (ev.data.key_down.scancode, FALSE);
break;
case EPHYR_EV_KEY_RELEASE:
ephyrUpdateModifierState(ev.data.key_up.state);
ephyrUpdateModifierState(ev.key_state);
KdEnqueueKeyboardEvent (ev.data.key_up.scancode, TRUE);
break;

View File

@ -719,6 +719,7 @@ hostx_get_event(EphyrHostXEvent *ev)
case ButtonPress:
ev->type = EPHYR_EV_MOUSE_PRESS;
ev->key_state = xev.xkey.state;
/*
* This is a bit hacky. will break for button 5 ( defined as 0x10 )
* Check KD_BUTTON defines in kdrive.h
@ -728,13 +729,14 @@ hostx_get_event(EphyrHostXEvent *ev)
case ButtonRelease:
ev->type = EPHYR_EV_MOUSE_RELEASE;
ev->key_state = xev.xkey.state;
ev->data.mouse_up.button_num = 1<<(xev.xbutton.button-1);
return 1;
case KeyPress:
{
ev->type = EPHYR_EV_KEY_PRESS;
ev->data.key_down.state = xev.xkey.state;
ev->type = EPHYR_EV_KEY_PRESS;
ev->key_state = xev.xkey.state;
ev->data.key_down.scancode = xev.xkey.keycode;
return 1;
}
@ -780,7 +782,7 @@ hostx_get_event(EphyrHostXEvent *ev)
* kdrive all togeather.
*/
ev->type = EPHYR_EV_KEY_RELEASE;
ev->data.key_up.state = xev.xkey.state;
ev->key_state = xev.xkey.state;
ev->data.key_up.scancode = xev.xkey.keycode;
return 1;

View File

@ -69,16 +69,15 @@ struct EphyrHostXEvent
struct key_up {
int scancode;
int state;
} key_up;
struct key_down {
int scancode;
int state;
} key_down;
} data;
int key_state;
};
int