1 /* 2 * This program is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU General Public License 4 * as published by the Free Software Foundation; either version 2 5 * of the License, or (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software Foundation, 14 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 15 */ 16 17 /** \file 18 * \ingroup wm 19 */ 20 21 /* 22 * These define have its origin at sgi, where all device defines were written down in device.h. 23 * Blender copied the conventions quite some, and expanded it with internal new defines (ton) 24 */ 25 26 #pragma once 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 /* customdata type */ 33 enum { 34 EVT_DATA_TIMER = 2, 35 EVT_DATA_DRAGDROP = 3, 36 EVT_DATA_NDOF_MOTION = 4, 37 }; 38 39 /* tablet active, matches GHOST_TTabletMode */ 40 enum { 41 EVT_TABLET_NONE = 0, 42 EVT_TABLET_STYLUS = 1, 43 EVT_TABLET_ERASER = 2, 44 }; 45 46 /** 47 * #wmEvent.type 48 * 49 * \note Also used for #wmKeyMapItem.type which is saved in key-map files, 50 * do not change the values of existing values which can be used in key-maps. 51 */ 52 enum { 53 /* non-event, for example disabled timer */ 54 EVENT_NONE = 0x0000, 55 56 /* ********** Start of Input devices. ********** */ 57 58 /* MOUSE : 0x000x, 0x001x */ 59 LEFTMOUSE = 0x0001, 60 MIDDLEMOUSE = 0x0002, 61 RIGHTMOUSE = 0x0003, 62 MOUSEMOVE = 0x0004, 63 /* Extra mouse buttons */ 64 BUTTON4MOUSE = 0x0007, 65 BUTTON5MOUSE = 0x0008, 66 /* More mouse buttons - can't use 9 and 10 here (wheel) */ 67 BUTTON6MOUSE = 0x0012, 68 BUTTON7MOUSE = 0x0013, 69 /* Extra trackpad gestures */ 70 MOUSEPAN = 0x000e, 71 MOUSEZOOM = 0x000f, 72 MOUSEROTATE = 0x0010, 73 MOUSESMARTZOOM = 0x0017, 74 75 /* defaults from ghost */ 76 WHEELUPMOUSE = 0x000a, 77 WHEELDOWNMOUSE = 0x000b, 78 /* mapped with userdef */ 79 WHEELINMOUSE = 0x000c, 80 WHEELOUTMOUSE = 0x000d, 81 /* Successive MOUSEMOVE's are converted to this, so we can easily 82 * ignore all but the most recent MOUSEMOVE (for better performance), 83 * paint and drawing tools however will want to handle these. */ 84 INBETWEEN_MOUSEMOVE = 0x0011, 85 86 /* IME event, GHOST_kEventImeCompositionStart in ghost */ 87 WM_IME_COMPOSITE_START = 0x0014, 88 /* IME event, GHOST_kEventImeComposition in ghost */ 89 WM_IME_COMPOSITE_EVENT = 0x0015, 90 /* IME event, GHOST_kEventImeCompositionEnd in ghost */ 91 WM_IME_COMPOSITE_END = 0x0016, 92 93 /* Tablet/Pen Specific Events */ 94 TABLET_STYLUS = 0x001a, 95 TABLET_ERASER = 0x001b, 96 97 /* *** Start of keyboard codes. *** */ 98 99 /* Standard keyboard. 100 * From 0x0020 to 0x00ff, and 0x012c to 0x0143 for function keys! */ 101 102 EVT_ZEROKEY = 0x0030, /* '0' (48). */ 103 EVT_ONEKEY = 0x0031, /* '1' (49). */ 104 EVT_TWOKEY = 0x0032, /* '2' (50). */ 105 EVT_THREEKEY = 0x0033, /* '3' (51). */ 106 EVT_FOURKEY = 0x0034, /* '4' (52). */ 107 EVT_FIVEKEY = 0x0035, /* '5' (53). */ 108 EVT_SIXKEY = 0x0036, /* '6' (54). */ 109 EVT_SEVENKEY = 0x0037, /* '7' (55). */ 110 EVT_EIGHTKEY = 0x0038, /* '8' (56). */ 111 EVT_NINEKEY = 0x0039, /* '9' (57). */ 112 113 EVT_AKEY = 0x0061, /* 'a' (97). */ 114 EVT_BKEY = 0x0062, /* 'b' (98). */ 115 EVT_CKEY = 0x0063, /* 'c' (99). */ 116 EVT_DKEY = 0x0064, /* 'd' (100). */ 117 EVT_EKEY = 0x0065, /* 'e' (101). */ 118 EVT_FKEY = 0x0066, /* 'f' (102). */ 119 EVT_GKEY = 0x0067, /* 'g' (103). */ 120 EVT_HKEY = 0x0068, /* 'h' (104). */ 121 EVT_IKEY = 0x0069, /* 'i' (105). */ 122 EVT_JKEY = 0x006a, /* 'j' (106). */ 123 EVT_KKEY = 0x006b, /* 'k' (107). */ 124 EVT_LKEY = 0x006c, /* 'l' (108). */ 125 EVT_MKEY = 0x006d, /* 'm' (109). */ 126 EVT_NKEY = 0x006e, /* 'n' (110). */ 127 EVT_OKEY = 0x006f, /* 'o' (111). */ 128 EVT_PKEY = 0x0070, /* 'p' (112). */ 129 EVT_QKEY = 0x0071, /* 'q' (113). */ 130 EVT_RKEY = 0x0072, /* 'r' (114). */ 131 EVT_SKEY = 0x0073, /* 's' (115). */ 132 EVT_TKEY = 0x0074, /* 't' (116). */ 133 EVT_UKEY = 0x0075, /* 'u' (117). */ 134 EVT_VKEY = 0x0076, /* 'v' (118). */ 135 EVT_WKEY = 0x0077, /* 'w' (119). */ 136 EVT_XKEY = 0x0078, /* 'x' (120). */ 137 EVT_YKEY = 0x0079, /* 'y' (121). */ 138 EVT_ZKEY = 0x007a, /* 'z' (122). */ 139 140 EVT_LEFTARROWKEY = 0x0089, /* 137 */ 141 EVT_DOWNARROWKEY = 0x008a, /* 138 */ 142 EVT_RIGHTARROWKEY = 0x008b, /* 139 */ 143 EVT_UPARROWKEY = 0x008c, /* 140 */ 144 145 EVT_PAD0 = 0x0096, /* 150 */ 146 EVT_PAD1 = 0x0097, /* 151 */ 147 EVT_PAD2 = 0x0098, /* 152 */ 148 EVT_PAD3 = 0x0099, /* 153 */ 149 EVT_PAD4 = 0x009a, /* 154 */ 150 EVT_PAD5 = 0x009b, /* 155 */ 151 EVT_PAD6 = 0x009c, /* 156 */ 152 EVT_PAD7 = 0x009d, /* 157 */ 153 EVT_PAD8 = 0x009e, /* 158 */ 154 EVT_PAD9 = 0x009f, /* 159 */ 155 /* Key-pad keys. */ 156 EVT_PADASTERKEY = 0x00a0, /* 160 */ 157 EVT_PADSLASHKEY = 0x00a1, /* 161 */ 158 EVT_PADMINUS = 0x00a2, /* 162 */ 159 EVT_PADENTER = 0x00a3, /* 163 */ 160 EVT_PADPLUSKEY = 0x00a4, /* 164 */ 161 162 EVT_PAUSEKEY = 0x00a5, /* 165 */ 163 EVT_INSERTKEY = 0x00a6, /* 166 */ 164 EVT_HOMEKEY = 0x00a7, /* 167 */ 165 EVT_PAGEUPKEY = 0x00a8, /* 168 */ 166 EVT_PAGEDOWNKEY = 0x00a9, /* 169 */ 167 EVT_ENDKEY = 0x00aa, /* 170 */ 168 /* Note that 'PADPERIOD' is defined out-of-order. */ 169 EVT_UNKNOWNKEY = 0x00ab, /* 171 */ 170 EVT_OSKEY = 0x00ac, /* 172 */ 171 EVT_GRLESSKEY = 0x00ad, /* 173 */ 172 /* Media keys. */ 173 EVT_MEDIAPLAY = 0x00ae, /* 174 */ 174 EVT_MEDIASTOP = 0x00af, /* 175 */ 175 EVT_MEDIAFIRST = 0x00b0, /* 176 */ 176 EVT_MEDIALAST = 0x00b1, /* 177 */ 177 /* Menu/App key. */ 178 EVT_APPKEY = 0x00b2, /* 178 */ 179 180 EVT_PADPERIOD = 0x00c7, /* 199 */ 181 182 EVT_CAPSLOCKKEY = 0x00d3, /* 211 */ 183 184 /* Modifier keys. */ 185 EVT_LEFTCTRLKEY = 0x00d4, /* 212 */ 186 EVT_LEFTALTKEY = 0x00d5, /* 213 */ 187 EVT_RIGHTALTKEY = 0x00d6, /* 214 */ 188 EVT_RIGHTCTRLKEY = 0x00d7, /* 215 */ 189 EVT_RIGHTSHIFTKEY = 0x00d8, /* 216 */ 190 EVT_LEFTSHIFTKEY = 0x00d9, /* 217 */ 191 /* Special characters. */ 192 EVT_ESCKEY = 0x00da, /* 218 */ 193 EVT_TABKEY = 0x00db, /* 219 */ 194 EVT_RETKEY = 0x00dc, /* 220 */ 195 EVT_SPACEKEY = 0x00dd, /* 221 */ 196 EVT_LINEFEEDKEY = 0x00de, /* 222 */ 197 EVT_BACKSPACEKEY = 0x00df, /* 223 */ 198 EVT_DELKEY = 0x00e0, /* 224 */ 199 EVT_SEMICOLONKEY = 0x00e1, /* 225 */ 200 EVT_PERIODKEY = 0x00e2, /* 226 */ 201 EVT_COMMAKEY = 0x00e3, /* 227 */ 202 EVT_QUOTEKEY = 0x00e4, /* 228 */ 203 EVT_ACCENTGRAVEKEY = 0x00e5, /* 229 */ 204 EVT_MINUSKEY = 0x00e6, /* 230 */ 205 EVT_PLUSKEY = 0x00e7, /* 231 */ 206 EVT_SLASHKEY = 0x00e8, /* 232 */ 207 EVT_BACKSLASHKEY = 0x00e9, /* 233 */ 208 EVT_EQUALKEY = 0x00ea, /* 234 */ 209 EVT_LEFTBRACKETKEY = 0x00eb, /* 235 */ 210 EVT_RIGHTBRACKETKEY = 0x00ec, /* 236 */ 211 212 EVT_F1KEY = 0x012c, /* 300 */ 213 EVT_F2KEY = 0x012d, /* 301 */ 214 EVT_F3KEY = 0x012e, /* 302 */ 215 EVT_F4KEY = 0x012f, /* 303 */ 216 EVT_F5KEY = 0x0130, /* 304 */ 217 EVT_F6KEY = 0x0131, /* 305 */ 218 EVT_F7KEY = 0x0132, /* 306 */ 219 EVT_F8KEY = 0x0133, /* 307 */ 220 EVT_F9KEY = 0x0134, /* 308 */ 221 EVT_F10KEY = 0x0135, /* 309 */ 222 EVT_F11KEY = 0x0136, /* 310 */ 223 EVT_F12KEY = 0x0137, /* 311 */ 224 EVT_F13KEY = 0x0138, /* 312 */ 225 EVT_F14KEY = 0x0139, /* 313 */ 226 EVT_F15KEY = 0x013a, /* 314 */ 227 EVT_F16KEY = 0x013b, /* 315 */ 228 EVT_F17KEY = 0x013c, /* 316 */ 229 EVT_F18KEY = 0x013d, /* 317 */ 230 EVT_F19KEY = 0x013e, /* 318 */ 231 EVT_F20KEY = 0x013f, /* 319 */ 232 EVT_F21KEY = 0x0140, /* 320 */ 233 EVT_F22KEY = 0x0141, /* 321 */ 234 EVT_F23KEY = 0x0142, /* 322 */ 235 EVT_F24KEY = 0x0143, /* 323 */ 236 237 /* *** End of keyboard codes. *** */ 238 239 /* NDOF (from SpaceNavigator & friends) 240 * These should be kept in sync with GHOST_NDOFManager.h 241 * Ordering matters, exact values do not. */ 242 NDOF_MOTION = 0x0190, /* 400 */ 243 /* used internally, never sent */ 244 NDOF_BUTTON_NONE = NDOF_MOTION, 245 /* these two are available from any 3Dconnexion device */ 246 NDOF_BUTTON_MENU, 247 NDOF_BUTTON_FIT, 248 /* standard views */ 249 NDOF_BUTTON_TOP, 250 NDOF_BUTTON_BOTTOM, 251 NDOF_BUTTON_LEFT, 252 NDOF_BUTTON_RIGHT, 253 NDOF_BUTTON_FRONT, 254 NDOF_BUTTON_BACK, 255 /* more views */ 256 NDOF_BUTTON_ISO1, 257 NDOF_BUTTON_ISO2, 258 /* 90 degree rotations */ 259 NDOF_BUTTON_ROLL_CW, 260 NDOF_BUTTON_ROLL_CCW, 261 NDOF_BUTTON_SPIN_CW, 262 NDOF_BUTTON_SPIN_CCW, 263 NDOF_BUTTON_TILT_CW, 264 NDOF_BUTTON_TILT_CCW, 265 /* device control */ 266 NDOF_BUTTON_ROTATE, 267 NDOF_BUTTON_PANZOOM, 268 NDOF_BUTTON_DOMINANT, 269 NDOF_BUTTON_PLUS, 270 NDOF_BUTTON_MINUS, 271 /* keyboard emulation */ 272 NDOF_BUTTON_ESC, 273 NDOF_BUTTON_ALT, 274 NDOF_BUTTON_SHIFT, 275 NDOF_BUTTON_CTRL, 276 /* general-purpose buttons */ 277 NDOF_BUTTON_1, 278 NDOF_BUTTON_2, 279 NDOF_BUTTON_3, 280 NDOF_BUTTON_4, 281 NDOF_BUTTON_5, 282 NDOF_BUTTON_6, 283 NDOF_BUTTON_7, 284 NDOF_BUTTON_8, 285 NDOF_BUTTON_9, 286 NDOF_BUTTON_10, 287 /* more general-purpose buttons */ 288 NDOF_BUTTON_A, 289 NDOF_BUTTON_B, 290 NDOF_BUTTON_C, 291 /* the end */ 292 NDOF_LAST, 293 294 /* ********** End of Input devices. ********** */ 295 296 /* ********** Start of Blender internal events. ********** */ 297 298 /* XXX Those are mixed inside keyboard 'area'! */ 299 /* System: 0x010x */ 300 INPUTCHANGE = 0x0103, /* Input connected or disconnected, (259). */ 301 WINDEACTIVATE = 0x0104, /* Window is deactivated, focus lost, (260). */ 302 /* Timer: 0x011x */ 303 TIMER = 0x0110, /* Timer event, passed on to all queues (272). */ 304 TIMER0 = 0x0111, /* Timer event, slot for internal use (273). */ 305 TIMER1 = 0x0112, /* Timer event, slot for internal use (274). */ 306 TIMER2 = 0x0113, /* Timer event, slot for internal use (275). */ 307 TIMERJOBS = 0x0114, /* Timer event, jobs system (276). */ 308 TIMERAUTOSAVE = 0x0115, /* Timer event, autosave (277). */ 309 TIMERREPORT = 0x0116, /* Timer event, reports (278). */ 310 TIMERREGION = 0x0117, /* Timer event, region slide in/out (279). */ 311 TIMERNOTIFIER = 0x0118, /* Timer event, notifier sender (280). */ 312 TIMERF = 0x011F, /* Last timer (287). */ 313 314 /* Actionzones, tweak, gestures: 0x500x, 0x501x */ 315 /* Keep in sync with IS_EVENT_ACTIONZONE(...). */ 316 EVT_ACTIONZONE_AREA = 0x5000, /* 20480 */ 317 EVT_ACTIONZONE_REGION = 0x5001, /* 20481 */ 318 EVT_ACTIONZONE_FULLSCREEN = 0x5011, /* 20497 */ 319 320 /* NOTE: these values are saved in keymap files, do not change them but just add new ones */ 321 322 /* Tweak events: 323 * Sent as additional event with the mouse coordinates 324 * from where the initial click was placed. */ 325 326 /* tweak events for L M R mousebuttons */ 327 EVT_TWEAK_L = 0x5002, /* 20482 */ 328 EVT_TWEAK_M = 0x5003, /* 20483 */ 329 EVT_TWEAK_R = 0x5004, /* 20484 */ 330 /* 0x5010 (and lower) should be left to add other tweak types in the future. */ 331 332 /* 0x5011 is taken, see EVT_ACTIONZONE_FULLSCREEN */ 333 334 /* Misc Blender internals: 0x502x */ 335 EVT_FILESELECT = 0x5020, /* 20512 */ 336 EVT_BUT_OPEN = 0x5021, /* 20513 */ 337 EVT_MODAL_MAP = 0x5022, /* 20514 */ 338 EVT_DROP = 0x5023, /* 20515 */ 339 /* When value is 0, re-activate, when 1, don't re-activate the button under the cursor. */ 340 EVT_BUT_CANCEL = 0x5024, /* 20516 */ 341 342 /* could become gizmo callback */ 343 EVT_GIZMO_UPDATE = 0x5025, /* 20517 */ 344 /* ********** End of Blender internal events. ********** */ 345 }; 346 347 /* *********** wmEvent.type helpers. ********** */ 348 349 /* test whether the event is timer event */ 350 #define ISTIMER(event_type) ((event_type) >= TIMER && (event_type) <= TIMERF) 351 352 /* for event checks */ 353 /* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */ 354 /* UNUSED - see wm_eventmatch - BUG T30479. */ 355 /* #define ISTEXTINPUT(event_type) ((event_type) >= ' ' && (event_type) <= 255) */ 356 /* note, an alternative could be to check 'event->utf8_buf' */ 357 358 /* test whether the event is a key on the keyboard */ 359 #define ISKEYBOARD(event_type) \ 360 (((event_type) >= 0x0020 && (event_type) <= 0x00ff) || \ 361 ((event_type) >= 0x012c && (event_type) <= 0x0143)) 362 363 /* test whether the event is a modifier key */ 364 #define ISKEYMODIFIER(event_type) \ 365 (((event_type) >= EVT_LEFTCTRLKEY && (event_type) <= EVT_LEFTSHIFTKEY) || \ 366 (event_type) == EVT_OSKEY) 367 368 /* test whether the event is a mouse button */ 369 #define ISMOUSE(event_type) \ 370 (((event_type) >= LEFTMOUSE && (event_type) <= BUTTON7MOUSE) || (event_type) == MOUSESMARTZOOM) 371 372 #define ISMOUSE_WHEEL(event_type) ((event_type) >= WHEELUPMOUSE && (event_type) <= WHEELOUTMOUSE) 373 #define ISMOUSE_GESTURE(event_type) ((event_type) >= MOUSEPAN && (event_type) <= MOUSEROTATE) 374 #define ISMOUSE_BUTTON(event_type) \ 375 (ELEM(event_type, \ 376 LEFTMOUSE, \ 377 MIDDLEMOUSE, \ 378 RIGHTMOUSE, \ 379 BUTTON4MOUSE, \ 380 BUTTON5MOUSE, \ 381 BUTTON6MOUSE, \ 382 BUTTON7MOUSE)) 383 384 /* test whether the event is tweak event */ 385 #define ISTWEAK(event_type) ((event_type) >= EVT_TWEAK_L && (event_type) <= EVT_TWEAK_R) 386 387 /* test whether the event is a NDOF event */ 388 #define ISNDOF(event_type) ((event_type) >= NDOF_MOTION && (event_type) < NDOF_LAST) 389 390 #define IS_EVENT_ACTIONZONE(event_type) \ 391 ELEM(event_type, EVT_ACTIONZONE_AREA, EVT_ACTIONZONE_REGION, EVT_ACTIONZONE_FULLSCREEN) 392 393 /* test whether event type is acceptable as hotkey, excluding modifiers */ 394 #define ISHOTKEY(event_type) \ 395 ((ISKEYBOARD(event_type) || ISMOUSE(event_type) || ISNDOF(event_type)) && \ 396 (ISKEYMODIFIER(event_type) == false)) 397 398 /* internal helpers*/ 399 #define _VA_IS_EVENT_MOD2(v, a) (CHECK_TYPE_INLINE(v, wmEvent *), ((v)->a)) 400 #define _VA_IS_EVENT_MOD3(v, a, b) (_VA_IS_EVENT_MOD2(v, a) || ((v)->b)) 401 #define _VA_IS_EVENT_MOD4(v, a, b, c) (_VA_IS_EVENT_MOD3(v, a, b) || ((v)->c)) 402 #define _VA_IS_EVENT_MOD5(v, a, b, c, d) (_VA_IS_EVENT_MOD4(v, a, b, c) || ((v)->d)) 403 404 /* reusable IS_EVENT_MOD(event, shift, ctrl, alt, oskey), macro */ 405 #define IS_EVENT_MOD(...) VA_NARGS_CALL_OVERLOAD(_VA_IS_EVENT_MOD, __VA_ARGS__) 406 407 enum eEventType_Mask { 408 /* ISKEYMODIFIER */ 409 EVT_TYPE_MASK_KEYBOARD_MODIFIER = (1 << 0), 410 /* ISKEYBOARD */ 411 EVT_TYPE_MASK_KEYBOARD = (1 << 1), 412 /* ISMOUSE_WHEEL */ 413 EVT_TYPE_MASK_MOUSE_WHEEL = (1 << 2), 414 /* ISMOUSE_BUTTON */ 415 EVT_TYPE_MASK_MOUSE_GESTURE = (1 << 3), 416 /* ISMOUSE_GESTURE */ 417 EVT_TYPE_MASK_MOUSE_BUTTON = (1 << 4), 418 /* ISMOUSE */ 419 EVT_TYPE_MASK_MOUSE = (1 << 5), 420 /* ISNDOF */ 421 EVT_TYPE_MASK_NDOF = (1 << 6), 422 /* ISTWEAK */ 423 EVT_TYPE_MASK_TWEAK = (1 << 7), 424 /* IS_EVENT_ACTIONZONE */ 425 EVT_TYPE_MASK_ACTIONZONE = (1 << 8), 426 }; 427 #define EVT_TYPE_MASK_ALL \ 428 (EVT_TYPE_MASK_KEYBOARD | EVT_TYPE_MASK_MOUSE | EVT_TYPE_MASK_NDOF | EVT_TYPE_MASK_TWEAK | \ 429 EVT_TYPE_MASK_ACTIONZONE) 430 431 #define EVT_TYPE_MASK_HOTKEY_INCLUDE \ 432 (EVT_TYPE_MASK_KEYBOARD | EVT_TYPE_MASK_MOUSE | EVT_TYPE_MASK_NDOF) 433 #define EVT_TYPE_MASK_HOTKEY_EXCLUDE EVT_TYPE_MASK_KEYBOARD_MODIFIER 434 435 bool WM_event_type_mask_test(const int event_type, const enum eEventType_Mask mask); 436 437 /* ********** wmEvent.val ********** */ 438 439 /* Gestures */ 440 /* NOTE: these values are saved in keymap files, do not change them but just add new ones */ 441 enum { 442 /* value of tweaks and line gestures, note, KM_ANY (-1) works for this case too */ 443 EVT_GESTURE_N = 1, 444 EVT_GESTURE_NE = 2, 445 EVT_GESTURE_E = 3, 446 EVT_GESTURE_SE = 4, 447 EVT_GESTURE_S = 5, 448 EVT_GESTURE_SW = 6, 449 EVT_GESTURE_W = 7, 450 EVT_GESTURE_NW = 8, 451 }; 452 453 /* File select */ 454 enum { 455 EVT_FILESELECT_FULL_OPEN = 1, 456 EVT_FILESELECT_EXEC = 2, 457 EVT_FILESELECT_CANCEL = 3, 458 EVT_FILESELECT_EXTERNAL_CANCEL = 4, 459 }; 460 461 /** 462 * Gesture 463 * Used in #wmEvent.val 464 * 465 * \note These values are saved in keymap files, 466 * do not change them but just add new ones. 467 */ 468 enum { 469 GESTURE_MODAL_CANCEL = 1, 470 GESTURE_MODAL_CONFIRM = 2, 471 472 /** Uses 'deselect' operator property. */ 473 GESTURE_MODAL_SELECT = 3, 474 GESTURE_MODAL_DESELECT = 4, 475 476 /** Circle select: when no mouse button is pressed */ 477 GESTURE_MODAL_NOP = 5, 478 479 /** Circle select: larger brush. */ 480 GESTURE_MODAL_CIRCLE_ADD = 6, 481 /** Circle select: smaller brush. */ 482 GESTURE_MODAL_CIRCLE_SUB = 7, 483 484 /** Box select/straight line, activate, use release to detect which button. */ 485 GESTURE_MODAL_BEGIN = 8, 486 487 /** Uses 'zoom_out' operator property. */ 488 GESTURE_MODAL_IN = 9, 489 GESTURE_MODAL_OUT = 10, 490 491 /** circle select: size brush (for trackpad event). */ 492 GESTURE_MODAL_CIRCLE_SIZE = 11, 493 494 /** Move selection area. */ 495 GESTURE_MODAL_MOVE = 12, 496 497 /** Toggle to activate snapping (angle snapping for straight line). */ 498 GESTURE_MODAL_SNAP = 13, 499 500 /** Toggle to activate flip (flip the active side of a straight line). */ 501 GESTURE_MODAL_FLIP = 14, 502 }; 503 504 #ifdef __cplusplus 505 } 506 #endif 507