Mercurial > sdl-ios-xcode
annotate include/SDL_types.h @ 1282:217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
From: jimrandomh
Subject: [SDL] Re: Modifier keys pressed during initialization stick
I wrote a simple test program which initializes SDL, prints the SDL
version number, then prints any keydown and keyup events with their
modifiers. (Source code below). Compilation was done using Visual
Studio 6, release mode.
My test sequence was:
Start a command prompt. Type the name of the test program.
shift down
enter down (program starts)
Wait for window to appear
enter up
shift up
spacebar down
spacebar up
Under Windows 98, the output was correct:
SDL 1.2.8
left shift down
shift-return down
shift-return up
left shift up
space down
space up
Under Windows 2000 and under Windows XP, the output was:
SDL 1.2.8
shift-space down
shift-space up
Since shift was not held at the time space was pressed, this is
incorrect. Similar results were observed with launching in different
ways (including double-clicking in Windows Explorer), so it does not
depend on the launching terminal.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 29 Jan 2006 07:57:13 +0000 |
parents | 173c063d4f55 |
children | c9b51268668f |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
769
b8d311d90021
Updated copyright information for 2004 (Happy New Year!)
Sam Lantinga <slouken@libsdl.org>
parents:
661
diff
changeset
|
3 Copyright (C) 1997-2004 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
6 modify it under the terms of the GNU Library General Public | |
7 License as published by the Free Software Foundation; either | |
8 version 2 of the License, or (at your option) any later version. | |
9 | |
10 This library is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 Library General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU Library General Public | |
16 License along with this library; if not, write to the Free | |
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | |
19 Sam Lantinga | |
251
b8688cfdc232
Updated the headers with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
173
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
22 | |
23 #ifdef SAVE_RCSID | |
24 static char rcsid = | |
25 "@(#) $Id$"; | |
26 #endif | |
27 | |
28 /* General data types used by the SDL library */ | |
29 | |
30 #ifndef _SDL_types_h | |
31 #define _SDL_types_h | |
32 | |
33 /* The number of elements in a table */ | |
34 #define SDL_TABLESIZE(table) (sizeof(table)/sizeof(table[0])) | |
35 | |
36 /* Basic data types */ | |
37 typedef enum { | |
38 SDL_FALSE = 0, | |
39 SDL_TRUE = 1 | |
40 } SDL_bool; | |
908
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
41 |
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
42 #ifdef H_MMBASIC /* mmbasic.h (Tru64 MME) */ |
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
43 /* Some of the basic types are already defined in mmbasic.h */ |
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
44 typedef signed char Sint8; |
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
45 typedef signed short Sint16; |
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
46 typedef signed int Sint32; |
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
47 #else |
0 | 48 typedef unsigned char Uint8; |
49 typedef signed char Sint8; | |
50 typedef unsigned short Uint16; | |
51 typedef signed short Sint16; | |
52 typedef unsigned int Uint32; | |
53 typedef signed int Sint32; | |
908
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
54 #endif |
0 | 55 |
56 /* Figure out how to support 64-bit datatypes */ | |
57 #if !defined(__STRICT_ANSI__) | |
912
bc0b95b02235
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
908
diff
changeset
|
58 #ifdef __osf__ /* Tru64 */ |
908
6104bfff77ba
Date: Mon, 28 Jun 2004 19:58:08 +0900
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
59 #define SDL_HAS_64BIT_TYPE long |
1190 | 60 #elif defined(__GNUC__) || defined(__MWERKS__) || defined(__SUNPRO_C) || defined(__DECC) || defined(__WATCOMC__) |
0 | 61 #define SDL_HAS_64BIT_TYPE long long |
62 #elif defined(_MSC_VER) /* VC++ */ | |
63 #define SDL_HAS_64BIT_TYPE __int64 | |
64 #endif | |
65 #endif /* !__STRICT_ANSI__ */ | |
66 | |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
166
diff
changeset
|
67 /* The 64-bit type isn't available on EPOC/Symbian OS */ |
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
166
diff
changeset
|
68 #ifdef __SYMBIAN32__ |
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
166
diff
changeset
|
69 #undef SDL_HAS_64BIT_TYPE |
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
166
diff
changeset
|
70 #endif |
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
166
diff
changeset
|
71 |
0 | 72 /* The 64-bit datatype isn't supported on all platforms */ |
73 #ifdef SDL_HAS_64BIT_TYPE | |
654
e92bcf2573cb
Added audio and CD-ROM support for OSF/Tru64 (thanks Hayashi!)
Sam Lantinga <slouken@libsdl.org>
parents:
534
diff
changeset
|
74 #ifndef H_MMBASIC |
0 | 75 typedef unsigned SDL_HAS_64BIT_TYPE Uint64; |
654
e92bcf2573cb
Added audio and CD-ROM support for OSF/Tru64 (thanks Hayashi!)
Sam Lantinga <slouken@libsdl.org>
parents:
534
diff
changeset
|
76 #endif |
0 | 77 typedef SDL_HAS_64BIT_TYPE Sint64; |
78 #else | |
79 /* This is really just a hack to prevent the compiler from complaining */ | |
80 typedef struct { | |
81 Uint32 hi; | |
82 Uint32 lo; | |
83 } Uint64, Sint64; | |
84 #endif | |
85 | |
86 /* Make sure the types really have the right sizes */ | |
87 #define SDL_COMPILE_TIME_ASSERT(name, x) \ | |
88 typedef int SDL_dummy_ ## name[(x) * 2 - 1] | |
89 | |
90 SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); | |
91 SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); | |
92 SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); | |
93 SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); | |
94 SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); | |
95 SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); | |
96 SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); | |
97 SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); | |
98 | |
463
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
99 /* Check to make sure enums are the size of ints, for structure packing. |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
100 For both Watcom C/C++ and Borland C/C++ the compiler option that makes |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
101 enums having the size of an int must be enabled. |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
102 This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
103 */ |
534
1ea658a3dd52
Turn on enums always ints for CodeWarrior (thanks Darrell!)
Sam Lantinga <slouken@libsdl.org>
parents:
463
diff
changeset
|
104 /* Enable enums always int in CodeWarrior (for MPW use "-enum int") */ |
1ea658a3dd52
Turn on enums always ints for CodeWarrior (thanks Darrell!)
Sam Lantinga <slouken@libsdl.org>
parents:
463
diff
changeset
|
105 #ifdef __MWERKS__ |
1ea658a3dd52
Turn on enums always ints for CodeWarrior (thanks Darrell!)
Sam Lantinga <slouken@libsdl.org>
parents:
463
diff
changeset
|
106 #pragma enumsalwaysint on |
1ea658a3dd52
Turn on enums always ints for CodeWarrior (thanks Darrell!)
Sam Lantinga <slouken@libsdl.org>
parents:
463
diff
changeset
|
107 #endif |
1ea658a3dd52
Turn on enums always ints for CodeWarrior (thanks Darrell!)
Sam Lantinga <slouken@libsdl.org>
parents:
463
diff
changeset
|
108 |
463
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
109 typedef enum { |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
110 DUMMY_ENUM_VALUE |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
111 } SDL_DUMMY_ENUM; |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
112 |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
113 SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); |
bf7389310d27
Added compile-time checking for the size of enums to SDL_types.h
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
114 |
0 | 115 #undef SDL_COMPILE_TIME_ASSERT |
116 | |
117 /* General keyboard/mouse state definitions */ | |
118 enum { SDL_PRESSED = 0x01, SDL_RELEASED = 0x00 }; | |
119 | |
120 #endif |