1 /*
2  *  Abuse - dark 2D side-scrolling platform game
3  *  Copyright (c) 1995 Crack dot Com
4  *  Copyright (c) 2005-2011 Sam Hocevar <sam@hocevar.net>
5  *
6  *  This software was released into the Public Domain. As with most public
7  *  domain software, no warranty is made or implied by Crack dot Com, by
8  *  Jonathan Clark, or by Sam Hocevar.
9  */
10 
11 #if defined HAVE_CONFIG_H
12 #   include "config.h"
13 #endif
14 
15 #include <string.h>
16 #include <ctype.h>
17 
18 #include "keys.h"
19 
20 char const *jk_key_names[]=
21 {
22     "Up Arrow","Down Arrow","Left Arrow","Right Arrow",
23     "Left Ctrl","Right Ctrl","Left Alt","Right Alt",
24     "Left Shift","Right Shift","Caps Lock","Num Lock",
25     "Home","End","Del","F1","F2","F3","F4","F5","F6",
26     "F7","F8","F9","F10","Insert","PageUp","PageDown","Command"
27 };
28 
key_name(int key,char * buffer)29 void key_name(int key, char *buffer)
30 {
31     //static char sing[2];
32     if( key > 255 && key <= JK_MAX_KEY )
33         strcpy(buffer,jk_key_names[key-256]);
34     else if( key == JK_BACKSPACE )
35         strcpy(buffer,"Backspace");
36     else if( key == JK_TAB )
37         strcpy(buffer,"Tab");
38     else if( key == JK_ENTER )
39         strcpy(buffer,"Enter");
40     else if( key == JK_ESC )
41         strcpy(buffer,"Esc");
42     else if( key == JK_SPACE )
43         strcpy( buffer, "Space" );
44     else if( isprint(key) )
45     {
46         buffer[0] = key;
47         buffer[1] = 0;
48     }
49     else
50     {
51         buffer[0] = 0;
52     }
53 }
54 
key_value(char const * buffer)55 int key_value(char const *buffer)
56 {
57     if( strcasecmp( buffer, "Backspace" ) == 0 )
58         return JK_BACKSPACE;
59     if( strcasecmp( buffer, "Tab" ) == 0 )
60         return JK_TAB;
61     if( strcasecmp( buffer, "Enter" ) == 0 )
62         return JK_ENTER;
63     if( strcasecmp( buffer, "ESC" ) == 0 )
64         return JK_ESC;
65     if( strcasecmp( buffer, "Space" ) == 0 )
66         return JK_SPACE;
67     if( strcasecmp( buffer, "Up" ) == 0 )
68         return JK_UP;
69     if( strcasecmp( buffer, "Down" ) == 0 )
70         return JK_DOWN;
71     if( strcasecmp( buffer, "Left" ) == 0 )
72         return JK_LEFT;
73     if( strcasecmp( buffer, "Right" ) == 0 )
74         return JK_RIGHT;
75     if( strcasecmp( buffer, "CTRL_L" ) == 0 )
76         return JK_CTRL_L;
77     if( strcasecmp( buffer, "CTRL_R" ) == 0 )
78         return JK_CTRL_R;
79     if( strcasecmp( buffer, "ALT_L" ) == 0 )
80         return JK_ALT_L;
81     if( strcasecmp( buffer, "ALT_R" ) == 0 )
82         return JK_ALT_R;
83     if( strcasecmp( buffer, "SHIFT_L" ) == 0 )
84         return JK_SHIFT_L;
85     if( strcasecmp( buffer, "SHIFT_R" ) == 0 )
86         return JK_SHIFT_R;
87     if( strcasecmp( buffer, "Caps" ) == 0 )
88         return JK_CAPS;
89     if( strcasecmp( buffer, "Num_Lock" ) == 0 )
90         return JK_NUM_LOCK;
91     if( strcasecmp( buffer, "Home" ) == 0 )
92         return JK_HOME;
93     if( strcasecmp( buffer, "End" ) == 0 )
94         return JK_END;
95     if( strcasecmp( buffer, "Del" ) == 0 )
96         return JK_DEL;
97     if( strcasecmp( buffer, "F1" ) == 0 )
98         return JK_F1;
99     if( strcasecmp( buffer, "F2" ) == 0 )
100         return JK_F2;
101     if( strcasecmp( buffer, "F3" ) == 0 )
102         return JK_F3;
103     if( strcasecmp( buffer, "F4" ) == 0 )
104         return JK_F4;
105     if( strcasecmp( buffer, "F5" ) == 0 )
106         return JK_F5;
107     if( strcasecmp( buffer, "F6" ) == 0 )
108         return JK_F6;
109     if( strcasecmp( buffer, "F7" ) == 0 )
110         return JK_F7;
111     if( strcasecmp( buffer, "F8" ) == 0 )
112         return JK_F8;
113     if( strcasecmp( buffer, "F9" ) == 0 )
114         return JK_F9;
115     if( strcasecmp( buffer, "F10" ) == 0 )
116         return JK_F10;
117     if( strcasecmp( buffer, "Insert" ) == 0 )
118         return JK_INSERT;
119     if( strcasecmp( buffer, "PageUp" ) == 0 )
120         return JK_PAGEUP;
121     if( strcasecmp( buffer, "PageDown" ) == 0 )
122         return JK_PAGEDOWN;
123 
124     // Assume they are asking for a normal key, so convert the first
125     // character to an integer and return that
126     return (int)buffer[0];
127 }
128 
129