From 4055e36027ed8fc1c44241a7bc8e54904e10dec3 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Wed, 29 Jun 2005 12:05:21 -0400 Subject: [PATCH] More work on keyhandling ~g2k --- src/linux.cpp | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/linux.cpp b/src/linux.cpp index b6bc1df..fc54395 100644 --- a/src/linux.cpp +++ b/src/linux.cpp @@ -36,6 +36,7 @@ using namespace std; void InitControls(); unsigned char TranslateKey(int keyCode); +unsigned char TranslateButton(int keyCode); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Function Definitions @@ -168,21 +169,18 @@ int main(int argc, char** argv) } break; case ButtonPress: - done = true; + keys[TranslateButton(event.xbutton.button)] = true; + break; + case ButtonRelease: + keys[TranslateButton(event.xbutton.button)] = false; + keys2[TranslateButton(event.xbutton.button)] = false; break; case KeyPress: keys[TranslateKey(XLookupKeysym(&event.xkey, 0))] = true; - //Remove this later it shouldn't be needed - if(XLookupKeysym(&event.xkey, 0) == XK_Escape) - { - done = true; - } - if(XLookupKeysym(&event.xkey, 0) == XK_F1) - { - g_Screen.Close(); - g_Screen.fullscreen = !g_Screen.fullscreen; - g_Screen.Open("Blah Blah Blah", 640, 480, 24, g_Screen.fullscreen); - } + 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") @@ -201,6 +199,12 @@ int main(int argc, char** argv) { done = true; } + else if(keys[OpenArena::KEY_F1]) + { + g_Screen.Close(); + g_Screen.fullscreen = !g_Screen.fullscreen; + g_Screen.Open(); + } else { level.defaultPlayer[0].camera.Update(); @@ -735,4 +739,20 @@ unsigned char TranslateKey(int keyCode) } } +unsigned char TranslateButton(int keyCode) +{ + switch(keyCode) + { + case Button1: + return OpenArena::KEY_BUTTON0; + case Button2: + return OpenArena::KEY_BUTTON1; + case Button3: + return OpenArena::KEY_BUTTON2; + case Button4: + return OpenArena::KEY_BUTTON3; + case Button5: + return OpenArena::KEY_BUTTON4; + } +} #endif