From 1d79686ecf017935fd45c3d7eff3aa844f4d02e6 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Tue, 23 May 2006 00:04:27 +0000 Subject: Add TXT_GetKeyDescription() to provide descriptions of key codes. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 513 --- textscreen/txt_main.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++- textscreen/txt_main.h | 7 ++++- 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/textscreen/txt_main.c b/textscreen/txt_main.c index 5682c023..dca2e767 100644 --- a/textscreen/txt_main.c +++ b/textscreen/txt_main.c @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: txt_main.c 490 2006-05-20 16:34:34Z fraggle $ +// $Id: txt_main.c 513 2006-05-23 00:04:27Z fraggle $ // // Copyright(C) 1993-1996 Id Software, Inc. // Copyright(C) 2005 Simon Howard @@ -298,3 +298,85 @@ signed int TXT_GetChar(void) return -1; } +static char *SpecialKeyName(int key) +{ + switch (key) + { + case KEY_RIGHTARROW: return "RIGHT"; + case KEY_LEFTARROW: return "LEFT"; + case KEY_UPARROW: return "UP"; + case KEY_DOWNARROW: return "DOWN"; + case KEY_ESCAPE: return "ESC"; + case KEY_ENTER: return "ENTER"; + case KEY_TAB: return "TAB"; + case KEY_F1: return "F1"; + case KEY_F2: return "F2"; + case KEY_F3: return "F3"; + case KEY_F4: return "F4"; + case KEY_F5: return "F5"; + case KEY_F6: return "F6"; + case KEY_F7: return "F7"; + case KEY_F8: return "F8"; + case KEY_F9: return "F9"; + case KEY_F10: return "F10"; + case KEY_F11: return "F11"; + case KEY_F12: return "F12"; + case KEY_BACKSPACE: return "BKSP"; + case KEY_PAUSE: return "PAUSE"; + case KEY_EQUALS: return "EQUALS"; + case KEY_MINUS: return "MINUS"; + case KEY_RSHIFT: return "SHIFT"; + case KEY_RCTRL: return "CTRL"; + case KEY_RALT: return "ALT"; + case KEY_CAPSLOCK: return "CAPS"; + case KEY_SCRLCK: return "SCRLCK"; + case KEY_HOME: return "HOME"; + case KEY_END: return "END"; + case KEY_PGUP: return "PGUP"; + case KEY_PGDN: return "PGDN"; + case KEY_INS: return "INS"; + case KEY_DEL: return "DEL"; + /* + case KEYP_0: return "PAD0"; + case KEYP_1: return "PAD1"; + case KEYP_2: return "PAD2"; + case KEYP_3: return "PAD3"; + case KEYP_4: return "PAD4"; + case KEYP_5: return "PAD5"; + case KEYP_6: return "PAD6"; + case KEYP_7: return "PAD7"; + case KEYP_8: return "PAD8"; + case KEYP_9: return "PAD9"; + case KEYP_UPARROW: return "PAD_U"; + case KEYP_DOWNARROW: return "PAD_D"; + case KEYP_LEFTARROW: return "PAD_L"; + case KEYP_RIGHTARROW: return "PAD_R"; + case KEYP_MULTIPLY: return "PAD*"; + case KEYP_PLUS: return "PAD+"; + case KEYP_MINUS: return "PAD-"; + case KEYP_DIVIDE: return "PAD/"; + */ + default: return NULL; + } +} + +void TXT_GetKeyDescription(int key, char *buf) +{ + char *keyname; + + keyname = SpecialKeyName(key); + + if (keyname != NULL) + { + strcpy(buf, keyname); + } + else if (isprint(key)) + { + sprintf(buf, "%c", toupper(key)); + } + else + { + sprintf(buf, "??%i", key); + } +} + diff --git a/textscreen/txt_main.h b/textscreen/txt_main.h index 25375d2d..5a4b8a1c 100644 --- a/textscreen/txt_main.h +++ b/textscreen/txt_main.h @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: txt_main.h 289 2006-01-13 18:23:28Z fraggle $ +// $Id: txt_main.h 513 2006-05-23 00:04:27Z fraggle $ // // Copyright(C) 1993-1996 Id Software, Inc. // Copyright(C) 2005 Simon Howard @@ -96,5 +96,10 @@ void TXT_UpdateScreen(void); int TXT_GetChar(void); +// Provides a short description of a key code, placing into the +// provided buffer. + +void TXT_GetKeyDescription(int key, char *buf); + #endif /* #ifndef TXT_MAIN_H */ -- cgit v1.2.3