From adbe894e5e96d82c29ce286767af0c40bbcd7429 Mon Sep 17 00:00:00 2001 From: zicodxx Date: Fri, 2 Nov 2012 17:41:40 +0100 Subject: [PATCH] Made key_properties readable in other files; Eliminated key_text variable; Marked unicode_frame_buffer as extern in header - patches by Kp --- CHANGELOG.txt | 4 ++++ arch/include/key.h | 13 ++++++++++--- arch/sdl/key.c | 16 +--------------- main/kconfig.c | 6 +++--- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index f6e3e407b..ea0dd708f 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,9 @@ D2X-Rebirth Changelog +20121102 +-------- +arch/include/key.h, arch/sdl/key.c, main/kconfig.c: Made key_properties readable in other files; Eliminated key_text variable; Marked unicode_frame_buffer as extern in header - patches by Kp + 20121031 -------- main/hostage.h, include/u_mem.h: Fixed inconsistency in hostage_rescue() definition and revoked recent patch for u_mem.h due to infinite loops in mem.c caused by this diff --git a/arch/include/key.h b/arch/include/key.h index dab838d18..e8fc20efa 100644 --- a/arch/include/key.h +++ b/arch/include/key.h @@ -20,6 +20,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #ifndef _KEY_H #define _KEY_H +#include #include "pstypes.h" #include "fix.h" #include "event.h" @@ -38,7 +39,7 @@ extern void key_close(); extern fix64 keyd_time_when_last_pressed; // Stores Unicode values registered in one event_loop call -unsigned char unicode_frame_buffer[KEY_BUFFER_SIZE]; +extern unsigned char unicode_frame_buffer[KEY_BUFFER_SIZE]; extern void key_flush(); // Clears the 256 char buffer extern int event_key_get(d_event *event); // Get the keycode from the EVENT_KEY_COMMAND event @@ -52,8 +53,6 @@ extern volatile unsigned char keyd_last_released; extern void key_toggle_repeat(int enable); -extern char * key_text[256]; - // for key_ismodlck #define KEY_ISMOD 1 #define KEY_ISLCK 2 @@ -185,4 +184,12 @@ extern char * key_text[256]; #define KEY_PAUSE 0x61 +typedef struct key_props { + const char *key_text; + unsigned char ascii_value; + SDLKey sym; +} key_props; + +extern const key_props key_properties[256]; + #endif diff --git a/arch/sdl/key.c b/arch/sdl/key.c index 3d9cb7bb9..10c3b1597 100644 --- a/arch/sdl/key.c +++ b/arch/sdl/key.c @@ -35,13 +35,7 @@ typedef struct keyboard { static keyboard key_data; -typedef struct key_props { - char *key_text; - unsigned char ascii_value; - SDLKey sym; -} key_props; - -key_props key_properties[256] = { +const key_props key_properties[256] = { { "", 255, -1 }, // 0 { "ESC", 255, SDLK_ESCAPE }, { "1", '1', SDLK_1 }, @@ -306,8 +300,6 @@ typedef struct d_event_keycommand int keycode; } d_event_keycommand; -char *key_text[256]; - int key_ismodlck(int keycode) { switch (keycode) @@ -441,8 +433,6 @@ void key_close() void key_init() { - int i; - if (Installed) return; Installed=1; @@ -450,10 +440,6 @@ void key_init() key_toggle_repeat(1); keyd_time_when_last_pressed = timer_query(); - - for(i=0; i<256; i++) - key_text[i] = key_properties[i].key_text; - // Clear the keyboard array key_flush(); } diff --git a/main/kconfig.c b/main/kconfig.c index e2fb1d13d..89ce4c14e 100644 --- a/main/kconfig.c +++ b/main/kconfig.c @@ -442,7 +442,7 @@ int get_item_height(kc_item *item) } else { switch( item->type ) { case BT_KEY: - strncpy( btext, key_text[item->value], 10 ); break; + strncpy( btext, key_properties[item->value].key_text, 10 ); break; case BT_MOUSE_BUTTON: strncpy( btext, mousebutton_text[item->value], 10); break; case BT_MOUSE_AXIS: @@ -967,7 +967,7 @@ void kc_drawitem( kc_item *item, int is_current ) } else { switch( item->type ) { case BT_KEY: - strncpy( btext, key_text[item->value], 10 ); break; + strncpy( btext, key_properties[item->value].key_text, 10 ); break; case BT_MOUSE_BUTTON: strncpy( btext, mousebutton_text[item->value], 10 ); break; case BT_MOUSE_AXIS: @@ -1033,7 +1033,7 @@ void kc_change_key( kc_menu *menu, d_event *event, kc_item * item ) Assert(event->type == EVENT_KEY_COMMAND); keycode = event_key_get_raw(event); - if (strlen(key_text[keycode])<=0) + if (!(key_properties[keycode].key_text)) return; for (n=0; n<(GameArg.CtlNoStickyKeys?sizeof(system_keys)-3:sizeof(system_keys)); n++ )