iutil/evdefs.h
Go to the documentation of this file.00001 /* 00002 Event system related interfaces 00003 Written by Andrew Zabolotny <bit@eltech.ru> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public 00016 License along with this library; if not, write to the Free 00017 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00018 */ 00019 00020 /* 00021 *WARNING* 00022 This file must contain only plain-C code. Do _not_ insert C++ code. 00023 This file is imported by non-C++ system driver implementations. 00024 00025 Unfortunately, given the way the new event system works, this means 00026 a lot of things that used to be macros and static values that went 00027 here are now (fundamentally) C++ method invocations. Since most of 00028 these are event names which are only really useful in conjunction 00029 with C++ event creation, subscription, and scheduling interfaces 00030 anyway, they have largely moved to csutil/eventnames.h. 00031 */ 00032 00041 #ifndef __CS_IUTIL_EVDEFS_H__ 00042 #define __CS_IUTIL_EVDEFS_H__ 00043 00045 typedef enum _csKeyEventType 00046 { 00048 csKeyEventTypeUp = 0, 00050 csKeyEventTypeDown 00051 } csKeyEventType; 00052 00054 typedef enum _csMouseEventType 00055 { 00057 csMouseEventTypeMove = 0, 00059 csMouseEventTypeUp, 00061 csMouseEventTypeDown, 00063 csMouseEventTypeClick, 00065 csMouseEventTypeDoubleClick 00066 } csMouseEventType; 00067 00073 enum csMouseButton 00074 { 00076 csmbNone = -1, 00078 csmbLeft = 0, 00080 csmbRight = 1, 00082 csmbMiddle = 2, 00084 csmbWheelUp = 3, 00086 csmbWheelDown = 4, 00088 csmbExtra1 = 5, 00090 csmbExtra2 = 6, 00092 csmbHWheelLeft = 7, 00094 csmbHWheelRight = 8 00095 }; 00096 00102 00103 typedef enum _csKeyModifierType 00104 { 00106 csKeyModifierTypeShift = 0, 00108 csKeyModifierTypeCtrl, 00110 csKeyModifierTypeAlt, 00112 csKeyModifierTypeCapsLock, 00114 csKeyModifierTypeNumLock, 00116 csKeyModifierTypeScrollLock, 00117 00121 csKeyModifierTypeLast 00122 } csKeyModifierType; 00123 00125 typedef enum _csKeyModifierNumType 00126 { 00128 csKeyModifierNumLeft = 0, 00130 csKeyModifierNumRight, 00131 00136 csKeyModifierNumAny = 0x1f 00137 } csKeyModifierNumType; 00138 00140 typedef struct _csKeyModifiers 00141 { 00158 unsigned int modifiers[csKeyModifierTypeLast]; 00159 } csKeyModifiers; 00168 00169 #define CSMASK_SHIFT (1 << csKeyModifierTypeShift) 00171 #define CSMASK_CTRL (1 << csKeyModifierTypeCtrl) 00173 #define CSMASK_ALT (1 << csKeyModifierTypeAlt) 00175 #define CSMASK_ALLSHIFTS (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT) 00176 00178 #define CSMASK_CAPSLOCK (1 << csKeyModifierTypeCapsLock) 00180 #define CSMASK_NUMLOCK (1 << csKeyModifierTypeNumLock) 00182 #define CSMASK_SCROLLLOCK (1 << csKeyModifierTypeScrollLock) 00184 #define CSMASK_ALLLOCKS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | CSMASK_SCROLLLOCK) 00185 00187 #define CSMASK_ALLMODIFIERS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \ 00188 CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS) 00189 00202 00203 #define CSKEY_ESC 27 00205 #define CSKEY_ENTER '\n' 00207 #define CSKEY_TAB '\t' 00209 #define CSKEY_BACKSPACE '\b' 00211 #define CSKEY_SPACE ' ' 00212 00214 #define CSKEY_SPECIAL_FIRST 0x108000 00216 #define CSKEY_SPECIAL_LAST 0x10fffd 00218 #define CSKEY_SPECIAL(code) (CSKEY_SPECIAL_FIRST + (code)) 00220 #define CSKEY_IS_SPECIAL(rawCode) \ 00221 ((rawCode >= CSKEY_SPECIAL_FIRST) && ((rawCode) <= CSKEY_SPECIAL_LAST)) 00223 #define CSKEY_SPECIAL_NUM(rawCode) ((rawCode) - CSKEY_SPECIAL_FIRST) 00224 00226 #define CSKEY_UP CSKEY_SPECIAL(0x00) 00228 #define CSKEY_DOWN CSKEY_SPECIAL(0x01) 00230 #define CSKEY_LEFT CSKEY_SPECIAL(0x02) 00232 #define CSKEY_RIGHT CSKEY_SPECIAL(0x03) 00234 #define CSKEY_PGUP CSKEY_SPECIAL(0x04) 00236 #define CSKEY_PGDN CSKEY_SPECIAL(0x05) 00238 #define CSKEY_HOME CSKEY_SPECIAL(0x06) 00240 #define CSKEY_END CSKEY_SPECIAL(0x07) 00242 #define CSKEY_INS CSKEY_SPECIAL(0x08) 00244 #define CSKEY_DEL CSKEY_SPECIAL(0x09) 00246 #define CSKEY_CONTEXT CSKEY_SPECIAL(0x0a) 00248 #define CSKEY_PRINTSCREEN CSKEY_SPECIAL(0x0b) 00250 #define CSKEY_PAUSE CSKEY_SPECIAL(0x0c) 00252 #define CSKEY_F1 CSKEY_SPECIAL(0x10) 00254 #define CSKEY_F2 CSKEY_SPECIAL(0x11) 00256 #define CSKEY_F3 CSKEY_SPECIAL(0x12) 00258 #define CSKEY_F4 CSKEY_SPECIAL(0x13) 00260 #define CSKEY_F5 CSKEY_SPECIAL(0x14) 00262 #define CSKEY_F6 CSKEY_SPECIAL(0x15) 00264 #define CSKEY_F7 CSKEY_SPECIAL(0x16) 00266 #define CSKEY_F8 CSKEY_SPECIAL(0x17) 00268 #define CSKEY_F9 CSKEY_SPECIAL(0x18) 00270 #define CSKEY_F10 CSKEY_SPECIAL(0x19) 00272 #define CSKEY_F11 CSKEY_SPECIAL(0x1a) 00274 #define CSKEY_F12 CSKEY_SPECIAL(0x1b) 00275 00277 #define CSKEY_MODIFIER_FIRST 0x2000 00279 #define CSKEY_MODIFIER_LAST 0x3fff 00280 00284 #define CSKEY_MODIFIERTYPE_SHIFT 5 00286 #define CSKEY_MODIFIER(type, num) \ 00287 CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + ((type) << CSKEY_MODIFIERTYPE_SHIFT) + (num)) 00289 #define CSKEY_IS_MODIFIER(rawCode) \ 00290 (CSKEY_IS_SPECIAL(rawCode) && \ 00291 ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \ 00292 (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST))) 00294 #define CSKEY_MODIFIER_TYPE(rawCode) \ 00295 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \ 00296 CSKEY_MODIFIERTYPE_SHIFT) 00298 #define CSKEY_MODIFIER_NUM(rawCode) \ 00299 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \ 00300 ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1)) 00301 00303 #define CSKEY_MODIFIER_COMPARE_MASK(bitmask1, bitmask2) \ 00304 ((bitmask1) == (bitmask2) \ 00305 || ((bitmask1) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask2) != 0) \ 00306 || ((bitmask2) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask1) != 0)) 00307 00312 #define CSKEY_MODIFIER_COMPARE_CODE(key1, key2) \ 00313 ((CSKEY_MODIFIER_TYPE (key1) == CSKEY_MODIFIER_TYPE (key2)) \ 00314 && ((CSKEY_MODIFIER_NUM(key1) == csKeyModifierNumAny) \ 00315 || (CSKEY_MODIFIER_NUM(key2) == csKeyModifierNumAny) \ 00316 || (CSKEY_MODIFIER_NUM(key1) == CSKEY_MODIFIER_NUM(key1)))) 00317 00319 #define CSKEY_SHIFT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeShift,n) 00321 #define CSKEY_SHIFT_FIRST CSKEY_SHIFT_NUM(0) 00323 #define CSKEY_SHIFT_LAST CSKEY_SHIFT_NUM(0x1e) 00324 00326 #define CSKEY_SHIFT_LEFT CSKEY_SHIFT_NUM(csKeyModifierNumLeft) 00328 #define CSKEY_SHIFT_RIGHT CSKEY_SHIFT_NUM(csKeyModifierNumRight) 00330 #define CSKEY_SHIFT CSKEY_SHIFT_NUM(csKeyModifierNumAny) 00331 00333 #define CSKEY_CTRL_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeCtrl,n) 00335 #define CSKEY_CTRL_FIRST CSKEY_CTRL_NUM(0) 00337 #define CSKEY_CTRL_LAST CSKEY_CTRL_NUM(0x1e) 00338 00340 #define CSKEY_CTRL_LEFT CSKEY_CTRL_NUM(csKeyModifierNumLeft) 00342 #define CSKEY_CTRL_RIGHT CSKEY_CTRL_NUM(csKeyModifierNumRight) 00344 #define CSKEY_CTRL CSKEY_CTRL_NUM(csKeyModifierNumAny) 00345 00347 #define CSKEY_ALT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeAlt,n) 00349 #define CSKEY_ALT_FIRST CSKEY_ALT_NUM(0) 00351 #define CSKEY_ALT_LAST CSKEY_ALT_NUM(0x1e) 00352 00354 #define CSKEY_ALT_LEFT CSKEY_ALT_NUM(csKeyModifierNumLeft) 00356 #define CSKEY_ALT_RIGHT CSKEY_ALT_NUM(csKeyModifierNumRight) 00358 #define CSKEY_ALT CSKEY_ALT_NUM(csKeyModifierNumAny) 00359 00361 #define CSKEY_PAD_FLAG 0x4000 00363 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)(code) | CSKEY_PAD_FLAG) 00364 00366 #define CSKEY_IS_PAD_KEY(rawCode) (((rawCode) & CSKEY_PAD_FLAG) != 0) 00367 00370 #define CSKEY_PAD_TO_NORMAL(rawCode) ((rawCode) & (~CSKEY_PAD_FLAG)) 00371 00373 #define CSKEY_PAD1 CSKEY_PAD_KEY('1') 00375 #define CSKEY_PAD2 CSKEY_PAD_KEY('2') 00377 #define CSKEY_PAD3 CSKEY_PAD_KEY('3') 00379 #define CSKEY_PAD4 CSKEY_PAD_KEY('4') 00381 #define CSKEY_PAD5 CSKEY_PAD_KEY('5') 00383 #define CSKEY_CENTER CSKEY_PAD5 00385 #define CSKEY_PAD6 CSKEY_PAD_KEY('6') 00387 #define CSKEY_PAD7 CSKEY_PAD_KEY('7') 00389 #define CSKEY_PAD8 CSKEY_PAD_KEY('8') 00391 #define CSKEY_PAD9 CSKEY_PAD_KEY('9') 00393 #define CSKEY_PAD0 CSKEY_PAD_KEY('0') 00395 #define CSKEY_PADDECIMAL CSKEY_PAD_KEY('.') 00397 #define CSKEY_PADDIV CSKEY_PAD_KEY('/') 00399 #define CSKEY_PADMULT CSKEY_PAD_KEY('*') 00401 #define CSKEY_PADMINUS CSKEY_PAD_KEY('-') 00403 #define CSKEY_PADPLUS CSKEY_PAD_KEY('+') 00405 #define CSKEY_PADENTER CSKEY_PAD_KEY('\n') 00406 00411 #define CSKEY_PADNUM \ 00412 (CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG) 00414 #define CSKEY_CAPSLOCK \ 00415 CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny) 00417 #define CSKEY_SCROLLLOCK \ 00418 CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny) 00419 00421 typedef enum _csKeyCharType 00422 { 00424 csKeyCharTypeNormal = 0, 00426 csKeyCharTypeDead 00427 } csKeyCharType; 00428 00443 00444 #define CSEVTYPE_Keyboard 0x00000001 00446 #define CSEVTYPE_Mouse 0x00000002 00448 #define CSEVTYPE_Joystick 0x00000004 00449 00451 #endif // __CS_IUTIL_EVDEFS_H__
Generated for Crystal Space 2.0 by doxygen 1.6.1