That should fix bigfoot's shift.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3245 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
699104d667
commit
6147a2dcd3
2 changed files with 23 additions and 11 deletions
|
@ -191,16 +191,19 @@ void GLD_EndDirectRect (int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static int XLateKey(XKeyEvent *ev)
|
static int XLateKey(XKeyEvent *ev, unsigned int *unicode)
|
||||||
{
|
{
|
||||||
|
|
||||||
int key;
|
int key;
|
||||||
char buf[64];
|
char buf[64];
|
||||||
KeySym keysym;
|
KeySym keysym, shifted;
|
||||||
|
|
||||||
key = 0;
|
key = 0;
|
||||||
|
|
||||||
XLookupString(ev, buf, sizeof buf, &keysym, 0);
|
keysym = XLookupKeysym(ev, 0);
|
||||||
|
XLookupString(ev, buf, sizeof buf, &shifted, 0);
|
||||||
|
if (unicode)
|
||||||
|
*unicode = buf[0];
|
||||||
|
|
||||||
switch(keysym)
|
switch(keysym)
|
||||||
{
|
{
|
||||||
|
@ -380,6 +383,7 @@ static void GetEvent(void)
|
||||||
{
|
{
|
||||||
XEvent event;
|
XEvent event;
|
||||||
int b;
|
int b;
|
||||||
|
unsigned int uc;
|
||||||
qboolean wantwindowed;
|
qboolean wantwindowed;
|
||||||
qboolean x11violations = true;
|
qboolean x11violations = true;
|
||||||
|
|
||||||
|
@ -398,9 +402,12 @@ static void GetEvent(void)
|
||||||
glheight = event.xconfigurerequest.height;
|
glheight = event.xconfigurerequest.height;
|
||||||
break;
|
break;
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
|
b = XLateKey(&event.xkey, &uc);
|
||||||
|
Key_Event(b, uc, true);
|
||||||
|
break;
|
||||||
case KeyRelease:
|
case KeyRelease:
|
||||||
b = XLateKey(&event.xkey);
|
b = XLateKey(&event.xkey, NULL);
|
||||||
Key_Event(b, b, event.type == KeyPress);
|
Key_Event(b, 0, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MotionNotify:
|
case MotionNotify:
|
||||||
|
|
|
@ -891,16 +891,19 @@ void SWVID_Shutdown (void)
|
||||||
// vid_dpy = NULL;
|
// vid_dpy = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int XLateKey(XKeyEvent *ev)
|
int XLateKey(XKeyEvent *ev, unsigned int *unicode)
|
||||||
{
|
{
|
||||||
|
|
||||||
int key;
|
int key;
|
||||||
char buf[64];
|
char buf[64];
|
||||||
KeySym keysym;
|
KeySym keysym, shifted;
|
||||||
|
|
||||||
key = 0;
|
key = 0;
|
||||||
|
|
||||||
XLookupString(ev, buf, sizeof buf, &keysym, 0);
|
keysym = XLookupKeysym(ev, 0);
|
||||||
|
XLookupString(ev, buf, sizeof buf, &shifted, 0);
|
||||||
|
if (unicode)
|
||||||
|
*unicode = buf[0];
|
||||||
|
|
||||||
switch(keysym)
|
switch(keysym)
|
||||||
{
|
{
|
||||||
|
@ -1026,6 +1029,7 @@ struct
|
||||||
{
|
{
|
||||||
int key;
|
int key;
|
||||||
int down;
|
int down;
|
||||||
|
unsigned int unicode;
|
||||||
} keyq[64];
|
} keyq[64];
|
||||||
int keyq_head=0;
|
int keyq_head=0;
|
||||||
int keyq_tail=0;
|
int keyq_tail=0;
|
||||||
|
@ -1043,12 +1047,13 @@ void GetEvent(void)
|
||||||
XNextEvent(vid_dpy, &x_event);
|
XNextEvent(vid_dpy, &x_event);
|
||||||
switch(x_event.type) {
|
switch(x_event.type) {
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
keyq[keyq_head].key = XLateKey(&x_event.xkey);
|
keyq[keyq_head].key = XLateKey(&x_event.xkey, &keyq[keyq_head].unicode);
|
||||||
keyq[keyq_head].down = true;
|
keyq[keyq_head].down = true;
|
||||||
keyq_head = (keyq_head + 1) & 63;
|
keyq_head = (keyq_head + 1) & 63;
|
||||||
break;
|
break;
|
||||||
case KeyRelease:
|
case KeyRelease:
|
||||||
keyq[keyq_head].key = XLateKey(&x_event.xkey);
|
keyq[keyq_head].key = XLateKey(&x_event.xkey, NULL);
|
||||||
|
keyq[keyq_head].unicode = 0;
|
||||||
keyq[keyq_head].down = false;
|
keyq[keyq_head].down = false;
|
||||||
keyq_head = (keyq_head + 1) & 63;
|
keyq_head = (keyq_head + 1) & 63;
|
||||||
break;
|
break;
|
||||||
|
@ -1269,7 +1274,7 @@ void Sys_SendKeyEvents(void)
|
||||||
while (XPending(vid_dpy)) GetEvent();
|
while (XPending(vid_dpy)) GetEvent();
|
||||||
while (keyq_head != keyq_tail)
|
while (keyq_head != keyq_tail)
|
||||||
{
|
{
|
||||||
Key_Event(keyq[keyq_tail].key, keyq[keyq_tail].key, keyq[keyq_tail].down);
|
Key_Event(keyq[keyq_tail].key, keyq[keyq_tail].unicode, keyq[keyq_tail].down);
|
||||||
keyq_tail = (keyq_tail + 1) & 63;
|
keyq_tail = (keyq_tail + 1) & 63;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue