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

1.1       root        1:  /*
                      2:   * UAE - The Un*x Amiga Emulator
                      3:   *
                      4:   * Support for platform-independent key-mapping
                      5:   *
                      6:   * Copyright 2004 Richard Drummond
                      7:   */
                      8: 
                      9: #include "sysconfig.h"
                     10: #include "sysdeps.h"
                     11: 
                     12: #include "options.h"
                     13: #include "inputdevice.h"
                     14: #include "keymap/keymap.h"
                     15: 
                     16: /*
                     17:  * Default mapping of UAE keycodes to UAE input events
                     18:  *
                     19:  * This list is ordered by UAEKEY_#? code. Input events correspond
                     20:  * to Amiga keycodes or UAE commands.
                     21:  */
                     22: static const int default_keymap[] = {
                     23:                                INPUTEVENT_ZERO,
                     24:     /* UAEKEY_ESCAPE */        INPUTEVENT_KEY_ESC,
                     25: 
                     26:     /* UAEKEY_F1 */            INPUTEVENT_KEY_F1,
                     27:     /* UAEKEY_F2 */            INPUTEVENT_KEY_F2,
                     28:     /* UAEKEY_F3 */            INPUTEVENT_KEY_F3,
                     29:     /* UAEKEY_F4 */            INPUTEVENT_KEY_F4,
                     30:     /* UAEKEY_F5 */            INPUTEVENT_KEY_F5,
                     31:     /* UAEKEY_F6 */            INPUTEVENT_KEY_F6,
                     32:     /* UAEKEY_F7 */            INPUTEVENT_KEY_F7,
                     33:     /* UAEKEY_F8 */            INPUTEVENT_KEY_F8,
                     34:     /* UAEKEY_F9 */            INPUTEVENT_KEY_F9,
                     35:     /* UAEKEY_F10 */           INPUTEVENT_KEY_F10,
                     36:     /* UAEKEY_F11 */           INPUTEVENT_ZERO,
                     37:     /* UAEKEY_F12 */           INPUTEVENT_ZERO,
                     38: 
                     39:     /* UAEKEY_PRINTSCR */      INPUTEVENT_SPC_SCREENSHOT,
                     40:     /* UAEKEY_SCROLL_LOCK */   INPUTEVENT_SPC_INHIBITSCREEN,
                     41:     /* UAEKEY_PAUSE */         INPUTEVENT_SPC_PAUSE,
                     42: 
                     43:     /* UAEKEY_1 */             INPUTEVENT_KEY_1,
                     44:     /* UAEKEY_2 */             INPUTEVENT_KEY_2,
                     45:     /* UAEKEY_3 */             INPUTEVENT_KEY_3,
                     46:     /* UAEKEY_4 */             INPUTEVENT_KEY_4,
                     47:     /* UAEKEY_5 */             INPUTEVENT_KEY_5,
                     48:     /* UAEKEY_6 */             INPUTEVENT_KEY_6,
                     49:     /* UAEKEY_7 */             INPUTEVENT_KEY_7,
                     50:     /* UAEKEY_8 */             INPUTEVENT_KEY_8,
                     51:     /* UAEKEY_9 */             INPUTEVENT_KEY_9,
                     52:     /* UAEKEY_0        */              INPUTEVENT_KEY_0,
                     53: 
                     54:     /* UAEKEY_MINUS */         INPUTEVENT_KEY_SUB,
                     55:     /* UAEKEY_EQUALS */                INPUTEVENT_KEY_EQUALS,
                     56: 
                     57:     /* UAEKEY_BACKSPACE */     INPUTEVENT_KEY_BACKSPACE,
                     58:     /* UAEKEY_ENTER */         INPUTEVENT_KEY_RETURN,
                     59:     /* UAEKEY_SPACE */         INPUTEVENT_KEY_SPACE,
                     60: 
                     61:     /* UAEKEY_TAB */           INPUTEVENT_KEY_TAB,
                     62: 
                     63:     /* UAEKEY_A */             INPUTEVENT_KEY_A,
                     64:     /* UAEKEY_B */             INPUTEVENT_KEY_B,
                     65:     /* UAEKEY_C */             INPUTEVENT_KEY_C,
                     66:     /* UAEKEY_D */             INPUTEVENT_KEY_D,
                     67:     /* UAEKEY_E */             INPUTEVENT_KEY_E,
                     68:     /* UAEKEY_F */             INPUTEVENT_KEY_F,
                     69:     /* UAEKEY_G */             INPUTEVENT_KEY_G,
                     70:     /* UAEKEY_H */             INPUTEVENT_KEY_H,
                     71:     /* UAEKEY_I */             INPUTEVENT_KEY_I,
                     72:     /* UAEKEY_J */             INPUTEVENT_KEY_J,
                     73:     /* UAEKEY_K */             INPUTEVENT_KEY_K,
                     74:     /* UAEKEY_L */             INPUTEVENT_KEY_L,
                     75:     /* UAEKEY_M */             INPUTEVENT_KEY_M,
                     76:     /* UAEKEY_N */             INPUTEVENT_KEY_N,
                     77:     /* UAEKEY_O */             INPUTEVENT_KEY_O,
                     78:     /* UAEKEY_P */             INPUTEVENT_KEY_P,
                     79:     /* UAEKEY_Q */             INPUTEVENT_KEY_Q,
                     80:     /* UAEKEY_R */             INPUTEVENT_KEY_R,
                     81:     /* UAEKEY_S */             INPUTEVENT_KEY_S,
                     82:     /* UAEKEY_T */             INPUTEVENT_KEY_T,
                     83:     /* UAEKEY_U */             INPUTEVENT_KEY_U,
                     84:     /* UAEKEY_V */             INPUTEVENT_KEY_V,
                     85:     /* UAEKEY_W */             INPUTEVENT_KEY_W,
                     86:     /* UAEKEY_X */             INPUTEVENT_KEY_X,
                     87:     /* UAEKEY_Y */             INPUTEVENT_KEY_Y,
                     88:     /* UAEKEY_Z */             INPUTEVENT_KEY_Z,
                     89: 
                     90:     /* UAEKEY_LEFTBRACKET */   INPUTEVENT_KEY_LEFTBRACKET,
                     91:     /* UAEKEY_RIGHTBRACKET */  INPUTEVENT_KEY_RIGHTBRACKET,
                     92:     /* UAEKEY_SEMICOLON */     INPUTEVENT_KEY_SEMICOLON,
                     93:     /* UAEKEY_SINGLEQUOTE */   INPUTEVENT_KEY_SINGLEQUOTE,
                     94:     /* UAEKEY_GRAVE */         INPUTEVENT_KEY_BACKQUOTE,
                     95:     /* UAEKEY_BACKSLASH */     INPUTEVENT_KEY_BACKSLASH,
                     96:     /* UAEKEY_COMMA */         INPUTEVENT_KEY_COMMA,
                     97:     /* UAEKEY_PERIOD */                INPUTEVENT_KEY_PERIOD,
                     98:     /* UAEKEY_SLASH */         INPUTEVENT_KEY_DIV,
                     99:     /* UAEKEY_LTGT */          INPUTEVENT_KEY_30,
                    100: 
                    101:     /* UAEKEY_NUMLOCK */       INPUTEVENT_ZERO,
                    102:     /* UAEKEY_NUMPAD_1 */      INPUTEVENT_KEY_NP_1,
                    103:     /* UAEKEY_NUMPAD_2 */      INPUTEVENT_KEY_NP_2,
                    104:     /* UAEKEY_NUMPAD_3 */      INPUTEVENT_KEY_NP_3,
                    105:     /* UAEKEY_NUMPAD_4 */      INPUTEVENT_KEY_NP_4,
                    106:     /* UAEKEY_NUMPAD_5 */      INPUTEVENT_KEY_NP_5,
                    107:     /* UAEKEY_NUMPAD_6 */      INPUTEVENT_KEY_NP_6,
                    108:     /* UAEKEY_NUMPAD_7 */      INPUTEVENT_KEY_NP_7,
                    109:     /* UAEKEY_NUMPAD_8 */      INPUTEVENT_KEY_NP_8,
                    110:     /* UAEKEY_NUMPAD_9 */      INPUTEVENT_KEY_NP_9,
                    111:     /* UAEKEY_NUMPAD_0 */      INPUTEVENT_KEY_NP_0,
                    112:     /* UAEKEY_NUMPAD_PERIOD */ INPUTEVENT_KEY_NP_PERIOD,
                    113:     /* UAEKEY_NUMPAD_PLUS */   INPUTEVENT_KEY_NP_ADD,
                    114:     /* UAEKEY_NUMPAD_MINUS */  INPUTEVENT_KEY_NP_SUB,
                    115:     /* UAEKEY_NUMPAD_MULTIPLY */INPUTEVENT_KEY_NP_MUL,
                    116:     /* UAEKEY_NUMPAD_DIVIDE */ INPUTEVENT_KEY_NP_DIV,
                    117:     /* UAEKEY_NUMPAD_ENTER */  INPUTEVENT_KEY_ENTER,
                    118:     /* UAEKEY_NUMPAD_EQUALS */  INPUTEVENT_ZERO,
                    119:     /* UAEKEY_NUMPAD_LPAREN */  INPUTEVENT_KEY_NP_LPAREN,
                    120:     /* UAEKEY_NUMPAD_RPAREN */  INPUTEVENT_KEY_NP_RPAREN,
                    121: 
                    122:     /* UAEKEY_INSERT */                INPUTEVENT_KEY_HELP,
                    123:     /* UAEKEY_DELETE */                INPUTEVENT_KEY_DEL,
                    124:     /* UAEKEY_HOME */          INPUTEVENT_ZERO,
                    125:     /* UAEKEY_END */           INPUTEVENT_ZERO,
                    126:     /* UAEKEY_PAGEUP */        INPUTEVENT_KEY_AMIGA_RIGHT,
                    127:     /* UAEKEY_PAGEDOWN */      INPUTEVENT_KEY_AMIGA_LEFT,
                    128: 
                    129:     /* UAEKEY_CURSOR_UP */     INPUTEVENT_KEY_CURSOR_UP,
                    130:     /* UAEKEY_CURSOR_DOWN */   INPUTEVENT_KEY_CURSOR_DOWN,
                    131:     /* UAEKEY_CURSOR_LEFT */   INPUTEVENT_KEY_CURSOR_LEFT,
                    132:     /* UAEKEY_CURSOR_RIGHT */  INPUTEVENT_KEY_CURSOR_RIGHT,
                    133: 
                    134:     /* UAEKEY_LEFT_CTRL */     INPUTEVENT_KEY_CTRL,
                    135:     /* UAEKEY_LEFT_SHIFT */    INPUTEVENT_KEY_SHIFT_LEFT,
                    136:     /* UAEKEY_LEFT_ALT */      INPUTEVENT_KEY_ALT_LEFT,
                    137:     /* UAEKEY_LEFT_SUPER */    INPUTEVENT_KEY_AMIGA_LEFT,
                    138:     /* UAEKEY_RIGHT_SUPER */   INPUTEVENT_KEY_AMIGA_RIGHT,
                    139:     /* UAEKEY_RIGHT_ALT */     INPUTEVENT_KEY_ALT_RIGHT,
                    140:     /* UAEKEY_MENU */          INPUTEVENT_KEY_AMIGA_RIGHT,
                    141:     /* UAEKEY_RIGHT_SHIFT */   INPUTEVENT_KEY_SHIFT_RIGHT,
                    142:     /* UAEKEY_RIGHT_CTRL */    INPUTEVENT_KEY_CTRL_RIGHT,
                    143:     /* UAEKEY_CAPSLOCK */      INPUTEVENT_KEY_CAPS_LOCK,
                    144: 
                    145:     /* UAEKEY_HELP */          INPUTEVENT_KEY_HELP,
                    146: 
                    147:     /* UAEKEY_POWER */         INPUTEVENT_ZERO,
                    148:     /* UAEKEY_SLEEP */         INPUTEVENT_ZERO,
                    149:     /* UAEKEY_WAKE */          INPUTEVENT_ZERO
                    150: };
                    151: 
                    152: 
                    153: /*
                    154:  * Build a default key translation table using the
                    155:  * specified host keymap.
                    156:  */
                    157: struct uae_input_device_kbr_default *uaekey_make_default_kbr (const struct uaekey_hostmap *hostkeys)
                    158: {
                    159:     int i;
                    160:     int count;
                    161:     struct uae_input_device_kbr_default *trans;
                    162: 
                    163:     for (i = 0; i < 256 && hostkeys[i].hostkey != -1; i++);
                    164: 
                    165:     if (i == 256)
                    166:        abort ();
                    167: 
                    168:     count = i;
                    169: 
                    170:     trans = (struct uae_input_device_kbr_default*)
                    171:            malloc (sizeof (struct uae_input_device_kbr_default) * (count + 1));
                    172: 
                    173:     if (trans) {
                    174:        for (i = 0; i < count; i++) {
                    175:            trans[i].scancode = hostkeys[i].hostkey;
                    176:            trans[i].event    = default_keymap[hostkeys[i].uaekey];
                    177:        }
                    178:        trans[i].scancode = -1;
                    179:     }
                    180: 
                    181:     return trans;
                    182: };

unix.superglobalmegacorp.com

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