From 7de32cecfaa0a99a50cf37aa03b6184f67121daf Mon Sep 17 00:00:00 2001 From: theoddone33 Date: Fri, 31 May 2002 03:34:02 +0000 Subject: [PATCH] Fix Keyboard Add titlebar --- include/key.h | 136 +-------------------------------- src/graphics/gropengl.cpp | 9 ++- src/io/key.cpp | 155 ++++++++++++++++++++++++++++++++------ src/osapi/os_unix.cpp | 11 ++- 4 files changed, 152 insertions(+), 159 deletions(-) diff --git a/include/key.h b/include/key.h index 5f262d3..63f8f79 100644 --- a/include/key.h +++ b/include/key.h @@ -7,6 +7,10 @@ * Include file for keyboard reading routines * * $Log$ + * Revision 1.7 2002/05/31 03:34:02 theoddone33 + * Fix Keyboard + * Add titlebar + * * Revision 1.6 2002/05/30 23:46:29 theoddone33 * some minor key changes (not necessarily fixes) * @@ -81,11 +85,7 @@ extern "C" { #include "pstypes.h" -#ifndef PLAT_UNIX #define NUM_KEYS 256 -#else -#define NUM_KEYS SDLK_LAST -#endif extern int shifted_ascii_table[]; extern int ascii_table[]; @@ -127,133 +127,6 @@ void key_clear_filter(); extern int Cheats_enabled; extern int Key_normal_game; -#ifdef PLAT_UNIX -#define KEY_SHIFTED 0x30000 //(KMOD_SHIFT)<<16; -#define KEY_ALTED 0x3000000 //(KMOD_ALT)<<16; -#define KEY_CTRLED 0xc00000 //(KMOD_CTRL)<<16; -#define KEY_DEBUGGED 0x010000 // Dummy -#define KEY_DEBUGGED1 0x2000000 // Dummy -#define KEY_MASK 0xffff - -#define KEY_DEBUG_KEY 0x29 // KEY_LAPOSTRO (shifted = tilde, near upper-left of keyboard) - -#define KEY_0 SDLK_0 -#define KEY_1 SDLK_1 -#define KEY_2 SDLK_2 -#define KEY_3 SDLK_3 -#define KEY_4 SDLK_4 -#define KEY_5 SDLK_5 -#define KEY_6 SDLK_6 -#define KEY_7 SDLK_7 -#define KEY_8 SDLK_8 -#define KEY_9 SDLK_9 - -#define KEY_A SDLK_a -#define KEY_B SDLK_b -#define KEY_C SDLK_c -#define KEY_D SDLK_d -#define KEY_E SDLK_e -#define KEY_F SDLK_f -#define KEY_G SDLK_g -#define KEY_H SDLK_h -#define KEY_I SDLK_i -#define KEY_J SDLK_j -#define KEY_K SDLK_k -#define KEY_L SDLK_l -#define KEY_M SDLK_m -#define KEY_N SDLK_n -#define KEY_O SDLK_o -#define KEY_P SDLK_p -#define KEY_Q SDLK_q -#define KEY_R SDLK_r -#define KEY_S SDLK_s -#define KEY_T SDLK_t -#define KEY_U SDLK_u -#define KEY_V SDLK_v -#define KEY_W SDLK_w -#define KEY_X SDLK_x -#define KEY_Y SDLK_y -#define KEY_Z SDLK_z - -#define KEY_MINUS SDLK_MINUS -#define KEY_EQUAL SDLK_EQUALS -#define KEY_DIVIDE SDLK_SLASH -#define KEY_SLASH SDLK_SLASH -#define KEY_SLASH_UK SDLK_SLASH -#define KEY_COMMA SDLK_COMMA -#define KEY_PERIOD SDLK_PERIOD -#define KEY_SEMICOL SDLK_SEMICOLON - -#define KEY_LBRACKET SDLK_LEFTBRACKET -#define KEY_RBRACKET SDLK_RIGHTBRACKET - -#define KEY_RAPOSTRO SDLK_BACKQUOTE -#define KEY_LAPOSTRO SDLK_QUOTE - -#define KEY_ESC SDLK_ESCAPE -#define KEY_ENTER SDLK_RETURN -#define KEY_BACKSP SDLK_BACKSPACE -#define KEY_TAB SDLK_TAB -#define KEY_SPACEBAR SDLK_SPACE - -#define KEY_NUMLOCK SDLK_NUMLOCK -#define KEY_SCROLLOCK SDLK_SCROLLOCK -#define KEY_CAPSLOCK SDLK_CAPSLOCK - -#define KEY_LSHIFT SDLK_LSHIFT -#define KEY_RSHIFT SDLK_RSHIFT - -#define KEY_LALT SDLK_LALT -#define KEY_RALT SDLK_RALT - -#define KEY_LCTRL SDLK_LCTRL -#define KEY_RCTRL SDLK_RCTRL - -#define KEY_F1 SDLK_F1 -#define KEY_F2 SDLK_F2 -#define KEY_F3 SDLK_F3 -#define KEY_F4 SDLK_F4 -#define KEY_F5 SDLK_F5 -#define KEY_F6 SDLK_F6 -#define KEY_F7 SDLK_F7 -#define KEY_F8 SDLK_F8 -#define KEY_F9 SDLK_F9 -#define KEY_F10 SDLK_F10 -#define KEY_F11 SDLK_F11 -#define KEY_F12 SDLK_F12 - -#define KEY_PAD0 SDLK_KP0 -#define KEY_PAD1 SDLK_KP1 -#define KEY_PAD2 SDLK_KP2 -#define KEY_PAD3 SDLK_KP3 -#define KEY_PAD4 SDLK_KP4 -#define KEY_PAD5 SDLK_KP5 -#define KEY_PAD6 SDLK_KP6 -#define KEY_PAD7 SDLK_KP7 -#define KEY_PAD8 SDLK_KP8 -#define KEY_PAD9 SDLK_KP9 -#define KEY_PADMINUS SDLK_KP_MINUS -#define KEY_PADPLUS SDLK_KP_PLUS -#define KEY_PADPERIOD SDLK_KP_PERIOD -#define KEY_PADDIVIDE SDLK_KP_DIVIDE -#define KEY_PADMULTIPLY SDLK_KP_MULTIPLY -#define KEY_PADENTER SDLK_KP_ENTER - -#define KEY_INSERT SDLK_INSERT -#define KEY_HOME SDLK_HOME -#define KEY_PAGEUP SDLK_PAGEUP -#define KEY_DELETE SDLK_DELETE -#define KEY_END SDLK_END -#define KEY_PAGEDOWN SDLK_PAGEDOWN -#define KEY_UP SDLK_UP -#define KEY_DOWN SDLK_DOWN -#define KEY_LEFT SDLK_LEFT -#define KEY_RIGHT SDLK_RIGHT - -#define KEY_PRINT_SCRN SDLK_PRINT -#define KEY_PAUSE SDLK_PAUSE -#define KEY_BREAK SDLK_BREAK -#else #define KEY_SHIFTED 0x1000 #define KEY_ALTED 0x2000 #define KEY_CTRLED 0x4000 @@ -380,7 +253,6 @@ extern int Key_normal_game; #define KEY_PAUSE 0x45 //DOS: 0x61 #define KEY_BREAK 0xc6 -#endif /* #ifdef __cplusplus } diff --git a/src/graphics/gropengl.cpp b/src/graphics/gropengl.cpp index 87ec1ca..ba06857 100644 --- a/src/graphics/gropengl.cpp +++ b/src/graphics/gropengl.cpp @@ -7,6 +7,10 @@ * Code that uses the OpenGL graphics library * * $Log$ + * Revision 1.29 2002/05/31 03:34:02 theoddone33 + * Fix Keyboard + * Add titlebar + * * Revision 1.28 2002/05/31 00:06:59 relnev * minor change * @@ -2345,6 +2349,7 @@ void gr_opengl_unlock() { } +extern char *Osreg_title; void gr_opengl_init() { if ( Inited ) { @@ -2370,11 +2375,13 @@ void gr_opengl_init() SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - if (SDL_SetVideoMode (640, 480, 0, SDL_OPENGL) == NULL) + if (SDL_SetVideoMode (gr_screen.max_w, gr_screen.max_h,0,SDL_OPENGL) == NULL) { fprintf (stderr, "Couldn't set video mode: %s", SDL_GetError ()); exit (1); } + + SDL_WM_SetCaption (Osreg_title, "FS2"); #endif glViewport(0, 0, gr_screen.max_w, gr_screen.max_h); diff --git a/src/io/key.cpp b/src/io/key.cpp index 162c7b7..584b0bc 100644 --- a/src/io/key.cpp +++ b/src/io/key.cpp @@ -7,6 +7,10 @@ * * * $Log$ + * Revision 1.5 2002/05/31 03:34:02 theoddone33 + * Fix Keyboard + * Add titlebar + * * Revision 1.4 2002/05/30 23:46:29 theoddone33 * some minor key changes (not necessarily fixes) * @@ -174,6 +178,10 @@ CRITICAL_SECTION key_lock; // when typing in your pilots callsign. This global flag is checked before execution // is stopped. +#ifdef PLAT_UNIX +int SDLtoFS2[SDLK_LAST]; +#endif + int ascii_table[128] = { 255, 255, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=',255,255, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 255, 255, @@ -207,6 +215,128 @@ static int Key_running_NT = 0; // NT is the OS int Cheats_enabled = 0; int Key_normal_game = 0; +#ifdef PLAT_UNIX +void FillSDLArray () +{ + SDLtoFS2[SDLK_0] = KEY_0; + SDLtoFS2[SDLK_1] = KEY_1; + SDLtoFS2[SDLK_2] = KEY_2; + SDLtoFS2[SDLK_3] = KEY_3; + SDLtoFS2[SDLK_4] = KEY_4; + SDLtoFS2[SDLK_5] = KEY_5; + SDLtoFS2[SDLK_6] = KEY_6; + SDLtoFS2[SDLK_7] = KEY_7; + SDLtoFS2[SDLK_8] = KEY_8; + SDLtoFS2[SDLK_9] = KEY_9; + + SDLtoFS2[SDLK_a] = KEY_A; + SDLtoFS2[SDLK_b] = KEY_B; + SDLtoFS2[SDLK_c] = KEY_C; + SDLtoFS2[SDLK_d] = KEY_D; + SDLtoFS2[SDLK_e] = KEY_E; + SDLtoFS2[SDLK_f] = KEY_F; + SDLtoFS2[SDLK_g] = KEY_G; + SDLtoFS2[SDLK_h] = KEY_H; + SDLtoFS2[SDLK_i] = KEY_I; + SDLtoFS2[SDLK_j] = KEY_J; + SDLtoFS2[SDLK_k] = KEY_K; + SDLtoFS2[SDLK_l] = KEY_L; + SDLtoFS2[SDLK_m] = KEY_M; + SDLtoFS2[SDLK_n] = KEY_N; + SDLtoFS2[SDLK_o] = KEY_O; + SDLtoFS2[SDLK_p] = KEY_P; + SDLtoFS2[SDLK_q] = KEY_Q; + SDLtoFS2[SDLK_r] = KEY_R; + SDLtoFS2[SDLK_s] = KEY_S; + SDLtoFS2[SDLK_t] = KEY_T; + SDLtoFS2[SDLK_u] = KEY_U; + SDLtoFS2[SDLK_v] = KEY_V; + SDLtoFS2[SDLK_w] = KEY_W; + SDLtoFS2[SDLK_x] = KEY_X; + SDLtoFS2[SDLK_y] = KEY_Y; + SDLtoFS2[SDLK_z] = KEY_Z; + + SDLtoFS2[SDLK_MINUS] = KEY_MINUS; + SDLtoFS2[SDLK_EQUALS] = KEY_EQUAL; + SDLtoFS2[SDLK_SLASH] = KEY_DIVIDE; // No idea - DDOI + SDLtoFS2[SDLK_BACKSLASH] = KEY_SLASH; + //SDLtoFS2[SDLK_BACKSLASH] = KEY_SLASH_UK; // ? + SDLtoFS2[SDLK_COMMA] = KEY_COMMA; + SDLtoFS2[SDLK_PERIOD] = KEY_PERIOD; + SDLtoFS2[SDLK_SEMICOLON] = KEY_SEMICOL; + + SDLtoFS2[SDLK_LEFTBRACKET] = KEY_LBRACKET; + SDLtoFS2[SDLK_RIGHTBRACKET] = KEY_RBRACKET; + + SDLtoFS2[SDLK_BACKQUOTE] = KEY_RAPOSTRO; + SDLtoFS2[SDLK_QUOTE] = KEY_LAPOSTRO; + + SDLtoFS2[SDLK_ESCAPE] = KEY_ESC; + SDLtoFS2[SDLK_RETURN] = KEY_ENTER; + SDLtoFS2[SDLK_BACKSPACE] = KEY_BACKSP; + SDLtoFS2[SDLK_TAB] = KEY_TAB; + SDLtoFS2[SDLK_SPACE] = KEY_SPACEBAR; + + SDLtoFS2[SDLK_NUMLOCK] = KEY_NUMLOCK; + SDLtoFS2[SDLK_SCROLLOCK] = KEY_SCROLLOCK; + SDLtoFS2[SDLK_CAPSLOCK] = KEY_CAPSLOCK; + + SDLtoFS2[SDLK_LSHIFT] = KEY_LSHIFT; + SDLtoFS2[SDLK_RSHIFT] = KEY_RSHIFT; + + SDLtoFS2[SDLK_LALT] = KEY_LALT; + SDLtoFS2[SDLK_RALT] = KEY_RALT; + + SDLtoFS2[SDLK_LCTRL] = KEY_LCTRL; + SDLtoFS2[SDLK_RCTRL] = KEY_RCTRL; + + SDLtoFS2[SDLK_F1] = KEY_F1; + SDLtoFS2[SDLK_F2] = KEY_F2; + SDLtoFS2[SDLK_F3] = KEY_F3; + SDLtoFS2[SDLK_F4] = KEY_F4; + SDLtoFS2[SDLK_F5] = KEY_F5; + SDLtoFS2[SDLK_F6] = KEY_F6; + SDLtoFS2[SDLK_F7] = KEY_F7; + SDLtoFS2[SDLK_F8] = KEY_F8; + SDLtoFS2[SDLK_F9] = KEY_F9; + SDLtoFS2[SDLK_F10] = KEY_F10; + SDLtoFS2[SDLK_F11] = KEY_F11; + SDLtoFS2[SDLK_F12] = KEY_F12; + + SDLtoFS2[SDLK_KP0] = KEY_PAD0; + SDLtoFS2[SDLK_KP1] = KEY_PAD1; + SDLtoFS2[SDLK_KP2] = KEY_PAD2; + SDLtoFS2[SDLK_KP3] = KEY_PAD3; + SDLtoFS2[SDLK_KP4] = KEY_PAD4; + SDLtoFS2[SDLK_KP5] = KEY_PAD5; + SDLtoFS2[SDLK_KP6] = KEY_PAD6; + SDLtoFS2[SDLK_KP7] = KEY_PAD7; + SDLtoFS2[SDLK_KP8] = KEY_PAD8; + SDLtoFS2[SDLK_KP9] = KEY_PAD9; + SDLtoFS2[SDLK_KP_MINUS] = KEY_PADMINUS; + SDLtoFS2[SDLK_KP_PLUS] = KEY_PADPLUS; + SDLtoFS2[SDLK_KP_PERIOD] = KEY_PADPERIOD; + SDLtoFS2[SDLK_KP_DIVIDE] = KEY_PADDIVIDE; + SDLtoFS2[SDLK_KP_MULTIPLY] = KEY_PADMULTIPLY; + SDLtoFS2[SDLK_KP_ENTER] = KEY_PADENTER; + + SDLtoFS2[SDLK_INSERT] = KEY_INSERT; + SDLtoFS2[SDLK_HOME] = KEY_HOME; + SDLtoFS2[SDLK_PAGEUP] = KEY_PAGEUP; + SDLtoFS2[SDLK_DELETE] = KEY_DELETE; + SDLtoFS2[SDLK_END] = KEY_END; + SDLtoFS2[SDLK_PAGEDOWN] = KEY_PAGEDOWN; + SDLtoFS2[SDLK_UP] = KEY_UP; + SDLtoFS2[SDLK_DOWN] = KEY_DOWN; + SDLtoFS2[SDLK_LEFT] = KEY_LEFT; + SDLtoFS2[SDLK_RIGHT] = KEY_RIGHT; + + SDLtoFS2[SDLK_PRINT] = KEY_PRINT_SCRN; + SDLtoFS2[SDLK_PAUSE] = KEY_PAUSE; + SDLtoFS2[SDLK_BREAK] = KEY_BREAK; +} +#endif + int key_numlock_is_on() { #ifdef PLAT_UNIX @@ -264,17 +394,10 @@ int key_to_ascii(int keycode ) if ( keycode>=127 ) return 255; -#ifdef PLAT_UNIX - if (shifted) - return toupper (keycode); - else - return keycode; -#else if (shifted) return shifted_ascii_table[keycode]; else return ascii_table[keycode]; -#endif } // Flush the keyboard buffer. @@ -493,10 +616,6 @@ float key_down_timef(uint scancode) if ( !key_inited ) return 0.0f; -#ifdef PLAT_UNIX - scancode &= KEY_MASK; -#endif - if ((scancode<0)|| (scancode>=NUM_KEYS)) return 0.0f; ENTER_CRITICAL_SECTION(&key_lock); @@ -577,9 +696,6 @@ int key_down_count(int scancode) if ( !key_inited ) return 0; -#ifdef PLAT_UNIX - scancode &= KEY_MASK; -#endif if ((scancode<0)|| (scancode>=NUM_KEYS)) return 0; ENTER_CRITICAL_SECTION(&key_lock); @@ -599,9 +715,6 @@ int key_up_count(int scancode) int n; if ( !key_inited ) return 0; -#ifdef PLAT_UNIX - scancode &= KEY_MASK; -#endif if ((scancode<0)|| (scancode>=NUM_KEYS)) return 0; ENTER_CRITICAL_SECTION(&key_lock); @@ -631,9 +744,6 @@ void key_mark( uint code, int state, uint latency ) ENTER_CRITICAL_SECTION(&key_lock); -#ifdef PLAT_UNIX - code &= KEY_MASK; -#endif // If running in the UK, need to translate their wacky slash scancode to ours if ( code == KEY_SLASH_UK ) { code = KEY_SLASH; @@ -692,11 +802,7 @@ void key_mark( uint code, int state, uint latency ) // event_time = timeGetTime() - latency; // Read in scancode -#ifndef PLAT_UNIX scancode = code & (NUM_KEYS-1); -#else - scancode = code; -#endif breakbit = !state; if (breakbit) { @@ -833,6 +939,7 @@ void key_init() key_inited = 1; #ifdef PLAT_UNIX + FillSDLArray (); STUB_FUNCTION; #else InitializeCriticalSection( &key_lock ); diff --git a/src/osapi/os_unix.cpp b/src/osapi/os_unix.cpp index f1fe64d..7363b75 100644 --- a/src/osapi/os_unix.cpp +++ b/src/osapi/os_unix.cpp @@ -7,6 +7,10 @@ * Low level Windows code * * $Log$ + * Revision 1.6 2002/05/31 03:34:02 theoddone33 + * Fix Keyboard + * Add titlebar + * * Revision 1.5 2002/05/30 23:46:29 theoddone33 * some minor key changes (not necessarily fixes) * @@ -220,6 +224,7 @@ void os_deinit() { } +extern int SDLtoFS2[SDLK_LAST]; void os_poll() { SDL_Event e; @@ -243,10 +248,12 @@ void os_poll() mouse_mark_button (MOUSE_MIDDLE_BUTTON, 0); break; case SDL_KEYDOWN: - key_mark ((e.key.keysym.mod<<16) | e.key.keysym.sym, 1, 0); + if (SDLtoFS2[e.key.keysym.sym]) + key_mark (SDLtoFS2[e.key.keysym.sym], 1, 0); break; case SDL_KEYUP: - key_mark ((e.key.keysym.mod<<16) | e.key.keysym.sym, 0, 0); + if (SDLtoFS2[e.key.keysym.sym]) + key_mark (SDLtoFS2[e.key.keysym.sym], 0, 0); break; default: break; -- 2.39.2