DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
 
keys.h
Go to the documentation of this file.
1/*
2 $RCSfile$
3
4 Copyright (C) 1996-1997 Id Software, Inc.
5
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
15 See the GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to:
19
20 Free Software Foundation, Inc.
21 59 Temple Place - Suite 330
22 Boston, MA 02111-1307, USA
23
24 $Id$
25*/
26
27#ifndef __KEYS_H
28#define __KEYS_H
29
30#include <stddef.h>
31#include "qtypes.h"
32#include "qdefs.h"
33#include "fs.h"
34#include "cmd.h"
35
36// the highest Unicode character to allow key binding.
37// note that an excessively high value may degrade fps
38// when code is looping through the bindings
39// U+ABFF is probably the highest bindable codepoint,
40// see: https://github.com/DarkPlacesEngine/darkplaces/pull/68#issuecomment-1416802873
41#define MAX_KEY_BINDS 0xAC00
42
43// how long is a "tinystr" to hold a keyboard key's
44// Unicode utf-8 presentation, plus final \x00
45// to allow all characters <= 0xffff, use 4
46#define TINYSTR_LEN 4
47
48//
49// these are the key numbers that should be passed to Key_Event
50//
51typedef enum keynum_e
52{
53 K_TEXT = 1, // used only for unicode character input
54 K_TAB = 9,
55 K_ENTER = 13,
57 K_SPACE = 32,
58
59 // normal keys should be passed as lowercased ascii
60
66
70
83
90
92
96
125
127
128 // mouse buttons generate virtual keys
129
130 K_MOUSE1 = 512,
149
150//
151// joystick buttons
152//
153 K_JOY1 = 768,
169
170//
171// aux keys are for multi-buttoned joysticks to generate so they can use
172// the normal binding process
173//
206
207 // Microsoft Xbox 360 Controller For Windows
232
233 // generic joystick emulation for menu
238
239 K_MIDINOTE0 = 896, // to this, the note number is added
367
371
373
374extern char key_line[MAX_INPUTLINE];
375extern int key_linepos;
376extern qbool key_insert; // insert key toggle (for editing)
377extern keydest_t key_dest;
378// key_consoleactive bits
379// user wants console (halfscreen)
380#define KEY_CONSOLEACTIVE_USER 1
381// console forced because there's nothing else active (fullscreen)
382#define KEY_CONSOLEACTIVE_FORCED 4
383extern int key_consoleactive;
384extern char *keybindings[MAX_BINDMAPS][MAX_KEYS];
385
386extern signed char chat_mode; // 0 for say, 1 for say_team, -1 for command
387extern char chat_buffer[MAX_INPUTLINE];
388extern int chat_bufferpos;
389
390int Key_ClearEditLine(qbool is_console);
391void Key_WriteBindings(qfile_t *f);
392void Key_Init(void);
393void Key_Shutdown(void);
394void Key_Init_Cvars(void);
395void Key_Event(int key, int ascii, qbool down);
396void Key_ReleaseAll (void);
398void Key_EventQueue_Block(void);
399void Key_EventQueue_Unblock(void);
400int Key_AddChar(int unicode, qbool is_console);
401int Key_Parse_CommonKeys(cmd_state_t *cmd, qbool is_console, int key, int unicode);
402
403qbool Key_SetBinding (int keynum, int bindmap, const char *binding);
404const char *Key_GetBind (int key, int bindmap);
405void Key_FindKeysForCommand (const char *command, int *keys, int numkeys, int bindmap);
406qbool Key_SetBindMap(int fg, int bg);
407void Key_GetBindMap(int *fg, int *bg);
408const char *Key_KeynumToString (int keynum, char *buf, size_t buflength);
409int Key_StringToKeynum (const char *str);
410
411#endif // __KEYS_H
412
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition glquake.h:657
int Key_Parse_CommonKeys(cmd_state_t *cmd, qbool is_console, int key, int unicode)
Definition keys.c:750
keynum_t
Definition keys.h:52
@ K_AUX19
Definition keys.h:192
@ K_MIDINOTE111
Definition keys.h:350
@ K_MIDINOTE127
Definition keys.h:366
@ K_F2
Definition keys.h:72
@ K_MIDINOTE55
Definition keys.h:294
@ K_KP_8
Definition keys.h:112
@ K_MIDINOTE56
Definition keys.h:295
@ K_MIDINOTE110
Definition keys.h:349
@ K_MIDINOTE114
Definition keys.h:353
@ K_KP_4
Definition keys.h:105
@ K_F1
Definition keys.h:71
@ K_MIDINOTE89
Definition keys.h:328
@ K_X360_A
Definition keys.h:218
@ K_MIDINOTE61
Definition keys.h:300
@ K_OTHERDEVICESBEGIN
Definition keys.h:131
@ K_MOUSE4
Definition keys.h:136
@ K_MIDINOTE6
Definition keys.h:245
@ K_SHIFT
Definition keys.h:69
@ K_MIDINOTE77
Definition keys.h:316
@ K_MIDINOTE28
Definition keys.h:267
@ K_AUX23
Definition keys.h:196
@ K_MIDINOTE69
Definition keys.h:308
@ K_KP_5
Definition keys.h:107
@ K_F12
Definition keys.h:82
@ K_MIDINOTE9
Definition keys.h:248
@ K_KP_RIGHTARROW
Definition keys.h:109
@ K_DEL
Definition keys.h:85
@ MAX_KEYS
Definition keys.h:368
@ K_MOUSE12
Definition keys.h:144
@ K_X360_BACK
Definition keys.h:213
@ K_MIDINOTE94
Definition keys.h:333
@ K_MIDINOTE10
Definition keys.h:249
@ K_MIDINOTE44
Definition keys.h:283
@ K_KP_MINUS
Definition keys.h:121
@ K_MIDINOTE85
Definition keys.h:324
@ K_MIDINOTE37
Definition keys.h:276
@ K_MIDINOTE57
Definition keys.h:296
@ K_MIDINOTE105
Definition keys.h:344
@ K_MIDINOTE7
Definition keys.h:246
@ K_F6
Definition keys.h:76
@ K_F4
Definition keys.h:74
@ K_JOY7
Definition keys.h:159
@ K_MIDINOTE8
Definition keys.h:247
@ K_MIDINOTE115
Definition keys.h:354
@ K_MIDINOTE3
Definition keys.h:242
@ K_MIDINOTE73
Definition keys.h:312
@ K_AUX25
Definition keys.h:198
@ K_MIDINOTE5
Definition keys.h:244
@ K_AUX15
Definition keys.h:188
@ K_MIDINOTE0
Definition keys.h:239
@ K_AUX32
Definition keys.h:205
@ K_KP_PGDN
Definition keys.h:104
@ K_JOY12
Definition keys.h:164
@ K_X360_X
Definition keys.h:220
@ K_MOUSE5
Definition keys.h:137
@ K_KP_DEL
Definition keys.h:117
@ K_MOUSE15
Definition keys.h:147
@ K_MOUSE9
Definition keys.h:141
@ K_MIDINOTE62
Definition keys.h:301
@ K_KP_PGUP
Definition keys.h:115
@ K_MIDINOTE126
Definition keys.h:365
@ K_MIDINOTE125
Definition keys.h:364
@ K_MIDINOTE63
Definition keys.h:302
@ K_KP_UPARROW
Definition keys.h:113
@ K_KP_INS
Definition keys.h:98
@ K_KP_PLUS
Definition keys.h:122
@ K_NUMLOCK
Definition keys.h:93
@ K_MIDINOTE101
Definition keys.h:340
@ K_X360_RIGHT_SHOULDER
Definition keys.h:217
@ K_MIDINOTE13
Definition keys.h:252
@ K_MIDINOTE4
Definition keys.h:243
@ K_MIDINOTE93
Definition keys.h:332
@ K_ALT
Definition keys.h:67
@ K_MIDINOTE45
Definition keys.h:284
@ K_X360_RIGHT_THUMB_UP
Definition keys.h:228
@ K_KP_7
Definition keys.h:110
@ K_MIDINOTE12
Definition keys.h:251
@ K_MIDINOTE78
Definition keys.h:317
@ K_MIDINOTE23
Definition keys.h:262
@ K_MIDINOTE83
Definition keys.h:322
@ K_MWHEELUP
Definition keys.h:134
@ K_KP_END
Definition keys.h:100
@ K_MIDINOTE86
Definition keys.h:325
@ K_MIDINOTE16
Definition keys.h:255
@ K_X360_DPAD_RIGHT
Definition keys.h:211
@ K_MIDINOTE27
Definition keys.h:266
@ K_MOUSE7
Definition keys.h:139
@ K_JOY10
Definition keys.h:162
@ K_MIDINOTE103
Definition keys.h:342
@ K_JOY_DOWN
Definition keys.h:235
@ K_JOY4
Definition keys.h:156
@ K_JOY13
Definition keys.h:165
@ K_KP_2
Definition keys.h:101
@ K_X360_RIGHT_TRIGGER
Definition keys.h:223
@ K_JOY14
Definition keys.h:166
@ K_MIDINOTE64
Definition keys.h:303
@ K_X360_DPAD_UP
Definition keys.h:208
@ K_MIDINOTE96
Definition keys.h:335
@ K_AUX27
Definition keys.h:200
@ K_JOY15
Definition keys.h:167
@ K_MIDINOTE79
Definition keys.h:318
@ K_JOY16
Definition keys.h:168
@ K_JOY_LEFT
Definition keys.h:236
@ K_MIDINOTE90
Definition keys.h:329
@ K_X360_LEFT_THUMB_RIGHT
Definition keys.h:227
@ K_MIDINOTE97
Definition keys.h:336
@ K_AUX30
Definition keys.h:203
@ K_ENTER
Definition keys.h:55
@ K_F9
Definition keys.h:79
@ K_MIDINOTE14
Definition keys.h:253
@ K_X360_DPAD_DOWN
Definition keys.h:209
@ K_MIDINOTE106
Definition keys.h:345
@ K_MOUSE2
Definition keys.h:132
@ K_MOUSE1
Definition keys.h:130
@ K_X360_DPAD_LEFT
Definition keys.h:210
@ K_MIDINOTE82
Definition keys.h:321
@ K_MIDINOTE107
Definition keys.h:346
@ K_MIDINOTE36
Definition keys.h:275
@ K_AUX22
Definition keys.h:195
@ K_PRINTSCREEN
Definition keys.h:126
@ K_MIDINOTE88
Definition keys.h:327
@ K_X360_RIGHT_THUMB
Definition keys.h:215
@ K_AUX29
Definition keys.h:202
@ K_MIDINOTE49
Definition keys.h:288
@ K_X360_LEFT_THUMB_DOWN
Definition keys.h:225
@ K_MIDINOTE122
Definition keys.h:361
@ K_X360_RIGHT_THUMB_DOWN
Definition keys.h:229
@ K_X360_RIGHT_THUMB_RIGHT
Definition keys.h:231
@ K_AUX13
Definition keys.h:186
@ K_MIDINOTE53
Definition keys.h:292
@ K_JOY_RIGHT
Definition keys.h:237
@ K_AUX2
Definition keys.h:175
@ K_MIDINOTE109
Definition keys.h:348
@ K_UPARROW
Definition keys.h:62
@ K_MIDINOTE81
Definition keys.h:320
@ K_MIDINOTE33
Definition keys.h:272
@ K_MIDINOTE58
Definition keys.h:297
@ K_KP_0
Definition keys.h:97
@ K_KP_3
Definition keys.h:103
@ K_F8
Definition keys.h:78
@ K_MIDINOTE11
Definition keys.h:250
@ K_AUX9
Definition keys.h:182
@ K_AUX21
Definition keys.h:194
@ K_MIDINOTE70
Definition keys.h:309
@ K_ESCAPE
Definition keys.h:56
@ K_MIDINOTE124
Definition keys.h:363
@ K_MIDINOTE59
Definition keys.h:298
@ K_MOUSE6
Definition keys.h:138
@ K_MIDINOTE71
Definition keys.h:310
@ K_F5
Definition keys.h:75
@ K_MIDINOTE31
Definition keys.h:270
@ K_AUX24
Definition keys.h:197
@ K_X360_START
Definition keys.h:212
@ K_AUX18
Definition keys.h:191
@ K_MIDINOTE67
Definition keys.h:306
@ K_JOY5
Definition keys.h:157
@ K_MIDINOTE39
Definition keys.h:278
@ K_MIDINOTE40
Definition keys.h:279
@ K_MIDINOTE46
Definition keys.h:285
@ K_MIDINOTE48
Definition keys.h:287
@ K_MOUSE8
Definition keys.h:140
@ K_KP_1
Definition keys.h:99
@ K_MIDINOTE18
Definition keys.h:257
@ K_MIDINOTE15
Definition keys.h:254
@ K_JOY3
Definition keys.h:155
@ K_JOY9
Definition keys.h:161
@ K_MIDINOTE95
Definition keys.h:334
@ K_MIDINOTE116
Definition keys.h:355
@ K_MIDINOTE118
Definition keys.h:357
@ K_AUX3
Definition keys.h:176
@ K_MIDINOTE17
Definition keys.h:256
@ K_AUX5
Definition keys.h:178
@ K_MOUSE11
Definition keys.h:143
@ K_MIDINOTE120
Definition keys.h:359
@ K_MIDINOTE60
Definition keys.h:299
@ K_MIDINOTE75
Definition keys.h:314
@ K_AUX6
Definition keys.h:179
@ K_KP_PERIOD
Definition keys.h:116
@ K_MIDINOTE19
Definition keys.h:258
@ K_AUX7
Definition keys.h:180
@ K_PGUP
Definition keys.h:87
@ K_MIDINOTE54
Definition keys.h:293
@ K_MIDINOTE30
Definition keys.h:269
@ K_AUX11
Definition keys.h:184
@ K_PAUSE
Definition keys.h:91
@ K_MIDINOTE34
Definition keys.h:273
@ K_MIDINOTE42
Definition keys.h:281
@ K_KP_DOWNARROW
Definition keys.h:102
@ K_X360_RIGHT_THUMB_LEFT
Definition keys.h:230
@ K_MIDINOTE65
Definition keys.h:304
@ K_AUX1
Definition keys.h:174
@ K_MIDINOTE123
Definition keys.h:362
@ K_X360_LEFT_THUMB_UP
Definition keys.h:224
@ K_MIDINOTE51
Definition keys.h:290
@ K_BACKSPACE
Definition keys.h:61
@ K_MIDINOTE92
Definition keys.h:331
@ K_X360_LEFT_SHOULDER
Definition keys.h:216
@ K_X360_LEFT_THUMB_LEFT
Definition keys.h:226
@ K_MIDINOTE50
Definition keys.h:289
@ K_JOY2
Definition keys.h:154
@ K_CAPSLOCK
Definition keys.h:94
@ K_KP_SLASH
Definition keys.h:119
@ K_MIDINOTE41
Definition keys.h:280
@ K_MOUSE3
Definition keys.h:133
@ K_END
Definition keys.h:89
@ K_JOY_UP
Definition keys.h:234
@ K_JOY11
Definition keys.h:163
@ K_MIDINOTE24
Definition keys.h:263
@ K_SCROLLOCK
Definition keys.h:95
@ K_INS
Definition keys.h:84
@ K_MOUSE13
Definition keys.h:145
@ K_F10
Definition keys.h:80
@ K_KP_ENTER
Definition keys.h:123
@ K_MIDINOTE38
Definition keys.h:277
@ K_CTRL
Definition keys.h:68
@ K_MIDINOTE102
Definition keys.h:341
@ K_AUX14
Definition keys.h:187
@ K_KP_LEFTARROW
Definition keys.h:106
@ K_JOY8
Definition keys.h:160
@ K_MIDINOTE100
Definition keys.h:339
@ K_MIDINOTE119
Definition keys.h:358
@ K_MIDINOTE74
Definition keys.h:313
@ K_MIDINOTE1
Definition keys.h:240
@ K_KP_EQUALS
Definition keys.h:124
@ K_MIDINOTE25
Definition keys.h:264
@ K_MIDINOTE76
Definition keys.h:315
@ K_MWHEELDOWN
Definition keys.h:135
@ K_MIDINOTE66
Definition keys.h:305
@ K_F11
Definition keys.h:81
@ K_KP_MULTIPLY
Definition keys.h:120
@ K_MIDINOTE21
Definition keys.h:260
@ K_SPACE
Definition keys.h:57
@ K_HOME
Definition keys.h:88
@ K_KP_6
Definition keys.h:108
@ K_AUX26
Definition keys.h:199
@ K_MOUSE10
Definition keys.h:142
@ K_AUX10
Definition keys.h:183
@ K_MIDINOTE91
Definition keys.h:330
@ K_TAB
Definition keys.h:54
@ K_MIDINOTE80
Definition keys.h:319
@ K_KP_DIVIDE
Definition keys.h:118
@ K_X360_LEFT_TRIGGER
Definition keys.h:222
@ K_AUX20
Definition keys.h:193
@ K_TEXT
Definition keys.h:53
@ K_MIDINOTE35
Definition keys.h:274
@ K_MIDINOTE2
Definition keys.h:241
@ K_MIDINOTE22
Definition keys.h:261
@ K_JOY6
Definition keys.h:158
@ K_MIDINOTE112
Definition keys.h:351
@ K_MIDINOTE32
Definition keys.h:271
@ K_AUX8
Definition keys.h:181
@ K_RIGHTARROW
Definition keys.h:65
@ K_F3
Definition keys.h:73
@ K_AUX28
Definition keys.h:201
@ K_MIDINOTE26
Definition keys.h:265
@ K_MIDINOTE108
Definition keys.h:347
@ K_MIDINOTE52
Definition keys.h:291
@ K_F7
Definition keys.h:77
@ K_KP_9
Definition keys.h:114
@ K_MIDINOTE98
Definition keys.h:337
@ K_DOWNARROW
Definition keys.h:63
@ K_X360_Y
Definition keys.h:221
@ K_MIDINOTE117
Definition keys.h:356
@ K_MOUSE14
Definition keys.h:146
@ K_X360_B
Definition keys.h:219
@ K_MIDINOTE121
Definition keys.h:360
@ K_MIDINOTE113
Definition keys.h:352
@ K_MIDINOTE99
Definition keys.h:338
@ K_X360_LEFT_THUMB
Definition keys.h:214
@ K_KP_HOME
Definition keys.h:111
@ K_AUX16
Definition keys.h:189
@ K_JOY1
Definition keys.h:153
@ K_MIDINOTE72
Definition keys.h:311
@ K_MIDINOTE47
Definition keys.h:286
@ K_MIDINOTE43
Definition keys.h:282
@ K_MIDINOTE68
Definition keys.h:307
@ K_AUX31
Definition keys.h:204
@ K_AUX17
Definition keys.h:190
@ K_MOUSE16
Definition keys.h:148
@ K_MIDINOTE20
Definition keys.h:259
@ K_AUX4
Definition keys.h:177
@ K_MIDINOTE104
Definition keys.h:343
@ K_MIDINOTE84
Definition keys.h:323
@ K_MIDINOTE87
Definition keys.h:326
@ K_AUX12
Definition keys.h:185
@ K_PGDN
Definition keys.h:86
@ K_MIDINOTE29
Definition keys.h:268
@ K_LEFTARROW
Definition keys.h:64
#define MAX_KEY_BINDS
Definition keys.h:41
void Key_FindKeysForCommand(const char *command, int *keys, int numkeys, int bindmap)
Definition keys.c:1760
const char * Key_KeynumToString(int keynum, char *buf, size_t buflength)
Definition keys.c:1383
void Key_WriteBindings(qfile_t *f)
Definition keys.c:1681
qbool Key_SetBinding(int keynum, int bindmap, const char *binding)
Definition keys.c:1409
qbool Key_SetBindMap(int fg, int bg)
Definition keys.c:1443
void Key_Init(void)
Definition keys.c:1710
int Key_AddChar(int unicode, qbool is_console)
Definition keys.c:703
int chat_bufferpos
Definition keys.c:701
int key_linepos
Definition keys.c:35
signed char chat_mode
Definition keys.c:699
void Key_EventQueue_Block(void)
Definition keys.c:1819
char * keybindings[MAX_BINDMAPS][MAX_KEYS]
Definition keys.c:39
char chat_buffer[MAX_INPUTLINE]
Definition keys.c:700
int Key_ClearEditLine(qbool is_console)
Definition keys.c:668
void Key_EventQueue_Unblock(void)
Definition keys.c:1825
void Key_GetBindMap(int *fg, int *bg)
Definition keys.c:1435
const char * Key_GetBind(int key, int bindmap)
Definition keys.c:1740
keydest_t
Definition keys.h:372
@ key_menu
Definition keys.h:372
@ key_game
Definition keys.h:372
@ key_message
Definition keys.h:372
@ key_void
Definition keys.h:372
@ key_menu_grabbed
Definition keys.h:372
@ key_console
Definition keys.h:372
char key_line[MAX_INPUTLINE]
Definition keys.c:34
void Key_Init_Cvars(void)
keydest_t key_dest
Definition keys.c:37
void Key_Event(int key, int ascii, qbool down)
Definition keys.c:1836
qbool key_insert
Definition keys.c:36
void Key_ReleaseAll_f(cmd_state_t *cmd)
Definition keys.c:2088
void Key_Shutdown(void)
Definition keys.c:1735
int key_consoleactive
Definition keys.c:38
void Key_ReleaseAll(void)
Definition keys.c:2075
int Key_StringToKeynum(const char *str)
Definition keys.c:1354
void cmd(string command,...)
#define MAX_INPUTLINE
maximum size of console commandline, QuakeC strings, and many other text processing buffers
Definition qdefs.h:94
#define MAX_BINDMAPS
Definition qdefs.h:152
bool qbool
Definition qtypes.h:9
float f
command interpreter state - the tokenizing and execution of commands, as well as pointers to which cv...
Definition cmd.h:127