Another Xephyr focus/modifier fix
This commit is contained in:
parent
b6c7afe0b9
commit
0929f79c1b
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue