iutil/evdefs.h
Go to the documentation of this file.00001 /* 00002 Event system related interfaces 00003 Written by Andrew Zabolotny <[email protected]> 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 00091 }; 00092 00098 00099 typedef enum _csKeyModifierType 00100 { 00102 csKeyModifierTypeShift = 0, 00104 csKeyModifierTypeCtrl, 00106 csKeyModifierTypeAlt, 00108 csKeyModifierTypeCapsLock, 00110 csKeyModifierTypeNumLock, 00112 csKeyModifierTypeScrollLock, 00113 00117 csKeyModifierTypeLast 00118 } csKeyModifierType; 00119 00121 typedef enum _csKeyModifierNumType 00122 { 00124 csKeyModifierNumLeft = 0, 00126 csKeyModifierNumRight, 00127 00132 csKeyModifierNumAny = 0x1f 00133 } csKeyModifierNumType; 00134 00136 typedef struct _csKeyModifiers 00137 { 00154 unsigned int modifiers[csKeyModifierTypeLast]; 00155 } csKeyModifiers; 00164 00165 #define CSMASK_SHIFT (1 << csKeyModifierTypeShift) 00167 #define CSMASK_CTRL (1 << csKeyModifierTypeCtrl) 00169 #define CSMASK_ALT (1 << csKeyModifierTypeAlt) 00171 #define CSMASK_ALLSHIFTS (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT) 00172 00174 #define CSMASK_CAPSLOCK (1 << csKeyModifierTypeCapsLock) 00176 #define CSMASK_NUMLOCK (1 << csKeyModifierTypeNumLock) 00178 #define CSMASK_SCROLLLOCK (1 << csKeyModifierTypeScrollLock) 00180 #define CSMASK_ALLMODIFIERS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \ 00181 CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS) 00182 00195 00196 #define CSKEY_ESC 27 00198 #define CSKEY_ENTER '\n' 00200 #define CSKEY_TAB '\t' 00202 #define CSKEY_BACKSPACE '\b' 00204 #define CSKEY_SPACE ' ' 00205 00207 #define CSKEY_SPECIAL_FIRST 0x108000 00209 #define CSKEY_SPECIAL_LAST 0x10fffd 00211 #define CSKEY_SPECIAL(code) (CSKEY_SPECIAL_FIRST + (code)) 00213 #define CSKEY_IS_SPECIAL(rawCode) \ 00214 ((rawCode >= CSKEY_SPECIAL_FIRST) && ((rawCode) <= CSKEY_SPECIAL_LAST)) 00216 #define CSKEY_SPECIAL_NUM(rawCode) ((rawCode) - CSKEY_SPECIAL_FIRST) 00217 00219 #define CSKEY_UP CSKEY_SPECIAL(0x00) 00221 #define CSKEY_DOWN CSKEY_SPECIAL(0x01) 00223 #define CSKEY_LEFT CSKEY_SPECIAL(0x02) 00225 #define CSKEY_RIGHT CSKEY_SPECIAL(0x03) 00227 #define CSKEY_PGUP CSKEY_SPECIAL(0x04) 00229 #define CSKEY_PGDN CSKEY_SPECIAL(0x05) 00231 #define CSKEY_HOME CSKEY_SPECIAL(0x06) 00233 #define CSKEY_END CSKEY_SPECIAL(0x07) 00235 #define CSKEY_INS CSKEY_SPECIAL(0x08) 00237 #define CSKEY_DEL CSKEY_SPECIAL(0x09) 00239 #define CSKEY_CONTEXT CSKEY_SPECIAL(0x0a) 00241 #define CSKEY_PRINTSCREEN CSKEY_SPECIAL(0x0b) 00243 #define CSKEY_PAUSE CSKEY_SPECIAL(0x0c) 00245 #define CSKEY_F1 CSKEY_SPECIAL(0x10) 00247 #define CSKEY_F2 CSKEY_SPECIAL(0x11) 00249 #define CSKEY_F3 CSKEY_SPECIAL(0x12) 00251 #define CSKEY_F4 CSKEY_SPECIAL(0x13) 00253 #define CSKEY_F5 CSKEY_SPECIAL(0x14) 00255 #define CSKEY_F6 CSKEY_SPECIAL(0x15) 00257 #define CSKEY_F7 CSKEY_SPECIAL(0x16) 00259 #define CSKEY_F8 CSKEY_SPECIAL(0x17) 00261 #define CSKEY_F9 CSKEY_SPECIAL(0x18) 00263 #define CSKEY_F10 CSKEY_SPECIAL(0x19) 00265 #define CSKEY_F11 CSKEY_SPECIAL(0x1a) 00267 #define CSKEY_F12 CSKEY_SPECIAL(0x1b) 00268 00270 #define CSKEY_MODIFIER_FIRST 0x2000 00272 #define CSKEY_MODIFIER_LAST 0x3fff 00273 00277 #define CSKEY_MODIFIERTYPE_SHIFT 5 00279 #define CSKEY_MODIFIER(type, num) \ 00280 CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + ((type) << CSKEY_MODIFIERTYPE_SHIFT) + (num)) 00282 #define CSKEY_IS_MODIFIER(rawCode) \ 00283 (CSKEY_IS_SPECIAL(rawCode) && \ 00284 ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \ 00285 (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST))) 00287 #define CSKEY_MODIFIER_TYPE(rawCode) \ 00288 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \ 00289 CSKEY_MODIFIERTYPE_SHIFT) 00291 #define CSKEY_MODIFIER_NUM(rawCode) \ 00292 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \ 00293 ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1)) 00294 00296 #define CSKEY_MODIFIER_COMPARE_MASK(bitmask1, bitmask2) \ 00297 ((bitmask1) == (bitmask2) \ 00298 || ((bitmask1) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask2) != 0) \ 00299 || ((bitmask2) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask1) != 0)) 00300 00305 #define CSKEY_MODIFIER_COMPARE_CODE(key1, key2) \ 00306 ((CSKEY_MODIFIER_TYPE (key1) == CSKEY_MODIFIER_TYPE (key2)) \ 00307 && ((CSKEY_MODIFIER_NUM(key1) == csKeyModifierNumAny) \ 00308 || (CSKEY_MODIFIER_NUM(key2) == csKeyModifierNumAny) \ 00309 || (CSKEY_MODIFIER_NUM(key1) == CSKEY_MODIFIER_NUM(key1)))) 00310 00312 #define CSKEY_SHIFT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeShift,n) 00314 #define CSKEY_SHIFT_FIRST CSKEY_SHIFT_NUM(0) 00316 #define CSKEY_SHIFT_LAST CSKEY_SHIFT_NUM(0x1e) 00317 00319 #define CSKEY_SHIFT_LEFT CSKEY_SHIFT_NUM(csKeyModifierNumLeft) 00321 #define CSKEY_SHIFT_RIGHT CSKEY_SHIFT_NUM(csKeyModifierNumRight) 00323 #define CSKEY_SHIFT CSKEY_SHIFT_NUM(csKeyModifierNumAny) 00324 00326 #define CSKEY_CTRL_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeCtrl,n) 00328 #define CSKEY_CTRL_FIRST CSKEY_CTRL_NUM(0) 00330 #define CSKEY_CTRL_LAST CSKEY_CTRL_NUM(0x1e) 00331 00333 #define CSKEY_CTRL_LEFT CSKEY_CTRL_NUM(csKeyModifierNumLeft) 00335 #define CSKEY_CTRL_RIGHT CSKEY_CTRL_NUM(csKeyModifierNumRight) 00337 #define CSKEY_CTRL CSKEY_CTRL_NUM(csKeyModifierNumAny) 00338 00340 #define CSKEY_ALT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeAlt,n) 00342 #define CSKEY_ALT_FIRST CSKEY_ALT_NUM(0) 00344 #define CSKEY_ALT_LAST CSKEY_ALT_NUM(0x1e) 00345 00347 #define CSKEY_ALT_LEFT CSKEY_ALT_NUM(csKeyModifierNumLeft) 00349 #define CSKEY_ALT_RIGHT CSKEY_ALT_NUM(csKeyModifierNumRight) 00351 #define CSKEY_ALT CSKEY_ALT_NUM(csKeyModifierNumAny) 00352 00354 #define CSKEY_PAD_FLAG 0x4000 00356 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)(code) | CSKEY_PAD_FLAG) 00357 00359 #define CSKEY_IS_PAD_KEY(rawCode) (((rawCode) & CSKEY_PAD_FLAG) != 0) 00360 00363 #define CSKEY_PAD_TO_NORMAL(rawCode) ((rawCode) & (~CSKEY_PAD_FLAG)) 00364 00366 #define CSKEY_PAD1 CSKEY_PAD_KEY('1') 00368 #define CSKEY_PAD2 CSKEY_PAD_KEY('2') 00370 #define CSKEY_PAD3 CSKEY_PAD_KEY('3') 00372 #define CSKEY_PAD4 CSKEY_PAD_KEY('4') 00374 #define CSKEY_PAD5 CSKEY_PAD_KEY('5') 00376 #define CSKEY_CENTER CSKEY_PAD5 00378 #define CSKEY_PAD6 CSKEY_PAD_KEY('6') 00380 #define CSKEY_PAD7 CSKEY_PAD_KEY('7') 00382 #define CSKEY_PAD8 CSKEY_PAD_KEY('8') 00384 #define CSKEY_PAD9 CSKEY_PAD_KEY('9') 00386 #define CSKEY_PAD0 CSKEY_PAD_KEY('0') 00388 #define CSKEY_PADDECIMAL CSKEY_PAD_KEY('.') 00390 #define CSKEY_PADDIV CSKEY_PAD_KEY('/') 00392 #define CSKEY_PADMULT CSKEY_PAD_KEY('*') 00394 #define CSKEY_PADMINUS CSKEY_PAD_KEY('-') 00396 #define CSKEY_PADPLUS CSKEY_PAD_KEY('+') 00398 #define CSKEY_PADENTER CSKEY_PAD_KEY('\n') 00399 00404 #define CSKEY_PADNUM \ 00405 CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG 00407 #define CSKEY_CAPSLOCK \ 00408 CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny) 00410 #define CSKEY_SCROLLLOCK \ 00411 CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny) 00412 00414 typedef enum _csKeyCharType 00415 { 00417 csKeyCharTypeNormal = 0, 00419 csKeyCharTypeDead 00420 } csKeyCharType; 00421 00436 00437 #define CSEVTYPE_Keyboard 0x00000001 00439 #define CSEVTYPE_Mouse 0x00000002 00441 #define CSEVTYPE_Joystick 0x00000004 00442 00444 #endif // __CS_IUTIL_EVDEFS_H__
Generated for Crystal Space by doxygen 1.4.7