Annotation of uae/src/sdlkeys.c, revision 1.1.1.1

1.1       root        1:  /*
                      2:   * UAE - The Un*x Amiga Emulator
                      3:   *
                      4:   * SDL keyboard driver which maps SDL cooked keysyms to raw
                      5:   * Amiga keycodes
                      6:   *
                      7:   * Copyright 2004 Richard Drummond
                      8:   *
                      9:   * Based on previous SDL keymapping
                     10:   * Copyright 2001 Bernd Lachner (EMail: [email protected])
                     11:   */
                     12: 
                     13: #include "sysconfig.h"
                     14: #include "sysdeps.h"
                     15: 
                     16: #include "options.h"
                     17: #include "inputdevice.h"
                     18: #include "keyboard.h"
                     19: #include "hotkeys.h"
                     20: 
                     21: #include "sdlgfx.h"
                     22: 
                     23: #include <SDL.h>
                     24: 
                     25: /*
                     26:  * This function knows about all keys that are common
                     27:  * between different keyboard languages.
                     28:  */
                     29: static int kc_decode (int keysym)
                     30: {
                     31:     switch (keysym) {
                     32:        case SDLK_b:            return AK_B;
                     33:        case SDLK_c:            return AK_C;
                     34:        case SDLK_d:            return AK_D;
                     35:        case SDLK_e:            return AK_E;
                     36:        case SDLK_f:            return AK_F;
                     37:        case SDLK_g:            return AK_G;
                     38:        case SDLK_h:            return AK_H;
                     39:        case SDLK_i:            return AK_I;
                     40:        case SDLK_j:            return AK_J;
                     41:        case SDLK_k:            return AK_K;
                     42:        case SDLK_l:            return AK_L;
                     43:        case SDLK_n:            return AK_N;
                     44:        case SDLK_o:            return AK_O;
                     45:        case SDLK_p:            return AK_P;
                     46:        case SDLK_r:            return AK_R;
                     47:        case SDLK_s:            return AK_S;
                     48:        case SDLK_t:            return AK_T;
                     49:        case SDLK_u:            return AK_U;
                     50:        case SDLK_v:            return AK_V;
                     51:        case SDLK_x:            return AK_X;
                     52: 
                     53:        case SDLK_0:            return AK_0;
                     54:        case SDLK_1:            return AK_1;
                     55:        case SDLK_2:            return AK_2;
                     56:        case SDLK_3:            return AK_3;
                     57:        case SDLK_4:            return AK_4;
                     58:        case SDLK_5:            return AK_5;
                     59:        case SDLK_6:            return AK_6;
                     60:        case SDLK_7:            return AK_7;
                     61:        case SDLK_8:            return AK_8;
                     62:        case SDLK_9:            return AK_9;
                     63: 
                     64:        case SDLK_KP0:          return AK_NP0;
                     65:        case SDLK_KP1:          return AK_NP1;
                     66:        case SDLK_KP2:          return AK_NP2;
                     67:        case SDLK_KP3:          return AK_NP3;
                     68:        case SDLK_KP4:          return AK_NP4;
                     69:        case SDLK_KP5:          return AK_NP5;
                     70:        case SDLK_KP6:          return AK_NP6;
                     71:        case SDLK_KP7:          return AK_NP7;
                     72:        case SDLK_KP8:          return AK_NP8;
                     73:        case SDLK_KP9:          return AK_NP9;
                     74:        case SDLK_KP_DIVIDE:    return AK_NPDIV;
                     75:        case SDLK_KP_MULTIPLY:  return AK_NPMUL;
                     76:        case SDLK_KP_MINUS:     return AK_NPSUB;
                     77:        case SDLK_KP_PLUS:      return AK_NPADD;
                     78:        case SDLK_KP_PERIOD:    return AK_NPDEL;
                     79:        case SDLK_KP_ENTER:     return AK_ENT;
                     80: 
                     81:        case SDLK_F1:           return AK_F1;
                     82:        case SDLK_F2:           return AK_F2;
                     83:        case SDLK_F3:           return AK_F3;
                     84:        case SDLK_F4:           return AK_F4;
                     85:        case SDLK_F5:           return AK_F5;
                     86:        case SDLK_F6:           return AK_F6;
                     87:        case SDLK_F7:           return AK_F7;
                     88:        case SDLK_F8:           return AK_F8;
                     89:        case SDLK_F9:           return AK_F9;
                     90:        case SDLK_F10:          return AK_F10;
                     91: 
                     92:        case SDLK_BACKSPACE:    return AK_BS;
                     93:        case SDLK_DELETE:       return AK_DEL;
                     94:        case SDLK_LCTRL:        return AK_CTRL;
                     95:        case SDLK_RCTRL:        return AK_RCTRL;
                     96:        case SDLK_TAB:          return AK_TAB;
                     97:        case SDLK_LALT:         return AK_LALT;
                     98:        case SDLK_RALT:         return AK_RALT;
                     99:        case SDLK_RMETA:        return AK_RAMI;
                    100:        case SDLK_LMETA:        return AK_LAMI;
                    101:        case SDLK_RETURN:       return AK_RET;
                    102:        case SDLK_SPACE:        return AK_SPC;
                    103:        case SDLK_LSHIFT:       return AK_LSH;
                    104:        case SDLK_RSHIFT:       return AK_RSH;
                    105:        case SDLK_ESCAPE:       return AK_ESC;
                    106: 
                    107:        case SDLK_INSERT:       return AK_HELP;
                    108:        case SDLK_HOME:         return AK_NPLPAREN;
                    109:        case SDLK_END:          return AK_NPRPAREN;
                    110:        case SDLK_CAPSLOCK:     return AK_CAPSLOCK;
                    111: 
                    112:        case SDLK_UP:           return AK_UP;
                    113:        case SDLK_DOWN:         return AK_DN;
                    114:        case SDLK_LEFT:         return AK_LF;
                    115:        case SDLK_RIGHT:        return AK_RT;
                    116: 
                    117:        case SDLK_PAGEUP:
                    118:        case SDLK_RSUPER:       return AK_RAMI;
                    119: 
                    120:        case SDLK_PAGEDOWN:
                    121:        case SDLK_LSUPER:       return AK_LAMI;
                    122: 
                    123:        case SDLK_PAUSE:        return AKS_PAUSE;
                    124:        case SDLK_SCROLLOCK:    return AKS_INHIBITSCREEN;
                    125:        case SDLK_PRINT:        return AKS_SCREENSHOT;
                    126:        default: return -1;
                    127:     }
                    128: }
                    129: 
                    130: /*
                    131:  * Handle keys specific to French (and Belgian) keymaps.
                    132:  *
                    133:  * Number keys are broken
                    134:  */
                    135: static int decode_fr (int keysym)
                    136: {
                    137:     switch (keysym) {
                    138:        case SDLK_a:            return AK_Q;
                    139:        case SDLK_m:            return AK_SEMICOLON;
                    140:        case SDLK_q:            return AK_A;
                    141:        case SDLK_y:            return AK_Y;
                    142:        case SDLK_w:            return AK_Z;
                    143:        case SDLK_z:            return AK_W;
                    144:        case SDLK_LEFTBRACKET:  return AK_LBRACKET;
                    145:        case SDLK_RIGHTBRACKET: return AK_RBRACKET;
                    146:        case SDLK_COMMA:        return AK_M;
                    147:        case SDLK_LESS:
                    148:        case SDLK_GREATER:      return AK_LTGT;
                    149:        case SDLK_PERIOD:
                    150:        case SDLK_SEMICOLON:    return AK_COMMA;
                    151:        case SDLK_RIGHTPAREN:   return AK_MINUS;
                    152:        case SDLK_EQUALS:       return AK_SLASH;
                    153:        case SDLK_HASH:         return AK_NUMBERSIGN;
                    154:        case SDLK_SLASH:        return AK_PERIOD;
                    155:        case SDLK_MINUS:        return AK_EQUAL;
                    156:        case SDLK_BACKSLASH:    return AK_BACKSLASH;
                    157:        default: return -1;
                    158:     }
                    159: }
                    160: 
                    161: /*
                    162:  * Handle keys specific to US keymaps.
                    163:  */
                    164: static int decode_us (int keysym)
                    165: {
                    166:     switch (keysym) {
                    167:        case SDLK_a:            return AK_A;
                    168:        case SDLK_m:            return AK_M;
                    169:        case SDLK_q:            return AK_Q;
                    170:        case SDLK_y:            return AK_Y;
                    171:        case SDLK_w:            return AK_W;
                    172:        case SDLK_z:            return AK_Z;
                    173:        case SDLK_LEFTBRACKET:  return AK_LBRACKET;
                    174:        case SDLK_RIGHTBRACKET: return AK_RBRACKET;
                    175:        case SDLK_COMMA:        return AK_COMMA;
                    176:        case SDLK_PERIOD:       return AK_PERIOD;
                    177:        case SDLK_SLASH:        return AK_SLASH;
                    178:        case SDLK_SEMICOLON:    return AK_SEMICOLON;
                    179:        case SDLK_MINUS:        return AK_MINUS;
                    180:        case SDLK_EQUALS:       return AK_EQUAL;
                    181:        case SDLK_QUOTE:        return AK_QUOTE;
                    182:        case SDLK_BACKQUOTE:    return AK_BACKQUOTE;
                    183:        case SDLK_BACKSLASH:    return AK_BACKSLASH;
                    184:        default: return -1;
                    185:     }
                    186: }
                    187: 
                    188: /*
                    189:  * Handle keys specific to German keymaps.
                    190:  */
                    191: static int decode_de (int keysym)
                    192: {
                    193:     switch (keysym) {
                    194:        case SDLK_a:            return AK_A;
                    195:        case SDLK_m:            return AK_M;
                    196:        case SDLK_q:            return AK_Q;
                    197:        case SDLK_w:            return AK_W;
                    198:        case SDLK_y:            return AK_Z;
                    199:        case SDLK_z:            return AK_Y;
                    200:        /* German umlaut oe */
                    201:        case SDLK_WORLD_86:     return AK_SEMICOLON;
                    202:        /* German umlaut ae */
                    203:        case SDLK_WORLD_68:     return AK_QUOTE;
                    204:        /* German umlaut ue */
                    205:        case SDLK_WORLD_92:     return AK_LBRACKET;
                    206:        case SDLK_PLUS:
                    207:        case SDLK_ASTERISK:     return AK_RBRACKET;
                    208:        case SDLK_COMMA:        return AK_COMMA;
                    209:        case SDLK_PERIOD:       return AK_PERIOD;
                    210:        case SDLK_LESS:
                    211:        case SDLK_GREATER:      return AK_LTGT;
                    212:        case SDLK_HASH:         return AK_NUMBERSIGN;
                    213:        /* German sharp s */
                    214:        case SDLK_WORLD_63:     return AK_MINUS;
                    215:        case SDLK_QUOTE:        return AK_EQUAL;
                    216:        case SDLK_CARET:        return AK_BACKQUOTE;
                    217:        case SDLK_MINUS:        return AK_SLASH;
                    218:        default: return -1;
                    219:     }
                    220: }
                    221: 
                    222: /*
                    223:  * Handle keys specific to Danish keymaps.
                    224:  *
                    225:  * Incomplete. SDL (up to 1.2.6 at least) doesn't define
                    226:  * enough keysms for a complete Danish mapping.
                    227:  * Missing dead-key support for diaeresis, acute and circumflex
                    228:  */
                    229: static int decode_dk (int keysym)
                    230: {
                    231:     switch (keysym) {
                    232:        case SDLK_a:            return AK_A;
                    233:        case SDLK_m:            return AK_M;
                    234:        case SDLK_q:            return AK_Q;
                    235:        case SDLK_w:            return AK_W;
                    236:        case SDLK_y:            return AK_Y;
                    237:        case SDLK_z:            return AK_Z;
                    238:        /* Danish AE */
                    239:        case SDLK_WORLD_88:     return AK_SEMICOLON;
                    240:        /* Danish o oblique */
                    241:        case SDLK_WORLD_68:     return AK_QUOTE;
                    242:        /* Danish A ring */
                    243:        case SDLK_WORLD_69:     return AK_LBRACKET;
                    244:        /* one half - SDL has no 'section'? */
                    245:        case SDLK_WORLD_70:     return AK_BACKQUOTE;
                    246:        case SDLK_COMMA:        return AK_COMMA;
                    247:        case SDLK_PERIOD:       return AK_PERIOD;
                    248:        case SDLK_LESS:
                    249:        case SDLK_GREATER:      return AK_LTGT;
                    250:        case SDLK_HASH:         return AK_NUMBERSIGN;
                    251:        case SDLK_PLUS:         return AK_MINUS;
                    252:        case SDLK_MINUS:        return AK_SLASH;
                    253:        default: return -1;
                    254:     }
                    255: }
                    256: 
                    257: /*
                    258:  * Handle keys specific to SE keymaps.
                    259:  */
                    260: static int decode_se (int keysym)
                    261: {
                    262:     switch (keysym) {
                    263:        case SDLK_a:            return AK_A;
                    264:        case SDLK_m:            return AK_M;
                    265:        case SDLK_q:            return AK_Q;
                    266:        case SDLK_w:            return AK_W;
                    267:        case SDLK_y:            return AK_Y;
                    268:        case SDLK_z:            return AK_Z;
                    269:        case SDLK_WORLD_86:     return AK_SEMICOLON;
                    270:        case SDLK_WORLD_68:     return AK_QUOTE;
                    271:        case SDLK_WORLD_69:     return AK_LBRACKET;
                    272:        case SDLK_COMMA:        return AK_COMMA;
                    273:        case SDLK_PERIOD:       return AK_PERIOD;
                    274:        case SDLK_MINUS:        return AK_SLASH;
                    275:        case SDLK_LESS:
                    276:        case SDLK_GREATER:      return AK_LTGT;
                    277:        case SDLK_PLUS:
                    278:        case SDLK_QUESTION:     return AK_EQUAL;
                    279:        case SDLK_AT:
                    280:        case SDLK_WORLD_29:     return AK_BACKQUOTE;
                    281:        case SDLK_CARET:        return AK_RBRACKET;
                    282:        case SDLK_BACKSLASH:    return AK_MINUS;
                    283:        case SDLK_HASH:         return AK_NUMBERSIGN;
                    284:        default: return -1;
                    285:     }
                    286: }
                    287: 
                    288: /*
                    289:  * Handle keys specific to Italian keymaps.
                    290:  */
                    291: static int decode_it (int keysym)
                    292: {
                    293:     switch (keysym) {
                    294:        case SDLK_a:            return AK_A;
                    295:        case SDLK_m:            return AK_M;
                    296:        case SDLK_q:            return AK_Q;
                    297:        case SDLK_w:            return AK_W;
                    298:        case SDLK_y:            return AK_Y;
                    299:        case SDLK_z:            return AK_Z;
                    300:        case SDLK_WORLD_82:     return AK_SEMICOLON;
                    301:        case SDLK_WORLD_64:     return AK_QUOTE;
                    302:        case SDLK_WORLD_72:     return AK_LBRACKET;
                    303:        case SDLK_PLUS:
                    304:        case SDLK_ASTERISK:     return AK_RBRACKET;
                    305:        case SDLK_COMMA:        return AK_COMMA;
                    306:        case SDLK_PERIOD:       return AK_PERIOD;
                    307:        case SDLK_LESS:
                    308:        case SDLK_GREATER:      return AK_LTGT;
                    309:        case SDLK_BACKSLASH:    return AK_BACKQUOTE;
                    310:        case SDLK_QUOTE:        return AK_MINUS;
                    311:        case SDLK_WORLD_76:     return AK_EQUAL;
                    312:        case SDLK_MINUS:        return AK_SLASH;
                    313:        case SDLK_HASH:         return AK_NUMBERSIGN;
                    314:        default: return -1;
                    315:     }
                    316: }
                    317: 
                    318: /*
                    319:  * Handle keys specific to Spanish keymaps.
                    320:  */
                    321: static int decode_es (int keysym)
                    322: {
                    323:     switch (keysym) {
                    324:        case SDLK_a:            return AK_A;
                    325:        case SDLK_m:            return AK_M;
                    326:        case SDLK_q:            return AK_Q;
                    327:        case SDLK_w:            return AK_W;
                    328:        case SDLK_y:            return AK_Y;
                    329:        case SDLK_z:            return AK_Z;
                    330:        case SDLK_WORLD_81:     return AK_SEMICOLON;
                    331:        case SDLK_PLUS:
                    332:        case SDLK_ASTERISK:     return AK_RBRACKET;
                    333:        case SDLK_COMMA:        return AK_COMMA;
                    334:        case SDLK_PERIOD:       return AK_PERIOD;
                    335:        case SDLK_LESS:
                    336:        case SDLK_GREATER:      return AK_LTGT;
                    337:        case SDLK_BACKSLASH:    return AK_BACKQUOTE;
                    338:        case SDLK_QUOTE:        return AK_MINUS;
                    339:        case SDLK_WORLD_76:     return AK_EQUAL;
                    340:        case SDLK_MINUS:        return AK_SLASH;
                    341:        case SDLK_HASH:         return AK_NUMBERSIGN;
                    342:        default: return -1;
                    343:     }
                    344: }
                    345: 
                    346: int keysym2amiga (int keysym)
                    347: {
                    348:     int amiga_keycode = kc_decode (keysym);
                    349: 
                    350:     if (amiga_keycode == -1) {
                    351:        switch (currprefs.keyboard_lang) {
                    352:            case KBD_LANG_FR:
                    353:                amiga_keycode = decode_fr (keysym); break;
                    354:            case KBD_LANG_US:
                    355:                amiga_keycode = decode_us (keysym); break;
                    356:            case KBD_LANG_DE:
                    357:                amiga_keycode = decode_de (keysym); break;
                    358:            case KBD_LANG_DK:
                    359:                amiga_keycode = decode_dk (keysym); break;
                    360:            case KBD_LANG_SE:
                    361:                amiga_keycode = decode_se (keysym); break;
                    362:            case KBD_LANG_IT:
                    363:                amiga_keycode = decode_it (keysym); break;
                    364:            case KBD_LANG_ES:
                    365:                amiga_keycode = decode_es (keysym); break;
                    366:        }
                    367:     }
                    368:     return amiga_keycode;
                    369: }
                    370: 
                    371: 
                    372: /*
                    373:  * Default hotkeys
                    374:  *
                    375:  * We need a better way of doing this. ;-)
                    376:  */
                    377: static struct uae_hotkeyseq sdl_hotkeys[] =
                    378: {
                    379:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_q, -1, -1,           INPUTEVENT_SPC_QUIT) },
                    380:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_r, -1, -1,           INPUTEVENT_SPC_SOFTRESET) },
                    381:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_LSHIFT, SDLK_r, -1,  INPUTEVENT_SPC_HARDRESET)}, \
                    382:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_d, -1, -1,           INPUTEVENT_SPC_ENTERDEBUGGER)}, \
                    383:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_s, -1, -1,           INPUTEVENT_SPC_TOGGLEFULLSCREEN) },
                    384:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_g, -1, -1,           INPUTEVENT_SPC_TOGGLEMOUSEGRAB) },
                    385:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_i, -1, -1,           INPUTEVENT_SPC_INHIBITSCREEN) },
                    386:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_p, -1, -1,           INPUTEVENT_SPC_SCREENSHOT) },
                    387:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_a, -1, -1,           INPUTEVENT_SPC_SWITCHINTERPOL) },
                    388:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_KP_PLUS, -1, -1,     INPUTEVENT_SPC_INCREASE_REFRESHRATE) },
                    389:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_KP_MINUS, -1, -1,    INPUTEVENT_SPC_DECREASE_REFRESHRATE) },
                    390:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_F1, -1, -1,         INPUTEVENT_SPC_FLOPPY0) },
                    391:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_F2, -1, -1,         INPUTEVENT_SPC_FLOPPY1) },
                    392:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_F3, -1, -1,         INPUTEVENT_SPC_FLOPPY2) },
                    393:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_F4, -1, -1,         INPUTEVENT_SPC_FLOPPY3) },
                    394:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_LSHIFT, SDLK_F1, -1, INPUTEVENT_SPC_EFLOPPY0) },
                    395:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_LSHIFT, SDLK_F2, -1, INPUTEVENT_SPC_EFLOPPY1) },
                    396:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_LSHIFT, SDLK_F3, -1, INPUTEVENT_SPC_EFLOPPY2) },
                    397:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_LSHIFT, SDLK_F4, -1, INPUTEVENT_SPC_EFLOPPY3) },
                    398:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_RETURN, -1, -1,      INPUTEVENT_SPC_ENTERGUI) },
                    399:     { MAKE_HOTKEYSEQ (SDLK_F12, SDLK_f, -1, -1,                  INPUTEVENT_SPC_FREEZEBUTTON) },
                    400:     { HOTKEYS_END }
                    401: };
                    402: 
                    403: /* Hotkeys for OS X
                    404:  * The F12 key doesn't seem to work under MacOS X (at least on the two systems
                    405:  * I've tried): key up/down events are only generated when the key is released,
                    406:  * so it's no use as a hot-key modifier. Use F11 instead.
                    407:  */
                    408: static struct uae_hotkeyseq sdl_quartz_hotkeys[] =
                    409: {
                    410:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_q, -1, -1,           INPUTEVENT_SPC_QUIT) },
                    411:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_r, -1, -1,           INPUTEVENT_SPC_SOFTRESET) },
                    412:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_LSHIFT, SDLK_r, -1,  INPUTEVENT_SPC_HARDRESET) },
                    413:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_d, -1, -1,           INPUTEVENT_SPC_ENTERDEBUGGER) },
                    414:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_s, -1, -1,           INPUTEVENT_SPC_TOGGLEFULLSCREEN) },
                    415:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_g, -1, -1,           INPUTEVENT_SPC_TOGGLEMOUSEGRAB) },
                    416:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_i, -1, -1,           INPUTEVENT_SPC_INHIBITSCREEN) },
                    417:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_p, -1, -1,           INPUTEVENT_SPC_SCREENSHOT) },
                    418:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_a, -1, -1,           INPUTEVENT_SPC_SWITCHINTERPOL) },
                    419:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_KP_PLUS, -1, -1,     INPUTEVENT_SPC_INCREASE_REFRESHRATE) },
                    420:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_KP_MINUS, -1, -1,    INPUTEVENT_SPC_DECREASE_REFRESHRATE) },
                    421:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_F1, -1, -1,         INPUTEVENT_SPC_FLOPPY0) },
                    422:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_F2, -1, -1,         INPUTEVENT_SPC_FLOPPY1) },
                    423:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_F3, -1, -1,         INPUTEVENT_SPC_FLOPPY2) },
                    424:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_F4, -1, -1,         INPUTEVENT_SPC_FLOPPY3) },
                    425:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_LSHIFT, SDLK_F1, -1, INPUTEVENT_SPC_EFLOPPY0) },
                    426:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_LSHIFT, SDLK_F2, -1, INPUTEVENT_SPC_EFLOPPY1) },
                    427:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_LSHIFT, SDLK_F3, -1, INPUTEVENT_SPC_EFLOPPY2) },
                    428:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_LSHIFT, SDLK_F4, -1, INPUTEVENT_SPC_EFLOPPY3) },
                    429:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_RETURN, -1, -1,      INPUTEVENT_SPC_ENTERGUI) },
                    430:     { MAKE_HOTKEYSEQ (SDLK_F11, SDLK_f, -1, -1,                  INPUTEVENT_SPC_FREEZEBUTTON) },
                    431:     { HOTKEYS_END }
                    432: };
                    433: 
                    434: struct uae_hotkeyseq *get_default_cooked_hotkeys (void)
                    435: {
                    436:     if (get_sdlgfx_type() == SDLGFX_DRIVER_QUARTZ)
                    437:        return sdl_quartz_hotkeys;
                    438:     else
                    439:        return sdl_hotkeys;
                    440: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.