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.width = event.xconfigure.width;
g_Screen.height = event.xconfigure.height; g_Screen.height = event.xconfigure.height;
printf("Resize event\n");
ResizeGLScene(event.xconfigure.width, event.xconfigure.height); ResizeGLScene(event.xconfigure.width, event.xconfigure.height);
} }
break; break;
@@ -192,7 +191,8 @@ int main(int argc, char** argv)
default: default:
break; break;
} }
//End Equivalent of WNDPROC } //End Equivalent of WNDPROC
if(active) if(active)
{ {
if(keys[OpenArena::KEY_ESCAPE]) if(keys[OpenArena::KEY_ESCAPE])
@@ -208,7 +208,6 @@ int main(int argc, char** argv)
else else
{ {
level.defaultPlayer[0].camera.Update(); level.defaultPlayer[0].camera.Update();
if(!level.showConsole) if(!level.showConsole)
{ {
if(level.mlook) if(level.mlook)
@@ -516,7 +515,7 @@ int main(int argc, char** argv)
return 1; return 1;
} }
} }
}
} }
level.UnloadMap(); level.UnloadMap();
g_Screen.Close(); g_Screen.Close();
@@ -666,60 +665,125 @@ unsigned char TranslateKey(int keyCode)
return OpenArena::KEY_8; return OpenArena::KEY_8;
case XK_9: case XK_9:
return OpenArena::KEY_9; return OpenArena::KEY_9;
case XK_a:
case XK_A: case XK_A:
return OpenArena::KEY_A; return OpenArena::KEY_A;
case XK_b:
case XK_B: case XK_B:
return OpenArena::KEY_B; return OpenArena::KEY_B;
case XK_c:
case XK_C: case XK_C:
return OpenArena::KEY_C; return OpenArena::KEY_C;
case XK_d:
case XK_D: case XK_D:
return OpenArena::KEY_D; return OpenArena::KEY_D;
case XK_e:
case XK_E: case XK_E:
return OpenArena::KEY_E; return OpenArena::KEY_E;
case XK_f:
case XK_F: case XK_F:
return OpenArena::KEY_F; return OpenArena::KEY_F;
case XK_g:
case XK_G: case XK_G:
return OpenArena::KEY_G; return OpenArena::KEY_G;
case XK_h:
case XK_H: case XK_H:
return OpenArena::KEY_H; return OpenArena::KEY_H;
case XK_i:
case XK_I: case XK_I:
return OpenArena::KEY_I; return OpenArena::KEY_I;
case XK_j:
case XK_J: case XK_J:
return OpenArena::KEY_J; return OpenArena::KEY_J;
case XK_k:
case XK_K: case XK_K:
return OpenArena::KEY_K; return OpenArena::KEY_K;
case XK_l:
case XK_L: case XK_L:
return OpenArena::KEY_L; return OpenArena::KEY_L;
case XK_m:
case XK_M: case XK_M:
return OpenArena::KEY_M; return OpenArena::KEY_M;
case XK_n:
case XK_N: case XK_N:
return OpenArena::KEY_N; return OpenArena::KEY_N;
case XK_o:
case XK_O: case XK_O:
return OpenArena::KEY_O; return OpenArena::KEY_O;
case XK_p:
case XK_P: case XK_P:
return OpenArena::KEY_P; return OpenArena::KEY_P;
case XK_q:
case XK_Q: case XK_Q:
return OpenArena::KEY_Q; return OpenArena::KEY_Q;
case XK_r:
case XK_R: case XK_R:
return OpenArena::KEY_R; return OpenArena::KEY_R;
case XK_s:
case XK_S: case XK_S:
return OpenArena::KEY_S; return OpenArena::KEY_S;
case XK_t:
case XK_T: case XK_T:
return OpenArena::KEY_T; return OpenArena::KEY_T;
case XK_u:
case XK_U: case XK_U:
return OpenArena::KEY_U; return OpenArena::KEY_U;
case XK_v:
case XK_V: case XK_V:
return OpenArena::KEY_V; return OpenArena::KEY_V;
case XK_w:
case XK_W: case XK_W:
return OpenArena::KEY_W; return OpenArena::KEY_W;
case XK_x:
case XK_X: case XK_X:
return OpenArena::KEY_X; return OpenArena::KEY_X;
case XK_y:
case XK_Y: case XK_Y:
return OpenArena::KEY_Y; return OpenArena::KEY_Y;
case XK_z:
case XK_Z: case XK_Z:
return OpenArena::KEY_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 /*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_LBUTTON 1
#define KEY_RBUTTON 2 #define KEY_RBUTTON 2
#define KEY_MBUTTON 3 #define KEY_MBUTTON 3

View File

@@ -268,7 +268,7 @@ bool OpenArena::Window::Open()
} }
else 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); 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); wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", true);
XSetWMProtocols(display, window, &wmDelete, 1); XSetWMProtocols(display, window, &wmDelete, 1);