Welcome to mirror list, hosted at ThFree Co, Russian Federation.

wm_event_types.h « windowmanager « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: efc31f6f7c389d244cca06d28a987f5691fc0ff0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
/*
 * $Id$
 *
 * ***** BEGIN GPL LICENSE BLOCK *****
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version. 
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
 * All rights reserved.
 *
 * Contributor(s): Blender Foundation
 *
 * ***** END GPL LICENSE BLOCK *****
 */

/*
 *  These define have its origin at sgi, where all device defines were written down in device.h.
 *  Blender copied the conventions quite some, and expanded it with internal new defines (ton)
 *
 */ 


#ifndef WM_EVENT_TYPES_H
#define WM_EVENT_TYPES_H

/* customdata type */
#define EVT_DATA_TABLET		1
#define EVT_DATA_GESTURE	2
#define EVT_DATA_TIMER		3
#define EVT_DATA_LISTBASE	4

/* tablet active, matches GHOST_TTabletMode */
#define EVT_TABLET_NONE		0
#define EVT_TABLET_STYLUS	1
#define EVT_TABLET_ERASER	2

#define MOUSEX		0x004	
#define MOUSEY		0x005	

/* MOUSE : 0x00x */
#define LEFTMOUSE		0x001	
#define MIDDLEMOUSE		0x002	
#define RIGHTMOUSE		0x003	
#define MOUSEMOVE		0x004	
		/* only use if you want user option switch possible */
#define ACTIONMOUSE		0x005
#define SELECTMOUSE		0x006
		/* Extra mouse buttons */
#define BUTTON4MOUSE	0x007  
#define BUTTON5MOUSE	0x008
		/* Extra trackpad gestures */
#define MOUSEPAN		0x00e
#define MOUSEZOOM		0x00f
#define MOUSEROTATE		0x010
		/* defaults from ghost */
#define WHEELUPMOUSE	0x00a	
#define WHEELDOWNMOUSE	0x00b
		/* mapped with userdef */
#define WHEELINMOUSE	0x00c
#define WHEELOUTMOUSE	0x00d
#define INBETWEEN_MOUSEMOVE	0x011


/* SYSTEM : 0x01xx */
#define	INPUTCHANGE		0x0103	/* input connected or disconnected */
#define WINDEACTIVATE	0x0104	/* window is deactivated, focus lost */

#define TIMER			0x0110	/* timer event, passed on to all queues */
#define TIMER0			0x0111	/* timer event, slot for internal use */
#define TIMER1			0x0112	/* timer event, slot for internal use */
#define TIMER2			0x0113	/* timer event, slot for internal use */
#define TIMERJOBS		0x0114  /* timer event, internal use */
#define TIMERAUTOSAVE	0x0115  /* timer event, internal use */

/* standard keyboard */
#define AKEY		'a'
#define BKEY		'b'
#define CKEY		'c'
#define DKEY		'd'
#define EKEY		'e'
#define FKEY		'f'
#define GKEY		'g'
#define HKEY		'h'
#define IKEY		'i'
#define JKEY		'j'
#define KKEY		'k'
#define LKEY		'l'
#define MKEY		'm'
#define NKEY		'n'
#define OKEY		'o'
#define PKEY		'p'
#define QKEY		'q'
#define RKEY		'r'
#define SKEY		's'
#define TKEY		't'
#define UKEY		'u'
#define VKEY		'v'
#define WKEY		'w'
#define XKEY		'x'
#define YKEY		'y'
#define ZKEY		'z'

#define ZEROKEY		'0'
#define ONEKEY		'1'
#define TWOKEY		'2'
#define THREEKEY	'3'
#define FOURKEY		'4'
#define FIVEKEY		'5'
#define SIXKEY		'6'
#define SEVENKEY	'7'
#define EIGHTKEY	'8'
#define NINEKEY		'9'

#define CAPSLOCKKEY		211

#define LEFTCTRLKEY		212
#define LEFTALTKEY 		213
#define	RIGHTALTKEY 	214
#define	RIGHTCTRLKEY 	215
#define RIGHTSHIFTKEY	216
#define LEFTSHIFTKEY	217

#define ESCKEY			218
#define TABKEY			219
#define RETKEY			220
#define SPACEKEY		221
#define LINEFEEDKEY		222
#define BACKSPACEKEY	223
#define DELKEY			224
#define SEMICOLONKEY	225
#define PERIODKEY		226
#define COMMAKEY		227
#define QUOTEKEY		228
#define ACCENTGRAVEKEY	229
#define MINUSKEY		230
#define SLASHKEY		232
#define BACKSLASHKEY	233
#define EQUALKEY		234
#define LEFTBRACKETKEY	235
#define RIGHTBRACKETKEY	236

#define LEFTARROWKEY	137
#define DOWNARROWKEY	138
#define RIGHTARROWKEY	139
#define UPARROWKEY		140

#define PAD0			150
#define PAD1			151
#define PAD2			152
#define PAD3			153
#define PAD4			154
#define PAD5			155
#define PAD6			156
#define PAD7			157
#define PAD8			158
#define PAD9			159


#define PADPERIOD		199
#define	PADSLASHKEY 	161
#define PADASTERKEY 	160

#define PADMINUS		162
#define PADENTER		163
#define PADPLUSKEY 		164

#define	F1KEY 		300
#define	F2KEY 		301
#define	F3KEY 		302
#define	F4KEY 		303
#define	F5KEY 		304
#define	F6KEY 		305
#define	F7KEY 		306
#define	F8KEY 		307
#define	F9KEY 		308
#define	F10KEY		309
#define	F11KEY		310
#define	F12KEY		311
#define	F13KEY		312
#define	F14KEY		313
#define	F15KEY		314
#define	F16KEY		315
#define	F17KEY		316
#define	F18KEY		317
#define	F19KEY		318

#define	PAUSEKEY	165
#define	INSERTKEY	166
#define	HOMEKEY 	167
#define	PAGEUPKEY 	168
#define	PAGEDOWNKEY	169
#define	ENDKEY		170

#define UNKNOWNKEY	171
#define OSKEY		172
#define GRLESSKEY	173

/* for event checks */
	/* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */
#define ISTEXTINPUT(event)	(event >=' ' && event <=255)

	/* test whether the event is a key on the keyboard */
#define ISKEYBOARD(event)	(event >=' ' && event <=320)

	/* test whether the event is a modifier key */
#define ISKEYMODIFIER(event)	((event >= LEFTCTRLKEY && event <= LEFTSHIFTKEY) || event == OSKEY)

	/* test whether the event is a mouse button */
#define ISMOUSE(event)	(event >= LEFTMOUSE && event <= MOUSEROTATE)

	/* test whether the event is timer event */
#define ISTIMER(event)	(event >= TIMER && event <= TIMERAUTOSAVE)

	/* test whether the event is tweak event */
#define ISTWEAK(event)	(event >= EVT_TWEAK_L && event <= EVT_GESTURE)

/* test whether event type is acceptable as hotkey, excluding modifiers */
#define ISHOTKEY(event)	((ISKEYBOARD(event) || ISMOUSE(event)) && !(event>=LEFTCTRLKEY && event<=LEFTSHIFTKEY) && !(event>=UNKNOWNKEY && event<=GRLESSKEY))

/* **************** BLENDER GESTURE EVENTS ********************* */

#define EVT_ACTIONZONE_AREA		0x5000
#define EVT_ACTIONZONE_REGION	0x5001

		/* tweak events, for L M R mousebuttons */
#define EVT_TWEAK_L		0x5002
#define EVT_TWEAK_M		0x5003
#define EVT_TWEAK_R		0x5004
		/* tweak events for action or select mousebutton */
#define EVT_TWEAK_A		0x5005
#define EVT_TWEAK_S		0x5006

#define EVT_GESTURE		0x5010

/* value of tweaks and line gestures, note, KM_ANY (-1) works for this case too */
#define EVT_GESTURE_N		1
#define EVT_GESTURE_NE		2
#define EVT_GESTURE_E		3
#define EVT_GESTURE_SE		4
#define EVT_GESTURE_S		5
#define EVT_GESTURE_SW		6
#define EVT_GESTURE_W		7
#define EVT_GESTURE_NW		8
/* value of corner gestures */
#define EVT_GESTURE_N_E		9
#define EVT_GESTURE_N_W		10
#define EVT_GESTURE_E_N		11
#define EVT_GESTURE_E_S		12
#define EVT_GESTURE_S_E		13
#define EVT_GESTURE_S_W		14
#define EVT_GESTURE_W_S		15
#define EVT_GESTURE_W_N		16

/* **************** OTHER BLENDER EVENTS ********************* */

/* event->type */
#define EVT_FILESELECT	0x5020

/* event->val */
#define EVT_FILESELECT_OPEN					1
#define EVT_FILESELECT_FULL_OPEN			2
#define EVT_FILESELECT_EXEC					3
#define EVT_FILESELECT_CANCEL				4
#define EVT_FILESELECT_EXTERNAL_CANCEL		5

/* event->type */
#define EVT_BUT_OPEN	0x5021
#define EVT_MODAL_MAP	0x5022
#define EVT_DROP		0x5023
#define EVT_BUT_CANCEL	0x5024

/* NOTE: these defines are saved in keymap files, do not change values but just add new ones */
#define GESTURE_MODAL_CANCEL		1
#define GESTURE_MODAL_CONFIRM		2

#define GESTURE_MODAL_SELECT		3
#define GESTURE_MODAL_DESELECT		4

#define GESTURE_MODAL_NOP			5 /* circle select when no mouse button is pressed */

#define GESTURE_MODAL_CIRCLE_ADD	6 /* circle sel: larger brush */
#define GESTURE_MODAL_CIRCLE_SUB	7 /* circle sel: smaller brush */

#define GESTURE_MODAL_BEGIN			8 /* border select/straight line, activate, use release to detect which button */

#define GESTURE_MODAL_IN			9
#define GESTURE_MODAL_OUT			10


#endif	/* WM_EVENT_TYPES_H */