Moved HandleConsoleKeyPress, TranslateButton, and TranslateKey from macosx.cpp to x11.cpp

This commit is contained in:
2006-10-10 01:27:00 -04:00
parent 2d2b61d32c
commit ad2e92d1c6
2 changed files with 342 additions and 397 deletions

View File

@@ -545,346 +545,6 @@ int main(int argc, char** argv)
exit(0); exit(0);
} }
//This should probably be moved into oa_input
unsigned char TranslateKey(int keyCode)
{
switch (keyCode)
{
case XK_BackSpace:
return OpenArena::KEY_BACK;
case XK_Tab:
return OpenArena::KEY_TAB;
case XK_Return:
return OpenArena::KEY_RETURN;
case XK_Escape:
return OpenArena::KEY_ESCAPE;
case XK_Left:
return OpenArena::KEY_LEFT;
case XK_Right:
return OpenArena::KEY_RIGHT;
case XK_Up:
return OpenArena::KEY_UP;
case XK_Down:
return OpenArena::KEY_DOWN;
case XK_Home:
return OpenArena::KEY_HOME;
case XK_End:
return OpenArena::KEY_END;
case XK_Prior:
return OpenArena::KEY_PRIOR;
case XK_Next:
return OpenArena::KEY_NEXT;
case XK_Num_Lock:
return OpenArena::KEY_NUMLOCK;
case XK_KP_Enter:
return OpenArena::KEY_RETURN;
case XK_KP_Home:
return OpenArena::KEY_HOME;
case XK_KP_End:
return OpenArena::KEY_END;
case XK_KP_Prior:
return OpenArena::KEY_PRIOR;
case XK_KP_Next:
return OpenArena::KEY_NEXT;
case XK_KP_0:
return OpenArena::KEY_NUMPAD0;
case XK_KP_1:
return OpenArena::KEY_NUMPAD1;
case XK_KP_2:
return OpenArena::KEY_NUMPAD2;
case XK_KP_3:
return OpenArena::KEY_NUMPAD3;
case XK_KP_4:
return OpenArena::KEY_NUMPAD4;
case XK_KP_5:
return OpenArena::KEY_NUMPAD5;
case XK_KP_6:
return OpenArena::KEY_NUMPAD6;
case XK_KP_7:
return OpenArena::KEY_NUMPAD7;
case XK_KP_8:
return OpenArena::KEY_NUMPAD8;
case XK_KP_9:
return OpenArena::KEY_NUMPAD9;
case XK_KP_Multiply:
return OpenArena::KEY_MULTIPLY;
case XK_KP_Add:
return OpenArena::KEY_ADD;
case XK_KP_Subtract:
return OpenArena::KEY_SUBTRACT;
case XK_KP_Divide:
return OpenArena::KEY_DIVIDE;
case XK_F1:
return OpenArena::KEY_F1;
case XK_F2:
return OpenArena::KEY_F2;
case XK_F3:
return OpenArena::KEY_F3;
case XK_F4:
return OpenArena::KEY_F4;
case XK_F5:
return OpenArena::KEY_F5;
case XK_F6:
return OpenArena::KEY_F6;
case XK_F7:
return OpenArena::KEY_F7;
case XK_F8:
return OpenArena::KEY_F8;
case XK_F9:
return OpenArena::KEY_F9;
case XK_F10:
return OpenArena::KEY_F10;
case XK_F11:
return OpenArena::KEY_F11;
case XK_F12:
return OpenArena::KEY_F12;
case XK_Shift_L:
return OpenArena::KEY_SHIFT;
case XK_Shift_R:
return OpenArena::KEY_SHIFT;
case XK_Control_L:
return OpenArena::KEY_CONTROL;
case XK_Control_R:
return OpenArena::KEY_CONTROL;
case XK_Caps_Lock:
return OpenArena::KEY_CAPITAL;
case XK_Pause:
return OpenArena::KEY_PAUSE;
case XK_KP_Space:
case XK_space:
return OpenArena::KEY_SPACE;
case XK_Insert:
return OpenArena::KEY_INSERT;
case XK_Delete:
return OpenArena::KEY_DELETE;
case XK_KP_Separator:
return OpenArena::KEY_SEPARATOR;
case XK_Scroll_Lock:
return OpenArena::KEY_SCROLL;
case XK_period:
return OpenArena::KEY_OEM_PERIOD;
case XK_plus:
return OpenArena::KEY_OEM_PLUS;
case XK_minus:
return OpenArena::KEY_OEM_MINUS;
case XK_comma:
return OpenArena::KEY_OEM_COMMA;
case XK_0:
return OpenArena::KEY_0;
case XK_1:
return OpenArena::KEY_1;
case XK_2:
return OpenArena::KEY_2;
case XK_3:
return OpenArena::KEY_3;
case XK_4:
return OpenArena::KEY_4;
case XK_5:
return OpenArena::KEY_5;
case XK_6:
return OpenArena::KEY_6;
case XK_7:
return OpenArena::KEY_7;
case XK_8:
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
#define KEY_LWIN 21
#define KEY_RWIN 22
#define KEY_APPS 23
#define KEY_OEM_1 53
#define KEY_OEM_2 54
#define KEY_OEM_3 55
#define KEY_OEM_4 56
#define KEY_OEM_5 57
#define KEY_OEM_6 58
#define KEY_OEM_7 59
*/
default:
return OpenArena::KEY_UNKNOWN;
}
}
unsigned char TranslateButton(int keyCode)
{
switch(keyCode)
{
case Button1:
return OpenArena::KEY_BUTTON0;
case Button2:
return OpenArena::KEY_BUTTON2;
case Button3:
return OpenArena::KEY_BUTTON1;
case Button4:
return OpenArena::KEY_BUTTON3;
case Button5:
return OpenArena::KEY_BUTTON4;
}
}
void HandleConsoleKeyPress(OpenArena::Keys key)
{
//See if we need to hide the console
level.defaultPlayer[0].controls.toggleConsole.FirstPosition();
if(key == level.defaultPlayer[0].controls.toggleConsole.Retrieve())
{
level.showConsole = false;
}
else
{
while(level.defaultPlayer[0].controls.toggleConsole.NextPosition() && level.showConsole)
{
if(level.defaultPlayer[0].controls.toggleConsole.Retrieve() == key)
{
level.showConsole = false;
}
}
}
switch (key)
{
case OpenArena::KEY_SHIFT:
keys[OpenArena::KEY_SHIFT] = true;
break;
case OpenArena::KEY_RETURN:
level.UpdateConsole('\n');
break;
case OpenArena::KEY_SPACE:
printf("hello");
level.UpdateConsole(' ');
break;
case OpenArena::KEY_BACK:
level.UpdateConsole(OpenArena::KEY_BACK);
break;
default:
char ascii = OpenArena::KeyToASCII(key, keys[OpenArena::KEY_SHIFT]);
if(ascii != '\0')
{
level.UpdateConsole(ascii);
}
}
}
#elif defined USE_AGL #elif defined USE_AGL
#error #error
#elif defined USE_CGL #elif defined USE_CGL

View File

@@ -56,63 +56,348 @@ unsigned char TranslateKey(int keyCode);
void ResizeGLScene(GLsizei width, GLsizei height); void ResizeGLScene(GLsizei width, GLsizei height);
void HandleConsoleKeyPress(OpenArena::Keys key); void HandleConsoleKeyPress(OpenArena::Keys key);
bool RT() //This should probably be moved into oa_input
unsigned char TranslateKey(int keyCode)
{ {
XEvent event; switch (keyCode)
bool done = false; {
case XK_BackSpace:
return OpenArena::KEY_BACK;
case XK_Tab:
return OpenArena::KEY_TAB;
case XK_Return:
return OpenArena::KEY_RETURN;
case XK_Escape:
return OpenArena::KEY_ESCAPE;
case XK_Left:
return OpenArena::KEY_LEFT;
case XK_Right:
return OpenArena::KEY_RIGHT;
case XK_Up:
return OpenArena::KEY_UP;
case XK_Down:
return OpenArena::KEY_DOWN;
case XK_Home:
return OpenArena::KEY_HOME;
case XK_End:
return OpenArena::KEY_END;
case XK_Prior:
return OpenArena::KEY_PRIOR;
case XK_Next:
return OpenArena::KEY_NEXT;
case XK_Num_Lock:
return OpenArena::KEY_NUMLOCK;
case XK_KP_Enter:
return OpenArena::KEY_RETURN;
case XK_KP_Home:
return OpenArena::KEY_HOME;
case XK_KP_End:
return OpenArena::KEY_END;
case XK_KP_Prior:
return OpenArena::KEY_PRIOR;
case XK_KP_Next:
return OpenArena::KEY_NEXT;
case XK_KP_0:
return OpenArena::KEY_NUMPAD0;
case XK_KP_1:
return OpenArena::KEY_NUMPAD1;
case XK_KP_2:
return OpenArena::KEY_NUMPAD2;
case XK_KP_3:
return OpenArena::KEY_NUMPAD3;
case XK_KP_4:
return OpenArena::KEY_NUMPAD4;
case XK_KP_5:
return OpenArena::KEY_NUMPAD5;
case XK_KP_6:
return OpenArena::KEY_NUMPAD6;
case XK_KP_7:
return OpenArena::KEY_NUMPAD7;
case XK_KP_8:
return OpenArena::KEY_NUMPAD8;
case XK_KP_9:
return OpenArena::KEY_NUMPAD9;
case XK_KP_Multiply:
return OpenArena::KEY_MULTIPLY;
case XK_KP_Add:
return OpenArena::KEY_ADD;
case XK_KP_Subtract:
return OpenArena::KEY_SUBTRACT;
case XK_KP_Divide:
return OpenArena::KEY_DIVIDE;
case XK_F1:
return OpenArena::KEY_F1;
case XK_F2:
return OpenArena::KEY_F2;
case XK_F3:
return OpenArena::KEY_F3;
case XK_F4:
return OpenArena::KEY_F4;
case XK_F5:
return OpenArena::KEY_F5;
case XK_F6:
return OpenArena::KEY_F6;
case XK_F7:
return OpenArena::KEY_F7;
case XK_F8:
return OpenArena::KEY_F8;
case XK_F9:
return OpenArena::KEY_F9;
case XK_F10:
return OpenArena::KEY_F10;
case XK_F11:
return OpenArena::KEY_F11;
case XK_F12:
return OpenArena::KEY_F12;
case XK_Shift_L:
return OpenArena::KEY_SHIFT;
case XK_Shift_R:
return OpenArena::KEY_SHIFT;
case XK_Control_L:
return OpenArena::KEY_CONTROL;
case XK_Control_R:
return OpenArena::KEY_CONTROL;
case XK_Caps_Lock:
return OpenArena::KEY_CAPITAL;
case XK_Pause:
return OpenArena::KEY_PAUSE;
case XK_KP_Space:
case XK_space:
return OpenArena::KEY_SPACE;
case XK_Insert:
return OpenArena::KEY_INSERT;
case XK_Delete:
return OpenArena::KEY_DELETE;
case XK_KP_Separator:
return OpenArena::KEY_SEPARATOR;
case XK_Scroll_Lock:
return OpenArena::KEY_SCROLL;
case XK_period:
return OpenArena::KEY_OEM_PERIOD;
case XK_plus:
return OpenArena::KEY_OEM_PLUS;
case XK_minus:
return OpenArena::KEY_OEM_MINUS;
case XK_comma:
return OpenArena::KEY_OEM_COMMA;
case XK_0:
return OpenArena::KEY_0;
case XK_1:
return OpenArena::KEY_1;
case XK_2:
return OpenArena::KEY_2;
case XK_3:
return OpenArena::KEY_3;
case XK_4:
return OpenArena::KEY_4;
case XK_5:
return OpenArena::KEY_5;
case XK_6:
return OpenArena::KEY_6;
case XK_7:
return OpenArena::KEY_7;
case XK_8:
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;
while(XPending(g_Screen.GetDisplay()) > 0) /*These keys definately still need to be accounted for
{ ` 96
//Equivalent of WNDPROC pause 65299
XNextEvent(g_Screen.GetDisplay(), &event); win 65515
switch(event.type) apps 65383
{ - 45
case Expose: = 61
if(event.xexpose.count != 0) [ 91
{ ] 93
break; \ 92
; 59
' 39
' 47
left alt 65513
right alt 65514
#define KEY_LBUTTON 1
#define KEY_RBUTTON 2
#define KEY_MBUTTON 3
#define KEY_LWIN 21
#define KEY_RWIN 22
#define KEY_APPS 23
#define KEY_OEM_1 53
#define KEY_OEM_2 54
#define KEY_OEM_3 55
#define KEY_OEM_4 56
#define KEY_OEM_5 57
#define KEY_OEM_6 58
#define KEY_OEM_7 59
*/
default:
return OpenArena::KEY_UNKNOWN;
} }
DrawGLScene(); }
break;
case ConfigureNotify: unsigned char TranslateButton(int keyCode)
if((event.xconfigure.width != g_Screen.GetWidth()) || (event.xconfigure.height != g_Screen.GetHeight())) {
switch(keyCode)
{ {
g_Screen.SetWidth(event.xconfigure.width); case Button1:
g_Screen.SetHeight(event.xconfigure.height); return OpenArena::KEY_BUTTON0;
ResizeGLScene(event.xconfigure.width, event.xconfigure.height); case Button2:
return OpenArena::KEY_BUTTON2;
case Button3:
return OpenArena::KEY_BUTTON1;
case Button4:
return OpenArena::KEY_BUTTON3;
case Button5:
return OpenArena::KEY_BUTTON4;
} }
break; }
case ButtonPress:
keys[TranslateButton(event.xbutton.button)] = true; void HandleConsoleKeyPress(OpenArena::Keys key)
break; {
case ButtonRelease: //See if we need to hide the console
keys[TranslateButton(event.xbutton.button)] = false; level.defaultPlayer[0].controls.toggleConsole.FirstPosition();
keys2[TranslateButton(event.xbutton.button)] = false; if(key == level.defaultPlayer[0].controls.toggleConsole.Retrieve())
break;
case KeyPress:
if(level.showConsole)
{ {
HandleConsoleKeyPress((OpenArena::Keys)TranslateKey(XLookupKeysym(&event.xkey, 0))); level.showConsole = false;
} }
else else
{ {
keys[TranslateKey(XLookupKeysym(&event.xkey, 0))] = true; while(level.defaultPlayer[0].controls.toggleConsole.NextPosition() && level.showConsole)
}
break;
case KeyRelease:
keys[TranslateKey(XLookupKeysym(&event.xkey, 0))] = false;
keys2[TranslateKey(XLookupKeysym(&event.xkey, 0))] = false;
break;
case ClientMessage:
if(*XGetAtomName(g_Screen.GetDisplay(), event.xclient.message_type) == *"WM_PROTOCOLS")
{ {
printf("Exiting sanely...\n"); if(level.defaultPlayer[0].controls.toggleConsole.Retrieve() == key)
done = true; {
level.showConsole = false;
} }
}
}
switch (key)
{
case OpenArena::KEY_SHIFT:
keys[OpenArena::KEY_SHIFT] = true;
break;
case OpenArena::KEY_RETURN:
level.UpdateConsole('\n');
break;
case OpenArena::KEY_SPACE:
printf("hello");
level.UpdateConsole(' ');
break;
case OpenArena::KEY_BACK:
level.UpdateConsole(OpenArena::KEY_BACK);
break; break;
default: default:
break; char ascii = OpenArena::KeyToASCII(key, keys[OpenArena::KEY_SHIFT]);
if(ascii != '\0')
{
level.UpdateConsole(ascii);
}
} }
} //End Equivalent of WNDPROC }
return done;
bool RT()
{
} }