Changed: Fixed X11 keyboard input. Events are now caught and acted upon.

~g2k
This commit is contained in:
2005-07-01 19:44:57 -04:00
parent b1c585a9b0
commit 4e14ef1072
2 changed files with 335 additions and 271 deletions

View File

@@ -164,7 +164,6 @@ int main(int argc, char** argv)
{
g_Screen.width = event.xconfigure.width;
g_Screen.height = event.xconfigure.height;
printf("Resize event\n");
ResizeGLScene(event.xconfigure.width, event.xconfigure.height);
}
break;
@@ -192,7 +191,8 @@ int main(int argc, char** argv)
default:
break;
}
//End Equivalent of WNDPROC
} //End Equivalent of WNDPROC
if(active)
{
if(keys[OpenArena::KEY_ESCAPE])
@@ -208,7 +208,6 @@ int main(int argc, char** argv)
else
{
level.defaultPlayer[0].camera.Update();
if(!level.showConsole)
{
if(level.mlook)
@@ -516,7 +515,7 @@ int main(int argc, char** argv)
return 1;
}
}
}
}
level.UnloadMap();
g_Screen.Close();
@@ -666,60 +665,125 @@ unsigned char TranslateKey(int keyCode)
return OpenArena::KEY_8;
case XK_9:
return OpenArena::KEY_9;
case XK_a:
case XK_A:
return OpenArena::KEY_A;
case XK_b:
case XK_B:
return OpenArena::KEY_B;
case XK_c:
case XK_C:
return OpenArena::KEY_C;
case XK_d:
case XK_D:
return OpenArena::KEY_D;
case XK_e:
case XK_E:
return OpenArena::KEY_E;
case XK_f:
case XK_F:
return OpenArena::KEY_F;
case XK_g:
case XK_G:
return OpenArena::KEY_G;
case XK_h:
case XK_H:
return OpenArena::KEY_H;
case XK_i:
case XK_I:
return OpenArena::KEY_I;
case XK_j:
case XK_J:
return OpenArena::KEY_J;
case XK_k:
case XK_K:
return OpenArena::KEY_K;
case XK_l:
case XK_L:
return OpenArena::KEY_L;
case XK_m:
case XK_M:
return OpenArena::KEY_M;
case XK_n:
case XK_N:
return OpenArena::KEY_N;
case XK_o:
case XK_O:
return OpenArena::KEY_O;
case XK_p:
case XK_P:
return OpenArena::KEY_P;
case XK_q:
case XK_Q:
return OpenArena::KEY_Q;
case XK_r:
case XK_R:
return OpenArena::KEY_R;
case XK_s:
case XK_S:
return OpenArena::KEY_S;
case XK_t:
case XK_T:
return OpenArena::KEY_T;
case XK_u:
case XK_U:
return OpenArena::KEY_U;
case XK_v:
case XK_V:
return OpenArena::KEY_V;
case XK_w:
case XK_W:
return OpenArena::KEY_W;
case XK_x:
case XK_X:
return OpenArena::KEY_X;
case XK_y:
case XK_Y:
return OpenArena::KEY_Y;
case XK_z:
case XK_Z:
return OpenArena::KEY_Z;
case XK_grave:
return OpenArena::KEY_OEM_3;
case XK_Super_L:
return OpenArena::KEY_LWIN;
case XK_Super_R:
return OpenArena::KEY_RWIN;
case XK_Menu:
return OpenArena::KEY_APPS;
case XK_bracketleft:
return OpenArena::KEY_OEM_4;
case XK_bracketright:
return OpenArena::KEY_OEM_6;
case XK_backslash:
return OpenArena::KEY_OEM_5;
case XK_semicolon:
return OpenArena::KEY_OEM_1;
case XK_apostrophe:
return OpenArena::KEY_OEM_7;
case XK_slash:
return OpenArena::KEY_OEM_2;
case XK_Alt_L:
return OpenArena::KEY_UNKNOWN;
case XK_Alt_R:
return OpenArena::KEY_UNKNOWN;
/*These keys definately still need to be accounted for
` 96
pause 65299
win 65515
apps 65383
- 45
= 61
[ 91
] 93
\ 92
; 59
' 39
' 47
left alt 65513
right alt 65514
#define KEY_LBUTTON 1
#define KEY_RBUTTON 2
#define KEY_MBUTTON 3

View File

@@ -268,7 +268,7 @@ bool OpenArena::Window::Open()
}
else
{
attributes.event_mask = ExposureMask | KeyPressMask | ButtonPressMask | StructureNotifyMask;
attributes.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | StructureNotifyMask;
window = XCreateWindow(display, RootWindow(display, vi->screen), 0, 0, width, height, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel | CWColormap | CWEventMask, &attributes);
wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", true);
XSetWMProtocols(display, window, &wmDelete, 1);