Fixed: #937 Implement first time pressed keys on Linux

This commit is contained in:
kervala 2010-05-25 07:46:01 +02:00
parent 23d3e04d3e
commit 247d75b75b
2 changed files with 12 additions and 9 deletions

View file

@ -23,12 +23,11 @@
#include <GL/glx.h>
#include "nel/misc/debug.h"
#include "nel/misc/events.h"
#include "unix_event_emitter.h"
namespace NLMISC {
CUnixEventEmitter::CUnixEventEmitter ()
CUnixEventEmitter::CUnixEventEmitter ():_dpy(NULL), _win(0), _PreviousKey(KeyNOKEY)
{
}
@ -309,8 +308,9 @@ void CUnixEventEmitter::processMessage (XEvent &event, CEventServer &server)
TKey key = getKey(XKeycodeToKeysym(_dpy, ((XKeyEvent*)&event)->keycode, 0));
if(key == KeyNOKEY)
key = getKey(XKeycodeToKeysym(_dpy, ((XKeyEvent*)&event)->keycode, 1));
// TODO manage the bool (first time pressed)
server.postEvent (new CEventKeyDown (key, getKeyButton(event.xbutton.state), true, this));
server.postEvent (new CEventKeyDown (key, getKeyButton(event.xbutton.state), _PreviousKey != key, this));
_PreviousKey = key;
// don't send a control character when deleting
if (key == KeyDELETE)
@ -336,8 +336,9 @@ void CUnixEventEmitter::processMessage (XEvent &event, CEventServer &server)
TKey key = getKey(XKeycodeToKeysym(_dpy, ((XKeyEvent*)&event)->keycode, 0));
if(key == KeyNOKEY)
key = getKey(XKeycodeToKeysym(_dpy, ((XKeyEvent*)&event)->keycode, 1));
// TODO manage the bool (first time pressed)
server.postEvent (new CEventKeyUp (key, getKeyButton(event.xbutton.state), this));
_PreviousKey = KeyNOKEY;
break;
}
Case(FocusIn)

View file

@ -19,6 +19,7 @@
#include "nel/misc/types_nl.h"
#include "nel/misc/event_emitter.h"
#include "nel/misc/events.h"
#ifdef NL_OS_UNIX
@ -53,9 +54,10 @@ public:
public:
void processMessage (XEvent &event, CEventServer &server);
private:
private:
Display *_dpy;
Window _win;
TKey _PreviousKey;
};