Another Xephyr focus/modifier fix
This commit is contained in:
parent
b6c7afe0b9
commit
0929f79c1b
|
@ -579,13 +579,15 @@ ephyrUpdateModifierState(unsigned int state)
|
||||||
int i;
|
int i;
|
||||||
CARD8 mask;
|
CARD8 mask;
|
||||||
|
|
||||||
pkeydev = LookupKeyboardDevice();
|
pkeydev = (DeviceIntPtr)LookupKeyboardDevice();
|
||||||
|
|
||||||
if (!pkeydev)
|
if (!pkeydev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
keyc = pkeydev->key;
|
keyc = pkeydev->key;
|
||||||
|
|
||||||
|
state = state & 0xff;
|
||||||
|
|
||||||
if (keyc->state == state)
|
if (keyc->state == state)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -642,24 +644,24 @@ ephyrPoll(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EPHYR_EV_MOUSE_PRESS:
|
case EPHYR_EV_MOUSE_PRESS:
|
||||||
|
ephyrUpdateModifierState(ev.key_state);
|
||||||
mouseState |= ev.data.mouse_down.button_num;
|
mouseState |= ev.data.mouse_down.button_num;
|
||||||
KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
|
KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EPHYR_EV_MOUSE_RELEASE:
|
case EPHYR_EV_MOUSE_RELEASE:
|
||||||
|
ephyrUpdateModifierState(ev.key_state);
|
||||||
mouseState &= ~ev.data.mouse_up.button_num;
|
mouseState &= ~ev.data.mouse_up.button_num;
|
||||||
KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
|
KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EPHYR_EV_KEY_PRESS:
|
case EPHYR_EV_KEY_PRESS:
|
||||||
ephyrUpdateModifierState(ev.data.key_down.state);
|
ephyrUpdateModifierState(ev.key_state);
|
||||||
KdEnqueueKeyboardEvent (ev.data.key_down.scancode, FALSE);
|
KdEnqueueKeyboardEvent (ev.data.key_down.scancode, FALSE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EPHYR_EV_KEY_RELEASE:
|
case EPHYR_EV_KEY_RELEASE:
|
||||||
ephyrUpdateModifierState(ev.data.key_up.state);
|
ephyrUpdateModifierState(ev.key_state);
|
||||||
KdEnqueueKeyboardEvent (ev.data.key_up.scancode, TRUE);
|
KdEnqueueKeyboardEvent (ev.data.key_up.scancode, TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -719,6 +719,7 @@ hostx_get_event(EphyrHostXEvent *ev)
|
||||||
|
|
||||||
case ButtonPress:
|
case ButtonPress:
|
||||||
ev->type = EPHYR_EV_MOUSE_PRESS;
|
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 )
|
* This is a bit hacky. will break for button 5 ( defined as 0x10 )
|
||||||
* Check KD_BUTTON defines in kdrive.h
|
* Check KD_BUTTON defines in kdrive.h
|
||||||
|
@ -728,13 +729,14 @@ hostx_get_event(EphyrHostXEvent *ev)
|
||||||
|
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
ev->type = EPHYR_EV_MOUSE_RELEASE;
|
ev->type = EPHYR_EV_MOUSE_RELEASE;
|
||||||
|
ev->key_state = xev.xkey.state;
|
||||||
ev->data.mouse_up.button_num = 1<<(xev.xbutton.button-1);
|
ev->data.mouse_up.button_num = 1<<(xev.xbutton.button-1);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
{
|
{
|
||||||
ev->type = EPHYR_EV_KEY_PRESS;
|
ev->type = EPHYR_EV_KEY_PRESS;
|
||||||
ev->data.key_down.state = xev.xkey.state;
|
ev->key_state = xev.xkey.state;
|
||||||
ev->data.key_down.scancode = xev.xkey.keycode;
|
ev->data.key_down.scancode = xev.xkey.keycode;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -780,7 +782,7 @@ hostx_get_event(EphyrHostXEvent *ev)
|
||||||
* kdrive all togeather.
|
* kdrive all togeather.
|
||||||
*/
|
*/
|
||||||
ev->type = EPHYR_EV_KEY_RELEASE;
|
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;
|
ev->data.key_up.scancode = xev.xkey.keycode;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
|
@ -69,16 +69,15 @@ struct EphyrHostXEvent
|
||||||
|
|
||||||
struct key_up {
|
struct key_up {
|
||||||
int scancode;
|
int scancode;
|
||||||
int state;
|
|
||||||
} key_up;
|
} key_up;
|
||||||
|
|
||||||
struct key_down {
|
struct key_down {
|
||||||
int scancode;
|
int scancode;
|
||||||
int state;
|
|
||||||
} key_down;
|
} key_down;
|
||||||
|
|
||||||
} data;
|
} data;
|
||||||
|
|
||||||
|
int key_state;
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in New Issue