InputHandler_X11 should now properly register input

This commit is contained in:
Sean Burke
2005-03-14 10:14:04 +00:00
parent 3a86d9bbb7
commit 185855ca87
@@ -124,16 +124,20 @@ InputHandler_X11::~InputHandler_X11()
void InputHandler_X11::Update(float fDeltaTime) void InputHandler_X11::Update(float fDeltaTime)
{ {
XEvent event; XEvent event;
while(XCheckTypedEvent(X11Helper::Dpy(), KeyPress, &event) /* XXX: This steals input from other windows, but XCheckMaskEvent won't return anything
|| XCheckTypedEvent(X11Helper::Dpy(), KeyRelease, &event) ) * if it isn't called. */
if (X11Helper::Win())
XGrabKeyboard(X11Helper::Dpy(),X11Helper::Win(),true,GrabModeAsync,GrabModeAsync,CurrentTime);
while(XCheckMaskEvent(X11Helper::Dpy(), KeyPressMask, &event)
|| XCheckMaskEvent(X11Helper::Dpy(), KeyReleaseMask, &event) )
{ {
LOG->Trace("key: sym %i, key %i, state %i", LOG->Trace("key: sym %i, key %i, state %i",
event.xkey.keycode, XSymToKeySym(event.xkey.keycode), XLookupKeysym(&event.xkey,0), XSymToKeySym(XLookupKeysym(&event.xkey,0)),
event.xkey.state ); event.type == KeyPress );
DeviceInput di( DEVICE_KEYBOARD, DeviceInput di( DEVICE_KEYBOARD,
XSymToKeySym(event.xkey.keycode) ); XSymToKeySym(XLookupKeysym(&event.xkey,0)) );
ButtonPressed(di, event.xkey.state); ButtonPressed(di, event.type == KeyPress);
} }
InputHandler::UpdateTimer(); InputHandler::UpdateTimer();