Add TXT_GetKeyDescription() to provide descriptions of key codes.

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 513
This commit is contained in:
Simon Howard 2006-05-23 00:04:27 +00:00
parent aafc38483e
commit 1d79686ecf
2 changed files with 89 additions and 2 deletions

View file

@ -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);
}
}

View file

@ -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 */