style cleanup: braces/indentation
[blender-staging.git] / source / blender / windowmanager / wm_event_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version. 
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor(s): Blender Foundation
19  *
20  * ***** END GPL LICENSE BLOCK *****
21  */
22
23 /** \file blender/windowmanager/wm_event_types.h
24  *  \ingroup wm
25  */
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_GESTURE        1
40 #define EVT_DATA_TIMER          2
41 #define EVT_DATA_LISTBASE       3
42 #define EVT_DATA_NDOF_MOTION    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
53 /* *** wmEvent.type *** */
54
55 /* non-event, for example disabled timer */
56 #define EVENT_NONE              0
57 /* MOUSE : 0x00x */
58 #define LEFTMOUSE               1
59 #define MIDDLEMOUSE             2
60 #define RIGHTMOUSE              3
61 #define MOUSEMOVE               4
62                 /* only use if you want user option switch possible */
63 #define ACTIONMOUSE             5
64 #define SELECTMOUSE             6
65                 /* Extra mouse buttons */
66 #define BUTTON4MOUSE    7
67 #define BUTTON5MOUSE    8
68                 /* Extra trackpad gestures */
69 #define MOUSEPAN                14
70 #define MOUSEZOOM               15
71 #define MOUSEROTATE             16
72                 /* defaults from ghost */
73 #define WHEELUPMOUSE    10
74 #define WHEELDOWNMOUSE  11
75                 /* mapped with userdef */
76 #define WHEELINMOUSE    12
77 #define WHEELOUTMOUSE   13
78 #define INBETWEEN_MOUSEMOVE     17
79
80
81 /* NDOF (from SpaceNavigator & friends)
82  * These should be kept in sync with GHOST_NDOFManager.h
83  * Ordering matters, exact values do not. */
84
85 #define NDOF_MOTION 400
86
87 enum {
88         // used internally, never sent
89         NDOF_BUTTON_NONE = NDOF_MOTION,
90         // these two are available from any 3Dconnexion device
91         NDOF_BUTTON_MENU,
92         NDOF_BUTTON_FIT,
93         // standard views
94         NDOF_BUTTON_TOP,
95         NDOF_BUTTON_BOTTOM,
96         NDOF_BUTTON_LEFT,
97         NDOF_BUTTON_RIGHT,
98         NDOF_BUTTON_FRONT,
99         NDOF_BUTTON_BACK,
100         // more views
101         NDOF_BUTTON_ISO1,
102         NDOF_BUTTON_ISO2,
103         // 90 degree rotations
104         NDOF_BUTTON_ROLL_CW,
105         NDOF_BUTTON_ROLL_CCW,
106         NDOF_BUTTON_SPIN_CW,
107         NDOF_BUTTON_SPIN_CCW,
108         NDOF_BUTTON_TILT_CW,
109         NDOF_BUTTON_TILT_CCW,
110         // device control
111         NDOF_BUTTON_ROTATE,
112         NDOF_BUTTON_PANZOOM,
113         NDOF_BUTTON_DOMINANT,
114         NDOF_BUTTON_PLUS,
115         NDOF_BUTTON_MINUS,
116         // keyboard emulation
117         NDOF_BUTTON_ESC,
118         NDOF_BUTTON_ALT,
119         NDOF_BUTTON_SHIFT,
120         NDOF_BUTTON_CTRL,
121         // general-purpose buttons
122         NDOF_BUTTON_1,
123         NDOF_BUTTON_2,
124         NDOF_BUTTON_3,
125         NDOF_BUTTON_4,
126         NDOF_BUTTON_5,
127         NDOF_BUTTON_6,
128         NDOF_BUTTON_7,
129         NDOF_BUTTON_8,
130         NDOF_BUTTON_9,
131         NDOF_BUTTON_10,
132         // more general-purpose buttons
133         NDOF_BUTTON_A,
134         NDOF_BUTTON_B,
135         NDOF_BUTTON_C,
136         // the end
137         NDOF_LAST
138 };
139
140
141 /* SYSTEM : 0x01xx */
142 #define INPUTCHANGE             0x0103  /* input connected or disconnected */
143 #define WINDEACTIVATE   0x0104  /* window is deactivated, focus lost */
144
145 #define TIMER                   0x0110  /* timer event, passed on to all queues */
146 #define TIMER0                  0x0111  /* timer event, slot for internal use */
147 #define TIMER1                  0x0112  /* timer event, slot for internal use */
148 #define TIMER2                  0x0113  /* timer event, slot for internal use */
149 #define TIMERJOBS               0x0114  /* timer event, jobs system */
150 #define TIMERAUTOSAVE   0x0115  /* timer event, autosave */
151 #define TIMERREPORT             0x0116  /* timer event, reports */
152 #define TIMERREGION             0x0117  /* timer event, region slide in/out */
153 #define TIMERF                  0x011F  /* last timer */
154
155 /* test whether the event is timer event */
156 #define ISTIMER(event_type)     (event_type >= TIMER && event_type <= TIMERF)
157
158 /* standard keyboard */
159 #define AKEY            'a'
160 #define BKEY            'b'
161 #define CKEY            'c'
162 #define DKEY            'd'
163 #define EKEY            'e'
164 #define FKEY            'f'
165 #define GKEY            'g'
166 #define HKEY            'h'
167 #define IKEY            'i'
168 #define JKEY            'j'
169 #define KKEY            'k'
170 #define LKEY            'l'
171 #define MKEY            'm'
172 #define NKEY            'n'
173 #define OKEY            'o'
174 #define PKEY            'p'
175 #define QKEY            'q'
176 #define RKEY            'r'
177 #define SKEY            's'
178 #define TKEY            't'
179 #define UKEY            'u'
180 #define VKEY            'v'
181 #define WKEY            'w'
182 #define XKEY            'x'
183 #define YKEY            'y'
184 #define ZKEY            'z'
185
186 #define ZEROKEY         '0'
187 #define ONEKEY          '1'
188 #define TWOKEY          '2'
189 #define THREEKEY        '3'
190 #define FOURKEY         '4'
191 #define FIVEKEY         '5'
192 #define SIXKEY          '6'
193 #define SEVENKEY        '7'
194 #define EIGHTKEY        '8'
195 #define NINEKEY         '9'
196
197 #define CAPSLOCKKEY             211
198
199 #define LEFTCTRLKEY             212
200 #define LEFTALTKEY              213
201 #define RIGHTALTKEY     214
202 #define RIGHTCTRLKEY    215
203 #define RIGHTSHIFTKEY   216
204 #define LEFTSHIFTKEY    217
205
206 #define ESCKEY                  218
207 #define TABKEY                  219
208 #define RETKEY                  220
209 #define SPACEKEY                221
210 #define LINEFEEDKEY             222
211 #define BACKSPACEKEY    223
212 #define DELKEY                  224
213 #define SEMICOLONKEY    225
214 #define PERIODKEY               226
215 #define COMMAKEY                227
216 #define QUOTEKEY                228
217 #define ACCENTGRAVEKEY  229
218 #define MINUSKEY                230
219 #define SLASHKEY                232
220 #define BACKSLASHKEY    233
221 #define EQUALKEY                234
222 #define LEFTBRACKETKEY  235
223 #define RIGHTBRACKETKEY 236
224
225 #define LEFTARROWKEY    137
226 #define DOWNARROWKEY    138
227 #define RIGHTARROWKEY   139
228 #define UPARROWKEY              140
229
230 #define PAD0                    150
231 #define PAD1                    151
232 #define PAD2                    152
233 #define PAD3                    153
234 #define PAD4                    154
235 #define PAD5                    155
236 #define PAD6                    156
237 #define PAD7                    157
238 #define PAD8                    158
239 #define PAD9                    159
240
241
242 #define PADPERIOD               199
243 #define PADSLASHKEY     161
244 #define PADASTERKEY     160
245
246 #define PADMINUS                162
247 #define PADENTER                163
248 #define PADPLUSKEY              164
249
250 #define F1KEY           300
251 #define F2KEY           301
252 #define F3KEY           302
253 #define F4KEY           303
254 #define F5KEY           304
255 #define F6KEY           305
256 #define F7KEY           306
257 #define F8KEY           307
258 #define F9KEY           308
259 #define F10KEY          309
260 #define F11KEY          310
261 #define F12KEY          311
262 #define F13KEY          312
263 #define F14KEY          313
264 #define F15KEY          314
265 #define F16KEY          315
266 #define F17KEY          316
267 #define F18KEY          317
268 #define F19KEY          318
269
270 #define PAUSEKEY        165
271 #define INSERTKEY       166
272 #define HOMEKEY         167
273 #define PAGEUPKEY       168
274 #define PAGEDOWNKEY     169
275 #define ENDKEY          170
276
277 #define UNKNOWNKEY      171
278 #define OSKEY           172
279 #define GRLESSKEY       173
280
281 // XXX: are these codes ok?
282 #define MEDIAPLAY       174
283 #define MEDIASTOP       175
284 #define MEDIAFIRST      176
285 #define MEDIALAST       177
286
287 /* for event checks */
288         /* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */
289         /* UNUSED - see wm_eventmatch - BUG [#30479] */
290 // #define ISTEXTINPUT(event_type)  (event_type >= ' ' && event_type <= 255)
291 /* note, an alternative could be to check 'event->utf8_buf' */
292
293         /* test whether the event is a key on the keyboard */
294 #define ISKEYBOARD(event_type)  (event_type >= ' ' && event_type <= 320)
295
296         /* test whether the event is a modifier key */
297 #define ISKEYMODIFIER(event_type)  ((event_type >= LEFTCTRLKEY && event_type <= LEFTSHIFTKEY) || event_type == OSKEY)
298
299         /* test whether the event is a mouse button */
300 #define ISMOUSE(event_type)  (event_type >= LEFTMOUSE && event_type <= MOUSEROTATE)
301
302         /* test whether the event is tweak event */
303 #define ISTWEAK(event_type)  (event_type >= EVT_TWEAK_L && event_type <= EVT_GESTURE)
304
305         /* test whether the event is a NDOF event */
306 #define ISNDOF(event_type)  (event_type >= NDOF_MOTION && event_type < NDOF_LAST)
307
308 /* test whether event type is acceptable as hotkey, excluding modifiers */
309 #define ISHOTKEY(event_type)                                                  \
310         ((ISKEYBOARD(event_type) || ISMOUSE(event_type) || ISNDOF(event_type)) && \
311          (event_type != ESCKEY) &&                                                \
312          (event_type >= LEFTCTRLKEY && event_type <= LEFTSHIFTKEY) == FALSE &&    \
313          (event_type >= UNKNOWNKEY  && event_type <= GRLESSKEY) == FALSE)
314
315 /* **************** BLENDER GESTURE EVENTS (0x5000) **************** */
316
317 #define EVT_ACTIONZONE_AREA             20480
318 #define EVT_ACTIONZONE_REGION   20481
319
320                 /* tweak events, for L M R mousebuttons */
321 #define EVT_TWEAK_L             20482
322 #define EVT_TWEAK_M             20483
323 #define EVT_TWEAK_R             20484
324                 /* tweak events for action or select mousebutton */
325 #define EVT_TWEAK_A             20485
326 #define EVT_TWEAK_S             20486
327
328 #define EVT_GESTURE             20496
329
330 /* value of tweaks and line gestures, note, KM_ANY (-1) works for this case too */
331 #define EVT_GESTURE_N           1
332 #define EVT_GESTURE_NE          2
333 #define EVT_GESTURE_E           3
334 #define EVT_GESTURE_SE          4
335 #define EVT_GESTURE_S           5
336 #define EVT_GESTURE_SW          6
337 #define EVT_GESTURE_W           7
338 #define EVT_GESTURE_NW          8
339 /* value of corner gestures */
340 #define EVT_GESTURE_N_E         9
341 #define EVT_GESTURE_N_W         10
342 #define EVT_GESTURE_E_N         11
343 #define EVT_GESTURE_E_S         12
344 #define EVT_GESTURE_S_E         13
345 #define EVT_GESTURE_S_W         14
346 #define EVT_GESTURE_W_S         15
347 #define EVT_GESTURE_W_N         16
348
349 /* **************** OTHER BLENDER EVENTS ********************* */
350
351 /* event->type */
352 #define EVT_FILESELECT  0x5020
353
354 /* event->val */
355 #define EVT_FILESELECT_OPEN                                     1
356 #define EVT_FILESELECT_FULL_OPEN                        2
357 #define EVT_FILESELECT_EXEC                                     3
358 #define EVT_FILESELECT_CANCEL                           4
359 #define EVT_FILESELECT_EXTERNAL_CANCEL          5
360
361 /* event->type */
362 #define EVT_BUT_OPEN    0x5021
363 #define EVT_MODAL_MAP   0x5022
364 #define EVT_DROP                0x5023
365 #define EVT_BUT_CANCEL  0x5024
366
367 /* NOTE: these defines are saved in keymap files, do not change values but just add new ones */
368 #define GESTURE_MODAL_CANCEL            1
369 #define GESTURE_MODAL_CONFIRM           2
370
371 #define GESTURE_MODAL_SELECT            3
372 #define GESTURE_MODAL_DESELECT          4
373
374 #define GESTURE_MODAL_NOP                       5 /* circle select when no mouse button is pressed */
375
376 #define GESTURE_MODAL_CIRCLE_ADD        6 /* circle sel: larger brush */
377 #define GESTURE_MODAL_CIRCLE_SUB        7 /* circle sel: smaller brush */
378
379 #define GESTURE_MODAL_BEGIN                     8 /* border select/straight line, activate, use release to detect which button */
380
381 #define GESTURE_MODAL_IN                        9
382 #define GESTURE_MODAL_OUT                       10
383
384 #define GESTURE_MODAL_CIRCLE_SIZE       11 /* circle sel: size brush (for trackpad event) */
385
386
387 #endif  /* __WM_EVENT_TYPES_H__ */
388