Fixed: #937 Implement first time pressed keys on Linux
This commit is contained in:
parent
2823a1f16b
commit
e07f6814a4
2 changed files with 12 additions and 9 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
@ -38,10 +39,10 @@ class CUnixEventEmitter : public IEventEmitter
|
|||
{
|
||||
public:
|
||||
|
||||
/// Constructor
|
||||
CUnixEventEmitter();
|
||||
/// Constructor
|
||||
CUnixEventEmitter();
|
||||
|
||||
void init (Display *dpy, Window win);
|
||||
void init (Display *dpy, Window win);
|
||||
|
||||
/**
|
||||
* sends all events to server
|
||||
|
@ -53,9 +54,10 @@ public:
|
|||
public:
|
||||
void processMessage (XEvent &event, CEventServer &server);
|
||||
|
||||
private:
|
||||
private:
|
||||
Display *_dpy;
|
||||
Window _win;
|
||||
TKey _PreviousKey;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue