Support for x11 mwheel conventions instead of traditional support, and hopefully fixed gamma on task switches in the glx renderer.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2908 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
00cd20b9a6
commit
10f49b7705
1 changed files with 52 additions and 13 deletions
|
@ -374,6 +374,7 @@ static void GetEvent(void)
|
||||||
XEvent event;
|
XEvent event;
|
||||||
int b;
|
int b;
|
||||||
qboolean wantwindowed;
|
qboolean wantwindowed;
|
||||||
|
qboolean x11violations = true;
|
||||||
|
|
||||||
if (!vid_dpy)
|
if (!vid_dpy)
|
||||||
return;
|
return;
|
||||||
|
@ -421,17 +422,36 @@ static void GetEvent(void)
|
||||||
case ButtonPress:
|
case ButtonPress:
|
||||||
b=-1;
|
b=-1;
|
||||||
if (event.xbutton.button == 1)
|
if (event.xbutton.button == 1)
|
||||||
b = 0;
|
b = K_MOUSE1;
|
||||||
else if (event.xbutton.button == 2)
|
else if (event.xbutton.button == 2)
|
||||||
b = 2;
|
b = K_MOUSE3;
|
||||||
else if (event.xbutton.button == 3)
|
else if (event.xbutton.button == 3)
|
||||||
b = 1;
|
b = K_MOUSE2;
|
||||||
|
//note, the x11 protocol does not support a mousewheel
|
||||||
|
//we only support it because we follow convention. the actual protocol specifies 4+5 as regular buttons
|
||||||
else if (event.xbutton.button == 4)
|
else if (event.xbutton.button == 4)
|
||||||
b = 3;
|
b = x11violations?K_MWHEELUP:K_MOUSE4;
|
||||||
else if (event.xbutton.button == 5)
|
else if (event.xbutton.button == 5)
|
||||||
b = 4;
|
b = x11violations?K_MWHEELDOWN:K_MOUSE5;
|
||||||
|
//note, the x11 protocol does not support more than 5 mouse buttons
|
||||||
|
//which is a bit of a shame, but hey.
|
||||||
|
else if (event.xbutton.button == 6)
|
||||||
|
b = x11violations?K_MOUSE4:-1;
|
||||||
|
else if (event.xbutton.button == 7)
|
||||||
|
b = x11violations?K_MOUSE5:-1;
|
||||||
|
else if (event.xbutton.button == 8)
|
||||||
|
b = x11violations?K_MOUSE6:-1;
|
||||||
|
else if (event.xbutton.button == 9)
|
||||||
|
b = x11violations?K_MOUSE7:-1;
|
||||||
|
else if (event.xbutton.button == 10)
|
||||||
|
b = x11violations?K_MOUSE8:-1;
|
||||||
|
else if (event.xbutton.button == 11)
|
||||||
|
b = x11violations?K_MOUSE9:-1;
|
||||||
|
else if (event.xbutton.button == 12)
|
||||||
|
b = x11violations?K_MOUSE10:-1;
|
||||||
|
|
||||||
if (b>=0)
|
if (b>=0)
|
||||||
Key_Event(K_MOUSE1 + b, true);
|
Key_Event(b, true);
|
||||||
#ifdef WITH_VMODE
|
#ifdef WITH_VMODE
|
||||||
if (vidmode_ext && vidmode_usemode>=0)
|
if (vidmode_ext && vidmode_usemode>=0)
|
||||||
if (!ActiveApp)
|
if (!ActiveApp)
|
||||||
|
@ -445,21 +465,39 @@ static void GetEvent(void)
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
b=-1;
|
b=-1;
|
||||||
if (event.xbutton.button == 1)
|
if (event.xbutton.button == 1)
|
||||||
b = 0;
|
b = K_MOUSE1;
|
||||||
else if (event.xbutton.button == 2)
|
else if (event.xbutton.button == 2)
|
||||||
b = 2;
|
b = K_MOUSE3;
|
||||||
else if (event.xbutton.button == 3)
|
else if (event.xbutton.button == 3)
|
||||||
b = 1;
|
b = K_MOUSE2;
|
||||||
|
//note, the x11 protocol does not support a mousewheel
|
||||||
|
//we only support it because we follow convention. the actual protocol specifies 4+5 as regular buttons
|
||||||
else if (event.xbutton.button == 4)
|
else if (event.xbutton.button == 4)
|
||||||
b = 3;
|
b = x11violations?K_MWHEELUP:K_MOUSE4;
|
||||||
else if (event.xbutton.button == 5)
|
else if (event.xbutton.button == 5)
|
||||||
b = 4;
|
b = x11violations?K_MWHEELDOWN:K_MOUSE5;
|
||||||
|
//note, the x11 protocol does not support more than 5 mouse buttons
|
||||||
|
//which is a bit of a shame, but hey.
|
||||||
|
else if (event.xbutton.button == 6)
|
||||||
|
b = x11violations?K_MOUSE4:-1;
|
||||||
|
else if (event.xbutton.button == 7)
|
||||||
|
b = x11violations?K_MOUSE5:-1;
|
||||||
|
else if (event.xbutton.button == 8)
|
||||||
|
b = x11violations?K_MOUSE6:-1;
|
||||||
|
else if (event.xbutton.button == 9)
|
||||||
|
b = x11violations?K_MOUSE7:-1;
|
||||||
|
else if (event.xbutton.button == 10)
|
||||||
|
b = x11violations?K_MOUSE8:-1;
|
||||||
|
else if (event.xbutton.button == 11)
|
||||||
|
b = x11violations?K_MOUSE9:-1;
|
||||||
|
else if (event.xbutton.button == 12)
|
||||||
|
b = x11violations?K_MOUSE10:-1;
|
||||||
|
|
||||||
if (b>=0)
|
if (b>=0)
|
||||||
Key_Event(K_MOUSE1 + b, false);
|
Key_Event(b, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FocusIn:
|
case FocusIn:
|
||||||
Cvar_ForceCallback(&v_gamma);
|
|
||||||
ActiveApp = true;
|
ActiveApp = true;
|
||||||
#ifdef WITH_VMODE
|
#ifdef WITH_VMODE
|
||||||
if (vidmode_ext && vidmode_usemode>=0)
|
if (vidmode_ext && vidmode_usemode>=0)
|
||||||
|
@ -474,6 +512,7 @@ static void GetEvent(void)
|
||||||
XF86VidModeSetViewPort(vid_dpy, scrnum, 0, 0);
|
XF86VidModeSetViewPort(vid_dpy, scrnum, 0, 0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Cvar_ForceCallback(&v_gamma);
|
||||||
break;
|
break;
|
||||||
case FocusOut:
|
case FocusOut:
|
||||||
#ifdef WITH_VMODE
|
#ifdef WITH_VMODE
|
||||||
|
|
Loading…
Reference in a new issue