Fix syntax for ID keyword.
[blender-staging.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          0x004   
50 #define MOUSEY          0x005   
51
52 /* MOUSE : 0x00x */
53 #define LEFTMOUSE               0x001   
54 #define MIDDLEMOUSE             0x002   
55 #define RIGHTMOUSE              0x003   
56 #define MOUSEMOVE               0x004   
57                 /* only use if you want user option switch possible */
58 #define ACTIONMOUSE             0x005
59 #define SELECTMOUSE             0x006
60                 /* Extra mouse buttons */
61 #define BUTTON4MOUSE    0x007  
62 #define BUTTON5MOUSE    0x008
63                 /* Extra trackpad gestures */
64 #define MOUSEPAN                0x00e
65 #define MOUSEZOOM               0x00f
66 #define MOUSEROTATE             0x010
67                 /* defaults from ghost */
68 #define WHEELUPMOUSE    0x00a   
69 #define WHEELDOWNMOUSE  0x00b
70                 /* mapped with userdef */
71 #define WHEELINMOUSE    0x00c
72 #define WHEELOUTMOUSE   0x00d
73
74
75 /* SYSTEM : 0x01xx */
76 #define INPUTCHANGE             0x0103  /* input connected or disconnected */
77 #define WINDEACTIVATE   0x0104  /* window is deactivated, focus lost */
78
79 #define TIMER                   0x0110  /* timer event, passed on to all queues */
80 #define TIMER0                  0x0111  /* timer event, slot for internal use */
81 #define TIMER1                  0x0112  /* timer event, slot for internal use */
82 #define TIMER2                  0x0113  /* timer event, slot for internal use */
83 #define TIMERJOBS               0x0114  /* timer event, internal use */
84 #define TIMERAUTOSAVE   0x0115  /* timer event, internal use */
85
86 /* standard keyboard */
87 #define AKEY            'a'
88 #define BKEY            'b'
89 #define CKEY            'c'
90 #define DKEY            'd'
91 #define EKEY            'e'
92 #define FKEY            'f'
93 #define GKEY            'g'
94 #define HKEY            'h'
95 #define IKEY            'i'
96 #define JKEY            'j'
97 #define KKEY            'k'
98 #define LKEY            'l'
99 #define MKEY            'm'
100 #define NKEY            'n'
101 #define OKEY            'o'
102 #define PKEY            'p'
103 #define QKEY            'q'
104 #define RKEY            'r'
105 #define SKEY            's'
106 #define TKEY            't'
107 #define UKEY            'u'
108 #define VKEY            'v'
109 #define WKEY            'w'
110 #define XKEY            'x'
111 #define YKEY            'y'
112 #define ZKEY            'z'
113
114 #define ZEROKEY         '0'
115 #define ONEKEY          '1'
116 #define TWOKEY          '2'
117 #define THREEKEY        '3'
118 #define FOURKEY         '4'
119 #define FIVEKEY         '5'
120 #define SIXKEY          '6'
121 #define SEVENKEY        '7'
122 #define EIGHTKEY        '8'
123 #define NINEKEY         '9'
124
125 #define CAPSLOCKKEY             211
126
127 #define LEFTCTRLKEY             212
128 #define LEFTALTKEY              213
129 #define RIGHTALTKEY     214
130 #define RIGHTCTRLKEY    215
131 #define RIGHTSHIFTKEY   216
132 #define LEFTSHIFTKEY    217
133
134 #define ESCKEY                  218
135 #define TABKEY                  219
136 #define RETKEY                  220
137 #define SPACEKEY                221
138 #define LINEFEEDKEY             222
139 #define BACKSPACEKEY    223
140 #define DELKEY                  224
141 #define SEMICOLONKEY    225
142 #define PERIODKEY               226
143 #define COMMAKEY                227
144 #define QUOTEKEY                228
145 #define ACCENTGRAVEKEY  229
146 #define MINUSKEY                230
147 #define SLASHKEY                232
148 #define BACKSLASHKEY    233
149 #define EQUALKEY                234
150 #define LEFTBRACKETKEY  235
151 #define RIGHTBRACKETKEY 236
152
153 #define LEFTARROWKEY    137
154 #define DOWNARROWKEY    138
155 #define RIGHTARROWKEY   139
156 #define UPARROWKEY              140
157
158 #define PAD0                    150
159 #define PAD1                    151
160 #define PAD2                    152
161 #define PAD3                    153
162 #define PAD4                    154
163 #define PAD5                    155
164 #define PAD6                    156
165 #define PAD7                    157
166 #define PAD8                    158
167 #define PAD9                    159
168
169
170 #define PADPERIOD               199
171 #define PADSLASHKEY     161
172 #define PADASTERKEY     160
173
174 #define PADMINUS                162
175 #define PADENTER                163
176 #define PADPLUSKEY              164
177
178 #define F1KEY           300
179 #define F2KEY           301
180 #define F3KEY           302
181 #define F4KEY           303
182 #define F5KEY           304
183 #define F6KEY           305
184 #define F7KEY           306
185 #define F8KEY           307
186 #define F9KEY           308
187 #define F10KEY          309
188 #define F11KEY          310
189 #define F12KEY          311
190
191 #define PAUSEKEY        165
192 #define INSERTKEY       166
193 #define HOMEKEY         167
194 #define PAGEUPKEY       168
195 #define PAGEDOWNKEY     169
196 #define ENDKEY          170
197
198 #define UNKNOWNKEY      171
199 #define COMMANDKEY      172
200 #define GRLESSKEY       173
201
202 /* for event checks */
203         /* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */
204 #define ISTEXTINPUT(event)      (event >=' ' && event <=255)
205
206         /* test whether the event is a key on the keyboard */
207 #define ISKEYBOARD(event)       (event >=' ' && event <=320)
208
209         /* test whether the event is a mouse button */
210 #define ISMOUSE(event)  (event >= LEFTMOUSE && event <= MOUSEROTATE)
211
212         /* test whether the event is timer event */
213 #define ISTIMER(event)  (event >= TIMER && event <= TIMERAUTOSAVE)
214
215         /* test whether the event is tweak event */
216 #define ISTWEAK(event)  (event >= EVT_TWEAK_L && event <= EVT_GESTURE)
217
218 /* test whether event type is acceptable as hotkey, excluding modifiers */
219 #define ISHOTKEY(event) ((ISKEYBOARD(event) || ISMOUSE(event)) && !(event>=LEFTCTRLKEY && event<=ESCKEY) && !(event>=UNKNOWNKEY && event<=GRLESSKEY))
220
221 /* **************** BLENDER GESTURE EVENTS ********************* */
222
223 #define EVT_ACTIONZONE_AREA             0x5000
224 #define EVT_ACTIONZONE_REGION   0x5001
225
226                 /* tweak events, for L M R mousebuttons */
227 #define EVT_TWEAK_L             0x5002
228 #define EVT_TWEAK_M             0x5003
229 #define EVT_TWEAK_R             0x5004
230                 /* tweak events for action or select mousebutton */
231 #define EVT_TWEAK_A             0x5005
232 #define EVT_TWEAK_S             0x5006
233
234 #define EVT_GESTURE             0x5010
235
236 /* value of tweaks and line gestures, note, KM_ANY (-1) works for this case too */
237 #define EVT_GESTURE_N           1
238 #define EVT_GESTURE_NE          2
239 #define EVT_GESTURE_E           3
240 #define EVT_GESTURE_SE          4
241 #define EVT_GESTURE_S           5
242 #define EVT_GESTURE_SW          6
243 #define EVT_GESTURE_W           7
244 #define EVT_GESTURE_NW          8
245 /* value of corner gestures */
246 #define EVT_GESTURE_N_E         9
247 #define EVT_GESTURE_N_W         10
248 #define EVT_GESTURE_E_N         11
249 #define EVT_GESTURE_E_S         12
250 #define EVT_GESTURE_S_E         13
251 #define EVT_GESTURE_S_W         14
252 #define EVT_GESTURE_W_S         15
253 #define EVT_GESTURE_W_N         16
254
255 /* **************** OTHER BLENDER EVENTS ********************* */
256
257 /* event->type */
258 #define EVT_FILESELECT  0x5020
259
260 /* event->val */
261 #define EVT_FILESELECT_OPEN                     1
262 #define EVT_FILESELECT_FULL_OPEN        2
263 #define EVT_FILESELECT_EXEC                     3
264 #define EVT_FILESELECT_CANCEL           4       
265
266 /* event->type */
267 #define EVT_BUT_OPEN    0x5021
268 #define EVT_MODAL_MAP   0x5022
269 #define EVT_DROP                0x5023
270 #define EVT_BUT_CANCEL  0x5024
271
272 /* NOTE: these defines are saved in keymap files, do not change values but just add new ones */
273 #define GESTURE_MODAL_CANCEL            1
274 #define GESTURE_MODAL_CONFIRM           2
275
276 #define GESTURE_MODAL_SELECT            3
277 #define GESTURE_MODAL_DESELECT          4
278
279 #define GESTURE_MODAL_NOP                       5 /* circle select when no mouse button is pressed */
280
281 #define GESTURE_MODAL_CIRCLE_ADD        6 /* circle sel: larger brush */
282 #define GESTURE_MODAL_CIRCLE_SUB        7 /* circle sel: smaller brush */
283
284 #define GESTURE_MODAL_BORDER_BEGIN      8 /* border select, activate, use release to detect which button */
285
286
287 #endif  /* WM_EVENT_TYPES_H */
288