summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Howard2006-05-23 00:04:27 +0000
committerSimon Howard2006-05-23 00:04:27 +0000
commit1d79686ecf017935fd45c3d7eff3aa844f4d02e6 (patch)
tree732ce7525145dd7c27c82ca0f0e062348b0f4869
parentaafc38483ef50980170f713fe62a0b471fd34c8d (diff)
downloadchocolate-doom-1d79686ecf017935fd45c3d7eff3aa844f4d02e6.tar.gz
chocolate-doom-1d79686ecf017935fd45c3d7eff3aa844f4d02e6.tar.bz2
chocolate-doom-1d79686ecf017935fd45c3d7eff3aa844f4d02e6.zip
Add TXT_GetKeyDescription() to provide descriptions of key codes.
Subversion-branch: /trunk/chocolate-doom Subversion-revision: 513
-rw-r--r--textscreen/txt_main.c84
-rw-r--r--textscreen/txt_main.h7
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 */