Ticket #8698: ASCII_Enum.diff

File ASCII_Enum.diff, 2.6 KB (added by SF/mthreepwood, 17 years ago)

Patch

  • backends/platform/sdl/events.cpp

     
    4949
    5050
    5151
    52 static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode)
    53 {
    54         if (key >= SDLK_F1 && key <= SDLK_F9) {
    55                 return key - SDLK_F1 + 315;
    56         } else if (key >= SDLK_KP0 && key <= SDLK_KP9) {
    57                 return key - SDLK_KP0 + '0';
    58         } else if (key >= SDLK_UP && key <= SDLK_PAGEDOWN) {
    59                 return key;
    60         } else if (unicode) {
    61                 return unicode;
    62         } else if (key >= 'a' && key <= 'z' && mod & KMOD_SHIFT) {
    63                 return key & ~0x20;
    64         } else if (key >= SDLK_NUMLOCK && key <= SDLK_EURO) {
    65                 return 0;
     52static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode) {
     53        switch (key) {
     54                case SDLK_KP0: return Common::ASCII_KP0;
     55                case SDLK_KP1: return Common::ASCII_KP1;
     56                case SDLK_KP2: return Common::ASCII_KP2;
     57                case SDLK_KP3: return Common::ASCII_KP3;
     58                case SDLK_KP4: return Common::ASCII_KP4;
     59                case SDLK_KP5: return Common::ASCII_KP5;
     60                case SDLK_KP6: return Common::ASCII_KP6;
     61                case SDLK_KP7: return Common::ASCII_KP7;
     62                case SDLK_KP8: return Common::ASCII_KP8;
     63                case SDLK_KP9: return Common::ASCII_KP9;
     64                case SDLK_F1: return Common::ASCII_F1;
     65                case SDLK_F2: return Common::ASCII_F2;
     66                case SDLK_F3: return Common::ASCII_F3;
     67                case SDLK_F4: return Common::ASCII_F4;
     68                case SDLK_F5: return Common::ASCII_F5;
     69                case SDLK_F6: return Common::ASCII_F6;
     70                case SDLK_F7: return Common::ASCII_F7;
     71                case SDLK_F8: return Common::ASCII_F8;
     72                case SDLK_F9: return Common::ASCII_F9;
     73                default:
     74                        if (unicode) {
     75                                return unicode;
     76                        } else if (key >= 'a' && key <= 'z' && mod & KMOD_SHIFT) {
     77                                return key & ~0x20;
     78                        } else if (key >= SDLK_NUMLOCK && key <= SDLK_EURO) {
     79                                return 0;
     80                        }
     81                        return key;
    6682        }
    67         return key;
    6883}
    6984
    7085void OSystem_SDL::fillMouseEvent(Common::Event &event, int x, int y) {
  • common/events.h

     
    216216        KEYCODE_UNDO            = 322           // Atari keyboard has Undo
    217217};
    218218
     219enum {
     220        ASCII_KP0 = 48,
     221        ASCII_KP1 = 49,
     222        ASCII_KP2 = 50,
     223        ASCII_KP3 = 51,
     224        ASCII_KP4 = 52,
     225        ASCII_KP5 = 53,
     226        ASCII_KP6 = 54,
     227        ASCII_KP7 = 55,
     228        ASCII_KP8 = 56,
     229        ASCII_KP9 = 57,
     230
     231        ASCII_F1 = 315,
     232        ASCII_F2 = 316,
     233        ASCII_F3 = 317,
     234        ASCII_F4 = 318,
     235        ASCII_F5 = 319,
     236        ASCII_F6 = 320,
     237        ASCII_F7 = 321,
     238        ASCII_F8 = 322,
     239        ASCII_F9 = 323
     240};
     241
    219242/**
    220243 * Keyboard modifier flags, used for Event::kbd::flags.
    221244 */