comparison src/video/quartz/SDL_QuartzKeys.h @ 934:af585d6efec8

Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT) From: Eric Wing <ewing2121@yahoo.com> Subject: New OS X patch (was Re: [SDL] Bug with inverted mouse coordinates in I have a new patch for OS X I would like to submit. First, it appears no further action has been taken on my fix from Apple on the OpenGL windowed mode mouse inversion problem. The fix would reunify the code, and no longer require case checking for which version of the OS you are running. This is probably a good fix because the behavior with the old code could change again with future versions of the OS, so those fixes are included in this new patch. But in addition, when I was at Apple, I asked them about the ability to distinguish between the modifier keys on the left and right sides of the keyboard (e.g. Left Shift, Right Shift, Left/Right Alt, L/R Cmd, L/R Ctrl). They told me that starting with Panther, the OS began supporting this feature. This has always been a source of annoyance for me when bringing a program that comes from Windows or Linux to OS X when the keybindings happened to need distinguishable left-side and right-side keys. So the rest of the patch I am submitting contains new code to support this feature on Panther (and presumably later versions of the OS). So after removing the OS version checks for the mouse inversion problem, I reused the OS version checks to activate the Left/Right detection of modifier keys. If you are running Panther (or above), the new code will attempt to distinguish between sides. For the older OS's, the code path reverts to the original code. I've tested with Panther on a G4 Cube, G5 dual processor, and Powerbook Rev C. The Cube and G5 keyboards demonstrated the ability to distinguish between sides. The Powerbook seems to only have left-side keys, but the patch was still able to handle it by producing the same results as before the patch. I also wanted to test a non-Apple keyboard. Unfortunately, I don't have any PC USB keyboards. However, I was able to borrow a Sun Microsystems USB keyboard, so I tried that out on the G5, and I got the correct behavior for left and right sides. I'm expecting that if it worked with a Sun keyboard, most other keyboards should work with no problems.
author Sam Lantinga <slouken@libsdl.org>
date Fri, 20 Aug 2004 22:35:23 +0000
parents c5b2b6d2d1fe
children d910939febfa
comparison
equal deleted inserted replaced
933:4272450dd8d0 934:af585d6efec8
107 #define QZ_n 0x2D 107 #define QZ_n 0x2D
108 #define QZ_m 0x2E 108 #define QZ_m 0x2E
109 #define QZ_COMMA 0x2B 109 #define QZ_COMMA 0x2B
110 #define QZ_PERIOD 0x2F 110 #define QZ_PERIOD 0x2F
111 #define QZ_SLASH 0x2C 111 #define QZ_SLASH 0x2C
112 #if 0 /* These are the same as the left versions - use left by default */ 112 #if 1 /* Panther now defines right side keys */
113 #define QZ_RSHIFT 0x38 113 #define QZ_RSHIFT 0x3C
114 #endif 114 #endif
115 #define QZ_UP 0x7E 115 #define QZ_UP 0x7E
116 #define QZ_KP1 0x53 116 #define QZ_KP1 0x53
117 #define QZ_KP2 0x54 117 #define QZ_KP2 0x54
118 #define QZ_KP3 0x55 118 #define QZ_KP3 0x55
119 #define QZ_KP_ENTER 0x4C 119 #define QZ_KP_ENTER 0x4C
120 #define QZ_LCTRL 0x3B 120 #define QZ_LCTRL 0x3B
121 #define QZ_LALT 0x3A 121 #define QZ_LALT 0x3A
122 #define QZ_LMETA 0x37 122 #define QZ_LMETA 0x37
123 #define QZ_SPACE 0x31 123 #define QZ_SPACE 0x31
124 #if 0 /* These are the same as the left versions - use left by default */ 124 #if 1 /* Panther now defines right side keys */
125 #define QZ_RMETA 0x37 125 #define QZ_RMETA 0x36
126 #define QZ_RALT 0x3A 126 #define QZ_RALT 0x3D
127 #define QZ_RCTRL 0x3B 127 #define QZ_RCTRL 0x3E
128 #endif 128 #endif
129 #define QZ_LEFT 0x7B 129 #define QZ_LEFT 0x7B
130 #define QZ_DOWN 0x7D 130 #define QZ_DOWN 0x7D
131 #define QZ_RIGHT 0x7C 131 #define QZ_RIGHT 0x7C
132 #define QZ_KP0 0x52 132 #define QZ_KP0 0x52