annotate src/video/quartz/SDL_QuartzEvents.m @ 3914:4fd12011d8d6 SDL-1.2

Quartz code should use F13, F14, and F15 keys instead of PrintScreen, ScrollLock, and Pause, since that's what's on the standard Apple keyboards (minus the laptops, which have neither set). Ideally we'll find a better way to distinguish this...the keys being replaced would be correct on a USB keyboard for Windows. Sigh. Fixes Bugzilla #301.
author Ryan C. Gordon <icculus@icculus.org>
date Wed, 14 Feb 2007 10:23:23 +0000
parents 406b8325ee34
children 4e02435ad2be
rev   line source
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1 /*
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
2 SDL - Simple DirectMedia Layer
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
3 Copyright (C) 1997-2003 Sam Lantinga
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
4
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
5 This library is free software; you can redistribute it and/or
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
6 modify it under the terms of the GNU Library General Public
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
7 License as published by the Free Software Foundation; either
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
8 version 2 of the License, or (at your option) any later version.
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
9
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
10 This library is distributed in the hope that it will be useful,
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
13 Library General Public License for more details.
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
14
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
15 You should have received a copy of the GNU Library General Public
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
16 License along with this library; if not, write to the Free
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
18
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
19 Sam Lantinga
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
20 slouken@libsdl.org
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
21 */
1403
376665398b25 Catch the C++ and Objective C sources too...
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
22 #include "SDL_config.h"
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
23
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
24 #include "SDL_QuartzVideo.h"
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
25
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
26 #include <IOKit/IOMessage.h> /* For wake from sleep detection */
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
27 #include <IOKit/pwr_mgt/IOPMLib.h> /* For wake from sleep detection */
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
28 #include "SDL_QuartzKeys.h"
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
29
934
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
30 /*
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
31 * In Panther, this header defines device dependent masks for
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
32 * right side keys. These definitions only exist in Panther, but
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
33 * the header seems to exist at least in Jaguar and probably earlier
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
34 * versions of the OS, so this should't break anything.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
35 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
36 #include <IOKit/hidsystem/IOLLEvent.h>
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
37 /*
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
38 * These are not defined before Panther. To keep the code compiling
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
39 * on systems without these, I will define if they don't exist.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
40 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
41 #ifndef NX_DEVICERCTLKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
42 #define NX_DEVICELCTLKEYMASK 0x00000001
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
43 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
44 #ifndef NX_DEVICELSHIFTKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
45 #define NX_DEVICELSHIFTKEYMASK 0x00000002
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
46 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
47 #ifndef NX_DEVICERSHIFTKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
48 #define NX_DEVICERSHIFTKEYMASK 0x00000004
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
49 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
50 #ifndef NX_DEVICELCMDKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
51 #define NX_DEVICELCMDKEYMASK 0x00000008
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
52 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
53 #ifndef NX_DEVICERCMDKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
54 #define NX_DEVICERCMDKEYMASK 0x00000010
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
55 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
56 #ifndef NX_DEVICELALTKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
57 #define NX_DEVICELALTKEYMASK 0x00000020
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
58 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
59 #ifndef NX_DEVICERALTKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
60 #define NX_DEVICERALTKEYMASK 0x00000040
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
61 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
62 #ifndef NX_DEVICERCTLKEYMASK
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
63 #define NX_DEVICERCTLKEYMASK 0x00002000
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
64 #endif
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
65
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
66 void QZ_InitOSKeymap (_THIS) {
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
67 const void *KCHRPtr;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
68 UInt32 state;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
69 UInt32 value;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
70 int i;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
71 int world = SDLK_WORLD_0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
72
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
73 for ( i=0; i<SDL_TABLESIZE(keymap); ++i )
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
74 keymap[i] = SDLK_UNKNOWN;
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
75
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
76 /* This keymap is almost exactly the same as the OS 9 one */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
77 keymap[QZ_ESCAPE] = SDLK_ESCAPE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
78 keymap[QZ_F1] = SDLK_F1;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
79 keymap[QZ_F2] = SDLK_F2;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
80 keymap[QZ_F3] = SDLK_F3;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
81 keymap[QZ_F4] = SDLK_F4;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
82 keymap[QZ_F5] = SDLK_F5;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
83 keymap[QZ_F6] = SDLK_F6;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
84 keymap[QZ_F7] = SDLK_F7;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
85 keymap[QZ_F8] = SDLK_F8;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
86 keymap[QZ_F9] = SDLK_F9;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
87 keymap[QZ_F10] = SDLK_F10;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
88 keymap[QZ_F11] = SDLK_F11;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
89 keymap[QZ_F12] = SDLK_F12;
3914
4fd12011d8d6 Quartz code should use F13, F14, and F15 keys instead of PrintScreen,
Ryan C. Gordon <icculus@icculus.org>
parents: 1876
diff changeset
90 keymap[QZ_F13] = SDLK_F13;
4fd12011d8d6 Quartz code should use F13, F14, and F15 keys instead of PrintScreen,
Ryan C. Gordon <icculus@icculus.org>
parents: 1876
diff changeset
91 keymap[QZ_F14] = SDLK_F14;
4fd12011d8d6 Quartz code should use F13, F14, and F15 keys instead of PrintScreen,
Ryan C. Gordon <icculus@icculus.org>
parents: 1876
diff changeset
92 keymap[QZ_F15] = SDLK_F15;
4fd12011d8d6 Quartz code should use F13, F14, and F15 keys instead of PrintScreen,
Ryan C. Gordon <icculus@icculus.org>
parents: 1876
diff changeset
93 /*
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
94 keymap[QZ_PRINT] = SDLK_PRINT;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
95 keymap[QZ_SCROLLOCK] = SDLK_SCROLLOCK;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
96 keymap[QZ_PAUSE] = SDLK_PAUSE;
3914
4fd12011d8d6 Quartz code should use F13, F14, and F15 keys instead of PrintScreen,
Ryan C. Gordon <icculus@icculus.org>
parents: 1876
diff changeset
97 */
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
98 keymap[QZ_POWER] = SDLK_POWER;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
99 keymap[QZ_BACKQUOTE] = SDLK_BACKQUOTE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
100 keymap[QZ_1] = SDLK_1;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
101 keymap[QZ_2] = SDLK_2;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
102 keymap[QZ_3] = SDLK_3;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
103 keymap[QZ_4] = SDLK_4;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
104 keymap[QZ_5] = SDLK_5;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
105 keymap[QZ_6] = SDLK_6;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
106 keymap[QZ_7] = SDLK_7;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
107 keymap[QZ_8] = SDLK_8;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
108 keymap[QZ_9] = SDLK_9;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
109 keymap[QZ_0] = SDLK_0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
110 keymap[QZ_MINUS] = SDLK_MINUS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
111 keymap[QZ_EQUALS] = SDLK_EQUALS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
112 keymap[QZ_BACKSPACE] = SDLK_BACKSPACE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
113 keymap[QZ_INSERT] = SDLK_INSERT;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
114 keymap[QZ_HOME] = SDLK_HOME;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
115 keymap[QZ_PAGEUP] = SDLK_PAGEUP;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
116 keymap[QZ_NUMLOCK] = SDLK_NUMLOCK;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
117 keymap[QZ_KP_EQUALS] = SDLK_KP_EQUALS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
118 keymap[QZ_KP_DIVIDE] = SDLK_KP_DIVIDE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
119 keymap[QZ_KP_MULTIPLY] = SDLK_KP_MULTIPLY;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
120 keymap[QZ_TAB] = SDLK_TAB;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
121 keymap[QZ_q] = SDLK_q;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
122 keymap[QZ_w] = SDLK_w;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
123 keymap[QZ_e] = SDLK_e;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
124 keymap[QZ_r] = SDLK_r;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
125 keymap[QZ_t] = SDLK_t;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
126 keymap[QZ_y] = SDLK_y;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
127 keymap[QZ_u] = SDLK_u;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
128 keymap[QZ_i] = SDLK_i;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
129 keymap[QZ_o] = SDLK_o;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
130 keymap[QZ_p] = SDLK_p;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
131 keymap[QZ_LEFTBRACKET] = SDLK_LEFTBRACKET;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
132 keymap[QZ_RIGHTBRACKET] = SDLK_RIGHTBRACKET;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
133 keymap[QZ_BACKSLASH] = SDLK_BACKSLASH;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
134 keymap[QZ_DELETE] = SDLK_DELETE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
135 keymap[QZ_END] = SDLK_END;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
136 keymap[QZ_PAGEDOWN] = SDLK_PAGEDOWN;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
137 keymap[QZ_KP7] = SDLK_KP7;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
138 keymap[QZ_KP8] = SDLK_KP8;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
139 keymap[QZ_KP9] = SDLK_KP9;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
140 keymap[QZ_KP_MINUS] = SDLK_KP_MINUS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
141 keymap[QZ_CAPSLOCK] = SDLK_CAPSLOCK;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
142 keymap[QZ_a] = SDLK_a;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
143 keymap[QZ_s] = SDLK_s;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
144 keymap[QZ_d] = SDLK_d;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
145 keymap[QZ_f] = SDLK_f;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
146 keymap[QZ_g] = SDLK_g;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
147 keymap[QZ_h] = SDLK_h;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
148 keymap[QZ_j] = SDLK_j;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
149 keymap[QZ_k] = SDLK_k;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
150 keymap[QZ_l] = SDLK_l;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
151 keymap[QZ_SEMICOLON] = SDLK_SEMICOLON;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
152 keymap[QZ_QUOTE] = SDLK_QUOTE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
153 keymap[QZ_RETURN] = SDLK_RETURN;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
154 keymap[QZ_KP4] = SDLK_KP4;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
155 keymap[QZ_KP5] = SDLK_KP5;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
156 keymap[QZ_KP6] = SDLK_KP6;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
157 keymap[QZ_KP_PLUS] = SDLK_KP_PLUS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
158 keymap[QZ_LSHIFT] = SDLK_LSHIFT;
934
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
159 keymap[QZ_RSHIFT] = SDLK_RSHIFT;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
160 keymap[QZ_z] = SDLK_z;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
161 keymap[QZ_x] = SDLK_x;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
162 keymap[QZ_c] = SDLK_c;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
163 keymap[QZ_v] = SDLK_v;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
164 keymap[QZ_b] = SDLK_b;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
165 keymap[QZ_n] = SDLK_n;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
166 keymap[QZ_m] = SDLK_m;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
167 keymap[QZ_COMMA] = SDLK_COMMA;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
168 keymap[QZ_PERIOD] = SDLK_PERIOD;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
169 keymap[QZ_SLASH] = SDLK_SLASH;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
170 keymap[QZ_UP] = SDLK_UP;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
171 keymap[QZ_KP1] = SDLK_KP1;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
172 keymap[QZ_KP2] = SDLK_KP2;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
173 keymap[QZ_KP3] = SDLK_KP3;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
174 keymap[QZ_KP_ENTER] = SDLK_KP_ENTER;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
175 keymap[QZ_LCTRL] = SDLK_LCTRL;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
176 keymap[QZ_LALT] = SDLK_LALT;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
177 keymap[QZ_LMETA] = SDLK_LMETA;
934
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
178 keymap[QZ_RCTRL] = SDLK_RCTRL;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
179 keymap[QZ_RALT] = SDLK_RALT;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
180 keymap[QZ_RMETA] = SDLK_RMETA;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
181 keymap[QZ_SPACE] = SDLK_SPACE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
182 keymap[QZ_LEFT] = SDLK_LEFT;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
183 keymap[QZ_DOWN] = SDLK_DOWN;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
184 keymap[QZ_RIGHT] = SDLK_RIGHT;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
185 keymap[QZ_KP0] = SDLK_KP0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
186 keymap[QZ_KP_PERIOD] = SDLK_KP_PERIOD;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
187 keymap[QZ_IBOOK_ENTER] = SDLK_KP_ENTER;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
188 keymap[QZ_IBOOK_RIGHT] = SDLK_RIGHT;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
189 keymap[QZ_IBOOK_DOWN] = SDLK_DOWN;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
190 keymap[QZ_IBOOK_UP] = SDLK_UP;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
191 keymap[QZ_IBOOK_LEFT] = SDLK_LEFT;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
192
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
193 /*
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
194 Up there we setup a static scancode->keysym map. However, it will not
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
195 work very well on international keyboard. Hence we now query MacOS
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
196 for its own keymap to adjust our own mapping table. However, this is
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
197 basically only useful for ascii char keys. This is also the reason
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
198 why we keep the static table, too.
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
199 */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
200
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
201 /* Get a pointer to the systems cached KCHR */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
202 KCHRPtr = (void *)GetScriptManagerVariable(smKCHRCache);
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
203 if (KCHRPtr)
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
204 {
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
205 /* Loop over all 127 possible scan codes */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
206 for (i = 0; i < 0x7F; i++)
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
207 {
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
208 /* We pretend a clean start to begin with (i.e. no dead keys active */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
209 state = 0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
210
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
211 /* Now translate the key code to a key value */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
212 value = KeyTranslate(KCHRPtr, i, &state) & 0xff;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
213
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
214 /* If the state become 0, it was a dead key. We need to translate again,
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
215 passing in the new state, to get the actual key value */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
216 if (state != 0)
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
217 value = KeyTranslate(KCHRPtr, i, &state) & 0xff;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
218
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
219 /* Now we should have an ascii value, or 0. Try to figure out to which SDL symbol it maps */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
220 if (value >= 128) /* Some non-ASCII char, map it to SDLK_WORLD_* */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
221 keymap[i] = world++;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
222 else if (value >= 32) /* non-control ASCII char */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
223 keymap[i] = value;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
224 }
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
225 }
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
226
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
227 /*
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
228 The keypad codes are re-setup here, because the loop above cannot
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
229 distinguish between a key on the keypad and a regular key. We maybe
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
230 could get around this problem in another fashion: NSEvent's flags
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
231 include a "NSNumericPadKeyMask" bit; we could check that and modify
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
232 the symbol we return on the fly. However, this flag seems to exhibit
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
233 some weird behaviour related to the num lock key
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
234 */
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
235 keymap[QZ_KP0] = SDLK_KP0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
236 keymap[QZ_KP1] = SDLK_KP1;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
237 keymap[QZ_KP2] = SDLK_KP2;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
238 keymap[QZ_KP3] = SDLK_KP3;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
239 keymap[QZ_KP4] = SDLK_KP4;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
240 keymap[QZ_KP5] = SDLK_KP5;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
241 keymap[QZ_KP6] = SDLK_KP6;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
242 keymap[QZ_KP7] = SDLK_KP7;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
243 keymap[QZ_KP8] = SDLK_KP8;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
244 keymap[QZ_KP9] = SDLK_KP9;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
245 keymap[QZ_KP_MINUS] = SDLK_KP_MINUS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
246 keymap[QZ_KP_PLUS] = SDLK_KP_PLUS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
247 keymap[QZ_KP_PERIOD] = SDLK_KP_PERIOD;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
248 keymap[QZ_KP_EQUALS] = SDLK_KP_EQUALS;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
249 keymap[QZ_KP_DIVIDE] = SDLK_KP_DIVIDE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
250 keymap[QZ_KP_MULTIPLY] = SDLK_KP_MULTIPLY;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
251 keymap[QZ_KP_ENTER] = SDLK_KP_ENTER;
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
252 }
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
253
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
254 static void QZ_DoKey (_THIS, int state, NSEvent *event) {
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
255
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
256 NSString *chars;
561
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
257 unsigned int numChars;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
258 SDL_keysym key;
561
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
259
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
260 /*
561
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
261 A key event can contain multiple characters,
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
262 or no characters at all. In most cases, it
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
263 will contain a single character. If it contains
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
264 0 characters, we'll use 0 as the unicode. If it
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
265 contains multiple characters, we'll use 0 as
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
266 the scancode/keysym.
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
267 */
1876
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
268 if (SDL_TranslateUNICODE) {
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
269 chars = [ event characters ];
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
270 numChars = [ chars length ];
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
271 } else {
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
272 numChars = 0;
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
273 }
561
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
274
1876
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
275 if (numChars == 0) {
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
276
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
277 key.scancode = [ event keyCode ];
3914
4fd12011d8d6 Quartz code should use F13, F14, and F15 keys instead of PrintScreen,
Ryan C. Gordon <icculus@icculus.org>
parents: 1876
diff changeset
278 printf("numChars == 0, scancode == %d\n", (int) key.scancode);
1876
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
279 key.sym = keymap [ key.scancode ];
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
280 key.unicode = 0;
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
281 key.mod = KMOD_NONE;
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
282
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
283 SDL_PrivateKeyboard (state, &key);
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
284 }
406b8325ee34 Fixed bug #147
Sam Lantinga <slouken@libsdl.org>
parents: 1629
diff changeset
285 else if (numChars == 1) {
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
286
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
287 key.scancode = [ event keyCode ];
3914
4fd12011d8d6 Quartz code should use F13, F14, and F15 keys instead of PrintScreen,
Ryan C. Gordon <icculus@icculus.org>
parents: 1876
diff changeset
288 printf("numChars == 1, scancode == %d\n", (int) key.scancode);
561
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
289 key.sym = keymap [ key.scancode ];
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
290 key.unicode = [ chars characterAtIndex:0 ];
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
291 key.mod = KMOD_NONE;
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
292
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
293 SDL_PrivateKeyboard (state, &key);
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
294 }
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
295 else /* (numChars > 1) */ {
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
296
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
297 int i;
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
298 for (i = 0; i < numChars; i++) {
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
299
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
300 key.scancode = 0;
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
301 key.sym = 0;
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
302 key.unicode = [ chars characterAtIndex:i];
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
303 key.mod = KMOD_NONE;
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
304
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
305 SDL_PrivateKeyboard (state, &key);
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
306 }
4bcf7dd06c47 Date: Sat, 14 Dec 2002 13:33:05 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 555
diff changeset
307 }
683
5d2f027b3349 Date: Sat, 9 Aug 2003 20:14:06 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 664
diff changeset
308
1338
604d73db6802 Removed uses of stdlib.h and string.h
Sam Lantinga <slouken@libsdl.org>
parents: 1213
diff changeset
309 if (SDL_getenv ("SDL_ENABLEAPPEVENTS"))
683
5d2f027b3349 Date: Sat, 9 Aug 2003 20:14:06 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 664
diff changeset
310 [ NSApp sendEvent:event ];
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
311 }
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
312
934
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
313 /* This is the original behavior, before support was added for
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
314 * differentiating between left and right versions of the keys.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
315 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
316 static void QZ_DoUnsidedModifiers (_THIS, unsigned int newMods) {
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
317
664
abfdc08eb289 Date: Sun, 3 Aug 2003 22:07:57 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 631
diff changeset
318 const int mapping[] = { SDLK_CAPSLOCK, SDLK_LSHIFT, SDLK_LCTRL, SDLK_LALT, SDLK_LMETA };
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
319
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
320 int i;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
321 int bit;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
322 SDL_keysym key;
816
428f688f2ad2 Date: Fri, 13 Feb 2004 17:03:16 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 782
diff changeset
323
664
abfdc08eb289 Date: Sun, 3 Aug 2003 22:07:57 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 631
diff changeset
324 key.scancode = 0;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
325 key.sym = SDLK_UNKNOWN;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
326 key.unicode = 0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
327 key.mod = KMOD_NONE;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
328
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
329 /* Iterate through the bits, testing each against the current modifiers */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
330 for (i = 0, bit = NSAlphaShiftKeyMask; bit <= NSCommandKeyMask; bit <<= 1, ++i) {
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
331
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
332 unsigned int currentMask, newMask;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
333
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
334 currentMask = current_mods & bit;
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
335 newMask = newMods & bit;
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
336
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
337 if ( currentMask &&
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
338 currentMask != newMask ) { /* modifier up event */
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
339
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
340 key.sym = mapping[i];
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
341 /* If this was Caps Lock, we need some additional voodoo to make SDL happy */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
342 if (bit == NSAlphaShiftKeyMask)
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
343 SDL_PrivateKeyboard (SDL_PRESSED, &key);
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
344 SDL_PrivateKeyboard (SDL_RELEASED, &key);
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
345 }
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
346 else if ( newMask &&
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
347 currentMask != newMask ) { /* modifier down event */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
348
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
349 key.sym = mapping[i];
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
350 SDL_PrivateKeyboard (SDL_PRESSED, &key);
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
351 /* If this was Caps Lock, we need some additional voodoo to make SDL happy */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
352 if (bit == NSAlphaShiftKeyMask)
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
353 SDL_PrivateKeyboard (SDL_RELEASED, &key);
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
354 }
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
355 }
934
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
356 }
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
357
934
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
358 /* This is a helper function for QZ_HandleModifierSide. This
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
359 * function reverts back to behavior before the distinction between
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
360 * sides was made.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
361 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
362 static void QZ_HandleNonDeviceModifier ( _THIS, unsigned int device_independent_mask, unsigned int newMods, unsigned int key_sym) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
363 unsigned int currentMask, newMask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
364 SDL_keysym key;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
365
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
366 key.scancode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
367 key.sym = key_sym;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
368 key.unicode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
369 key.mod = KMOD_NONE;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
370
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
371 /* Isolate just the bits we care about in the depedent bits so we can
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
372 * figure out what changed
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
373 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
374 currentMask = current_mods & device_independent_mask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
375 newMask = newMods & device_independent_mask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
376
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
377 if ( currentMask &&
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
378 currentMask != newMask ) { /* modifier up event */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
379 SDL_PrivateKeyboard (SDL_RELEASED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
380 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
381 else if ( newMask &&
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
382 currentMask != newMask ) { /* modifier down event */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
383 SDL_PrivateKeyboard (SDL_PRESSED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
384 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
385 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
386
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
387 /* This is a helper function for QZ_HandleModifierSide.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
388 * This function sets the actual SDL_PrivateKeyboard event.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
389 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
390 static void QZ_HandleModifierOneSide ( _THIS, unsigned int newMods,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
391 unsigned int key_sym,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
392 unsigned int sided_device_dependent_mask ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
393
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
394 SDL_keysym key;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
395 unsigned int current_dep_mask, new_dep_mask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
396
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
397 key.scancode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
398 key.sym = key_sym;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
399 key.unicode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
400 key.mod = KMOD_NONE;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
401
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
402 /* Isolate just the bits we care about in the depedent bits so we can
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
403 * figure out what changed
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
404 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
405 current_dep_mask = current_mods & sided_device_dependent_mask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
406 new_dep_mask = newMods & sided_device_dependent_mask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
407
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
408 /* We now know that this side bit flipped. But we don't know if
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
409 * it went pressed to released or released to pressed, so we must
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
410 * find out which it is.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
411 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
412 if( new_dep_mask &&
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
413 current_dep_mask != new_dep_mask ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
414 /* Modifier down event */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
415 SDL_PrivateKeyboard (SDL_PRESSED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
416 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
417 else /* Modifier up event */ {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
418 SDL_PrivateKeyboard (SDL_RELEASED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
419 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
420 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
421
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
422 /* This is a helper function for QZ_DoSidedModifiers.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
423 * This function will figure out if the modifier key is the left or right side,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
424 * e.g. left-shift vs right-shift.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
425 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
426 static void QZ_HandleModifierSide ( _THIS, int device_independent_mask,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
427 unsigned int newMods,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
428 unsigned int left_key_sym,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
429 unsigned int right_key_sym,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
430 unsigned int left_device_dependent_mask,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
431 unsigned int right_device_dependent_mask ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
432 unsigned int device_dependent_mask = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
433 unsigned int diff_mod = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
434
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
435 device_dependent_mask = left_device_dependent_mask | right_device_dependent_mask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
436 /* On the basis that the device independent mask is set, but there are
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
437 * no device dependent flags set, we'll assume that we can't detect this
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
438 * keyboard and revert to the unsided behavior.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
439 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
440 if ( (device_dependent_mask & newMods) == 0 ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
441 /* Revert to the old behavior */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
442 QZ_HandleNonDeviceModifier ( this, device_independent_mask, newMods, left_key_sym );
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
443 return;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
444 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
445
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
446 /* XOR the previous state against the new state to see if there's a change */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
447 diff_mod = (device_dependent_mask & current_mods)
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
448 ^ (device_dependent_mask & newMods);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
449
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
450 if ( diff_mod ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
451 /* A change in state was found. Isolate the left and right bits
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
452 * to handle them separately just in case the values can simulataneously
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
453 * change or if the bits don't both exist.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
454 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
455 if ( left_device_dependent_mask & diff_mod ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
456 QZ_HandleModifierOneSide ( this, newMods, left_key_sym, left_device_dependent_mask );
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
457 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
458 if ( right_device_dependent_mask & diff_mod ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
459 QZ_HandleModifierOneSide ( this, newMods, right_key_sym, right_device_dependent_mask );
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
460 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
461 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
462 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
463
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
464 /* This is a helper function for QZ_DoSidedModifiers.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
465 * This function will release a key press in the case that
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
466 * it is clear that the modifier has been released (i.e. one side
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
467 * can't still be down).
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
468 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
469 static void QZ_ReleaseModifierSide ( _THIS,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
470 unsigned int device_independent_mask,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
471 unsigned int newMods,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
472 unsigned int left_key_sym,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
473 unsigned int right_key_sym,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
474 unsigned int left_device_dependent_mask,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
475 unsigned int right_device_dependent_mask ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
476 unsigned int device_dependent_mask = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
477 SDL_keysym key;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
478
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
479 key.scancode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
480 key.sym = SDLK_UNKNOWN;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
481 key.unicode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
482 key.mod = KMOD_NONE;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
483
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
484 device_dependent_mask = left_device_dependent_mask | right_device_dependent_mask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
485 /* On the basis that the device independent mask is set, but there are
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
486 * no device dependent flags set, we'll assume that we can't detect this
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
487 * keyboard and revert to the unsided behavior.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
488 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
489 if ( (device_dependent_mask & current_mods) == 0 ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
490 /* In this case, we can't detect the keyboard, so use the left side
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
491 * to represent both, and release it.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
492 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
493 key.sym = left_key_sym;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
494 SDL_PrivateKeyboard (SDL_RELEASED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
495
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
496 return;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
497 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
498
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
499
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
500 /*
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
501 * This could have been done in an if-else case because at this point,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
502 * we know that all keys have been released when calling this function.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
503 * But I'm being paranoid so I want to handle each separately,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
504 * so I hope this doesn't cause other problems.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
505 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
506 if ( left_device_dependent_mask & current_mods ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
507 key.sym = left_key_sym;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
508 SDL_PrivateKeyboard (SDL_RELEASED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
509 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
510 if ( right_device_dependent_mask & current_mods ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
511 key.sym = right_key_sym;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
512 SDL_PrivateKeyboard (SDL_RELEASED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
513 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
514 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
515
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
516 /* This is a helper function for QZ_DoSidedModifiers.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
517 * This function handles the CapsLock case.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
518 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
519 static void QZ_HandleCapsLock (_THIS, unsigned int newMods) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
520 unsigned int currentMask, newMask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
521 SDL_keysym key;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
522
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
523 key.scancode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
524 key.sym = SDLK_CAPSLOCK;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
525 key.unicode = 0;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
526 key.mod = KMOD_NONE;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
527
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
528 currentMask = current_mods & NSAlphaShiftKeyMask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
529 newMask = newMods & NSAlphaShiftKeyMask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
530
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
531 if ( currentMask &&
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
532 currentMask != newMask ) { /* modifier up event */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
533 /* If this was Caps Lock, we need some additional voodoo to make SDL happy */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
534 SDL_PrivateKeyboard (SDL_PRESSED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
535 SDL_PrivateKeyboard (SDL_RELEASED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
536 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
537 else if ( newMask &&
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
538 currentMask != newMask ) { /* modifier down event */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
539 /* If this was Caps Lock, we need some additional voodoo to make SDL happy */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
540 SDL_PrivateKeyboard (SDL_PRESSED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
541 SDL_PrivateKeyboard (SDL_RELEASED, &key);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
542 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
543 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
544
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
545 /* This function will handle the modifier keys and also determine the
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
546 * correct side of the key.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
547 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
548 static void QZ_DoSidedModifiers (_THIS, unsigned int newMods) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
549 /* Set up arrays for the key syms for the left and right side. */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
550 const unsigned int left_mapping[] = { SDLK_LSHIFT, SDLK_LCTRL, SDLK_LALT, SDLK_LMETA };
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
551 const unsigned int right_mapping[] = { SDLK_RSHIFT, SDLK_RCTRL, SDLK_RALT, SDLK_RMETA };
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
552 /* Set up arrays for the device dependent masks with indices that
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
553 * correspond to the _mapping arrays
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
554 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
555 const unsigned int left_device_mapping[] = { NX_DEVICELSHIFTKEYMASK, NX_DEVICELCTLKEYMASK, NX_DEVICELALTKEYMASK, NX_DEVICELCMDKEYMASK };
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
556 const unsigned int right_device_mapping[] = { NX_DEVICERSHIFTKEYMASK, NX_DEVICERCTLKEYMASK, NX_DEVICERALTKEYMASK, NX_DEVICERCMDKEYMASK };
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
557
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
558 unsigned int i;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
559 unsigned int bit;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
560
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
561 /* Handle CAPSLOCK separately because it doesn't have a left/right side */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
562 QZ_HandleCapsLock ( this, newMods );
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
563
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
564 /* Iterate through the bits, testing each against the current modifiers */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
565 for (i = 0, bit = NSShiftKeyMask; bit <= NSCommandKeyMask; bit <<= 1, ++i) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
566
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
567 unsigned int currentMask, newMask;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
568
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
569 currentMask = current_mods & bit;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
570 newMask = newMods & bit;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
571
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
572 /* If the bit is set, we must always examine it because the left
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
573 * and right side keys may alternate or both may be pressed.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
574 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
575 if ( newMask ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
576 QZ_HandleModifierSide ( this, bit, newMods,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
577 left_mapping[i],
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
578 right_mapping[i],
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
579 left_device_mapping[i],
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
580 right_device_mapping[i] );
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
581 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
582 /* If the state changed from pressed to unpressed, we must examine
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
583 * the device dependent bits to release the correct keys.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
584 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
585 else if ( currentMask &&
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
586 currentMask != newMask ) { /* modifier up event */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
587 QZ_ReleaseModifierSide ( this, bit, newMods,
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
588 left_mapping[i],
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
589 right_mapping[i],
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
590 left_device_mapping[i],
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
591 right_device_mapping[i] );
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
592 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
593 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
594 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
595
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
596 /* This function is called to handle the modifiers.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
597 * It will try to distinguish between the left side and right side
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
598 * of the keyboard for those modifiers that qualify if the
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
599 * operating system version supports it. Otherwise, the code
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
600 * will not try to make the distinction.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
601 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
602 static void QZ_DoModifiers (_THIS, unsigned int newMods) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
603
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
604 if (current_mods == newMods)
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
605 return;
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
606
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
607 /*
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
608 * Starting with Panther (10.3.0), the ability to distinguish between
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
609 * left side and right side modifiers is available.
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
610 */
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
611 if( system_version >= 0x1030 ) {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
612 QZ_DoSidedModifiers (this, newMods);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
613 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
614 else {
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
615 QZ_DoUnsidedModifiers (this, newMods);
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
616 }
af585d6efec8 Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 898
diff changeset
617
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
618 current_mods = newMods;
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
619 }
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
620
782
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
621 static void QZ_GetMouseLocation (_THIS, NSPoint *p) {
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
622 *p = [ NSEvent mouseLocation ]; /* global coordinates */
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
623 if (qz_window)
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
624 QZ_PrivateGlobalToLocal (this, p);
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
625 QZ_PrivateCocoaToSDL (this, p);
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
626 }
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
627
1629
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
628 void QZ_DoActivate (_THIS) {
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
629
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
630 SDL_PrivateAppActive (1, SDL_APPINPUTFOCUS | (QZ_IsMouseInWindow (this) ? SDL_APPMOUSEFOCUS : 0));
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
631
615
7ec821f3cbd0 Date: Thu, 17 Apr 2003 23:27:34 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 563
diff changeset
632 /* Hide the cursor if it was hidden by SDL_ShowCursor() */
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
633 if (!cursor_should_be_visible)
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
634 QZ_HideMouse (this);
172
37e3ca9254c7 Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 168
diff changeset
635
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
636 /* Regrab input, only if it was previously grabbed */
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
637 if ( current_grab_mode == SDL_GRAB_ON ) {
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
638
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
639 /* Restore cursor location if input was grabbed */
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
640 QZ_PrivateWarpCursor (this, cursor_loc.x, cursor_loc.y);
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
641 QZ_ChangeGrabState (this, QZ_ENABLE_GRAB);
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
642 }
1560
34b9e479047e Keep mouse cursor state sane on focus change in Quartz driver.
Ryan C. Gordon <icculus@icculus.org>
parents: 1487
diff changeset
643 else {
34b9e479047e Keep mouse cursor state sane on focus change in Quartz driver.
Ryan C. Gordon <icculus@icculus.org>
parents: 1487
diff changeset
644 /* Update SDL's mouse location */
34b9e479047e Keep mouse cursor state sane on focus change in Quartz driver.
Ryan C. Gordon <icculus@icculus.org>
parents: 1487
diff changeset
645 NSPoint p;
34b9e479047e Keep mouse cursor state sane on focus change in Quartz driver.
Ryan C. Gordon <icculus@icculus.org>
parents: 1487
diff changeset
646 QZ_GetMouseLocation (this, &p);
34b9e479047e Keep mouse cursor state sane on focus change in Quartz driver.
Ryan C. Gordon <icculus@icculus.org>
parents: 1487
diff changeset
647 SDL_PrivateMouseMotion (0, 0, p.x, p.y);
34b9e479047e Keep mouse cursor state sane on focus change in Quartz driver.
Ryan C. Gordon <icculus@icculus.org>
parents: 1487
diff changeset
648 }
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
649 }
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
650
1629
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
651 void QZ_DoDeactivate (_THIS) {
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
652
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
653 SDL_PrivateAppActive (0, SDL_APPINPUTFOCUS | SDL_APPMOUSEFOCUS);
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
654
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
655 /* Get the current cursor location, for restore on activate */
782
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
656 QZ_GetMouseLocation (this, &cursor_loc);
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
657
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
658 /* Reassociate mouse and cursor */
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
659 CGAssociateMouseAndMouseCursorPosition (1);
172
37e3ca9254c7 Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 168
diff changeset
660
615
7ec821f3cbd0 Date: Thu, 17 Apr 2003 23:27:34 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 563
diff changeset
661 /* Show the cursor if it was hidden by SDL_ShowCursor() */
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
662 if (!cursor_should_be_visible)
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
663 QZ_ShowMouse (this);
47
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
664 }
45b1c4303f87 Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
665
555
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
666 void QZ_SleepNotificationHandler (void * refcon,
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
667 io_service_t service,
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
668 natural_t messageType,
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
669 void * messageArgument )
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
670 {
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
671 SDL_VideoDevice *this = (SDL_VideoDevice*)refcon;
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
672
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
673 switch(messageType)
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
674 {
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
675 case kIOMessageSystemWillSleep:
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
676 IOAllowPowerChange(power_connection, (long) messageArgument);
555
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
677 break;
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
678 case kIOMessageCanSystemSleep:
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
679 IOAllowPowerChange(power_connection, (long) messageArgument);
555
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
680 break;
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
681 case kIOMessageSystemHasPoweredOn:
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
682 /* awake */
555
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
683 SDL_PrivateExpose();
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
684 break;
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
685 }
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
686 }
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
687
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
688 void QZ_RegisterForSleepNotifications (_THIS)
555
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
689 {
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
690 CFRunLoopSourceRef rls;
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
691 IONotificationPortRef thePortRef;
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
692 io_object_t notifier;
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
693
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
694 power_connection = IORegisterForSystemPower (this, &thePortRef, QZ_SleepNotificationHandler, &notifier);
555
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
695
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
696 if (power_connection == 0)
555
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
697 NSLog(@"SDL: QZ_SleepNotificationHandler() IORegisterForSystemPower failed.");
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
698
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
699 rls = IONotificationPortGetRunLoopSource (thePortRef);
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
700 CFRunLoopAddSource (CFRunLoopGetCurrent(), rls, kCFRunLoopDefaultMode);
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
701 CFRelease (rls);
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
702 }
2536446a92de From: Darrell Walisser
Sam Lantinga <slouken@libsdl.org>
parents: 511
diff changeset
703
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
704
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
705 /* Try to map Quartz mouse buttons to SDL's lingo... */
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
706 static int QZ_OtherMouseButtonToSDL(int button)
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
707 {
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
708 switch (button)
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
709 {
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
710 case 0:
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
711 return(SDL_BUTTON_LEFT); /* 1 */
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
712 case 1:
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
713 return(SDL_BUTTON_RIGHT); /* 3 */
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
714 case 2:
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
715 return(SDL_BUTTON_MIDDLE); /* 2 */
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
716 }
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
717
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
718 /* >= 3: skip 4 & 5, since those are the SDL mousewheel buttons. */
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
719 return(button + 3);
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
720 }
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
721
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
722
761
c5b2b6d2d1fe Date: Wed, 31 Dec 2003 21:55:30 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 683
diff changeset
723 void QZ_PumpEvents (_THIS)
158
4382c38dfbee Date: Tue, 21 Aug 2001 03:50:01 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 155
diff changeset
724 {
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
725 static Uint32 screensaverTicks = 0;
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
726 Uint32 nowTicks;
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
727 int firstMouseEvent;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
728 CGMouseDelta dx, dy;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
729
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
730 NSDate *distantPast;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
731 NSEvent *event;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
732 NSRect winRect;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
733 NSAutoreleasePool *pool;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
734
1213
8eb191652834 Quartz target shouldn't crash if an event thread is used.
Ryan C. Gordon <icculus@icculus.org>
parents: 1212
diff changeset
735 if (!SDL_VideoSurface)
8eb191652834 Quartz target shouldn't crash if an event thread is used.
Ryan C. Gordon <icculus@icculus.org>
parents: 1212
diff changeset
736 return; /* don't do anything if there's no screen surface. */
8eb191652834 Quartz target shouldn't crash if an event thread is used.
Ryan C. Gordon <icculus@icculus.org>
parents: 1212
diff changeset
737
619
bf816ce70144 Disable MacOS X screensaver for duration of application run by triggering a
Ryan C. Gordon <icculus@icculus.org>
parents: 615
diff changeset
738 /* Update activity every five seconds to prevent screensaver. --ryan. */
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1403
diff changeset
739 nowTicks = SDL_GetTicks();
619
bf816ce70144 Disable MacOS X screensaver for duration of application run by triggering a
Ryan C. Gordon <icculus@icculus.org>
parents: 615
diff changeset
740 if ((nowTicks - screensaverTicks) > 5000)
bf816ce70144 Disable MacOS X screensaver for duration of application run by triggering a
Ryan C. Gordon <icculus@icculus.org>
parents: 615
diff changeset
741 {
bf816ce70144 Disable MacOS X screensaver for duration of application run by triggering a
Ryan C. Gordon <icculus@icculus.org>
parents: 615
diff changeset
742 UpdateSystemActivity(UsrActivity);
bf816ce70144 Disable MacOS X screensaver for duration of application run by triggering a
Ryan C. Gordon <icculus@icculus.org>
parents: 615
diff changeset
743 screensaverTicks = nowTicks;
bf816ce70144 Disable MacOS X screensaver for duration of application run by triggering a
Ryan C. Gordon <icculus@icculus.org>
parents: 615
diff changeset
744 }
bf816ce70144 Disable MacOS X screensaver for duration of application run by triggering a
Ryan C. Gordon <icculus@icculus.org>
parents: 615
diff changeset
745
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
746 pool = [ [ NSAutoreleasePool alloc ] init ];
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
747 distantPast = [ NSDate distantPast ];
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
748
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
749 winRect = NSMakeRect (0, 0, SDL_VideoSurface->w, SDL_VideoSurface->h);
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
750
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
751 /* send the first mouse event in absolute coordinates */
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
752 firstMouseEvent = 1;
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
753
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
754 /* accumulate any additional mouse moved events into one SDL mouse event */
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
755 dx = 0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
756 dy = 0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
757
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
758 do {
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
759
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
760 /* Poll for an event. This will not block */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
761 event = [ NSApp nextEventMatchingMask:NSAnyEventMask
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
762 untilDate:distantPast
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
763 inMode: NSDefaultRunLoopMode dequeue:YES ];
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
764 if (event != nil) {
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
765
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
766 int button;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
767 unsigned int type;
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
768 BOOL isInGameWin;
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
769
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
770 #define DO_MOUSE_DOWN(button) do { \
1629
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
771 if ( SDL_GetAppState() & SDL_APPMOUSEFOCUS ) { \
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
772 SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0); \
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
773 expect_mouse_up |= 1<<button; \
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
774 } \
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
775 [ NSApp sendEvent:event ]; \
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
776 } while(0)
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
777
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
778 #define DO_MOUSE_UP(button) do { \
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
779 if ( expect_mouse_up & (1<<button) ) { \
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
780 SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0); \
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
781 expect_mouse_up &= ~(1<<button); \
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
782 } \
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
783 [ NSApp sendEvent:event ]; \
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
784 } while(0)
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
785
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
786 type = [ event type ];
779
68c8da837fc0 Date: Tue, 6 Jan 2004 21:54:02 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 761
diff changeset
787 isInGameWin = QZ_IsMouseInWindow (this);
782
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
788
816
428f688f2ad2 Date: Fri, 13 Feb 2004 17:03:16 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 782
diff changeset
789 QZ_DoModifiers(this, [ event modifierFlags ] );
428f688f2ad2 Date: Fri, 13 Feb 2004 17:03:16 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 782
diff changeset
790
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
791 switch (type) {
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
792 case NSLeftMouseDown:
1338
604d73db6802 Removed uses of stdlib.h and string.h
Sam Lantinga <slouken@libsdl.org>
parents: 1213
diff changeset
793 if ( SDL_getenv("SDL_HAS3BUTTONMOUSE") ) {
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
794 DO_MOUSE_DOWN (SDL_BUTTON_LEFT);
511
79c189f5bd76 Added an environment variable SDL_HAS3BUTTONMOUSE for Quartz
Sam Lantinga <slouken@libsdl.org>
parents: 502
diff changeset
795 } else {
898
f221cadd6eda *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 897
diff changeset
796 if ( NSCommandKeyMask & current_mods ) {
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
797 last_virtual_button = SDL_BUTTON_RIGHT;
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
798 DO_MOUSE_DOWN (SDL_BUTTON_RIGHT);
511
79c189f5bd76 Added an environment variable SDL_HAS3BUTTONMOUSE for Quartz
Sam Lantinga <slouken@libsdl.org>
parents: 502
diff changeset
799 }
79c189f5bd76 Added an environment variable SDL_HAS3BUTTONMOUSE for Quartz
Sam Lantinga <slouken@libsdl.org>
parents: 502
diff changeset
800 else if ( NSAlternateKeyMask & current_mods ) {
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
801 last_virtual_button = SDL_BUTTON_MIDDLE;
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
802 DO_MOUSE_DOWN (SDL_BUTTON_MIDDLE);
511
79c189f5bd76 Added an environment variable SDL_HAS3BUTTONMOUSE for Quartz
Sam Lantinga <slouken@libsdl.org>
parents: 502
diff changeset
803 }
79c189f5bd76 Added an environment variable SDL_HAS3BUTTONMOUSE for Quartz
Sam Lantinga <slouken@libsdl.org>
parents: 502
diff changeset
804 else {
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
805 DO_MOUSE_DOWN (SDL_BUTTON_LEFT);
511
79c189f5bd76 Added an environment variable SDL_HAS3BUTTONMOUSE for Quartz
Sam Lantinga <slouken@libsdl.org>
parents: 502
diff changeset
806 }
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
807 }
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
808 break;
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
809
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
810 case NSLeftMouseUp:
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
811 if ( last_virtual_button != 0 ) {
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
812 DO_MOUSE_UP (last_virtual_button);
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
813 last_virtual_button = 0;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
814 }
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
815 else {
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
816 DO_MOUSE_UP (SDL_BUTTON_LEFT);
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
817 }
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
818 break;
624
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
819
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
820 case NSOtherMouseDown:
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
821 case NSRightMouseDown:
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
822 button = QZ_OtherMouseButtonToSDL([ event buttonNumber ]);
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
823 DO_MOUSE_DOWN (button);
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
824 break;
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
825
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
826 case NSOtherMouseUp:
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
827 case NSRightMouseUp:
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
828 button = QZ_OtherMouseButtonToSDL([ event buttonNumber ]);
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
829 DO_MOUSE_UP (button);
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
830 break;
fb78cadbfeb8 More-than-three mouse button support for Quartz target.
Ryan C. Gordon <icculus@icculus.org>
parents: 619
diff changeset
831
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
832 case NSSystemDefined:
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
833 /*
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
834 Future: up to 32 "mouse" buttons can be handled.
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
835 if ([event subtype] == 7) {
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
836 unsigned int buttons;
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
837 buttons = [ event data2 ];
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
838 */
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
839 break;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
840 case NSLeftMouseDragged:
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
841 case NSRightMouseDragged:
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
842 case NSOtherMouseDragged: /* usually middle mouse dragged */
898
f221cadd6eda *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 897
diff changeset
843 case NSMouseMoved:
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
844 if ( grab_state == QZ_INVISIBLE_GRAB ) {
272
d1447a846d80 Date: Sat, 19 Jan 2002 17:24:32 -0500 (EST)
Sam Lantinga <slouken@libsdl.org>
parents: 252
diff changeset
845
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
846 /*
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
847 If input is grabbed+hidden, the cursor doesn't move,
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
848 so we have to call the lowlevel window server
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
849 function. This is less accurate but works OK.
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
850 */
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
851 CGMouseDelta dx1, dy1;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
852 CGGetLastMouseDelta (&dx1, &dy1);
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
853 dx += dx1;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
854 dy += dy1;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
855 }
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
856 else if (firstMouseEvent) {
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
857
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
858 /*
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
859 Get the first mouse event in a possible
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
860 sequence of mouse moved events. Since we
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
861 use absolute coordinates, this serves to
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
862 compensate any inaccuracy in deltas, and
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
863 provides the first known mouse position,
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
864 since everything after this uses deltas
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
865 */
782
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
866 NSPoint p;
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
867 QZ_GetMouseLocation (this, &p);
454
c4338ecf45f9 Fixed mouse motion on MacOS X (recently broken)
Sam Lantinga <slouken@libsdl.org>
parents: 435
diff changeset
868 SDL_PrivateMouseMotion (0, 0, p.x, p.y);
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
869 firstMouseEvent = 0;
782
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
870 }
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
871 else {
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
872
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
873 /*
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
874 Get the amount moved since the last drag or move event,
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
875 add it on for one big move event at the end.
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
876 */
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
877 dx += [ event deltaX ];
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
878 dy += [ event deltaY ];
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
879 }
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
880
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
881 /*
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
882 Handle grab input+cursor visible by warping the cursor back
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
883 into the game window. This still generates a mouse moved event,
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
884 but not as a result of the warp (so it's in the right direction).
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
885 */
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
886 if ( grab_state == QZ_VISIBLE_GRAB &&
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
887 !isInGameWin ) {
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
888
782
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
889 NSPoint p;
dbc5905402b0 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 779
diff changeset
890 QZ_GetMouseLocation (this, &p);
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
891
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
892 if ( p.x < 0.0 )
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
893 p.x = 0.0;
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
894
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
895 if ( p.y < 0.0 )
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
896 p.y = 0.0;
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
897
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
898 if ( p.x >= winRect.size.width )
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
899 p.x = winRect.size.width-1;
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
900
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
901 if ( p.y >= winRect.size.height )
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
902 p.y = winRect.size.height-1;
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
903
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
904 QZ_PrivateWarpCursor (this, p.x, p.y);
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
905 }
631
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
906 else
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
907 if ( !isInGameWin && (SDL_GetAppState() & SDL_APPMOUSEFOCUS) ) {
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
908
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
909 SDL_PrivateAppActive (0, SDL_APPMOUSEFOCUS);
1212
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
910 if (grab_state == QZ_INVISIBLE_GRAB)
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
911 /*The cursor has left the window even though it is
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
912 disassociated from the mouse (and therefore
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
913 shouldn't move): this can happen with Wacom
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
914 tablets, and it effectively breaks the grab, since
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
915 mouse down events now go to background
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
916 applications. The only possibility to avoid this
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
917 seems to be talking to the tablet driver
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
918 (AppleEvents) to constrain its mapped area to the
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
919 window, which may not be worth the effort. For
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
920 now, handle the condition more gracefully than
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
921 before by reassociating cursor and mouse until the
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
922 cursor enters the window again, making it obvious
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
923 to the user that the grab is broken.*/
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
924 CGAssociateMouseAndMouseCursorPosition (1);
779
68c8da837fc0 Date: Tue, 6 Jan 2004 21:54:02 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 761
diff changeset
925 if (!cursor_should_be_visible)
68c8da837fc0 Date: Tue, 6 Jan 2004 21:54:02 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 761
diff changeset
926 QZ_ShowMouse (this);
631
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
927 }
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
928 else
1629
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
929 if ( isInGameWin && (SDL_GetAppState() & (SDL_APPMOUSEFOCUS | SDL_APPINPUTFOCUS)) == SDL_APPINPUTFOCUS ) {
631
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
930
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
931 SDL_PrivateAppActive (1, SDL_APPMOUSEFOCUS);
779
68c8da837fc0 Date: Tue, 6 Jan 2004 21:54:02 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 761
diff changeset
932 if (!cursor_should_be_visible)
68c8da837fc0 Date: Tue, 6 Jan 2004 21:54:02 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 761
diff changeset
933 QZ_HideMouse (this);
1212
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
934 if (grab_state == QZ_INVISIBLE_GRAB) { /*see comment above*/
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
935 QZ_PrivateWarpCursor (this, SDL_VideoSurface->w / 2, SDL_VideoSurface->h / 2);
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
936 CGAssociateMouseAndMouseCursorPosition (0);
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
937 }
631
52864d66d168 Date: Mon, 5 May 2003 00:08:51 -0400
Sam Lantinga <slouken@libsdl.org>
parents: 624
diff changeset
938 }
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
939 break;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
940 case NSScrollWheel:
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
941 if ( isInGameWin ) {
1050
8e1815fd9777 Holding down shift while moving the mouse's scrollwheel on MacOS X makes the
Ryan C. Gordon <icculus@icculus.org>
parents: 934
diff changeset
942 float dy, dx;
502
80a3d09bab29 Fixed mouse wheel events on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 501
diff changeset
943 Uint8 button;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
944 dy = [ event deltaY ];
1050
8e1815fd9777 Holding down shift while moving the mouse's scrollwheel on MacOS X makes the
Ryan C. Gordon <icculus@icculus.org>
parents: 934
diff changeset
945 dx = [ event deltaX ];
8e1815fd9777 Holding down shift while moving the mouse's scrollwheel on MacOS X makes the
Ryan C. Gordon <icculus@icculus.org>
parents: 934
diff changeset
946 if ( dy > 0.0 || dx > 0.0 ) /* Scroll up */
502
80a3d09bab29 Fixed mouse wheel events on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 501
diff changeset
947 button = SDL_BUTTON_WHEELUP;
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
948 else /* Scroll down */
502
80a3d09bab29 Fixed mouse wheel events on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 501
diff changeset
949 button = SDL_BUTTON_WHEELDOWN;
563
04dcaf3da918 Massive Quartz input enhancements from Darrell Walisser. His email:
Ryan C. Gordon <icculus@icculus.org>
parents: 561
diff changeset
950 /* For now, wheel is sent as a quick down+up */
502
80a3d09bab29 Fixed mouse wheel events on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 501
diff changeset
951 SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0);
80a3d09bab29 Fixed mouse wheel events on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 501
diff changeset
952 SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0);
272
d1447a846d80 Date: Sat, 19 Jan 2002 17:24:32 -0500 (EST)
Sam Lantinga <slouken@libsdl.org>
parents: 252
diff changeset
953 }
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
954 break;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
955 case NSKeyUp:
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
956 QZ_DoKey (this, SDL_RELEASED, event);
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
957 break;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
958 case NSKeyDown:
501
74262d2647ca Lots of cleanups by Darrell, added the ability to resize Cocoa windows.
Sam Lantinga <slouken@libsdl.org>
parents: 454
diff changeset
959 QZ_DoKey (this, SDL_PRESSED, event);
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
960 break;
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
961 case NSFlagsChanged:
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
962 break;
1629
ef4a796e7f24 Fixed bug #55
Sam Lantinga <slouken@libsdl.org>
parents: 1560
diff changeset
963 /* case NSAppKitDefined: break; */
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
964 /* case NSApplicationDefined: break; */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
965 /* case NSPeriodic: break; */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
966 /* case NSCursorUpdate: break; */
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
967 default:
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
968 [ NSApp sendEvent:event ];
272
d1447a846d80 Date: Sat, 19 Jan 2002 17:24:32 -0500 (EST)
Sam Lantinga <slouken@libsdl.org>
parents: 252
diff changeset
969 }
d1447a846d80 Date: Sat, 19 Jan 2002 17:24:32 -0500 (EST)
Sam Lantinga <slouken@libsdl.org>
parents: 252
diff changeset
970 }
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
971 } while (event != nil);
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
972
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
973 /* handle accumulated mouse moved events */
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
974 if (dx != 0 || dy != 0)
435
140798e1e7a6 Darrell's fix for Quartz mouse motion
Sam Lantinga <slouken@libsdl.org>
parents: 390
diff changeset
975 SDL_PrivateMouseMotion (0, 1, dx, dy);
898
f221cadd6eda *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 897
diff changeset
976
390
19e73568a75c Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 389
diff changeset
977 [ pool release ];
502
80a3d09bab29 Fixed mouse wheel events on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 501
diff changeset
978 }
1212
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
979
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
980 void QZ_UpdateMouse (_THIS)
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
981 {
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
982 NSPoint p;
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
983 QZ_GetMouseLocation (this, &p);
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
984 SDL_PrivateAppActive (QZ_IsMouseInWindow (this), SDL_APPMOUSEFOCUS);
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
985 SDL_PrivateMouseMotion (0, 0, p.x, p.y);
7663bb0f52c7 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1050
diff changeset
986 }