Mercurial > sdl-ios-xcode
annotate src/video/windib/SDL_dibevents.c @ 4179:d7294b7c732d SDL-1.2
Date: Fri, 24 Apr 2009 17:47:07 +0200
From: Stefan Klug
Subject: Re: [SDL] SVN doesn't compile for wince
the patch applied for Revision 4483 was seemingly not checked for side
effects.
It broke the WinCE build.
The attached patch should fix these problems. I'm not using SDL 1.2 on
CE anymore, and therefore haven't tested the patch... but at least it
compiles ;-)
Regards Stefan
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 07 May 2009 12:40:16 +0000 |
parents | 092c0bc69155 |
children | 0a7481888fd1 |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
4159 | 3 Copyright (C) 1997-2009 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1303
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0 | 7 License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1303
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0 | 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 | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1303
diff
changeset
|
13 Lesser General Public License for more details. |
0 | 14 |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1303
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1303
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1303
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 18 |
19 Sam Lantinga | |
252
e8157fcb3114
Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
145
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
22 #include "SDL_config.h" |
0 | 23 |
1433
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
24 #define WIN32_LEAN_AND_MEAN |
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
25 #include <windows.h> |
0 | 26 |
1358
c71e05b4dc2e
More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
27 #include "SDL_main.h" |
0 | 28 #include "SDL_events.h" |
29 #include "SDL_syswm.h" | |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
30 #include "../../events/SDL_sysevents.h" |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
31 #include "../../events/SDL_events_c.h" |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
32 #include "../wincommon/SDL_lowvideo.h" |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
33 #include "SDL_gapidibvideo.h" |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
34 #include "SDL_vkeys.h" |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
35 |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
36 #ifdef SDL_VIDEO_DRIVER_GAPI |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
37 #include "../gapi/SDL_gapivideo.h" |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
38 #endif |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
39 |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
40 #ifdef SDL_VIDEO_DRIVER_WINDIB |
0 | 41 #include "SDL_dibvideo.h" |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
42 #endif |
0 | 43 |
44 #ifndef WM_APP | |
45 #define WM_APP 0x8000 | |
46 #endif | |
47 | |
48 #ifdef _WIN32_WCE | |
49 #define NO_GETKEYBOARDSTATE | |
50 #endif | |
51 | |
52 /* The translation table from a Microsoft VK keysym to a SDL keysym */ | |
53 static SDLKey VK_keymap[SDLK_LAST]; | |
1472
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
54 static SDL_keysym *TranslateKey(WPARAM vkey, UINT scancode, SDL_keysym *keysym, int pressed); |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
55 static SDLKey Arrows_keymap[4]; |
0 | 56 |
57 /* Masks for processing the windows KEYDOWN and KEYUP messages */ | |
58 #define REPEATED_KEYMASK (1<<30) | |
59 #define EXTENDED_KEYMASK (1<<24) | |
60 | |
145
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
61 /* DJM: If the user setup the window for us, we want to save his window proc, |
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
62 and give him a chance to handle some messages. */ |
1303
52b5afd7ecee
Date: Tue, 05 Jul 2005 21:43:26 +1000
Sam Lantinga <slouken@libsdl.org>
parents:
1288
diff
changeset
|
63 #ifdef STRICT |
52b5afd7ecee
Date: Tue, 05 Jul 2005 21:43:26 +1000
Sam Lantinga <slouken@libsdl.org>
parents:
1288
diff
changeset
|
64 #define WNDPROCTYPE WNDPROC |
52b5afd7ecee
Date: Tue, 05 Jul 2005 21:43:26 +1000
Sam Lantinga <slouken@libsdl.org>
parents:
1288
diff
changeset
|
65 #else |
52b5afd7ecee
Date: Tue, 05 Jul 2005 21:43:26 +1000
Sam Lantinga <slouken@libsdl.org>
parents:
1288
diff
changeset
|
66 #define WNDPROCTYPE FARPROC |
52b5afd7ecee
Date: Tue, 05 Jul 2005 21:43:26 +1000
Sam Lantinga <slouken@libsdl.org>
parents:
1288
diff
changeset
|
67 #endif |
52b5afd7ecee
Date: Tue, 05 Jul 2005 21:43:26 +1000
Sam Lantinga <slouken@libsdl.org>
parents:
1288
diff
changeset
|
68 static WNDPROCTYPE userWindowProc = NULL; |
145
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
69 |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
70 |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
71 #ifdef SDL_VIDEO_DRIVER_GAPI |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
72 |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
73 WPARAM rotateKey(WPARAM key,int direction) |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
74 { |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
75 if(direction ==0 ) return key; |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
76 |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
77 switch (key) { |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
78 case 0x26: /* up */ |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
79 return Arrows_keymap[(2 + direction) % 4]; |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
80 case 0x27: /* right */ |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
81 return Arrows_keymap[(1 + direction) % 4]; |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
82 case 0x28: /* down */ |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
83 return Arrows_keymap[direction % 4]; |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
84 case 0x25: /* left */ |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
85 return Arrows_keymap[(3 + direction) % 4]; |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
86 } |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
87 |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
88 return key; |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
89 } |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
90 |
4179
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
91 /* for gapi landscape mode */ |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
92 static void GapiTransform(SDL_ScreenOrientation rotate, char hires, Sint16 *x, Sint16 *y) { |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
93 Sint16 rotatedX; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
94 Sint16 rotatedY; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
95 |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
96 if (hires) { |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
97 *x = *x * 2; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
98 *y = *y * 2; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
99 } |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
100 |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
101 switch(rotate) { |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
102 case SDL_ORIENTATION_UP: |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
103 { |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
104 /* this code needs testing on a real device! |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
105 So it will be enabled later */ |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
106 /* |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
107 #ifdef _WIN32_WCE |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
108 #if _WIN32_WCE >= 420 |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
109 // test device orientation |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
110 // FIXME: do not check every mouse message |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
111 DEVMODE settings; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
112 SDL_memset(&settings, 0, sizeof(DEVMODE)); |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
113 settings.dmSize = sizeof(DEVMODE); |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
114 settings.dmFields = DM_DISPLAYORIENTATION; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
115 ChangeDisplaySettingsEx(NULL, &settings, NULL, CDS_TEST, NULL); |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
116 if( settings.dmOrientation == DMDO_90 ) |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
117 { |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
118 rotatedX = SDL_VideoSurface->h - *x; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
119 rotatedY = *y; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
120 *x = rotatedX; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
121 *y = rotatedY; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
122 } |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
123 #endif |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
124 #endif */ |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
125 } |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
126 break; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
127 // FIXME: Older version used just SDL_VideoSurface->(w, h) |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
128 // w and h are "clipped" while x and y are "raw", which caused |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
129 // x in former and y in latter case to be clipped in a wrong direction, |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
130 // thus offsetting the coordinate on 2 x clip pixels |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
131 // (like, 128 for 640 -> 512 clipping). |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
132 // We will now try to extract and use raw values. |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
133 // The way to do that RIGHT is do (orientation-dependent) clipping before |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
134 // doing this transform, but it's hardly possible. |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
135 |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
136 // SEE SDL_mouse.c /ClipOffset to understand these calculations. |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
137 case SDL_ORIENTATION_RIGHT: |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
138 if (!SDL_VideoSurface) |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
139 break; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
140 rotatedX = (2 * ((SDL_VideoSurface->offset%SDL_VideoSurface->pitch)/ |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
141 SDL_VideoSurface->format->BytesPerPixel)) |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
142 + SDL_VideoSurface->w - *y; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
143 rotatedY = *x; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
144 *x = rotatedX; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
145 *y = rotatedY; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
146 break; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
147 case SDL_ORIENTATION_LEFT: |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
148 if (!SDL_VideoSurface) |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
149 break; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
150 rotatedX = *y; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
151 rotatedY = (2 * (SDL_VideoSurface->offset/SDL_VideoSurface->pitch)) |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
152 + SDL_VideoSurface->h - *x; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
153 *x = rotatedX; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
154 *y = rotatedY; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
155 break; |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
156 } |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
157 } |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
158 |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
159 #endif |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
160 |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
161 |
0 | 162 /* The main Win32 event handler */ |
1456
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
163 LRESULT DIB_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) |
0 | 164 { |
165 extern int posted; | |
166 | |
167 switch (msg) { | |
168 case WM_SYSKEYDOWN: | |
169 case WM_KEYDOWN: { | |
170 SDL_keysym keysym; | |
171 | |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
172 #ifdef SDL_VIDEO_DRIVER_GAPI |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
173 if(this->hidden->gapiInfo) |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
174 { |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
175 // Drop GAPI artefacts |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
176 if (wParam == 0x84 || wParam == 0x5B) |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
177 return 0; |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
178 |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
179 wParam = rotateKey(wParam, this->hidden->gapiInfo->coordinateTransform); |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
180 } |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
181 #endif |
0 | 182 /* Ignore repeated keys */ |
183 if ( lParam&REPEATED_KEYMASK ) { | |
184 return(0); | |
185 } | |
186 switch (wParam) { | |
187 case VK_CONTROL: | |
188 if ( lParam&EXTENDED_KEYMASK ) | |
189 wParam = VK_RCONTROL; | |
190 else | |
191 wParam = VK_LCONTROL; | |
192 break; | |
193 case VK_SHIFT: | |
194 /* EXTENDED trick doesn't work here */ | |
1282
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
195 { |
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
196 Uint8 *state = SDL_GetKeyState(NULL); |
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
197 if (state[SDLK_LSHIFT] == SDL_RELEASED && (GetKeyState(VK_LSHIFT) & 0x8000)) { |
558
2312d983e1fe
Fixed left/right shift detection on Windows (thanks Mike!)
Sam Lantinga <slouken@libsdl.org>
parents:
523
diff
changeset
|
198 wParam = VK_LSHIFT; |
1282
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
199 } else if (state[SDLK_RSHIFT] == SDL_RELEASED && (GetKeyState(VK_RSHIFT) & 0x8000)) { |
558
2312d983e1fe
Fixed left/right shift detection on Windows (thanks Mike!)
Sam Lantinga <slouken@libsdl.org>
parents:
523
diff
changeset
|
200 wParam = VK_RSHIFT; |
2312d983e1fe
Fixed left/right shift detection on Windows (thanks Mike!)
Sam Lantinga <slouken@libsdl.org>
parents:
523
diff
changeset
|
201 } else { |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
202 /* Win9x */ |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
203 int sc = HIWORD(lParam) & 0xFF; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
204 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
205 if (sc == 0x2A) |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
206 wParam = VK_LSHIFT; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
207 else |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
208 if (sc == 0x36) |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
209 wParam = VK_RSHIFT; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
210 else |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
211 wParam = VK_LSHIFT; |
1282
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
212 } |
558
2312d983e1fe
Fixed left/right shift detection on Windows (thanks Mike!)
Sam Lantinga <slouken@libsdl.org>
parents:
523
diff
changeset
|
213 } |
0 | 214 break; |
215 case VK_MENU: | |
216 if ( lParam&EXTENDED_KEYMASK ) | |
217 wParam = VK_RMENU; | |
218 else | |
219 wParam = VK_LMENU; | |
220 break; | |
221 } | |
112
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
222 #ifdef NO_GETKEYBOARDSTATE |
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
223 /* this is the workaround for the missing ToAscii() and ToUnicode() in CE (not necessary at KEYUP!) */ |
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
224 if ( SDL_TranslateUNICODE ) { |
140
3c35d8f160bd
Fixed compiling on Windows CE
Sam Lantinga <slouken@libsdl.org>
parents:
112
diff
changeset
|
225 MSG m; |
112
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
226 |
140
3c35d8f160bd
Fixed compiling on Windows CE
Sam Lantinga <slouken@libsdl.org>
parents:
112
diff
changeset
|
227 m.hwnd = hwnd; |
3c35d8f160bd
Fixed compiling on Windows CE
Sam Lantinga <slouken@libsdl.org>
parents:
112
diff
changeset
|
228 m.message = msg; |
3c35d8f160bd
Fixed compiling on Windows CE
Sam Lantinga <slouken@libsdl.org>
parents:
112
diff
changeset
|
229 m.wParam = wParam; |
3c35d8f160bd
Fixed compiling on Windows CE
Sam Lantinga <slouken@libsdl.org>
parents:
112
diff
changeset
|
230 m.lParam = lParam; |
3c35d8f160bd
Fixed compiling on Windows CE
Sam Lantinga <slouken@libsdl.org>
parents:
112
diff
changeset
|
231 m.time = 0; |
3c35d8f160bd
Fixed compiling on Windows CE
Sam Lantinga <slouken@libsdl.org>
parents:
112
diff
changeset
|
232 if ( TranslateMessage(&m) && PeekMessage(&m, hwnd, 0, WM_USER, PM_NOREMOVE) && (m.message == WM_CHAR) ) { |
112
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
233 GetMessage(&m, hwnd, 0, WM_USER); |
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
234 wParam = m.wParam; |
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
235 } |
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
236 } |
9ef74357a5fb
Incorporated slightly modified version of Rainer's WinCE patch
Sam Lantinga <slouken@lokigames.com>
parents:
36
diff
changeset
|
237 #endif /* NO_GETKEYBOARDSTATE */ |
0 | 238 posted = SDL_PrivateKeyboard(SDL_PRESSED, |
239 TranslateKey(wParam,HIWORD(lParam),&keysym,1)); | |
240 } | |
241 return(0); | |
242 | |
243 case WM_SYSKEYUP: | |
244 case WM_KEYUP: { | |
245 SDL_keysym keysym; | |
246 | |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
247 #ifdef SDL_VIDEO_DRIVER_GAPI |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
248 if(this->hidden->gapiInfo) |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
249 { |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
250 // Drop GAPI artifacts |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
251 if (wParam == 0x84 || wParam == 0x5B) |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
252 return 0; |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
253 |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
254 wParam = rotateKey(wParam, this->hidden->gapiInfo->coordinateTransform); |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
255 } |
1251
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
256 #endif |
86d0d01290ea
Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
Ryan C. Gordon <icculus@icculus.org>
parents:
1152
diff
changeset
|
257 |
0 | 258 switch (wParam) { |
259 case VK_CONTROL: | |
260 if ( lParam&EXTENDED_KEYMASK ) | |
261 wParam = VK_RCONTROL; | |
262 else | |
263 wParam = VK_LCONTROL; | |
264 break; | |
265 case VK_SHIFT: | |
266 /* EXTENDED trick doesn't work here */ | |
1282
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
267 { |
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
268 Uint8 *state = SDL_GetKeyState(NULL); |
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
269 if (state[SDLK_LSHIFT] == SDL_PRESSED && !(GetKeyState(VK_LSHIFT) & 0x8000)) { |
572
4c740ee76027
Mike Nordell _really_ fixed Win32 windib shift state handling this time. :)
Sam Lantinga <slouken@libsdl.org>
parents:
558
diff
changeset
|
270 wParam = VK_LSHIFT; |
1282
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
271 } else if (state[SDLK_RSHIFT] == SDL_PRESSED && !(GetKeyState(VK_RSHIFT) & 0x8000)) { |
572
4c740ee76027
Mike Nordell _really_ fixed Win32 windib shift state handling this time. :)
Sam Lantinga <slouken@libsdl.org>
parents:
558
diff
changeset
|
272 wParam = VK_RSHIFT; |
4c740ee76027
Mike Nordell _really_ fixed Win32 windib shift state handling this time. :)
Sam Lantinga <slouken@libsdl.org>
parents:
558
diff
changeset
|
273 } else { |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
274 /* Win9x */ |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
275 int sc = HIWORD(lParam) & 0xFF; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
276 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
277 if (sc == 0x2A) |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
278 wParam = VK_LSHIFT; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
279 else |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
280 if (sc == 0x36) |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
281 wParam = VK_RSHIFT; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
282 else |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
283 wParam = VK_LSHIFT; |
1282
217f5d5a49e5
Date: Sat, 15 Jan 2005 02:01:51 +0000 (UTC)
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
284 } |
572
4c740ee76027
Mike Nordell _really_ fixed Win32 windib shift state handling this time. :)
Sam Lantinga <slouken@libsdl.org>
parents:
558
diff
changeset
|
285 } |
0 | 286 break; |
287 case VK_MENU: | |
288 if ( lParam&EXTENDED_KEYMASK ) | |
289 wParam = VK_RMENU; | |
290 else | |
291 wParam = VK_LMENU; | |
292 break; | |
293 } | |
1526 | 294 /* Windows only reports keyup for print screen */ |
295 if ( wParam == VK_SNAPSHOT && SDL_GetKeyState(NULL)[SDLK_PRINT] == SDL_RELEASED ) { | |
296 posted = SDL_PrivateKeyboard(SDL_PRESSED, | |
297 TranslateKey(wParam,HIWORD(lParam),&keysym,1)); | |
298 } | |
0 | 299 posted = SDL_PrivateKeyboard(SDL_RELEASED, |
300 TranslateKey(wParam,HIWORD(lParam),&keysym,0)); | |
301 } | |
302 return(0); | |
726
5429a06aa816
SDL12: Disable screensaver in windib driver.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
303 #if defined(SC_SCREENSAVE) && defined(SC_MONITORPOWER) |
5429a06aa816
SDL12: Disable screensaver in windib driver.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
304 case WM_SYSCOMMAND: { |
3981
b0d021cf41b6
windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREENSAVER.
Ryan C. Gordon <icculus@icculus.org>
parents:
3868
diff
changeset
|
305 const DWORD val = (DWORD) (wParam & 0xFFF0); |
b0d021cf41b6
windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREENSAVER.
Ryan C. Gordon <icculus@icculus.org>
parents:
3868
diff
changeset
|
306 if ((val == SC_SCREENSAVE) || (val == SC_MONITORPOWER)) { |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
307 if (this->hidden->dibInfo && !allow_screensaver) { |
3981
b0d021cf41b6
windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREENSAVER.
Ryan C. Gordon <icculus@icculus.org>
parents:
3868
diff
changeset
|
308 /* Note that this doesn't stop anything on Vista |
b0d021cf41b6
windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREENSAVER.
Ryan C. Gordon <icculus@icculus.org>
parents:
3868
diff
changeset
|
309 if the screensaver has a password. */ |
726
5429a06aa816
SDL12: Disable screensaver in windib driver.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
310 return(0); |
3981
b0d021cf41b6
windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREENSAVER.
Ryan C. Gordon <icculus@icculus.org>
parents:
3868
diff
changeset
|
311 } |
b0d021cf41b6
windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREENSAVER.
Ryan C. Gordon <icculus@icculus.org>
parents:
3868
diff
changeset
|
312 } |
726
5429a06aa816
SDL12: Disable screensaver in windib driver.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
313 } |
5429a06aa816
SDL12: Disable screensaver in windib driver.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
314 /* Fall through to default processing */ |
5429a06aa816
SDL12: Disable screensaver in windib driver.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
315 #endif /* SC_SCREENSAVE && SC_MONITORPOWER */ |
5429a06aa816
SDL12: Disable screensaver in windib driver.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
316 |
0 | 317 default: { |
318 /* Only post the event if we're watching for it */ | |
319 if ( SDL_ProcessEvents[SDL_SYSWMEVENT] == SDL_ENABLE ) { | |
320 SDL_SysWMmsg wmmsg; | |
321 | |
322 SDL_VERSION(&wmmsg.version); | |
323 wmmsg.hwnd = hwnd; | |
324 wmmsg.msg = msg; | |
325 wmmsg.wParam = wParam; | |
326 wmmsg.lParam = lParam; | |
327 posted = SDL_PrivateSysWMEvent(&wmmsg); | |
145
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
328 |
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
329 /* DJM: If the user isn't watching for private |
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
330 messages in her SDL event loop, then pass it |
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
331 along to any win32 specific window proc. |
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
332 */ |
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
140
diff
changeset
|
333 } else if (userWindowProc) { |
721
ab0656314eef
Date: Thu, 18 Sep 2003 14:24:35 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
572
diff
changeset
|
334 return CallWindowProc(userWindowProc, hwnd, msg, wParam, lParam); |
0 | 335 } |
336 } | |
337 break; | |
338 } | |
339 return(DefWindowProc(hwnd, msg, wParam, lParam)); | |
340 } | |
341 | |
4179
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
342 static void DIB_GenerateMouseMotionEvent(_THIS) |
4167 | 343 { |
344 extern int mouse_relative; | |
345 extern int posted; | |
346 | |
347 POINT mouse; | |
348 GetCursorPos( &mouse ); | |
349 | |
350 if ( mouse_relative ) { | |
351 POINT center; | |
352 center.x = (SDL_VideoSurface->w/2); | |
353 center.y = (SDL_VideoSurface->h/2); | |
354 ClientToScreen(SDL_Window, ¢er); | |
355 | |
356 mouse.x -= (Sint16)center.x; | |
357 mouse.y -= (Sint16)center.y; | |
358 if ( mouse.x || mouse.y ) { | |
359 SetCursorPos(center.x, center.y); | |
360 posted = SDL_PrivateMouseMotion(0, 1, mouse.x, mouse.y); | |
361 } | |
362 } else if ( SDL_GetAppState() & SDL_APPMOUSEFOCUS ) { | |
363 ScreenToClient(SDL_Window, &mouse); | |
4179
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
364 #ifdef SDL_VIDEO_DRIVER_GAPI |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
365 if (SDL_VideoSurface && this->hidden->gapiInfo) |
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
366 GapiTransform(this->hidden->gapiInfo->coordinateTransform, this->hidden->gapiInfo->hiresFix, &mouse.x, &mouse.y); |
4167 | 367 #endif |
368 posted = SDL_PrivateMouseMotion(0, 0, mouse.x, mouse.y); | |
369 } | |
370 } | |
371 | |
0 | 372 void DIB_PumpEvents(_THIS) |
373 { | |
374 MSG msg; | |
375 | |
523
c210010f50f4
Fixed windows event handling for ActiveX controls (thanks Huib-Jan!)
Sam Lantinga <slouken@libsdl.org>
parents:
515
diff
changeset
|
376 while ( PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) { |
c210010f50f4
Fixed windows event handling for ActiveX controls (thanks Huib-Jan!)
Sam Lantinga <slouken@libsdl.org>
parents:
515
diff
changeset
|
377 if ( GetMessage(&msg, NULL, 0, 0) > 0 ) { |
0 | 378 DispatchMessage(&msg); |
379 } | |
380 } | |
4167 | 381 |
382 if ( SDL_GetAppState() & SDL_APPINPUTFOCUS ) { | |
4179
d7294b7c732d
Date: Fri, 24 Apr 2009 17:47:07 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
4170
diff
changeset
|
383 DIB_GenerateMouseMotionEvent( this ); |
4167 | 384 } |
0 | 385 } |
386 | |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
387 static HKL hLayoutUS = NULL; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
388 |
0 | 389 void DIB_InitOSKeymap(_THIS) |
390 { | |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
391 int i; |
3868 | 392 #ifndef _WIN32_WCE |
393 char current_layout[KL_NAMELENGTH]; | |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
394 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
395 GetKeyboardLayoutName(current_layout); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
396 //printf("Initial Keyboard Layout Name: '%s'\n", current_layout); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
397 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
398 hLayoutUS = LoadKeyboardLayout("00000409", KLF_NOTELLSHELL); |
3868 | 399 |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
400 if (!hLayoutUS) { |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
401 //printf("Failed to load US keyboard layout. Using current.\n"); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
402 hLayoutUS = GetKeyboardLayout(0); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
403 } |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
404 LoadKeyboardLayout(current_layout, KLF_ACTIVATE); |
3868 | 405 #else |
406 #if _WIN32_WCE >=420 | |
407 TCHAR current_layout[KL_NAMELENGTH]; | |
0 | 408 |
3868 | 409 GetKeyboardLayoutName(current_layout); |
410 //printf("Initial Keyboard Layout Name: '%s'\n", current_layout); | |
411 | |
412 hLayoutUS = LoadKeyboardLayout(L"00000409", 0); | |
413 | |
414 if (!hLayoutUS) { | |
415 //printf("Failed to load US keyboard layout. Using current.\n"); | |
416 hLayoutUS = GetKeyboardLayout(0); | |
417 } | |
418 LoadKeyboardLayout(current_layout, 0); | |
419 #endif // _WIN32_WCE >=420 | |
420 #endif | |
0 | 421 /* Map the VK keysyms */ |
1379
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
422 for ( i=0; i<SDL_arraysize(VK_keymap); ++i ) |
0 | 423 VK_keymap[i] = SDLK_UNKNOWN; |
424 | |
425 VK_keymap[VK_BACK] = SDLK_BACKSPACE; | |
426 VK_keymap[VK_TAB] = SDLK_TAB; | |
427 VK_keymap[VK_CLEAR] = SDLK_CLEAR; | |
428 VK_keymap[VK_RETURN] = SDLK_RETURN; | |
429 VK_keymap[VK_PAUSE] = SDLK_PAUSE; | |
430 VK_keymap[VK_ESCAPE] = SDLK_ESCAPE; | |
431 VK_keymap[VK_SPACE] = SDLK_SPACE; | |
432 VK_keymap[VK_APOSTROPHE] = SDLK_QUOTE; | |
433 VK_keymap[VK_COMMA] = SDLK_COMMA; | |
434 VK_keymap[VK_MINUS] = SDLK_MINUS; | |
435 VK_keymap[VK_PERIOD] = SDLK_PERIOD; | |
436 VK_keymap[VK_SLASH] = SDLK_SLASH; | |
437 VK_keymap[VK_0] = SDLK_0; | |
438 VK_keymap[VK_1] = SDLK_1; | |
439 VK_keymap[VK_2] = SDLK_2; | |
440 VK_keymap[VK_3] = SDLK_3; | |
441 VK_keymap[VK_4] = SDLK_4; | |
442 VK_keymap[VK_5] = SDLK_5; | |
443 VK_keymap[VK_6] = SDLK_6; | |
444 VK_keymap[VK_7] = SDLK_7; | |
445 VK_keymap[VK_8] = SDLK_8; | |
446 VK_keymap[VK_9] = SDLK_9; | |
447 VK_keymap[VK_SEMICOLON] = SDLK_SEMICOLON; | |
448 VK_keymap[VK_EQUALS] = SDLK_EQUALS; | |
449 VK_keymap[VK_LBRACKET] = SDLK_LEFTBRACKET; | |
450 VK_keymap[VK_BACKSLASH] = SDLK_BACKSLASH; | |
1253
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
451 VK_keymap[VK_OEM_102] = SDLK_LESS; |
0 | 452 VK_keymap[VK_RBRACKET] = SDLK_RIGHTBRACKET; |
453 VK_keymap[VK_GRAVE] = SDLK_BACKQUOTE; | |
327
13fc64213765
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
454 VK_keymap[VK_BACKTICK] = SDLK_BACKQUOTE; |
0 | 455 VK_keymap[VK_A] = SDLK_a; |
456 VK_keymap[VK_B] = SDLK_b; | |
457 VK_keymap[VK_C] = SDLK_c; | |
458 VK_keymap[VK_D] = SDLK_d; | |
459 VK_keymap[VK_E] = SDLK_e; | |
460 VK_keymap[VK_F] = SDLK_f; | |
461 VK_keymap[VK_G] = SDLK_g; | |
462 VK_keymap[VK_H] = SDLK_h; | |
463 VK_keymap[VK_I] = SDLK_i; | |
464 VK_keymap[VK_J] = SDLK_j; | |
465 VK_keymap[VK_K] = SDLK_k; | |
466 VK_keymap[VK_L] = SDLK_l; | |
467 VK_keymap[VK_M] = SDLK_m; | |
468 VK_keymap[VK_N] = SDLK_n; | |
469 VK_keymap[VK_O] = SDLK_o; | |
470 VK_keymap[VK_P] = SDLK_p; | |
471 VK_keymap[VK_Q] = SDLK_q; | |
472 VK_keymap[VK_R] = SDLK_r; | |
473 VK_keymap[VK_S] = SDLK_s; | |
474 VK_keymap[VK_T] = SDLK_t; | |
475 VK_keymap[VK_U] = SDLK_u; | |
476 VK_keymap[VK_V] = SDLK_v; | |
477 VK_keymap[VK_W] = SDLK_w; | |
478 VK_keymap[VK_X] = SDLK_x; | |
479 VK_keymap[VK_Y] = SDLK_y; | |
480 VK_keymap[VK_Z] = SDLK_z; | |
481 VK_keymap[VK_DELETE] = SDLK_DELETE; | |
482 | |
483 VK_keymap[VK_NUMPAD0] = SDLK_KP0; | |
484 VK_keymap[VK_NUMPAD1] = SDLK_KP1; | |
485 VK_keymap[VK_NUMPAD2] = SDLK_KP2; | |
486 VK_keymap[VK_NUMPAD3] = SDLK_KP3; | |
487 VK_keymap[VK_NUMPAD4] = SDLK_KP4; | |
488 VK_keymap[VK_NUMPAD5] = SDLK_KP5; | |
489 VK_keymap[VK_NUMPAD6] = SDLK_KP6; | |
490 VK_keymap[VK_NUMPAD7] = SDLK_KP7; | |
491 VK_keymap[VK_NUMPAD8] = SDLK_KP8; | |
492 VK_keymap[VK_NUMPAD9] = SDLK_KP9; | |
493 VK_keymap[VK_DECIMAL] = SDLK_KP_PERIOD; | |
494 VK_keymap[VK_DIVIDE] = SDLK_KP_DIVIDE; | |
495 VK_keymap[VK_MULTIPLY] = SDLK_KP_MULTIPLY; | |
496 VK_keymap[VK_SUBTRACT] = SDLK_KP_MINUS; | |
497 VK_keymap[VK_ADD] = SDLK_KP_PLUS; | |
498 | |
499 VK_keymap[VK_UP] = SDLK_UP; | |
500 VK_keymap[VK_DOWN] = SDLK_DOWN; | |
501 VK_keymap[VK_RIGHT] = SDLK_RIGHT; | |
502 VK_keymap[VK_LEFT] = SDLK_LEFT; | |
503 VK_keymap[VK_INSERT] = SDLK_INSERT; | |
504 VK_keymap[VK_HOME] = SDLK_HOME; | |
505 VK_keymap[VK_END] = SDLK_END; | |
506 VK_keymap[VK_PRIOR] = SDLK_PAGEUP; | |
507 VK_keymap[VK_NEXT] = SDLK_PAGEDOWN; | |
508 | |
509 VK_keymap[VK_F1] = SDLK_F1; | |
510 VK_keymap[VK_F2] = SDLK_F2; | |
511 VK_keymap[VK_F3] = SDLK_F3; | |
512 VK_keymap[VK_F4] = SDLK_F4; | |
513 VK_keymap[VK_F5] = SDLK_F5; | |
514 VK_keymap[VK_F6] = SDLK_F6; | |
515 VK_keymap[VK_F7] = SDLK_F7; | |
516 VK_keymap[VK_F8] = SDLK_F8; | |
517 VK_keymap[VK_F9] = SDLK_F9; | |
518 VK_keymap[VK_F10] = SDLK_F10; | |
519 VK_keymap[VK_F11] = SDLK_F11; | |
520 VK_keymap[VK_F12] = SDLK_F12; | |
521 VK_keymap[VK_F13] = SDLK_F13; | |
522 VK_keymap[VK_F14] = SDLK_F14; | |
523 VK_keymap[VK_F15] = SDLK_F15; | |
524 | |
525 VK_keymap[VK_NUMLOCK] = SDLK_NUMLOCK; | |
526 VK_keymap[VK_CAPITAL] = SDLK_CAPSLOCK; | |
527 VK_keymap[VK_SCROLL] = SDLK_SCROLLOCK; | |
528 VK_keymap[VK_RSHIFT] = SDLK_RSHIFT; | |
529 VK_keymap[VK_LSHIFT] = SDLK_LSHIFT; | |
530 VK_keymap[VK_RCONTROL] = SDLK_RCTRL; | |
531 VK_keymap[VK_LCONTROL] = SDLK_LCTRL; | |
532 VK_keymap[VK_RMENU] = SDLK_RALT; | |
533 VK_keymap[VK_LMENU] = SDLK_LALT; | |
534 VK_keymap[VK_RWIN] = SDLK_RSUPER; | |
535 VK_keymap[VK_LWIN] = SDLK_LSUPER; | |
536 | |
537 VK_keymap[VK_HELP] = SDLK_HELP; | |
538 #ifdef VK_PRINT | |
539 VK_keymap[VK_PRINT] = SDLK_PRINT; | |
540 #endif | |
541 VK_keymap[VK_SNAPSHOT] = SDLK_PRINT; | |
542 VK_keymap[VK_CANCEL] = SDLK_BREAK; | |
543 VK_keymap[VK_APPS] = SDLK_MENU; | |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
544 |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
545 Arrows_keymap[3] = 0x25; |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
546 Arrows_keymap[2] = 0x26; |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
547 Arrows_keymap[1] = 0x27; |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
548 Arrows_keymap[0] = 0x28; |
0 | 549 } |
550 | |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
551 #define EXTKEYPAD(keypad) ((scancode & 0x100)?(mvke):(keypad)) |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
552 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
553 static int SDL_MapVirtualKey(int scancode, int vkey) |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
554 { |
3868 | 555 #ifndef _WIN32_WCE |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
556 int mvke = MapVirtualKeyEx(scancode & 0xFF, 1, hLayoutUS); |
3868 | 557 #else |
558 int mvke = MapVirtualKey(scancode & 0xFF, 1); | |
559 #endif | |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
560 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
561 switch(vkey) { |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
562 /* These are always correct */ |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
563 case VK_DIVIDE: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
564 case VK_MULTIPLY: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
565 case VK_SUBTRACT: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
566 case VK_ADD: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
567 case VK_LWIN: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
568 case VK_RWIN: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
569 case VK_APPS: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
570 /* These are already handled */ |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
571 case VK_LCONTROL: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
572 case VK_RCONTROL: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
573 case VK_LSHIFT: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
574 case VK_RSHIFT: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
575 case VK_LMENU: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
576 case VK_RMENU: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
577 case VK_SNAPSHOT: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
578 case VK_PAUSE: |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
579 return vkey; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
580 } |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
581 switch(mvke) { |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
582 /* Distinguish between keypad and extended keys */ |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
583 case VK_INSERT: return EXTKEYPAD(VK_NUMPAD0); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
584 case VK_DELETE: return EXTKEYPAD(VK_DECIMAL); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
585 case VK_END: return EXTKEYPAD(VK_NUMPAD1); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
586 case VK_DOWN: return EXTKEYPAD(VK_NUMPAD2); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
587 case VK_NEXT: return EXTKEYPAD(VK_NUMPAD3); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
588 case VK_LEFT: return EXTKEYPAD(VK_NUMPAD4); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
589 case VK_CLEAR: return EXTKEYPAD(VK_NUMPAD5); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
590 case VK_RIGHT: return EXTKEYPAD(VK_NUMPAD6); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
591 case VK_HOME: return EXTKEYPAD(VK_NUMPAD7); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
592 case VK_UP: return EXTKEYPAD(VK_NUMPAD8); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
593 case VK_PRIOR: return EXTKEYPAD(VK_NUMPAD9); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
594 } |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
595 return mvke?mvke:vkey; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
596 } |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
597 |
1472
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
598 static SDL_keysym *TranslateKey(WPARAM vkey, UINT scancode, SDL_keysym *keysym, int pressed) |
0 | 599 { |
600 /* Set the keysym information */ | |
601 keysym->scancode = (unsigned char) scancode; | |
602 keysym->mod = KMOD_NONE; | |
603 keysym->unicode = 0; | |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
604 |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
605 if ((vkey == VK_RETURN) && (scancode & 0x100)) { |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
606 /* No VK_ code for the keypad enter key */ |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
607 keysym->sym = SDLK_KP_ENTER; |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
608 } |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
609 else { |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
610 keysym->sym = VK_keymap[SDL_MapVirtualKey(scancode, vkey)]; |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
611 } |
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
612 |
1253
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
613 if ( pressed && SDL_TranslateUNICODE ) { |
0 | 614 #ifdef NO_GETKEYBOARDSTATE |
615 /* Uh oh, better hope the vkey is close enough.. */ | |
4162
3b7fc3416601
GAPI fixes from Stefan Klug
Sam Lantinga <slouken@libsdl.org>
parents:
4159
diff
changeset
|
616 if((keysym->sym == vkey) || (vkey > 0x7f)) |
0 | 617 keysym->unicode = vkey; |
618 #else | |
1253
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
619 BYTE keystate[256]; |
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
620 Uint16 wchars[2]; |
0 | 621 |
622 GetKeyboardState(keystate); | |
4170 | 623 /* Numlock isn't taken into account in ToUnicode, |
624 * so we handle it as a special case here */ | |
625 if ((keystate[VK_NUMLOCK] & 1) && vkey >= VK_NUMPAD0 && vkey <= VK_NUMPAD9) | |
626 { | |
627 keysym->unicode = vkey - VK_NUMPAD0 + '0'; | |
628 } | |
629 else if (SDL_ToUnicode((UINT)vkey, scancode, keystate, wchars, sizeof(wchars)/sizeof(wchars[0]), 0) > 0) | |
1253
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
630 { |
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
631 keysym->unicode = wchars[0]; |
0 | 632 } |
633 #endif /* NO_GETKEYBOARDSTATE */ | |
634 } | |
1852
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
635 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
636 #if 0 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
637 { |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
638 HKL hLayoutCurrent = GetKeyboardLayout(0); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
639 int sc = scancode & 0xFF; |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
640 |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
641 printf("SYM:%d, VK:0x%02X, SC:0x%04X, US:(1:0x%02X, 3:0x%02X), " |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
642 "Current:(1:0x%02X, 3:0x%02X)\n", |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
643 keysym->sym, vkey, scancode, |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
644 MapVirtualKeyEx(sc, 1, hLayoutUS), |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
645 MapVirtualKeyEx(sc, 3, hLayoutUS), |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
646 MapVirtualKeyEx(sc, 1, hLayoutCurrent), |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
647 MapVirtualKeyEx(sc, 3, hLayoutCurrent) |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
648 ); |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
649 } |
eb2d5480ae95
Try to keep SDL keysyms sane regardless of keyboard layout in windib target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1526
diff
changeset
|
650 #endif |
0 | 651 return(keysym); |
652 } | |
653 | |
654 int DIB_CreateWindow(_THIS) | |
655 { | |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
656 char *windowid = SDL_getenv("SDL_WINDOWID"); |
1152
51a8702d8ecd
Updates to PocketPC (WinCE) support, thanks to Dmitry Yakimov at
Ryan C. Gordon <icculus@icculus.org>
parents:
1048
diff
changeset
|
657 |
1288
ea3888b472bf
Cleaned up the app registration stuff a bit
Sam Lantinga <slouken@libsdl.org>
parents:
1282
diff
changeset
|
658 SDL_RegisterApp(NULL, 0, 0); |
1280
f61f045343d3
Re-query the SDL_WINDOWID each time we initialize the video
Sam Lantinga <slouken@libsdl.org>
parents:
1264
diff
changeset
|
659 |
f61f045343d3
Re-query the SDL_WINDOWID each time we initialize the video
Sam Lantinga <slouken@libsdl.org>
parents:
1264
diff
changeset
|
660 SDL_windowid = (windowid != NULL); |
0 | 661 if ( SDL_windowid ) { |
1152
51a8702d8ecd
Updates to PocketPC (WinCE) support, thanks to Dmitry Yakimov at
Ryan C. Gordon <icculus@icculus.org>
parents:
1048
diff
changeset
|
662 #if defined(_WIN32_WCE) && (_WIN32_WCE < 300) |
1280
f61f045343d3
Re-query the SDL_WINDOWID each time we initialize the video
Sam Lantinga <slouken@libsdl.org>
parents:
1264
diff
changeset
|
663 /* wince 2.1 does not have strtol */ |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
664 wchar_t *windowid_t = SDL_malloc((SDL_strlen(windowid) + 1) * sizeof(wchar_t)); |
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
665 MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, windowid, -1, windowid_t, SDL_strlen(windowid) + 1); |
1280
f61f045343d3
Re-query the SDL_WINDOWID each time we initialize the video
Sam Lantinga <slouken@libsdl.org>
parents:
1264
diff
changeset
|
666 SDL_Window = (HWND)wcstol(windowid_t, NULL, 0); |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
667 SDL_free(windowid_t); |
1152
51a8702d8ecd
Updates to PocketPC (WinCE) support, thanks to Dmitry Yakimov at
Ryan C. Gordon <icculus@icculus.org>
parents:
1048
diff
changeset
|
668 #else |
1456
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
669 SDL_Window = (HWND)SDL_strtoull(windowid, NULL, 0); |
1152
51a8702d8ecd
Updates to PocketPC (WinCE) support, thanks to Dmitry Yakimov at
Ryan C. Gordon <icculus@icculus.org>
parents:
1048
diff
changeset
|
670 #endif |
974
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
671 if ( SDL_Window == NULL ) { |
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
672 SDL_SetError("Couldn't get user specified window"); |
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
673 return(-1); |
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
674 } |
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
675 |
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
676 /* DJM: we want all event's for the user specified |
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
677 window to be handled by SDL. |
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
678 */ |
1472
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
679 userWindowProc = (WNDPROCTYPE)GetWindowLongPtr(SDL_Window, GWLP_WNDPROC); |
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
680 SetWindowLongPtr(SDL_Window, GWLP_WNDPROC, (LONG_PTR)WinMessage); |
0 | 681 } else { |
682 SDL_Window = CreateWindow(SDL_Appname, SDL_Appname, | |
683 (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX), | |
833
31fa08b36380
Added support for SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
684 CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, NULL, NULL, SDL_Instance, NULL); |
0 | 685 if ( SDL_Window == NULL ) { |
686 SDL_SetError("Couldn't create window"); | |
687 return(-1); | |
688 } | |
689 ShowWindow(SDL_Window, SW_HIDE); | |
690 } | |
1523 | 691 |
692 /* JC 14 Mar 2006 | |
693 Flush the message loop or this can cause big problems later | |
694 Especially if the user decides to use dialog boxes or assert()! | |
695 */ | |
696 WIN_FlushMessageQueue(); | |
697 | |
0 | 698 return(0); |
699 } | |
700 | |
701 void DIB_DestroyWindow(_THIS) | |
702 { | |
974
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
703 if ( SDL_windowid ) { |
1472
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
704 SetWindowLongPtr(SDL_Window, GWLP_WNDPROC, (LONG_PTR)userWindowProc); |
974
b8427b5151ed
Restore the user specified window proc after shutdown
Sam Lantinga <slouken@libsdl.org>
parents:
833
diff
changeset
|
705 } else { |
0 | 706 DestroyWindow(SDL_Window); |
707 } | |
1288
ea3888b472bf
Cleaned up the app registration stuff a bit
Sam Lantinga <slouken@libsdl.org>
parents:
1282
diff
changeset
|
708 SDL_UnregisterApp(); |
1523 | 709 |
710 /* JC 14 Mar 2006 | |
711 Flush the message loop or this can cause big problems later | |
712 Especially if the user decides to use dialog boxes or assert()! | |
713 */ | |
714 WIN_FlushMessageQueue(); | |
0 | 715 } |