-
Notifications
You must be signed in to change notification settings - Fork 0
/
ifr_srkeys.c
150 lines (121 loc) · 5.53 KB
/
ifr_srkeys.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <vgakeyboard.h>
#include "ifr.h"
/*
This table associates raw any of key1, key2
with action act. Set key2 to zero, if you
need less keys. Case-insensitivity is provided.
You might wish to change the key layout,
e.g. when using a non-QWERTY keyboard.
This layout applies to console version - raw mode.
For "cooked" mode see ifr_skeys.c
For GUI versions see ifr_xkeys.c
*/
typedef struct
{ int key1; int key2; ACTION act; } SRKEYS;
SRKEYS PlayerKeys[] = /* Used with human player only */
{
{SCANCODE_KEYPAD1, SCANCODE_Z, ACT_FRONTLEFT},
{SCANCODE_KEYPAD2, SCANCODE_X, ACT_FRONT},
{SCANCODE_KEYPAD3, SCANCODE_C, ACT_FRONTRIGHT},
{SCANCODE_KEYPAD4, SCANCODE_A, ACT_LEFT},
{SCANCODE_KEYPAD5, SCANCODE_S, ACT_TURNFWD},
{SCANCODE_KEYPAD6, SCANCODE_D, ACT_RIGHT},
{SCANCODE_KEYPAD7, SCANCODE_Q, ACT_BACKLEFT},
{SCANCODE_KEYPAD8, SCANCODE_W, ACT_BACK},
{SCANCODE_KEYPAD9, SCANCODE_E, ACT_BACKRIGHT},
{SCANCODE_KEYPAD0, 0, ACT_DOWN},
{SCANCODE_SPACE, 0, ACT_DROP},
{SCANCODE_ENTER, 0, ACT_TURNBACK}
};
const int PlayerKeysCount = sizeof(PlayerKeys) / sizeof(SRKEYS);
#ifdef USE_VOLUME_CONTROL
SRKEYS VolumeKeys[] =
{ {SCANCODE_KEYPAD1, SCANCODE_Z, ACT_VOLDOWNLEFT},
{SCANCODE_KEYPAD2, SCANCODE_X, ACT_VOLDOWN},
{SCANCODE_KEYPAD3, SCANCODE_C, ACT_VOLDOWNRIGHT},
{SCANCODE_KEYPAD4, SCANCODE_A, ACT_VOLLEFT},
{SCANCODE_KEYPAD6, SCANCODE_D, ACT_VOLRIGHT},
{SCANCODE_KEYPAD7, SCANCODE_Q, ACT_VOLUPLEFT},
{SCANCODE_KEYPAD8, SCANCODE_W, ACT_VOLUP},
{SCANCODE_KEYPAD9, SCANCODE_E, ACT_VOLUPRIGHT}
};
const int VolumeKeysCount = sizeof(VolumeKeys) / sizeof(SRKEYS);
#endif
SRKEYS ShiftKeys[] = /* Used in Help/Pause/Status mode
or with Shift or Alt down */
{
#ifndef USE_VOLUME_CONTROL
{SCANCODE_KEYPAD1, SCANCODE_Z, ACT_FRONTLEFT},
{SCANCODE_KEYPAD2, SCANCODE_X, ACT_FRONT},
{SCANCODE_KEYPAD3, SCANCODE_C, ACT_FRONTRIGHT},
{SCANCODE_KEYPAD4, SCANCODE_A, ACT_LEFT},
{SCANCODE_KEYPAD6, SCANCODE_D, ACT_RIGHT},
{SCANCODE_KEYPAD7, SCANCODE_Q, ACT_BACKLEFT},
{SCANCODE_KEYPAD8, SCANCODE_W, ACT_BACK},
{SCANCODE_KEYPAD9, SCANCODE_E, ACT_BACKRIGHT},
#endif
{SCANCODE_KEYPAD5, SCANCODE_S, ACT_TURNBACK},
{SCANCODE_ENTER, 0, ACT_TURNFWD},
{SCANCODE_KEYPAD0, 0, ACT_DOWN},
{SCANCODE_SPACE, 0, ACT_DROP},
};
const int ShiftKeysCount = sizeof(ShiftKeys) / sizeof(SRKEYS);
SRKEYS CommonKeys[] = /* Used in all cases */
{
{SCANCODE_KEYPADPLUS, SCANCODE_EQUAL, ACT_ROTATEFWD},
{SCANCODE_V, 0, ACT_REDRAW},
{SCANCODE_J, 0, ACT_JOYSTICK},
{SCANCODE_K, 0, ACT_KEYBOARD},
{SCANCODE_L, 0, ACT_LEVEL},
{SCANCODE_M, 0, ACT_MUSIC},
{SCANCODE_N, 0, ACT_SHOWNEXT},
{SCANCODE_P, SCANCODE_H, ACT_PAUSE},
{SCANCODE_BACKSPACE, SCANCODE_ESCAPE, ACT_QUIT},
{SCANCODE_REMOVE, 0, ACT_QUIT},
{SCANCODE_F1, SCANCODE_GRAVE, ACT_BOSS},
{SCANCODE_O, 0, ACT_BOSS},
{SCANCODE_F2, SCANCODE_T, ACT_STATUS},
{SCANCODE_TAB, 0, ACT_TAB}
};
const int CommonKeysCount = sizeof(CommonKeys) / sizeof(SRKEYS);
SRKEYS EditKeys[] = /* Used for entering top scorer */
{ { SCANCODE_CURSORLEFT, 0, ACT_LEFT},
{ SCANCODE_CURSORRIGHT, 0, ACT_RIGHT},
{ SCANCODE_HOME, 0, ACT_BACKLEFT}, /* Start of text */
{ SCANCODE_END, 0, ACT_FRONTLEFT}, /* End of text */
{ SCANCODE_BACKSPACE, 0, ACT_BACK}, /* Delete prev letter */
{ SCANCODE_REMOVE, 0, ACT_DROP}, /* Delete letter */
{ SCANCODE_ESCAPE, 0, ACT_QUIT}, /* Clean */
{ SCANCODE_ENTER, 0, ACT_TURNBACK}, /* Turn back, finish editing */
{ SCANCODE_F1, 0, ACT_BOSS}
};
const int EditKeysCount = sizeof(EditKeys) / sizeof(SRKEYS);
/* Converts scan codes into ASCII */
const unsigned char AsciiTable[] =
{ 0, 0,
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\b', '\t',
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 0, 0,
'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`', 0, '\\',
'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 0, 0, 0, ' '};
const unsigned char AsciiTableShift[] =
{ 0, 0,
'!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 0, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', 0, 0,
'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '\"', '~', 0, '|',
'Z', 'X', 'C', 'V', 'B', 'N', 'M', '<', '>', '?', 0, 0, 0, ' '};
const unsigned char AsciiTableCaps[] =
{ 0, 0,
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\b', '\t',
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '[', ']', 0, 0,
'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '\'', '`', 0, '\\',
'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 0, 0, 0, ' '};
const unsigned char AsciiTableCapsShift[] =
{ 0, 0,
'!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 0, 0,
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '{', '}', 0, 0,
'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\"', '~', 0, '|',
'z', 'x', 'c', 'v', 'b', 'n', 'm', '<', '>', '?', 0, 0, 0, ' '};
const unsigned char *AsciiTables[] = {AsciiTable, AsciiTableShift,
AsciiTableCaps, AsciiTableCapsShift};
const int AsciTableSizes[] = {sizeof(AsciiTable), sizeof(AsciiTableShift),
sizeof(AsciiTableCaps), sizeof(AsciiTableCapsShift)};