hack1
This commit is contained in:
parent
e7b358e174
commit
c56c11574d
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,10 +17,20 @@ is" without express or implied warranty.
|
|||
|
||||
#include <X11/Xmd.h>
|
||||
|
||||
#include <xcb/xcb.h>
|
||||
|
||||
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 */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue