Adding support for the "media" play/pause/stop/next/prev buttons
[blender.git] / source / blender / windowmanager / wm_event_types.h
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
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.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * Contributor(s): Blender Foundation
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /*
29  *  These define have its origin at sgi, where all device defines were written down in device.h.
30  *  Blender copied the conventions quite some, and expanded it with internal new defines (ton)
31  *
32  */ 
33
34
35 #ifndef WM_EVENT_TYPES_H
36 #define WM_EVENT_TYPES_H
37
38 /* customdata type */
39 #define EVT_DATA_TABLET         1
40 #define EVT_DATA_GESTURE        2
41 #define EVT_DATA_TIMER          3
42 #define EVT_DATA_LISTBASE       4
43
44 /* tablet active, matches GHOST_TTabletMode */
45 #define EVT_TABLET_NONE         0
46 #define EVT_TABLET_STYLUS       1
47 #define EVT_TABLET_ERASER       2
48
49 #define MOUSEX          4
50 #define MOUSEY          5
51
52 /* MOUSE : 0x00x */
53 #define LEFTMOUSE               1
54 #define MIDDLEMOUSE             2
55 #define RIGHTMOUSE              3
56 #define MOUSEMOVE               4
57                 /* only use if you want user option switch possible */
58 #define ACTIONMOUSE             5
59 #define SELECTMOUSE             6
60                 /* Extra mouse buttons */
61 #define BUTTON4MOUSE    7
62 #define BUTTON5MOUSE    8
63                 /* Extra trackpad gestures */
64 #define MOUSEPAN                14
65 #define MOUSEZOOM               15
66 #define MOUSEROTATE             16
67                 /* defaults from ghost */
68 #define WHEELUPMOUSE    10
69 #define WHEELDOWNMOUSE  11
70                 /* mapped with userdef */
71 #define WHEELINMOUSE    12
72 #define WHEELOUTMOUSE   13
73 #define INBETWEEN_MOUSEMOVE     17
74
75
76 /* SYSTEM : 0x01xx */
77 #define INPUTCHANGE             0x0103  /* input connected or disconnected */
78 #define WINDEACTIVATE   0x0104  /* window is deactivated, focus lost */
79
80 #define TIMER                   0x0110  /* timer event, passed on to all queues */
81 #define TIMER0                  0x0111  /* timer event, slot for internal use */
82 #define TIMER1                  0x0112  /* timer event, slot for internal use */
83 #define TIMER2                  0x0113  /* timer event, slot for internal use */
84 #define TIMERJOBS               0x0114  /* timer event, internal use */
85 #define TIMERAUTOSAVE   0x0115  /* timer event, internal use */
86
87 /* standard keyboard */
88 #define AKEY            'a'
89 #define BKEY            'b'
90 #define CKEY            'c'
91 #define DKEY            'd'
92 #define EKEY            'e'
93 #define FKEY            'f'
94 #define GKEY            'g'
95 #define HKEY            'h'
96 #define IKEY            'i'
97 #define JKEY            'j'
98 #define KKEY            'k'
99 #define LKEY            'l'
100 #define MKEY            'm'
101 #define NKEY            'n'
102 #define OKEY            'o'
103 #define PKEY            'p'
104 #define QKEY            'q'
105 #define RKEY            'r'
106 #define SKEY            's'
107 #define TKEY            't'
108 #define UKEY            'u'
109 #define VKEY            'v'
110 #define WKEY            'w'
111 #define XKEY            'x'
112 #define YKEY            'y'
113 #define ZKEY            'z'
114
115 #define ZEROKEY         '0'
116 #define ONEKEY          '1'
117 #define TWOKEY          '2'
118 #define THREEKEY        '3'
119 #define FOURKEY         '4'
120 #define FIVEKEY         '5'
121 #define SIXKEY          '6'
122 #define SEVENKEY        '7'
123 #define EIGHTKEY        '8'
124 #define NINEKEY         '9'
125
126 #define CAPSLOCKKEY             211
127
128 #define LEFTCTRLKEY             212
129 #define LEFTALTKEY              213
130 #define RIGHTALTKEY     214
131 #define RIGHTCTRLKEY    215
132 #define RIGHTSHIFTKEY   216
133 #define LEFTSHIFTKEY    217
134
135 #define ESCKEY                  218
136 #define TABKEY                  219
137 #define RETKEY                  220
138 #define SPACEKEY                221
139 #define LINEFEEDKEY             222
140 #define BACKSPACEKEY    223
141 #define DELKEY                  224
142 #define SEMICOLONKEY    225
143 #define PERIODKEY               226
144 #define COMMAKEY                227
145 #define QUOTEKEY                228
146 #define ACCENTGRAVEKEY  229
147 #define MINUSKEY                230
148 #define SLASHKEY                232
149 #define BACKSLASHKEY    233
150 #define EQUALKEY                234
151 #define LEFTBRACKETKEY  235
152 #define RIGHTBRACKETKEY 236
153
154 #define LEFTARROWKEY    137
155 #define DOWNARROWKEY    138
156 #define RIGHTARROWKEY   139
157 #define UPARROWKEY              140
158
159 #define PAD0                    150
160 #define PAD1                    151
161 #define PAD2                    152
162 #define PAD3                    153
163 #define PAD4                    154
164 #define PAD5                    155
165 #define PAD6                    156
166 #define PAD7                    157
167 #define PAD8                    158
168 #define PAD9                    159
169
170
171 #define PADPERIOD               199
172 #define PADSLASHKEY     161
173 #define PADASTERKEY     160
174
175 #define PADMINUS                162
176 #define PADENTER                163
177 #define PADPLUSKEY              164
178
179 #define F1KEY           300
180 #define F2KEY           301
181 #define F3KEY           302
182 #define F4KEY           303
183 #define F5KEY           304
184 #define F6KEY           305
185 #define F7KEY           306
186 #define F8KEY           307
187 #define F9KEY           308
188 #define F10KEY          309
189 #define F11KEY          310
190 #define F12KEY          311
191 #define F13KEY          312
192 #define F14KEY          313
193 #define F15KEY          314
194 #define F16KEY          315
195 #define F17KEY          316
196 #define F18KEY          317
197 #define F19KEY          318
198
199 #define PAUSEKEY        165
200 #define INSERTKEY       166
201 #define HOMEKEY         167
202 #define PAGEUPKEY       168
203 #define PAGEDOWNKEY     169
204 #define ENDKEY          170
205
206 #define UNKNOWNKEY      171
207 #define OSKEY           172
208 #define GRLESSKEY       173
209
210 // XXX: are these codes ok?
211 #define MEDIAPLAY       174
212 #define MEDIASTOP       175
213 #define MEDIAFIRST      176
214 #define MEDIALAST       177
215
216 /* for event checks */
217         /* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */
218 #define ISTEXTINPUT(event)      (event >=' ' && event <=255)
219
220         /* test whether the event is a key on the keyboard */
221 #define ISKEYBOARD(event)       (event >=' ' && event <=320)
222
223         /* test whether the event is a modifier key */
224 #define ISKEYMODIFIER(event)    ((event >= LEFTCTRLKEY && event <= LEFTSHIFTKEY) || event == OSKEY)
225
226         /* test whether the event is a mouse button */
227 #define ISMOUSE(event)  (event >= LEFTMOUSE && event <= MOUSEROTATE)
228
229         /* test whether the event is timer event */
230 #define ISTIMER(event)  (event >= TIMER && event <= TIMERAUTOSAVE)
231
232         /* test whether the event is tweak event */
233 #define ISTWEAK(event)  (event >= EVT_TWEAK_L && event <= EVT_GESTURE)
234
235 /* test whether event type is acceptable as hotkey, excluding modifiers */
236 #define ISHOTKEY(event) ((ISKEYBOARD(event) || ISMOUSE(event)) && event!=ESCKEY && !(event>=LEFTCTRLKEY && event<=LEFTSHIFTKEY) && !(event>=UNKNOWNKEY && event<=GRLESSKEY))
237
238 /* **************** BLENDER GESTURE EVENTS (0x5000) **************** */
239
240 #define EVT_ACTIONZONE_AREA             20480
241 #define EVT_ACTIONZONE_REGION   20481
242
243                 /* tweak events, for L M R mousebuttons */
244 #define EVT_TWEAK_L             20482
245 #define EVT_TWEAK_M             20483
246 #define EVT_TWEAK_R             20484
247                 /* tweak events for action or select mousebutton */
248 #define EVT_TWEAK_A             20485
249 #define EVT_TWEAK_S             20486
250
251 #define EVT_GESTURE             20496
252
253 /* value of tweaks and line gestures, note, KM_ANY (-1) works for this case too */
254 #define EVT_GESTURE_N           1
255 #define EVT_GESTURE_NE          2
256 #define EVT_GESTURE_E           3
257 #define EVT_GESTURE_SE          4
258 #define EVT_GESTURE_S           5
259 #define EVT_GESTURE_SW          6
260 #define EVT_GESTURE_W           7
261 #define EVT_GESTURE_NW          8
262 /* value of corner gestures */
263 #define EVT_GESTURE_N_E         9
264 #define EVT_GESTURE_N_W         10
265 #define EVT_GESTURE_E_N         11
266 #define EVT_GESTURE_E_S         12
267 #define EVT_GESTURE_S_E         13
268 #define EVT_GESTURE_S_W         14
269 #define EVT_GESTURE_W_S         15
270 #define EVT_GESTURE_W_N         16
271
272 /* **************** OTHER BLENDER EVENTS ********************* */
273
274 /* event->type */
275 #define EVT_FILESELECT  0x5020
276
277 /* event->val */
278 #define EVT_FILESELECT_OPEN                                     1
279 #define EVT_FILESELECT_FULL_OPEN                        2
280 #define EVT_FILESELECT_EXEC                                     3
281 #define EVT_FILESELECT_CANCEL                           4
282 #define EVT_FILESELECT_EXTERNAL_CANCEL          5
283
284 /* event->type */
285 #define EVT_BUT_OPEN    0x5021
286 #define EVT_MODAL_MAP   0x5022
287 #define EVT_DROP                0x5023
288 #define EVT_BUT_CANCEL  0x5024
289
290 /* NOTE: these defines are saved in keymap files, do not change values but just add new ones */
291 #define GESTURE_MODAL_CANCEL            1
292 #define GESTURE_MODAL_CONFIRM           2
293
294 #define GESTURE_MODAL_SELECT            3
295 #define GESTURE_MODAL_DESELECT          4
296
297 #define GESTURE_MODAL_NOP                       5 /* circle select when no mouse button is pressed */
298
299 #define GESTURE_MODAL_CIRCLE_ADD        6 /* circle sel: larger brush */
300 #define GESTURE_MODAL_CIRCLE_SUB        7 /* circle sel: smaller brush */
301
302 #define GESTURE_MODAL_BEGIN                     8 /* border select/straight line, activate, use release to detect which button */
303
304 #define GESTURE_MODAL_IN                        9
305 #define GESTURE_MODAL_OUT                       10
306
307
308 #endif  /* WM_EVENT_TYPES_H */
309