Mercurial > sdl-ios-xcode
annotate src/video/cocoa/SDL_cocoakeyboard.m @ 4639:f5cd4b6231ba
Added Test Directory. Touch input works in touchSimp for wacom bamboo fun on Ubuntu linux. Not yet integrated into library. Should support other touch devices and other linux distros, but not tested on anything else.
author | Jim Grandpre <jim.tla@gmail.com> |
---|---|
date | Mon, 24 May 2010 23:44:24 -0400 |
parents | d3c193100522 |
children | 3e69e077cb95 |
rev | line source |
---|---|
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
2859 | 3 Copyright (C) 1997-2009 Sam Lantinga |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 */ |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 #include "SDL_config.h" |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 #include "SDL_cocoavideo.h" |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 #include "../../events/SDL_keyboard_c.h" |
2305
fbe8ff44c519
First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2304
diff
changeset
|
27 #include "../../events/scancodes_darwin.h" |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
29 #include <Carbon/Carbon.h> |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
30 |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
31 //#define DEBUG_IME NSLog |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
32 #define DEBUG_IME |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
33 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
34 #ifndef NX_DEVICERCTLKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
35 #define NX_DEVICELCTLKEYMASK 0x00000001 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
36 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
37 #ifndef NX_DEVICELSHIFTKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
38 #define NX_DEVICELSHIFTKEYMASK 0x00000002 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
39 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
40 #ifndef NX_DEVICERSHIFTKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
41 #define NX_DEVICERSHIFTKEYMASK 0x00000004 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
42 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
43 #ifndef NX_DEVICELCMDKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
44 #define NX_DEVICELCMDKEYMASK 0x00000008 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
45 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
46 #ifndef NX_DEVICERCMDKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
47 #define NX_DEVICERCMDKEYMASK 0x00000010 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
48 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
49 #ifndef NX_DEVICELALTKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
50 #define NX_DEVICELALTKEYMASK 0x00000020 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
51 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
52 #ifndef NX_DEVICERALTKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
53 #define NX_DEVICERALTKEYMASK 0x00000040 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
54 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
55 #ifndef NX_DEVICERCTLKEYMASK |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
56 #define NX_DEVICERCTLKEYMASK 0x00002000 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
57 #endif |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
58 |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
59 @interface SDLTranslatorResponder : NSView <NSTextInput> |
2289
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
60 { |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
61 NSString *_markedText; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
62 NSRange _markedRange; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
63 NSRange _selectedRange; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
64 SDL_Rect _inputRect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
65 int _keyboard; |
2289
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
66 } |
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
67 - (void) doCommandBySelector:(SEL)myselector; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
68 - (void) setInputRect:(SDL_Rect *) rect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
69 - (void) setKeyboard:(int) keyboard; |
2289
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
70 @end |
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
71 |
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
72 @implementation SDLTranslatorResponder |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
73 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
74 - (void) setKeyboard:(int) keyboard |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
75 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
76 _keyboard = keyboard; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
77 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
78 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
79 - (void) setInputRect:(SDL_Rect *) rect |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
80 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
81 _inputRect = *rect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
82 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
83 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
84 - (void) insertText:(id) aString |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
85 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
86 const char *str; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
87 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
88 DEBUG_IME(@"insertText: %@", aString); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
89 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
90 /* Could be NSString or NSAttributedString, so we have |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
91 * to test and convert it before return as SDL event */ |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
92 if ([aString isKindOfClass: [NSAttributedString class]]) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
93 str = [[aString string] UTF8String]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
94 else |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
95 str = [aString UTF8String]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
96 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
97 SDL_SendKeyboardText(_keyboard, str); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
98 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
99 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
100 - (void) doCommandBySelector:(SEL) myselector |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
101 { |
3683 | 102 // No need to do anything since we are not using Cocoa |
103 // selectors to handle special keys, instead we use SDL | |
104 // key events to do the same job. | |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
105 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
106 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
107 - (BOOL) hasMarkedText |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
108 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
109 return _markedText != nil; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
110 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
111 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
112 - (NSRange) markedRange |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
113 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
114 return _markedRange; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
115 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
116 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
117 - (NSRange) selectedRange |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
118 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
119 return _selectedRange; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
120 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
121 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
122 - (void) setMarkedText:(id) aString |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
123 selectedRange:(NSRange) selRange |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
124 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
125 if ([aString isKindOfClass: [NSAttributedString class]]) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
126 aString = [aString string]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
127 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
128 if ([aString length] == 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
129 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
130 [self unmarkText]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
131 return; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
132 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
133 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
134 if (_markedText != aString) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
135 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
136 [_markedText release]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
137 _markedText = [aString retain]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
138 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
139 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
140 _selectedRange = selRange; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
141 _markedRange = NSMakeRange(0, [aString length]); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
142 |
4434
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
143 SDL_SendEditingText(_keyboard, [aString UTF8String], |
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
144 selRange.location, selRange.length); |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
145 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
146 DEBUG_IME(@"setMarkedText: %@, (%d, %d)", _markedText, |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
147 selRange.location, selRange.length); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
148 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
149 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
150 - (void) unmarkText |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
151 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
152 [_markedText release]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
153 _markedText = nil; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
154 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
155 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
156 - (NSRect) firstRectForCharacterRange: (NSRange) theRange |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
157 { |
4436
d3c193100522
changeset: 4434:4e5dd7dc58cd
Sam Lantinga <slouken@libsdl.org>
parents:
4435
diff
changeset
|
158 NSWindow *window = [self window]; |
d3c193100522
changeset: 4434:4e5dd7dc58cd
Sam Lantinga <slouken@libsdl.org>
parents:
4435
diff
changeset
|
159 NSRect contentRect = [window contentRectForFrameRect: [window frame]]; |
d3c193100522
changeset: 4434:4e5dd7dc58cd
Sam Lantinga <slouken@libsdl.org>
parents:
4435
diff
changeset
|
160 float windowHeight = contentRect.size.height; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
161 NSRect rect = NSMakeRect(_inputRect.x, windowHeight - _inputRect.y - _inputRect.h, |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
162 _inputRect.w, _inputRect.h); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
163 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
164 DEBUG_IME(@"firstRectForCharacterRange: (%d, %d): windowHeight = %g, rect = %@", |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
165 theRange.location, theRange.length, windowHeight, |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
166 NSStringFromRect(rect)); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
167 rect.origin = [[self window] convertBaseToScreen: rect.origin]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
168 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
169 return rect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
170 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
171 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
172 - (NSAttributedString *) attributedSubstringFromRange: (NSRange) theRange |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
173 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
174 DEBUG_IME(@"attributedSubstringFromRange: (%d, %d)", theRange.location, theRange.length); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
175 return nil; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
176 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
177 |
3525
455a6c47d2c6
Fixed compilation on Mac OS X 10.4
Sam Lantinga <slouken@libsdl.org>
parents:
3286
diff
changeset
|
178 /* Needs long instead of NSInteger for compilation on Mac OS X 10.4 */ |
455a6c47d2c6
Fixed compilation on Mac OS X 10.4
Sam Lantinga <slouken@libsdl.org>
parents:
3286
diff
changeset
|
179 - (long) conversationIdentifier |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
180 { |
3525
455a6c47d2c6
Fixed compilation on Mac OS X 10.4
Sam Lantinga <slouken@libsdl.org>
parents:
3286
diff
changeset
|
181 return (long) self; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
182 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
183 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
184 // This method returns the index for character that is |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
185 // nearest to thePoint. thPoint is in screen coordinate system. |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
186 - (NSUInteger) characterIndexForPoint:(NSPoint) thePoint |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
187 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
188 DEBUG_IME(@"characterIndexForPoint: (%g, %g)", thePoint.x, thePoint.y); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
189 return 0; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
190 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
191 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
192 // This method is the key to attribute extension. |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
193 // We could add new attributes through this method. |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
194 // NSInputServer examines the return value of this |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
195 // method & constructs appropriate attributed string. |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
196 - (NSArray *) validAttributesForMarkedText |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
197 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
198 return [NSArray array]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
199 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
200 |
2289
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
201 @end |
f629d566ec6b
Merged fix for bug #508 from SDL 1.2 revision 3495
Sam Lantinga <slouken@libsdl.org>
parents:
2273
diff
changeset
|
202 |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
203 /* This is the original behavior, before support was added for |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
204 * differentiating between left and right versions of the keys. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
205 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
206 static void |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
207 DoUnsidedModifiers(int keyboard, unsigned short scancode, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
208 unsigned int oldMods, unsigned int newMods) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
209 { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
210 const int mapping[] = { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
211 SDL_SCANCODE_CAPSLOCK, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
212 SDL_SCANCODE_LSHIFT, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
213 SDL_SCANCODE_LCTRL, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
214 SDL_SCANCODE_LALT, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
215 SDL_SCANCODE_LGUI |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
216 }; |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
217 unsigned int i, bit; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
218 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
219 /* Iterate through the bits, testing each against the current modifiers */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
220 for (i = 0, bit = NSAlphaShiftKeyMask; bit <= NSCommandKeyMask; bit <<= 1, ++i) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
221 unsigned int oldMask, newMask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
222 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
223 oldMask = oldMods & bit; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
224 newMask = newMods & bit; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
225 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
226 if (oldMask && oldMask != newMask) { /* modifier up event */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
227 /* If this was Caps Lock, we need some additional voodoo to make SDL happy */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
228 if (bit == NSAlphaShiftKeyMask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
229 SDL_SendKeyboardKey(keyboard, SDL_PRESSED, mapping[i]); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
230 } |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
231 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, mapping[i]); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
232 } else if (newMask && oldMask != newMask) { /* modifier down event */ |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
233 SDL_SendKeyboardKey(keyboard, SDL_PRESSED, mapping[i]); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
234 /* If this was Caps Lock, we need some additional voodoo to make SDL happy */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
235 if (bit == NSAlphaShiftKeyMask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
236 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, mapping[i]); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
237 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
238 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
239 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
240 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
241 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
242 /* This is a helper function for HandleModifierSide. This |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
243 * function reverts back to behavior before the distinction between |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
244 * sides was made. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
245 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
246 static void |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
247 HandleNonDeviceModifier(int keyboard, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
248 unsigned int device_independent_mask, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
249 unsigned int oldMods, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
250 unsigned int newMods, |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
251 SDL_scancode scancode) |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
252 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
253 unsigned int oldMask, newMask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
254 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
255 /* Isolate just the bits we care about in the depedent bits so we can |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
256 * figure out what changed |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
257 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
258 oldMask = oldMods & device_independent_mask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
259 newMask = newMods & device_independent_mask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
260 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
261 if (oldMask && oldMask != newMask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
262 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
263 } else if (newMask && oldMask != newMask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
264 SDL_SendKeyboardKey(keyboard, SDL_PRESSED, scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
265 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
266 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
267 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
268 /* This is a helper function for HandleModifierSide. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
269 * This function sets the actual SDL_PrivateKeyboard event. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
270 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
271 static void |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
272 HandleModifierOneSide(int keyboard, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
273 unsigned int oldMods, unsigned int newMods, |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
274 SDL_scancode scancode, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
275 unsigned int sided_device_dependent_mask) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
276 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
277 unsigned int old_dep_mask, new_dep_mask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
278 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
279 /* Isolate just the bits we care about in the depedent bits so we can |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
280 * figure out what changed |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
281 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
282 old_dep_mask = oldMods & sided_device_dependent_mask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
283 new_dep_mask = newMods & sided_device_dependent_mask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
284 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
285 /* We now know that this side bit flipped. But we don't know if |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
286 * it went pressed to released or released to pressed, so we must |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
287 * find out which it is. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
288 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
289 if (new_dep_mask && old_dep_mask != new_dep_mask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
290 SDL_SendKeyboardKey(keyboard, SDL_PRESSED, scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
291 } else { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
292 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
293 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
294 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
295 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
296 /* This is a helper function for DoSidedModifiers. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
297 * This function will figure out if the modifier key is the left or right side, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
298 * e.g. left-shift vs right-shift. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
299 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
300 static void |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
301 HandleModifierSide(int keyboard, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
302 int device_independent_mask, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
303 unsigned int oldMods, unsigned int newMods, |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
304 SDL_scancode left_scancode, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
305 SDL_scancode right_scancode, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
306 unsigned int left_device_dependent_mask, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
307 unsigned int right_device_dependent_mask) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
308 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
309 unsigned int device_dependent_mask = (left_device_dependent_mask | |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
310 right_device_dependent_mask); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
311 unsigned int diff_mod; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
312 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
313 /* On the basis that the device independent mask is set, but there are |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
314 * no device dependent flags set, we'll assume that we can't detect this |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
315 * keyboard and revert to the unsided behavior. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
316 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
317 if ((device_dependent_mask & newMods) == 0) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
318 /* Revert to the old behavior */ |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
319 HandleNonDeviceModifier(keyboard, device_independent_mask, oldMods, newMods, left_scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
320 return; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
321 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
322 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
323 /* XOR the previous state against the new state to see if there's a change */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
324 diff_mod = (device_dependent_mask & oldMods) ^ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
325 (device_dependent_mask & newMods); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
326 if (diff_mod) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
327 /* A change in state was found. Isolate the left and right bits |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
328 * to handle them separately just in case the values can simulataneously |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
329 * change or if the bits don't both exist. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
330 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
331 if (left_device_dependent_mask & diff_mod) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
332 HandleModifierOneSide(keyboard, oldMods, newMods, left_scancode, left_device_dependent_mask); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
333 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
334 if (right_device_dependent_mask & diff_mod) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
335 HandleModifierOneSide(keyboard, oldMods, newMods, right_scancode, right_device_dependent_mask); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
336 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
337 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
338 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
339 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
340 /* This is a helper function for DoSidedModifiers. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
341 * This function will release a key press in the case that |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
342 * it is clear that the modifier has been released (i.e. one side |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
343 * can't still be down). |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
344 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
345 static void |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
346 ReleaseModifierSide(int keyboard, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
347 unsigned int device_independent_mask, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
348 unsigned int oldMods, unsigned int newMods, |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
349 SDL_scancode left_scancode, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
350 SDL_scancode right_scancode, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
351 unsigned int left_device_dependent_mask, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
352 unsigned int right_device_dependent_mask) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
353 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
354 unsigned int device_dependent_mask = (left_device_dependent_mask | |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
355 right_device_dependent_mask); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
356 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
357 /* On the basis that the device independent mask is set, but there are |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
358 * no device dependent flags set, we'll assume that we can't detect this |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
359 * keyboard and revert to the unsided behavior. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
360 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
361 if ((device_dependent_mask & oldMods) == 0) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
362 /* In this case, we can't detect the keyboard, so use the left side |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
363 * to represent both, and release it. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
364 */ |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
365 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, left_scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
366 return; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
367 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
368 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
369 /* |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
370 * This could have been done in an if-else case because at this point, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
371 * we know that all keys have been released when calling this function. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
372 * But I'm being paranoid so I want to handle each separately, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
373 * so I hope this doesn't cause other problems. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
374 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
375 if ( left_device_dependent_mask & oldMods ) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
376 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, left_scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
377 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
378 if ( right_device_dependent_mask & oldMods ) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
379 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, right_scancode); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
380 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
381 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
382 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
383 /* This is a helper function for DoSidedModifiers. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
384 * This function handles the CapsLock case. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
385 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
386 static void |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
387 HandleCapsLock(int keyboard, unsigned short scancode, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
388 unsigned int oldMods, unsigned int newMods) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
389 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
390 unsigned int oldMask, newMask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
391 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
392 oldMask = oldMods & NSAlphaShiftKeyMask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
393 newMask = newMods & NSAlphaShiftKeyMask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
394 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
395 if (oldMask != newMask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
396 SDL_SendKeyboardKey(keyboard, SDL_PRESSED, SDL_SCANCODE_CAPSLOCK); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
397 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, SDL_SCANCODE_CAPSLOCK); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
398 } |
1960 | 399 |
400 oldMask = oldMods & NSNumericPadKeyMask; | |
401 newMask = newMods & NSNumericPadKeyMask; | |
402 | |
403 if (oldMask != newMask) { | |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
404 SDL_SendKeyboardKey(keyboard, SDL_PRESSED, SDL_SCANCODE_NUMLOCKCLEAR); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
405 SDL_SendKeyboardKey(keyboard, SDL_RELEASED, SDL_SCANCODE_NUMLOCKCLEAR); |
1960 | 406 } |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
407 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
408 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
409 /* This function will handle the modifier keys and also determine the |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
410 * correct side of the key. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
411 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
412 static void |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
413 DoSidedModifiers(int keyboard, unsigned short scancode, |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
414 unsigned int oldMods, unsigned int newMods) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
415 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
416 /* Set up arrays for the key syms for the left and right side. */ |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
417 const SDL_scancode left_mapping[] = { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
418 SDL_SCANCODE_LSHIFT, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
419 SDL_SCANCODE_LCTRL, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
420 SDL_SCANCODE_LALT, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
421 SDL_SCANCODE_LGUI |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
422 }; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
423 const SDL_scancode right_mapping[] = { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
424 SDL_SCANCODE_RSHIFT, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
425 SDL_SCANCODE_RCTRL, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
426 SDL_SCANCODE_RALT, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
427 SDL_SCANCODE_RGUI |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
428 }; |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
429 /* Set up arrays for the device dependent masks with indices that |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
430 * correspond to the _mapping arrays |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
431 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
432 const unsigned int left_device_mapping[] = { NX_DEVICELSHIFTKEYMASK, NX_DEVICELCTLKEYMASK, NX_DEVICELALTKEYMASK, NX_DEVICELCMDKEYMASK }; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
433 const unsigned int right_device_mapping[] = { NX_DEVICERSHIFTKEYMASK, NX_DEVICERCTLKEYMASK, NX_DEVICERALTKEYMASK, NX_DEVICERCMDKEYMASK }; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
434 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
435 unsigned int i, bit; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
436 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
437 /* Handle CAPSLOCK separately because it doesn't have a left/right side */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
438 HandleCapsLock(keyboard, scancode, oldMods, newMods); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
439 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
440 /* Iterate through the bits, testing each against the old modifiers */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
441 for (i = 0, bit = NSShiftKeyMask; bit <= NSCommandKeyMask; bit <<= 1, ++i) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
442 unsigned int oldMask, newMask; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
443 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
444 oldMask = oldMods & bit; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
445 newMask = newMods & bit; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
446 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
447 /* If the bit is set, we must always examine it because the left |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
448 * and right side keys may alternate or both may be pressed. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
449 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
450 if (newMask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
451 HandleModifierSide(keyboard, bit, oldMods, newMods, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
452 left_mapping[i], right_mapping[i], |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
453 left_device_mapping[i], right_device_mapping[i]); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
454 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
455 /* If the state changed from pressed to unpressed, we must examine |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
456 * the device dependent bits to release the correct keys. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
457 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
458 else if (oldMask && oldMask != newMask) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
459 ReleaseModifierSide(keyboard, bit, oldMods, newMods, |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
460 left_mapping[i], right_mapping[i], |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
461 left_device_mapping[i], right_device_mapping[i]); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
462 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
463 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
464 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
465 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
466 static void |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
467 HandleModifiers(_THIS, unsigned short scancode, unsigned int modifierFlags) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
468 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
469 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
470 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
471 if (modifierFlags == data->modifierFlags) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
472 return; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
473 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
474 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
475 /* |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
476 * Starting with Panther (10.3.0), the ability to distinguish between |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
477 * left side and right side modifiers is available. |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
478 */ |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
479 if (data->osversion >= 0x1030) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
480 DoSidedModifiers(data->keyboard, scancode, data->modifierFlags, modifierFlags); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
481 } else { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
482 DoUnsidedModifiers(data->keyboard, scancode, data->modifierFlags, modifierFlags); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
483 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
484 data->modifierFlags = modifierFlags; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
485 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
486 |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
487 static void |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
488 UpdateKeymap(SDL_VideoData *data) |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
489 { |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
490 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
491 TISInputSourceRef key_layout; |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
492 #else |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
493 KeyboardLayoutRef key_layout; |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
494 #endif |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
495 const void *chr_data; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
496 int i; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
497 SDL_scancode scancode; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
498 SDLKey keymap[SDL_NUM_SCANCODES]; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
499 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
500 /* See if the keymap needs to be updated */ |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
501 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
502 key_layout = TISCopyCurrentKeyboardLayoutInputSource(); |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
503 #else |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
504 KLGetCurrentKeyboardLayout(&key_layout); |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
505 #endif |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
506 if (key_layout == data->key_layout) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
507 return; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
508 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
509 data->key_layout = key_layout; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
510 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
511 SDL_GetDefaultKeymap(keymap); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
512 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
513 /* Try Unicode data first (preferred as of Mac OS X 10.5) */ |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
514 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
515 CFDataRef uchrDataRef = TISGetInputSourceProperty(key_layout, kTISPropertyUnicodeKeyLayoutData); |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
516 if (uchrDataRef) |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
517 chr_data = CFDataGetBytePtr(uchrDataRef); |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
518 else |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
519 goto cleanup; |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
520 #else |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
521 KLGetKeyboardLayoutProperty(key_layout, kKLuchrData, &chr_data); |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
522 #endif |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
523 if (chr_data) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
524 UInt32 keyboard_type = LMGetKbdType(); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
525 OSStatus err; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
526 |
2305
fbe8ff44c519
First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2304
diff
changeset
|
527 for (i = 0; i < SDL_arraysize(darwin_scancode_table); i++) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
528 UniChar s[8]; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
529 UniCharCount len; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
530 UInt32 dead_key_state; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
531 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
532 /* Make sure this scancode is a valid character scancode */ |
2305
fbe8ff44c519
First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2304
diff
changeset
|
533 scancode = darwin_scancode_table[i]; |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
534 if (scancode == SDL_SCANCODE_UNKNOWN || |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
535 (keymap[scancode] & SDLK_SCANCODE_MASK)) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
536 continue; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
537 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
538 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
539 dead_key_state = 0; |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
540 err = UCKeyTranslate ((UCKeyboardLayout *) chr_data, |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
541 i, kUCKeyActionDown, |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
542 0, keyboard_type, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
543 kUCKeyTranslateNoDeadKeysMask, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
544 &dead_key_state, 8, &len, s); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
545 if (err != noErr) |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
546 continue; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
547 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
548 if (len > 0 && s[0] != 0x10) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
549 keymap[scancode] = s[0]; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
550 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
551 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
552 SDL_SetKeymap(data->keyboard, 0, keymap, SDL_NUM_SCANCODES); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
553 return; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
554 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
555 |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
556 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
557 cleanup: |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
558 CFRelease(key_layout); |
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
559 #else |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
560 /* Fall back to older style key map data */ |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
561 KLGetKeyboardLayoutProperty(key_layout, kKLKCHRData, &chr_data); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
562 if (chr_data) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
563 for (i = 0; i < 128; i++) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
564 UInt32 c, state = 0; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
565 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
566 /* Make sure this scancode is a valid character scancode */ |
2305
fbe8ff44c519
First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2304
diff
changeset
|
567 scancode = darwin_scancode_table[i]; |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
568 if (scancode == SDL_SCANCODE_UNKNOWN || |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
569 (keymap[scancode] & SDLK_SCANCODE_MASK)) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
570 continue; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
571 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
572 |
2304 | 573 c = KeyTranslate (chr_data, i, &state) & 255; |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
574 if (state) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
575 /* Dead key, process key up */ |
2304 | 576 c = KeyTranslate (chr_data, i | 128, &state) & 255; |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
577 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
578 |
2304 | 579 if (c != 0 && c != 0x10) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
580 /* MacRoman to Unicode table, taken from X.org sources */ |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
581 static const unsigned short macroman_table[128] = { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
582 0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc, 0xe1, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
583 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9, 0xe8, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
584 0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1, 0xf3, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
585 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb, 0xfc, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
586 0x2020, 0xb0, 0xa2, 0xa3, 0xa7, 0x2022, 0xb6, 0xdf, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
587 0xae, 0xa9, 0x2122, 0xb4, 0xa8, 0x2260, 0xc6, 0xd8, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
588 0x221e, 0xb1, 0x2264, 0x2265, 0xa5, 0xb5, 0x2202, 0x2211, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
589 0x220f, 0x3c0, 0x222b, 0xaa, 0xba, 0x3a9, 0xe6, 0xf8, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
590 0xbf, 0xa1, 0xac, 0x221a, 0x192, 0x2248, 0x2206, 0xab, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
591 0xbb, 0x2026, 0xa0, 0xc0, 0xc3, 0xd5, 0x152, 0x153, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
592 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xf7, 0x25ca, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
593 0xff, 0x178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
594 0x2021, 0xb7, 0x201a, 0x201e, 0x2030, 0xc2, 0xca, 0xc1, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
595 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3, 0xd4, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
596 0xf8ff, 0xd2, 0xda, 0xdb, 0xd9, 0x131, 0x2c6, 0x2dc, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
597 0xaf, 0x2d8, 0x2d9, 0x2da, 0xb8, 0x2dd, 0x2db, 0x2c7, |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
598 }; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
599 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
600 if (c >= 128) { |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
601 c = macroman_table[c - 128]; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
602 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
603 keymap[scancode] = c; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
604 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
605 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
606 SDL_SetKeymap(data->keyboard, 0, keymap, SDL_NUM_SCANCODES); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
607 return; |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
608 } |
3247
2dcfb4e07a57
From: Jjgod Jiang <gzjjgod@gmail.com>
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
609 #endif |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
610 } |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
611 |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
612 void |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
613 Cocoa_InitKeyboard(_THIS) |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
614 { |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
615 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
616 SDL_Keyboard keyboard; |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
617 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
618 SDL_zero(keyboard); |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
619 data->keyboard = SDL_AddKeyboard(&keyboard, -1); |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
620 UpdateKeymap(data); |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
621 |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
622 /* Set our own names for the platform-dependent but layout-independent keys */ |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
623 /* This key is NumLock on the MacBook keyboard. :) */ |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
624 /*SDL_SetScancodeName(SDL_SCANCODE_NUMLOCKCLEAR, "Clear");*/ |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
625 SDL_SetScancodeName(SDL_SCANCODE_LALT, "Left Option"); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
626 SDL_SetScancodeName(SDL_SCANCODE_LGUI, "Left Command"); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
627 SDL_SetScancodeName(SDL_SCANCODE_RALT, "Right Option"); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
628 SDL_SetScancodeName(SDL_SCANCODE_RGUI, "Right Command"); |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
629 } |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
630 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
631 void |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
632 Cocoa_StartTextInput(_THIS) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
633 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
634 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
635 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
636 NSView *parentView = [[NSApp keyWindow] contentView]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
637 |
4434
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
638 /* We only keep one field editor per process, since only the front most |
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
639 * window can receive text input events, so it make no sense to keep more |
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
640 * than one copy. When we switched to another window and requesting for |
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
641 * text input, simply remove the field editor from its superview then add |
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
642 * it to the front most window's content view */ |
4435
e953700da4ca
Minor cleanup on Jiang's patch
Sam Lantinga <slouken@libsdl.org>
parents:
4434
diff
changeset
|
643 if (!data->fieldEdit) { |
4434
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
644 data->fieldEdit = |
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
645 [[SDLTranslatorResponder alloc] initWithFrame: NSMakeRect(0.0, 0.0, 0.0, 0.0)]; |
4435
e953700da4ca
Minor cleanup on Jiang's patch
Sam Lantinga <slouken@libsdl.org>
parents:
4434
diff
changeset
|
646 } |
4434
5c64052fb476
changeset: 4433:25667ea797fa
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
647 |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
648 [data->fieldEdit setKeyboard: data->keyboard]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
649 |
4435
e953700da4ca
Minor cleanup on Jiang's patch
Sam Lantinga <slouken@libsdl.org>
parents:
4434
diff
changeset
|
650 if (![[data->fieldEdit superview] isEqual: parentView]) |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
651 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
652 // DEBUG_IME(@"add fieldEdit to window contentView"); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
653 [data->fieldEdit removeFromSuperview]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
654 [parentView addSubview: data->fieldEdit]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
655 [[NSApp keyWindow] makeFirstResponder: data->fieldEdit]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
656 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
657 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
658 [pool release]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
659 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
660 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
661 void |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
662 Cocoa_StopTextInput(_THIS) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
663 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
664 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
665 |
3683 | 666 if (data && data->fieldEdit) { |
667 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | |
668 [data->fieldEdit removeFromSuperview]; | |
669 [data->fieldEdit release]; | |
670 data->fieldEdit = nil; | |
671 [pool release]; | |
672 } | |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
673 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
674 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
675 void |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
676 Cocoa_SetTextInputRect(_THIS, SDL_Rect *rect) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
677 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
678 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
679 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
680 [data->fieldEdit setInputRect: rect]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
681 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
682 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
683 void |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
684 Cocoa_HandleKeyEvent(_THIS, NSEvent *event) |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
685 { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
686 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
687 unsigned short scancode = [event keyCode]; |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
688 SDL_scancode code; |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
689 const char *text; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
690 |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
691 if ((scancode == 10 || scancode == 50) && KBGetLayoutType(LMGetKbdType()) == kKeyboardISO) { |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
692 /* see comments in SDL_cocoakeys.h */ |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
693 scancode = 60 - scancode; |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
694 } |
2305
fbe8ff44c519
First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2304
diff
changeset
|
695 if (scancode < SDL_arraysize(darwin_scancode_table)) { |
fbe8ff44c519
First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2304
diff
changeset
|
696 code = darwin_scancode_table[scancode]; |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
697 } |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
698 else { |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
699 /* Hmm, does this ever happen? If so, need to extend the keymap... */ |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
700 code = SDL_SCANCODE_UNKNOWN; |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
701 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
702 |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
703 switch ([event type]) { |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
704 case NSKeyDown: |
2129
047245361002
Key repeat is handled by the OS, since text input is now decoupled from physical key events.
Sam Lantinga <slouken@libsdl.org>
parents:
2090
diff
changeset
|
705 if (![event isARepeat]) { |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
706 /* See if we need to rebuild the keyboard layout */ |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
707 UpdateKeymap(data); |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
708 |
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
709 SDL_SendKeyboardKey(data->keyboard, SDL_PRESSED, code); |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
710 #if 1 |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
711 if (code == SDL_SCANCODE_UNKNOWN) { |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
712 fprintf(stderr, "The key you just pressed is not recognized by SDL. To help get this fixed, report this to the SDL mailing list <sdl@libsdl.org> or to Christian Walther <cwalther@gmx.ch>. Mac virtual key code is %d.\n", scancode); |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
713 } |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
714 #endif |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
715 } |
2129
047245361002
Key repeat is handled by the OS, since text input is now decoupled from physical key events.
Sam Lantinga <slouken@libsdl.org>
parents:
2090
diff
changeset
|
716 if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY)) { |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
717 /* FIXME CW 2007-08-16: only send those events to the field editor for which we actually want text events, not e.g. esc or function keys. Arrow keys in particular seem to produce crashes sometimes. */ |
2169
13cf2d5eda86
Added key composition support, courtesy of Kuon
Sam Lantinga <slouken@libsdl.org>
parents:
2129
diff
changeset
|
718 [data->fieldEdit interpretKeyEvents:[NSArray arrayWithObject:event]]; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
719 #if 0 |
2129
047245361002
Key repeat is handled by the OS, since text input is now decoupled from physical key events.
Sam Lantinga <slouken@libsdl.org>
parents:
2090
diff
changeset
|
720 text = [[event characters] UTF8String]; |
047245361002
Key repeat is handled by the OS, since text input is now decoupled from physical key events.
Sam Lantinga <slouken@libsdl.org>
parents:
2090
diff
changeset
|
721 if(text && *text) { |
047245361002
Key repeat is handled by the OS, since text input is now decoupled from physical key events.
Sam Lantinga <slouken@libsdl.org>
parents:
2090
diff
changeset
|
722 SDL_SendKeyboardText(data->keyboard, text); |
2273 | 723 [data->fieldEdit setString:@""]; |
2129
047245361002
Key repeat is handled by the OS, since text input is now decoupled from physical key events.
Sam Lantinga <slouken@libsdl.org>
parents:
2090
diff
changeset
|
724 } |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3247
diff
changeset
|
725 #endif |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
726 } |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
727 break; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
728 case NSKeyUp: |
2303
d87417504c75
First pass implementation of new SDL scancode concept, as discussed with
Sam Lantinga <slouken@libsdl.org>
parents:
2289
diff
changeset
|
729 SDL_SendKeyboardKey(data->keyboard, SDL_RELEASED, code); |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
730 break; |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
731 case NSFlagsChanged: |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
732 /* FIXME CW 2007-08-14: check if this whole mess that takes up half of this file is really necessary */ |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
733 HandleModifiers(_this, scancode, [event modifierFlags]); |
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
734 break; |
2268
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
735 default: /* just to avoid compiler warnings */ |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
736 break; |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
737 } |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
738 } |
4baee598306d
Date: Thu, 05 Jul 2007 14:02:33 -0700
Sam Lantinga <slouken@libsdl.org>
parents:
2170
diff
changeset
|
739 |
1959
25d6537feea4
Implemented Cocoa key event handling.
Sam Lantinga <slouken@libsdl.org>
parents:
1931
diff
changeset
|
740 void |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
741 Cocoa_QuitKeyboard(_THIS) |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
742 { |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
743 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
2270
d5a11262f067
Date: Sun, 19 Aug 2007 18:29:28 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
2268
diff
changeset
|
744 NSAutoreleasePool *pool; |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
745 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
746 SDL_DelKeyboard(data->keyboard); |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
747 } |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
748 |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
749 /* vi: set ts=4 sw=4 expandtab: */ |