hack1
This commit is contained in:
parent
e7b358e174
commit
c56c11574d
|
@ -64,8 +64,21 @@ SetTimeSinceLastInputEvent(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
lastEventTime = GetTimeInMillis();
|
||||||
QueueKeyboardEvents(xnestKeyboardDevice, type, keycode);
|
QueueKeyboardEvents(xnestKeyboardDevice, type, keycode);
|
||||||
}
|
}
|
||||||
|
@ -83,7 +96,15 @@ xnest_handle_event(xcb_generic_event_t *event)
|
||||||
{
|
{
|
||||||
EVTYPE(xcb_key_press_event_t);
|
EVTYPE(xcb_key_press_event_t);
|
||||||
xnestUpdateModifierState(ev->state);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +112,15 @@ xnest_handle_event(xcb_generic_event_t *event)
|
||||||
{
|
{
|
||||||
EVTYPE(xcb_key_release_event_t);
|
EVTYPE(xcb_key_release_event_t);
|
||||||
xnestUpdateModifierState(ev->state);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,10 +17,20 @@ is" without express or implied warranty.
|
||||||
|
|
||||||
#include <X11/Xmd.h>
|
#include <X11/Xmd.h>
|
||||||
|
|
||||||
|
#include <xcb/xcb.h>
|
||||||
|
|
||||||
extern CARD32 lastEventTime;
|
extern CARD32 lastEventTime;
|
||||||
|
|
||||||
void SetTimeSinceLastInputEvent(void);
|
void SetTimeSinceLastInputEvent(void);
|
||||||
void xnestCollectEvents(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 */
|
#endif /* XNESTEVENTS_H */
|
||||||
|
|
|
@ -289,11 +289,11 @@ xnestUpdateModifierState(unsigned int state)
|
||||||
for (key = 0; key < MAP_LENGTH; key++)
|
for (key = 0; key < MAP_LENGTH; key++)
|
||||||
if (keyc->xkbInfo->desc->map->modmap[key] & mask) {
|
if (keyc->xkbInfo->desc->map->modmap[key] & mask) {
|
||||||
if (mask == LockMask) {
|
if (mask == LockMask) {
|
||||||
xnestQueueKeyEvent(KeyPress, key);
|
xnestQueueKeyEvent(KeyPress, key, 0, 0, 0, 0, 0, 0, 0);
|
||||||
xnestQueueKeyEvent(KeyRelease, key);
|
xnestQueueKeyEvent(KeyRelease, key, 0, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
else if (key_is_down(pDev, key, KEY_PROCESSED))
|
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)
|
if (--count == 0)
|
||||||
break;
|
break;
|
||||||
|
@ -304,9 +304,9 @@ xnestUpdateModifierState(unsigned int state)
|
||||||
if (!(xkb_state & mask) && (state & mask))
|
if (!(xkb_state & mask) && (state & mask))
|
||||||
for (key = 0; key < MAP_LENGTH; key++)
|
for (key = 0; key < MAP_LENGTH; key++)
|
||||||
if (keyc->xkbInfo->desc->map->modmap[key] & mask) {
|
if (keyc->xkbInfo->desc->map->modmap[key] & mask) {
|
||||||
xnestQueueKeyEvent(KeyPress, key);
|
xnestQueueKeyEvent(KeyPress, key, 0, 0, 0, 0, 0, 0, 0);
|
||||||
if (mask == LockMask)
|
if (mask == LockMask)
|
||||||
xnestQueueKeyEvent(KeyRelease, key);
|
xnestQueueKeyEvent(KeyRelease, key, 0, 0, 0, 0, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue