FTEQW
Documentation of the FTE engine source tree.
keys.h
Go to the documentation of this file.
1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19*/
20
21#ifndef __CLIENT_KEYS_H__
22#define __CLIENT_KEYS_H__
23
24enum
25{ //fte's assumed gamepad axis
29
33
34//gah
35#define GPAXIS_LT_TRIGGER GPAXIS_LT_AUX
36#define GPAXIS_RT_TRIGGER GPAXIS_RT_AUX
37};
38
39//
40// these are the key numbers that should be passed to Key_Event
41//
42typedef enum {
43 K_TAB = 9,
44 K_ENTER = 13,
46 K_SPACE = 32,
47
48 // normal keys should be passed as lowercased ascii
50
51
56
61
71
87
106
107 K_MOUSE1, //aka left
108 K_MOUSE2, //aka right
109 K_MOUSE3, //aka middle
110 K_MOUSE4, //aka back
111 K_MOUSE5, //aka forward
112
115
148
165
166 /* if you change the above order, you _will_ break Trinity!
167 * only make modifcations below, unless you want to start
168 * remapping keys for that too */
169
170 /* Section dedicated to SDL controller definitions */
175//for their behaviours in the menus... we may want to put a conditional in here for japanese-style right-for-confirm, but for now I'm lazy and am sticking with western/xbox/steam mappings.
176#define K_GP_DIAMOND_CONFIRM K_GP_DIAMOND_DOWN //roughly equivelent to k_return for menu behaviours
177#define K_GP_DIAMOND_CANCEL K_GP_DIAMOND_RIGHT //roughly like escape, at least in menus
178#define K_GP_DIAMOND_ALTCONFIRM K_GP_DIAMOND_UP //for more negative confirmations.
179 K_GP_VIEW, //aka back (near left stick)
181 K_GP_MENU, //aka options/start (near right stick)
190 K_GP_MISC1, /* share/mic-mute button */
195 K_GP_TOUCHPAD, /* when pressed */
196
197 /* emulated, we'll trigger these 'buttons' when we reach 50% pressed */
209
210 /* extra dinput mouse buttons */
216
217 /*FIXME*/
218#define K_MWHEELLEFT K_MOUSE9
219#define K_MWHEELRIGHT K_MOUSE10
220
221 /* spare joystick button presses */
226
227 /* extra keys */
238
239 /* multimedia keyboard */
251
252 //touchscreen stuff.
253 K_TOUCH, //initial touch
254 //will be paired with one of...
255 K_TOUCHSLIDE, //existing touch became a slide
256 K_TOUCHTAP, //touched briefly without sliding (treat like a left-click, though fired on final release)
257 K_TOUCHLONG, //touch lasted a while and without moving (treat like a right-click)
258
260
261 //360 buttons
268
269 //ps buttons
274} keynum_t;
275
276#define KEY_MODIFIER_SHIFT (1<<0)
277#define KEY_MODIFIER_ALT (1<<1)
278#define KEY_MODIFIER_CTRL (1<<2)
279//#define KEY_MODIFIER_META (1<<?) do we want?
280#define KEY_MODIFIER_ALTBINDMAP (1<<3)
281#define KEY_MODIFIERSTATES (1<<4)
282
283//legacy aliases, lest we ever forget!
284#define K_SHIFT K_LSHIFT
285#define K_CTRL K_LCTRL
286#define K_ALT K_LALT
287#define K_WIN K_LWIN
288
289#ifdef __QUAKEDEF_H__
290typedef enum //highest has priority
291{
292 kdm_game = 1u<<0, //should always be set
293 kdm_centerprint = 1u<<1, //enabled when there's a centerprint menu with clickable things.
294 kdm_message = 1u<<2,
295 kdm_menu = 1u<<3, //layered menus (engine menus, qc menus, or plugins/etc)
296 kdm_console = 1u<<4,
298 kdm_prompt = 1u<<6, //highest priority - popups that require user interaction (eg: confirmation from untrusted console commands)
300
301//unsigned int Key_Dest_Get(void); //returns highest priority destination
302#define Key_Dest_Add(kdm) (key_dest_mask |= (kdm))
303#define Key_Dest_Remove(kdm) (key_dest_mask &= ~(kdm))
304#define Key_Dest_Has(kdm) (key_dest_mask & (kdm))
305#define Key_Dest_Has_Higher(kdm) (key_dest_mask & (~0&~((kdm)|((kdm)-1)))) //must be a single bit
306#define Key_Dest_Toggle(kdm) do {if (key_dest_mask & kdm) Key_Dest_Remove(kdm); else Key_Dest_Add(kdm);}while(0)
307
308extern unsigned int key_dest_absolutemouse; //if the active key dest bit is set, the mouse is absolute.
309extern unsigned int key_dest_mask;
310extern char *keybindings[K_MAX][KEY_MODIFIERSTATES];
311
312extern unsigned int keydown[K_MAX]; //bitmask of devices.
313
314enum
315{
316 kc_game, //csprogs.dat
319 kc_plugin, //for plugins
320 kc_console, //generic engine-defined cursor
321 kc_max
323extern struct key_cursor_s
324{
325 char name[MAX_QPATH];
326 float hotspot[2];
327 float scale;
329 void *handle;
331
332extern unsigned char *chat_buffer;
333extern int chat_bufferpos;
334extern qboolean chat_team;
335
336void Key_Event (unsigned int devid, int key, unsigned int unicode, qboolean down);
337void Key_Init (void);
340void Key_SetBinding (int keynum, int modifier, const char *binding, int cmdlevel);
341void Key_ClearStates (void);
342qboolean Key_Centerprint(int key, int unicode, unsigned int devid);
343void Key_Unbindall_f (void); //aka: Key_Shutdown
344void Key_ConsoleReplace(const char *instext);
345void Key_DefaultLinkClicked(console_t *con, char *text, char *info);
346void Key_HandleConsoleLink(console_t *con, char *buffer);
347
348qboolean Key_Console (console_t *con, int key, unsigned int unicode);
349void Key_ConsoleRelease(console_t *con, int key, unsigned int unicode);
350
351struct console_s;
352qboolean Key_GetConsoleSelectionBox(struct console_s *con, int *sx, int *sy, int *ex, int *ey);
354
355const char *Key_Demoji(char *buffer, size_t buffersize, const char *in); //strips out :smile: stuff.
356void Key_EmojiCompletion_c(int argn, const char *partial, struct xcommandargcompletioncb_s *ctx);
357#endif
358#endif
359
qboolean
Definition: api_menu.h:34
char * text
Definition: decomp.c:375
void size_t buffersize
Definition: gl_model.c:912
static EGLSurface EGLSurface EGLContext ctx
Definition: gl_videgl.c:47
GLuint GLcharARB * name
Definition: glquake.h:155
keynum_t
Definition: keys.h:42
@ K_F2
Definition: keys.h:73
@ K_MM_VOLUME_MUTE
Definition: keys.h:246
@ K_F1
Definition: keys.h:72
@ K_GP_PADDLE4
Definition: keys.h:194
@ K_MOUSE4
Definition: keys.h:110
@ K_GP_VIEW
Definition: keys.h:179
@ K_JOY19
Definition: keys.h:134
@ K_GP_UNKNOWN
Definition: keys.h:208
@ K_KP_5
Definition: keys.h:92
@ K_F12
Definition: keys.h:83
@ K_GP_GUIDE
Definition: keys.h:180
@ K_KP_RIGHTARROW
Definition: keys.h:93
@ K_DEL
Definition: keys.h:66
@ K_JOY22
Definition: keys.h:137
@ K_KP_MINUS
Definition: keys.h:101
@ K_JOY21
Definition: keys.h:136
@ K_GP_DPAD_DOWN
Definition: keys.h:187
@ K_MM_BROWSER_BACK
Definition: keys.h:240
@ K_F6
Definition: keys.h:77
@ K_JOY32
Definition: keys.h:147
@ K_F4
Definition: keys.h:75
@ K_JOY7
Definition: keys.h:122
@ K_GP_LEFT_THUMB_RIGHT
Definition: keys.h:203
@ K_AUX15
Definition: keys.h:163
@ K_GP_LEFT_THUMB_UP
Definition: keys.h:200
@ K_SCRLCK
Definition: keys.h:52
@ K_KP_PGDN
Definition: keys.h:96
@ K_JOY12
Definition: keys.h:127
@ K_RALT
Definition: keys.h:234
@ K_GP_PADDLE2
Definition: keys.h:192
@ K_JOY25
Definition: keys.h:140
@ K_MOUSE5
Definition: keys.h:111
@ K_KP_DEL
Definition: keys.h:99
@ K_MOUSE9
Definition: keys.h:214
@ K_KP_PGUP
Definition: keys.h:90
@ K_GP_MENU
Definition: keys.h:181
@ K_GP_Y
Definition: keys.h:265
@ K_RCTRL
Definition: keys.h:235
@ K_MM_TRACK_PLAYPAUSE
Definition: keys.h:250
@ K_MM_BROWSER_FORWARD
Definition: keys.h:242
@ K_GP_TOUCHPAD
Definition: keys.h:195
@ K_GP_RIGHT_THUMB_UP
Definition: keys.h:204
@ K_JOY17
Definition: keys.h:132
@ K_KP_UPARROW
Definition: keys.h:89
@ K_KP_INS
Definition: keys.h:98
@ K_KP_PLUS
Definition: keys.h:102
@ K_LALT
Definition: keys.h:62
@ K_GP_START
Definition: keys.h:267
@ K_GP_DIAMOND_RIGHT
Definition: keys.h:172
@ K_GP_LEFT_SHOULDER
Definition: keys.h:184
@ K_JOY23
Definition: keys.h:138
@ K_GP_MISC1
Definition: keys.h:190
@ K_MWHEELUP
Definition: keys.h:114
@ K_KP_END
Definition: keys.h:94
@ K_JOY30
Definition: keys.h:145
@ K_MM_TRACK_NEXT
Definition: keys.h:247
@ K_MM_BROWSER_FAVORITES
Definition: keys.h:241
@ K_F13
Definition: keys.h:84
@ K_MOUSE7
Definition: keys.h:212
@ K_JOY10
Definition: keys.h:125
@ K_GP_PS_CROSS
Definition: keys.h:270
@ K_JOY_DOWN
Definition: keys.h:223
@ K_JOY4
Definition: keys.h:119
@ K_JOY13
Definition: keys.h:128
@ K_JOY14
Definition: keys.h:129
@ K_GP_BACK
Definition: keys.h:266
@ K_JOY15
Definition: keys.h:130
@ K_JOY16
Definition: keys.h:131
@ K_JOY_LEFT
Definition: keys.h:224
@ K_GP_DIAMOND_LEFT
Definition: keys.h:173
@ K_ENTER
Definition: keys.h:44
@ K_F9
Definition: keys.h:80
@ K_F14
Definition: keys.h:85
@ K_TOUCHLONG
Definition: keys.h:257
@ K_MOUSE2
Definition: keys.h:108
@ K_MOUSE1
Definition: keys.h:107
@ K_GP_DPAD_RIGHT
Definition: keys.h:189
@ K_PRINTSCREEN
Definition: keys.h:237
@ K_AUX13
Definition: keys.h:161
@ K_MM_BROWSER_STOP
Definition: keys.h:245
@ K_JOY_RIGHT
Definition: keys.h:225
@ K_AUX2
Definition: keys.h:150
@ K_UPARROW
Definition: keys.h:57
@ K_GP_PS_SQUARE
Definition: keys.h:272
@ K_GP_RIGHT_THUMB_LEFT
Definition: keys.h:206
@ K_F8
Definition: keys.h:79
@ K_LSHIFT
Definition: keys.h:64
@ K_MM_TRACK_PREV
Definition: keys.h:248
@ K_AUX9
Definition: keys.h:157
@ K_GP_PADDLE1
Definition: keys.h:191
@ K_GP_LEFT_STICK
Definition: keys.h:182
@ K_ESCAPE
Definition: keys.h:45
@ K_MOUSE6
Definition: keys.h:211
@ K_F5
Definition: keys.h:76
@ K_JOY18
Definition: keys.h:133
@ K_JOY5
Definition: keys.h:120
@ K_TOUCHSLIDE
Definition: keys.h:255
@ K_JOY31
Definition: keys.h:146
@ K_TOUCHTAP
Definition: keys.h:256
@ K_GP_RIGHT_TRIGGER
Definition: keys.h:199
@ K_JOY29
Definition: keys.h:144
@ K_MOUSE8
Definition: keys.h:213
@ K_POWER
Definition: keys.h:54
@ K_GP_PS_TRIANGLE
Definition: keys.h:273
@ K_JOY3
Definition: keys.h:118
@ K_GP_X
Definition: keys.h:264
@ K_JOY9
Definition: keys.h:124
@ K_GP_A
Definition: keys.h:262
@ K_VOLDOWN
Definition: keys.h:233
@ K_AUX3
Definition: keys.h:151
@ K_JOY28
Definition: keys.h:143
@ K_JOY26
Definition: keys.h:141
@ K_AUX5
Definition: keys.h:153
@ K_JOY27
Definition: keys.h:142
@ K_AUX6
Definition: keys.h:154
@ K_GP_LEFT_THUMB_DOWN
Definition: keys.h:201
@ K_AUX7
Definition: keys.h:155
@ K_PGUP
Definition: keys.h:68
@ K_RWIN
Definition: keys.h:229
@ K_AUX11
Definition: keys.h:159
@ K_PAUSE
Definition: keys.h:55
@ K_GP_RIGHT_SHOULDER
Definition: keys.h:185
@ K_JOY20
Definition: keys.h:135
@ K_KP_DOWNARROW
Definition: keys.h:95
@ K_KP_NUMLOCK
Definition: keys.h:103
@ K_JOY24
Definition: keys.h:139
@ K_AUX1
Definition: keys.h:149
@ K_BACKSPACE
Definition: keys.h:49
@ K_GP_PS_CIRCLE
Definition: keys.h:271
@ K_JOY2
Definition: keys.h:117
@ K_CAPSLOCK
Definition: keys.h:53
@ K_KP_SLASH
Definition: keys.h:100
@ K_MAX
Definition: keys.h:259
@ K_MOUSE3
Definition: keys.h:109
@ K_END
Definition: keys.h:70
@ K_JOY_UP
Definition: keys.h:222
@ K_JOY11
Definition: keys.h:126
@ K_F15
Definition: keys.h:86
@ K_INS
Definition: keys.h:65
@ K_F10
Definition: keys.h:81
@ K_KP_ENTER
Definition: keys.h:97
@ K_VOLUP
Definition: keys.h:232
@ K_RSHIFT
Definition: keys.h:236
@ K_AUX14
Definition: keys.h:162
@ K_GP_PADDLE3
Definition: keys.h:193
@ K_KP_LEFTARROW
Definition: keys.h:91
@ K_JOY8
Definition: keys.h:123
@ K_GP_B
Definition: keys.h:263
@ K_KP_EQUALS
Definition: keys.h:105
@ K_GP_LEFT_THUMB_LEFT
Definition: keys.h:202
@ K_MWHEELDOWN
Definition: keys.h:113
@ K_F11
Definition: keys.h:82
@ K_SPACE
Definition: keys.h:46
@ K_HOME
Definition: keys.h:69
@ K_MOUSE10
Definition: keys.h:215
@ K_AUX10
Definition: keys.h:158
@ K_GP_LEFT_TRIGGER
Definition: keys.h:198
@ K_TAB
Definition: keys.h:43
@ K_GP_RIGHT_STICK
Definition: keys.h:183
@ K_LWIN
Definition: keys.h:228
@ K_JOY6
Definition: keys.h:121
@ K_GP_RIGHT_THUMB_RIGHT
Definition: keys.h:207
@ K_AUX8
Definition: keys.h:156
@ K_RIGHTARROW
Definition: keys.h:60
@ K_F3
Definition: keys.h:74
@ K_MM_BROWSER_HOME
Definition: keys.h:243
@ K_MM_TRACK_STOP
Definition: keys.h:249
@ K_F7
Definition: keys.h:78
@ K_DOWNARROW
Definition: keys.h:58
@ K_SEARCH
Definition: keys.h:231
@ K_GP_DIAMOND_UP
Definition: keys.h:174
@ K_KP_STAR
Definition: keys.h:104
@ K_KP_HOME
Definition: keys.h:88
@ K_GP_DPAD_LEFT
Definition: keys.h:188
@ K_TOUCH
Definition: keys.h:253
@ K_AUX16
Definition: keys.h:164
@ K_JOY1
Definition: keys.h:116
@ K_APP
Definition: keys.h:230
@ K_MM_BROWSER_REFRESH
Definition: keys.h:244
@ K_AUX4
Definition: keys.h:152
@ K_GP_DPAD_UP
Definition: keys.h:186
@ K_LCTRL
Definition: keys.h:63
@ K_AUX12
Definition: keys.h:160
@ K_PGDN
Definition: keys.h:67
@ K_GP_DIAMOND_DOWN
Definition: keys.h:171
@ K_GP_RIGHT_THUMB_DOWN
Definition: keys.h:205
@ K_LEFTARROW
Definition: keys.h:59
void Key_HandleConsoleLink(console_t *con, char *buffer)
Definition: keys.c:1168
void Key_DefaultLinkClicked(console_t *con, char *text, char *info)
Definition: keys.c:857
qboolean Key_GetConsoleSelectionBox(struct console_s *con, int *sx, int *sy, int *ex, int *ey)
Definition: keys.c:709
keydestmask_t
Definition: keys.h:291
@ kdm_console
Definition: keys.h:296
@ kdm_menu
Definition: keys.h:295
@ kdm_game
Definition: keys.h:292
@ kdm_cwindows
Definition: keys.h:297
@ kdm_prompt
Definition: keys.h:298
@ kdm_centerprint
Definition: keys.h:293
@ kdm_message
Definition: keys.h:294
unsigned char * chat_buffer
Definition: keys.c:2215
unsigned int key_dest_mask
Definition: keys.c:41
void Key_Event(unsigned int devid, int key, unsigned int unicode, qboolean down)
Definition: keys.c:2916
void Key_Init(void)
Definition: keys.c:2811
void Key_EmojiCompletion_c(int argn, const char *partial, struct xcommandargcompletioncb_s *ctx)
Definition: keys.c:1409
const char * Key_Demoji(char *buffer, size_t buffersize, const char *in)
Definition: keys.c:1435
@ GPAXIS_RT_DOWN
Definition: keys.h:31
@ GPAXIS_RT_AUX
Definition: keys.h:32
@ GPAXIS_LT_DOWN
Definition: keys.h:27
@ GPAXIS_LT_RIGHT
Definition: keys.h:26
@ GPAXIS_RT_RIGHT
Definition: keys.h:30
@ GPAXIS_LT_AUX
Definition: keys.h:28
int chat_bufferpos
Definition: keys.c:2216
void Key_ConsoleReplace(const char *instext)
Definition: keys.c:847
@ kc_console
Definition: keys.h:320
@ kc_plugin
Definition: keys.h:319
@ kc_nativemenu
Definition: keys.h:318
@ kc_menuqc
Definition: keys.h:317
@ kc_game
Definition: keys.h:316
@ kc_max
Definition: keys.h:321
qboolean Key_MouseShouldBeFree(void)
Definition: keys.c:2891
qboolean Key_Console(console_t *con, int key, unsigned int unicode)
Definition: keys.c:1829
void Key_ConsoleRelease(console_t *con, int key, unsigned int unicode)
Definition: keys.c:1214
struct key_cursor_s key_customcursor[kc_max]
unsigned int keydown[K_MAX]
Definition: keys.c:52
void Key_WriteBindings(struct vfsfile_s *f)
void IN_WriteButtons(vfsfile_t *f, qboolean all)
Definition: cl_input.c:986
unsigned int key_dest_absolutemouse
Definition: keys.c:43
qboolean Key_Centerprint(int key, int unicode, unsigned int devid)
Definition: cl_screen.c:908
char * keybindings[K_MAX][KEY_MODIFIERSTATES]
Definition: keys.c:48
void Key_SetBinding(int keynum, int modifier, const char *binding, int cmdlevel)
Definition: keys.c:2477
void Key_ClearStates(void)
Definition: keys.c:3309
void Key_Unbindall_f(void)
Definition: keys.c:2551
qboolean chat_team
Definition: keys.c:2214
static ALC_API ALCvoid * buffer
Definition: snd_al.c:259
static spx_int16_t * in
Definition: snd_dma.c:488
Definition: console.h:150
Definition: keys.h:324
float hotspot[2]
Definition: keys.h:326
float scale
Definition: keys.h:327
qboolean dirty
Definition: keys.h:328
void * handle
Definition: keys.h:329
Definition: common.h:620
Definition: cmd.h:135
void * vfsfile_t
Definition: sys_plugfte.h:2