dmx: fix up dmxKeyCodeToKeySym for XKB-only.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-09-08 17:05:12 +10:00
parent 9caba3e2ab
commit 61ae0a5ca5

View File

@ -58,6 +58,7 @@
#include "mi.h" #include "mi.h"
#include "exglobals.h" #include "exglobals.h"
#include "xkbsrv.h"
#include "XIstubs.h" #include "XIstubs.h"
static int dmxGlobalX, dmxGlobalY; /* Global cursor position */ static int dmxGlobalX, dmxGlobalY; /* Global cursor position */
@ -600,24 +601,25 @@ void dmxMotion(DevicePtr pDev, int *v, int firstAxes, int axesCount,
static KeySym dmxKeyCodeToKeySym(DMXLocalInputInfoPtr dmxLocal, static KeySym dmxKeyCodeToKeySym(DMXLocalInputInfoPtr dmxLocal,
KeyCode keyCode) KeyCode keyCode)
{ {
KeySymsPtr pKeySyms = NULL; KeySym keysym = NoSymbol;
int effectiveGroup;
XkbSrvInfoPtr xkbi;
if (!dmxLocal || !dmxLocal->pDevice || !dmxLocal->pDevice->key) if (!dmxLocal || !dmxLocal->pDevice || !dmxLocal->pDevice->key)
return NoSymbol; goto out;
pKeySyms = &dmxLocal->pDevice->key->curKeySyms;
if (!pKeySyms) xkbi = dmxLocal->pDevice->key->xkbInfo;
return NoSymbol; effectiveGroup = XkbGetEffectiveGroup(xkbi, &xkbi->state, keyCode);
if (keyCode > pKeySyms->minKeyCode && keyCode <= pKeySyms->maxKeyCode) { if (effectiveGroup == -1)
DMXDBG2("dmxKeyCodeToKeySym: Translated keyCode=%d to keySym=0x%04x\n", goto out;
keyCode,
pKeySyms->map[(keyCode - pKeySyms->minKeyCode) keysym = XkbKeySym(xkbi->desc, keyCode, effectiveGroup);
* pKeySyms->mapWidth]); DMXDBG2("dmxKeyCodeToKeySym: Translated keyCode=%d to keySym=0x%04x\n",
keyCode, keysym);
return pKeySyms->map[(keyCode - pKeySyms->minKeyCode)
* pKeySyms->mapWidth]; out:
} return keysym;
return NoSymbol;
} }
static KeyCode dmxKeySymToKeyCode(DMXLocalInputInfoPtr dmxLocal, KeySym keySym, static KeyCode dmxKeySymToKeyCode(DMXLocalInputInfoPtr dmxLocal, KeySym keySym,