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