diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c index 6e0df3409..f98fcb162 100644 --- a/hw/xnest/Events.c +++ b/hw/xnest/Events.c @@ -64,8 +64,21 @@ SetTimeSinceLastInputEvent(void) } void -xnestQueueKeyEvent(int type, unsigned int keycode) +xnestQueueKeyEvent( + int type, + unsigned int keycode, + xcb_window_t root, + xcb_window_t event, + xcb_window_t child, + int16_t root_x, + int16_t root_y, + int16_t event_x, + int16_t event_y) { + fprintf(stderr, "%s: keycode=%d root=%0x child=%0x event=%x R=(%d:%d) E=(%d:%d)\n", + (type == KeyPress ? "KeyPress" : (type == KeyRelease ? "KeyRelease" : "unknown")), + keycode, root, event, child, root_x, root_y, event_x, event_y); + lastEventTime = GetTimeInMillis(); QueueKeyboardEvents(xnestKeyboardDevice, type, keycode); } @@ -83,7 +96,15 @@ xnest_handle_event(xcb_generic_event_t *event) { EVTYPE(xcb_key_press_event_t); xnestUpdateModifierState(ev->state); - xnestQueueKeyEvent(KeyPress, ev->detail); + xnestQueueKeyEvent(KeyPress, + ev->detail, + ev->root, + ev->event, + ev->child, + ev->root_x, + ev->root_y, + ev->event_x, + ev->event_y); break; } @@ -91,7 +112,15 @@ xnest_handle_event(xcb_generic_event_t *event) { EVTYPE(xcb_key_release_event_t); xnestUpdateModifierState(ev->state); - xnestQueueKeyEvent(KeyRelease, ev->detail); + xnestQueueKeyEvent(KeyRelease, + ev->detail, + ev->root, + ev->event, + ev->child, + ev->root_x, + ev->root_y, + ev->event_x, + ev->event_y); break; } diff --git a/hw/xnest/Events.h b/hw/xnest/Events.h index 3211ccac5..e47c94529 100644 --- a/hw/xnest/Events.h +++ b/hw/xnest/Events.h @@ -17,10 +17,20 @@ is" without express or implied warranty. #include +#include + extern CARD32 lastEventTime; void SetTimeSinceLastInputEvent(void); void xnestCollectEvents(void); -void xnestQueueKeyEvent(int type, unsigned int keycode); +void xnestQueueKeyEvent(int type, + unsigned int keycode, + xcb_window_t root, + xcb_window_t event, + xcb_window_t child, + int16_t root_x, + int16_t root_y, + int16_t event_x, + int16_t event_y); #endif /* XNESTEVENTS_H */ diff --git a/hw/xnest/Keyboard.c b/hw/xnest/Keyboard.c index 08c445db2..72192211b 100644 --- a/hw/xnest/Keyboard.c +++ b/hw/xnest/Keyboard.c @@ -289,11 +289,11 @@ xnestUpdateModifierState(unsigned int state) for (key = 0; key < MAP_LENGTH; key++) if (keyc->xkbInfo->desc->map->modmap[key] & mask) { if (mask == LockMask) { - xnestQueueKeyEvent(KeyPress, key); - xnestQueueKeyEvent(KeyRelease, key); + xnestQueueKeyEvent(KeyPress, key, 0, 0, 0, 0, 0, 0, 0); + xnestQueueKeyEvent(KeyRelease, key, 0, 0, 0, 0, 0, 0, 0); } else if (key_is_down(pDev, key, KEY_PROCESSED)) - xnestQueueKeyEvent(KeyRelease, key); + xnestQueueKeyEvent(KeyRelease, key, 0, 0, 0, 0, 0, 0, 0); if (--count == 0) break; @@ -304,9 +304,9 @@ xnestUpdateModifierState(unsigned int state) if (!(xkb_state & mask) && (state & mask)) for (key = 0; key < MAP_LENGTH; key++) if (keyc->xkbInfo->desc->map->modmap[key] & mask) { - xnestQueueKeyEvent(KeyPress, key); + xnestQueueKeyEvent(KeyPress, key, 0, 0, 0, 0, 0, 0, 0); if (mask == LockMask) - xnestQueueKeyEvent(KeyRelease, key); + xnestQueueKeyEvent(KeyRelease, key, 0, 0, 0, 0, 0, 0, 0); break; } }