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 00074 typedef enum _csKeyModifierType 00075 { 00077 csKeyModifierTypeShift = 0, 00079 csKeyModifierTypeCtrl, 00081 csKeyModifierTypeAlt, 00083 csKeyModifierTypeCapsLock, 00085 csKeyModifierTypeNumLock, 00087 csKeyModifierTypeScrollLock, 00088 00092 csKeyModifierTypeLast 00093 } csKeyModifierType; 00094 00096 typedef enum _csKeyModifierNumType 00097 { 00099 csKeyModifierNumLeft = 0, 00101 csKeyModifierNumRight, 00102 00107 csKeyModifierNumAny = 0x1f 00108 } csKeyModifierNumType; 00109 00111 typedef struct _csKeyModifiers 00112 { 00129 unsigned int modifiers[csKeyModifierTypeLast]; 00130 } csKeyModifiers; 00139 00140 #define CSMASK_SHIFT (1 << csKeyModifierTypeShift) 00141 00142 #define CSMASK_CTRL (1 << csKeyModifierTypeCtrl) 00143 00144 #define CSMASK_ALT (1 << csKeyModifierTypeAlt) 00145 00146 #define CSMASK_ALLSHIFTS (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT) 00147 00149 #define CSMASK_CAPSLOCK (1 << csKeyModifierTypeCapsLock) 00150 00151 #define CSMASK_NUMLOCK (1 << csKeyModifierTypeNumLock) 00152 00153 #define CSMASK_SCROLLLOCK (1 << csKeyModifierTypeScrollLock) 00154 00155 #define CSMASK_ALLMODIFIERS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \ 00156 CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS) 00157 00170 00171 #define CSKEY_ESC 27 00172 00173 #define CSKEY_ENTER '\n' 00174 00175 #define CSKEY_TAB '\t' 00176 00177 #define CSKEY_BACKSPACE '\b' 00178 00179 #define CSKEY_SPACE ' ' 00180 00182 #define CSKEY_SPECIAL_FIRST 0x108000 00183 00184 #define CSKEY_SPECIAL_LAST 0x10fffd 00185 00186 #define CSKEY_SPECIAL(code) (CSKEY_SPECIAL_FIRST + (code)) 00187 00188 #define CSKEY_IS_SPECIAL(rawCode) \ 00189 ((rawCode >= CSKEY_SPECIAL_FIRST) && ((rawCode) <= CSKEY_SPECIAL_LAST)) 00190 00191 #define CSKEY_SPECIAL_NUM(rawCode) ((rawCode) - CSKEY_SPECIAL_FIRST) 00192 00194 #define CSKEY_UP CSKEY_SPECIAL(0x00) 00195 00196 #define CSKEY_DOWN CSKEY_SPECIAL(0x01) 00197 00198 #define CSKEY_LEFT CSKEY_SPECIAL(0x02) 00199 00200 #define CSKEY_RIGHT CSKEY_SPECIAL(0x03) 00201 00202 #define CSKEY_PGUP CSKEY_SPECIAL(0x04) 00203 00204 #define CSKEY_PGDN CSKEY_SPECIAL(0x05) 00205 00206 #define CSKEY_HOME CSKEY_SPECIAL(0x06) 00207 00208 #define CSKEY_END CSKEY_SPECIAL(0x07) 00209 00210 #define CSKEY_INS CSKEY_SPECIAL(0x08) 00211 00212 #define CSKEY_DEL CSKEY_SPECIAL(0x09) 00213 00214 #define CSKEY_CONTEXT CSKEY_SPECIAL(0x0a) 00215 00216 #define CSKEY_PRINTSCREEN CSKEY_SPECIAL(0x0b) 00217 00218 #define CSKEY_PAUSE CSKEY_SPECIAL(0x0c) 00219 00220 #define CSKEY_F1 CSKEY_SPECIAL(0x10) 00221 00222 #define CSKEY_F2 CSKEY_SPECIAL(0x11) 00223 00224 #define CSKEY_F3 CSKEY_SPECIAL(0x12) 00225 00226 #define CSKEY_F4 CSKEY_SPECIAL(0x13) 00227 00228 #define CSKEY_F5 CSKEY_SPECIAL(0x14) 00229 00230 #define CSKEY_F6 CSKEY_SPECIAL(0x15) 00231 00232 #define CSKEY_F7 CSKEY_SPECIAL(0x16) 00233 00234 #define CSKEY_F8 CSKEY_SPECIAL(0x17) 00235 00236 #define CSKEY_F9 CSKEY_SPECIAL(0x18) 00237 00238 #define CSKEY_F10 CSKEY_SPECIAL(0x19) 00239 00240 #define CSKEY_F11 CSKEY_SPECIAL(0x1a) 00241 00242 #define CSKEY_F12 CSKEY_SPECIAL(0x1b) 00243 00245 #define CSKEY_MODIFIER_FIRST 0x2000 00246 00247 #define CSKEY_MODIFIER_LAST 0x3fff 00248 00252 #define CSKEY_MODIFIERTYPE_SHIFT 5 00253 00254 #define CSKEY_MODIFIER(type, num) \ 00255 CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + ((type) << CSKEY_MODIFIERTYPE_SHIFT) + (num)) 00256 00257 #define CSKEY_IS_MODIFIER(rawCode) \ 00258 (CSKEY_IS_SPECIAL(rawCode) && \ 00259 ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \ 00260 (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST))) 00261 00262 #define CSKEY_MODIFIER_TYPE(rawCode) \ 00263 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \ 00264 CSKEY_MODIFIERTYPE_SHIFT) 00265 00266 #define CSKEY_MODIFIER_NUM(rawCode) \ 00267 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \ 00268 ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1)) 00269 00271 #define CSKEY_MODIFIER_COMPARE(bitmask1, bitmask2) \ 00272 ((bitmask1) == (bitmask2) \ 00273 || ((bitmask1) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask2) != 0) \ 00274 || ((bitmask2) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask1) != 0)) 00275 00277 #define CSKEY_SHIFT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeShift,n) 00278 00279 #define CSKEY_SHIFT_FIRST CSKEY_SHIFT_NUM(0) 00280 00281 #define CSKEY_SHIFT_LAST CSKEY_SHIFT_NUM(0x1e) 00282 00284 #define CSKEY_SHIFT_LEFT CSKEY_SHIFT_NUM(csKeyModifierNumLeft) 00285 00286 #define CSKEY_SHIFT_RIGHT CSKEY_SHIFT_NUM(csKeyModifierNumRight) 00287 00288 #define CSKEY_SHIFT CSKEY_SHIFT_NUM(csKeyModifierNumAny) 00289 00291 #define CSKEY_CTRL_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeCtrl,n) 00292 00293 #define CSKEY_CTRL_FIRST CSKEY_CTRL_NUM(0) 00294 00295 #define CSKEY_CTRL_LAST CSKEY_CTRL_NUM(0x1e) 00296 00298 #define CSKEY_CTRL_LEFT CSKEY_CTRL_NUM(csKeyModifierNumLeft) 00299 00300 #define CSKEY_CTRL_RIGHT CSKEY_CTRL_NUM(csKeyModifierNumRight) 00301 00302 #define CSKEY_CTRL CSKEY_CTRL_NUM(csKeyModifierNumAny) 00303 00305 #define CSKEY_ALT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeAlt,n) 00306 00307 #define CSKEY_ALT_FIRST CSKEY_ALT_NUM(0) 00308 00309 #define CSKEY_ALT_LAST CSKEY_ALT_NUM(0x1e) 00310 00312 #define CSKEY_ALT_LEFT CSKEY_ALT_NUM(csKeyModifierNumLeft) 00313 00314 #define CSKEY_ALT_RIGHT CSKEY_ALT_NUM(csKeyModifierNumRight) 00315 00316 #define CSKEY_ALT CSKEY_ALT_NUM(csKeyModifierNumAny) 00317 00319 #define CSKEY_PAD_FLAG 0x4000 00320 00321 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)(code) | CSKEY_PAD_FLAG) 00322 00324 #define CSKEY_IS_PAD_KEY(rawCode) (((rawCode) & CSKEY_PAD_FLAG) != 0) 00325 00328 #define CSKEY_PAD_TO_NORMAL(rawCode) ((rawCode) & (~CSKEY_PAD_FLAG)) 00329 00331 #define CSKEY_PAD1 CSKEY_PAD_KEY('1') 00332 00333 #define CSKEY_PAD2 CSKEY_PAD_KEY('2') 00334 00335 #define CSKEY_PAD3 CSKEY_PAD_KEY('3') 00336 00337 #define CSKEY_PAD4 CSKEY_PAD_KEY('4') 00338 00339 #define CSKEY_PAD5 CSKEY_PAD_KEY('5') 00340 00341 #define CSKEY_CENTER CSKEY_PAD5 00342 00343 #define CSKEY_PAD6 CSKEY_PAD_KEY('6') 00344 00345 #define CSKEY_PAD7 CSKEY_PAD_KEY('7') 00346 00347 #define CSKEY_PAD8 CSKEY_PAD_KEY('8') 00348 00349 #define CSKEY_PAD9 CSKEY_PAD_KEY('9') 00350 00351 #define CSKEY_PAD0 CSKEY_PAD_KEY('0') 00352 00353 #define CSKEY_PADDECIMAL CSKEY_PAD_KEY('.') 00354 00355 #define CSKEY_PADDIV CSKEY_PAD_KEY('/') 00356 00357 #define CSKEY_PADMULT CSKEY_PAD_KEY('*') 00358 00359 #define CSKEY_PADMINUS CSKEY_PAD_KEY('-') 00360 00361 #define CSKEY_PADPLUS CSKEY_PAD_KEY('+') 00362 00363 #define CSKEY_PADENTER CSKEY_PAD_KEY('\n') 00364 00369 #define CSKEY_PADNUM \ 00370 CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG 00371 00372 #define CSKEY_CAPSLOCK \ 00373 CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny) 00374 00375 #define CSKEY_SCROLLLOCK \ 00376 CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny) 00377 00379 typedef enum _csKeyCharType 00380 { 00382 csKeyCharTypeNormal = 0, 00384 csKeyCharTypeDead 00385 } csKeyCharType; 00386 00401 00402 #define CSEVTYPE_Keyboard 0x00000001 00403 00404 #define CSEVTYPE_Mouse 0x00000002 00405 00406 #define CSEVTYPE_Joystick 0x00000004 00407 00409 #endif // __CS_IUTIL_EVDEFS_H__
Generated for Crystal Space by doxygen 1.4.6