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