1 /* 2 * ============================================================================ 3 * Title: Event binding tables. 4 * Author: J. Zbiciak, R. Reynolds (GP2X) 5 * ============================================================================ 6 * These tables specify the bindable events and the default bindings. 7 * ============================================================================ 8 */ 9 10 #include "config.h" 11 #include "lzoe/lzoe.h" 12 #include "file/file.h" 13 #include "periph/periph.h" 14 #include "cp1600/cp1600.h" 15 #include "cp1600/emu_link.h" 16 #include "mem/mem.h" 17 #include "ecs/ecs.h" 18 #include "bincfg/bincfg.h" 19 #include "bincfg/legacy.h" 20 #include "icart/icart.h" 21 #include "pads/pads.h" 22 #include "pads/pads_cgc.h" 23 #include "pads/pads_intv2pc.h" 24 #include "avi/avi.h" 25 #include "gfx/gfx.h" 26 #include "gfx/palette.h" 27 #include "snd/snd.h" 28 #include "ay8910/ay8910.h" 29 #include "demo/demo.h" 30 #include "stic/stic.h" 31 #include "ivoice/ivoice.h" 32 #include "speed/speed.h" 33 #include "debug/debug_.h" 34 #include "event/event.h" 35 #include "joy/joy.h" 36 #include "serializer/serializer.h" 37 #include "jlp/jlp.h" 38 #include "locutus/locutus_adapt.h" 39 #include "cheat/cheat.h" 40 #include "mapping.h" 41 #include "cfg.h" 42 #include <errno.h> 43 44 45 #define W(word) ((uint32_t*)&intv.word) 46 47 /* ------------------------------------------------------------------------ */ 48 /* jzIntv internal event action table. Keyboard and joystick inputs may */ 49 /* be bound to any of these actions. This table also ties the actions */ 50 /* to the actual bits that the event action fiddles with. */ 51 /* */ 52 /* Notes on mnemonics: */ 53 /* PD0L Left controller pad on base unit. */ 54 /* PD0R Right controller pad on base unit. */ 55 /* PD1L Left controller pad on ECS unit. */ 56 /* PD1R Right controller pad on ECS unit. */ 57 /* PDxx_KP Left Key Pad */ 58 /* PDxx_A Left Action Button ([T]op, [L]eft, [R]ight) */ 59 /* PDxx_D Right Disc */ 60 /* N, NE, etc Compass directions. */ 61 /* */ 62 /* The bit patterns at the right are AND and OR masks. The first two */ 63 /* are the AND masks for release/press. The second two are OR masks */ 64 /* for release/press. */ 65 /* ------------------------------------------------------------------------ */ 66 cfg_evtact_t cfg_event_action[] = 67 { 68 /* -------------------------------------------------------------------- */ 69 /* Miscellaneous. */ 70 /* -------------------------------------------------------------------- */ 71 { "QUIT", W(do_exit ), { 1, 1, }, { 1, 1 } }, 72 { "RESET", W(do_reset ), { 0, ~0U }, { 0, ~0U } }, 73 { "DUMP", W(do_dump ), { ~0U, 0 }, { 0, 1 } }, 74 { "LOAD", W(do_load ), { ~0U, 0 }, { 0, 1 } }, 75 { "RELOAD", W(do_reload ), { ~0U, 0 }, { 0, 1 } }, 76 { "MOVIE", W(gfx.scrshot ), { ~0U, ~0U }, { GFX_MVTOG, 0} }, 77 { "AVI", W(gfx.scrshot ), { ~0U, ~0U }, { GFX_AVTOG, 0} }, 78 { "SHOT", W(gfx.scrshot ), { ~0U, ~0U }, { GFX_SHOT, 0} }, 79 { "GRAMSHOT", W(stic.debug_flags ), { ~0U, ~0U }, { STIC_GRAMSHOT,0}}, 80 { "HIDE", W(gfx.hidden ), { 0, 1 }, { 0, 1 } }, 81 { "WTOG", W(gfx.toggle ), { 0, 0 }, { GFX_WIND_TOG,0}}, 82 { "WINDOW", W(gfx.toggle ), { 0, 0 }, { GFX_WIND_ON, 0}}, 83 { "FULLSC", W(gfx.toggle ), { 0, 0 }, { GFX_WIND_OFF,0}}, 84 { "BREAK", W(debug.step_count ), { ~0U, 0 }, { 0, 0 } }, 85 { "VOLUP", W(snd.change_vol ), { ~0U, 0 }, { 0, 1 } }, 86 { "VOLDN", W(snd.change_vol ), { ~0U, 0 }, { 0, 2 } }, 87 { "NA", NULL, { 0, 0 }, { 0, 0 } }, 88 89 /* -------------------------------------------------------------------- */ 90 /* A rich set of pause actions, so we can tie them to things such as */ 91 /* a window gaining/losing focus, or getting hidden/unhidden. */ 92 /* -------------------------------------------------------------------- */ 93 { "PAUSE", W(do_pause), { ~0U, 0 }, { 0, PAUSE_TOG } }, 94 { "PAUSE_ON", W(do_pause), { ~0U, 0 }, { 0, PAUSE_ON } }, 95 { "PAUSE_OFF", W(do_pause), { ~0U, 0 }, { 0, PAUSE_OFF } }, 96 { "PAUSE_HOLD", W(do_pause), { 0, 0 }, { PAUSE_OFF, PAUSE_ON } }, 97 98 /* -------------------------------------------------------------------- */ 99 /* Input map selection. */ 100 /* -------------------------------------------------------------------- */ 101 # define CHG_EVT_MAP(name, push, pop) \ 102 { \ 103 name, W(chg_evt_map), \ 104 { EV_MAP_##pop == EV_MAP_NOP ? ~0U : 0, 0 }, \ 105 { EV_MAP_##pop, EV_MAP_##push } \ 106 } 107 108 CHG_EVT_MAP("KBD0", SET_0, NOP), 109 CHG_EVT_MAP("KBD1", SET_1, NOP), 110 CHG_EVT_MAP("KBD2", SET_2, NOP), 111 CHG_EVT_MAP("KBD3", SET_3, NOP), 112 CHG_EVT_MAP("KBDn", NEXT, NOP), 113 CHG_EVT_MAP("KBDp", PREV, NOP), 114 115 CHG_EVT_MAP("SETMAP0", SET_0, NOP), 116 CHG_EVT_MAP("SETMAP1", SET_1, NOP), 117 CHG_EVT_MAP("SETMAP2", SET_2, NOP), 118 CHG_EVT_MAP("SETMAP3", SET_3, NOP), 119 CHG_EVT_MAP("NEXTMAP", NEXT, NOP), 120 CHG_EVT_MAP("PREVMAP", PREV, NOP), 121 122 CHG_EVT_MAP("SHF10", SET_1, SET_0), 123 CHG_EVT_MAP("SHF20", SET_2, SET_0), 124 CHG_EVT_MAP("SHF30", SET_3, SET_0), 125 CHG_EVT_MAP("SHF01", SET_0, SET_1), 126 CHG_EVT_MAP("SHF21", SET_2, SET_1), 127 CHG_EVT_MAP("SHF31", SET_3, SET_1), 128 CHG_EVT_MAP("SHF02", SET_0, SET_2), 129 CHG_EVT_MAP("SHF12", SET_1, SET_2), 130 CHG_EVT_MAP("SHF32", SET_3, SET_2), 131 CHG_EVT_MAP("SHF03", SET_0, SET_3), 132 CHG_EVT_MAP("SHF13", SET_1, SET_3), 133 CHG_EVT_MAP("SHF23", SET_2, SET_3), 134 135 CHG_EVT_MAP("PSH0", PSH_0, POP), 136 CHG_EVT_MAP("PSH1", PSH_1, POP), 137 CHG_EVT_MAP("PSH2", PSH_2, POP), 138 CHG_EVT_MAP("PSH3", PSH_3, POP), 139 140 CHG_EVT_MAP("POP", POP, NOP), 141 CHG_EVT_MAP("POP_UP", NOP, POP), /* Pop on release */ 142 143 # undef CHG_EVT_MAP 144 145 /* -------------------------------------------------------------------- */ 146 /* Cheat events. */ 147 /* -------------------------------------------------------------------- */ 148 { "CHEAT0", W(cheat.request), { ~0U, ~0U }, { 0x01, 0 } }, 149 { "CHEAT1", W(cheat.request), { ~0U, ~0U }, { 0x02, 0 } }, 150 { "CHEAT2", W(cheat.request), { ~0U, ~0U }, { 0x04, 0 } }, 151 { "CHEAT3", W(cheat.request), { ~0U, ~0U }, { 0x08, 0 } }, 152 { "CHEAT4", W(cheat.request), { ~0U, ~0U }, { 0x10, 0 } }, 153 { "CHEAT5", W(cheat.request), { ~0U, ~0U }, { 0x20, 0 } }, 154 { "CHEAT6", W(cheat.request), { ~0U, ~0U }, { 0x40, 0 } }, 155 { "CHEAT7", W(cheat.request), { ~0U, ~0U }, { 0x80, 0 } }, 156 157 /* -------------------------------------------------------------------- */ 158 /* PAD0: Left-hand controller keypad */ 159 /* -------------------------------------------------------------------- */ 160 { "PD0L_KP1", W(pad0.l[1] ), { 0, ~0U }, { 0, 0x81 } }, 161 { "PD0L_KP2", W(pad0.l[2] ), { 0, ~0U }, { 0, 0x41 } }, 162 { "PD0L_KP3", W(pad0.l[3] ), { 0, ~0U }, { 0, 0x21 } }, 163 { "PD0L_KP4", W(pad0.l[4] ), { 0, ~0U }, { 0, 0x82 } }, 164 { "PD0L_KP5", W(pad0.l[5] ), { 0, ~0U }, { 0, 0x42 } }, 165 { "PD0L_KP6", W(pad0.l[6] ), { 0, ~0U }, { 0, 0x22 } }, 166 { "PD0L_KP7", W(pad0.l[7] ), { 0, ~0U }, { 0, 0x84 } }, 167 { "PD0L_KP8", W(pad0.l[8] ), { 0, ~0U }, { 0, 0x44 } }, 168 { "PD0L_KP9", W(pad0.l[9] ), { 0, ~0U }, { 0, 0x24 } }, 169 { "PD0L_KPC", W(pad0.l[10] ), { 0, ~0U }, { 0, 0x88 } }, 170 { "PD0L_KP0", W(pad0.l[0] ), { 0, ~0U }, { 0, 0x48 } }, 171 { "PD0L_KPE", W(pad0.l[11] ), { 0, ~0U }, { 0, 0x28 } }, 172 173 /* -------------------------------------------------------------------- */ 174 /* PAD0: Right-hand controller keypad */ 175 /* -------------------------------------------------------------------- */ 176 { "PD0R_KP1", W(pad0.r[1] ), { 0, ~0U }, { 0, 0x81 } }, 177 { "PD0R_KP2", W(pad0.r[2] ), { 0, ~0U }, { 0, 0x41 } }, 178 { "PD0R_KP3", W(pad0.r[3] ), { 0, ~0U }, { 0, 0x21 } }, 179 { "PD0R_KP4", W(pad0.r[4] ), { 0, ~0U }, { 0, 0x82 } }, 180 { "PD0R_KP5", W(pad0.r[5] ), { 0, ~0U }, { 0, 0x42 } }, 181 { "PD0R_KP6", W(pad0.r[6] ), { 0, ~0U }, { 0, 0x22 } }, 182 { "PD0R_KP7", W(pad0.r[7] ), { 0, ~0U }, { 0, 0x84 } }, 183 { "PD0R_KP8", W(pad0.r[8] ), { 0, ~0U }, { 0, 0x44 } }, 184 { "PD0R_KP9", W(pad0.r[9] ), { 0, ~0U }, { 0, 0x24 } }, 185 { "PD0R_KPC", W(pad0.r[10] ), { 0, ~0U }, { 0, 0x88 } }, 186 { "PD0R_KP0", W(pad0.r[0] ), { 0, ~0U }, { 0, 0x48 } }, 187 { "PD0R_KPE", W(pad0.r[11] ), { 0, ~0U }, { 0, 0x28 } }, 188 189 /* -------------------------------------------------------------------- */ 190 /* PAD0: Action buttons. */ 191 /* -------------------------------------------------------------------- */ 192 { "PD0L_A_T", W(pad0.l[12] ), { 0, ~0U }, { 0, 0xA0 } }, 193 { "PD0L_A_L", W(pad0.l[13] ), { 0, ~0U }, { 0, 0x60 } }, 194 { "PD0L_A_R", W(pad0.l[14] ), { 0, ~0U }, { 0, 0xC0 } }, 195 196 { "PD0R_A_T", W(pad0.r[12] ), { 0, ~0U }, { 0, 0xA0 } }, 197 { "PD0R_A_L", W(pad0.r[13] ), { 0, ~0U }, { 0, 0x60 } }, 198 { "PD0R_A_R", W(pad0.r[14] ), { 0, ~0U }, { 0, 0xC0 } }, 199 200 /* -------------------------------------------------------------------- */ 201 /* PAD0: The Controller DISC via Keyboard etc. */ 202 /* -------------------------------------------------------------------- */ 203 { "PD0L_D_E", W(pad0.l[15] ), { ~1, ~0U }, { 0, 1 } }, 204 { "PD0L_D_ENE", W(pad0.l[15] ), { ~3, ~0U }, { 0, 3 } }, 205 { "PD0L_D_NE", W(pad0.l[15] ), { ~2, ~0U }, { 0, 2 } }, 206 { "PD0L_D_NNE", W(pad0.l[15] ), { ~6, ~0U }, { 0, 6 } }, 207 { "PD0L_D_N", W(pad0.l[15] ), { ~4, ~0U }, { 0, 4 } }, 208 { "PD0L_D_NNW", W(pad0.l[15] ), { ~12, ~0U }, { 0, 12 } }, 209 { "PD0L_D_NW", W(pad0.l[15] ), { ~8, ~0U }, { 0, 8 } }, 210 { "PD0L_D_WNW", W(pad0.l[15] ), { ~24, ~0U }, { 0, 24 } }, 211 { "PD0L_D_W", W(pad0.l[15] ), { ~16, ~0U }, { 0, 16 } }, 212 { "PD0L_D_WSW", W(pad0.l[15] ), { ~48, ~0U }, { 0, 48 } }, 213 { "PD0L_D_SW", W(pad0.l[15] ), { ~32, ~0U }, { 0, 32 } }, 214 { "PD0L_D_SSW", W(pad0.l[15] ), { ~96, ~0U }, { 0, 96 } }, 215 { "PD0L_D_S", W(pad0.l[15] ), { ~64, ~0U }, { 0, 64 } }, 216 { "PD0L_D_SSE", W(pad0.l[15] ), { ~192, ~0U }, { 0, 192} }, 217 { "PD0L_D_SE", W(pad0.l[15] ), { ~128, ~0U }, { 0, 128} }, 218 { "PD0L_D_ESE", W(pad0.l[15] ), { ~129, ~0U }, { 0, 129} }, 219 220 { "PD0R_D_E", W(pad0.r[15] ), { ~1, ~0U }, { 0, 1 } }, 221 { "PD0R_D_ENE", W(pad0.r[15] ), { ~3, ~0U }, { 0, 3 } }, 222 { "PD0R_D_NE", W(pad0.r[15] ), { ~2, ~0U }, { 0, 2 } }, 223 { "PD0R_D_NNE", W(pad0.r[15] ), { ~6, ~0U }, { 0, 6 } }, 224 { "PD0R_D_N", W(pad0.r[15] ), { ~4, ~0U }, { 0, 4 } }, 225 { "PD0R_D_NNW", W(pad0.r[15] ), { ~12, ~0U }, { 0, 12 } }, 226 { "PD0R_D_NW", W(pad0.r[15] ), { ~8, ~0U }, { 0, 8 } }, 227 { "PD0R_D_WNW", W(pad0.r[15] ), { ~24, ~0U }, { 0, 24 } }, 228 { "PD0R_D_W", W(pad0.r[15] ), { ~16, ~0U }, { 0, 16 } }, 229 { "PD0R_D_WSW", W(pad0.r[15] ), { ~48, ~0U }, { 0, 48 } }, 230 { "PD0R_D_SW", W(pad0.r[15] ), { ~32, ~0U }, { 0, 32 } }, 231 { "PD0R_D_SSW", W(pad0.r[15] ), { ~96, ~0U }, { 0, 96 } }, 232 { "PD0R_D_S", W(pad0.r[15] ), { ~64, ~0U }, { 0, 64 } }, 233 { "PD0R_D_SSE", W(pad0.r[15] ), { ~192, ~0U }, { 0, 192} }, 234 { "PD0R_D_SE", W(pad0.r[15] ), { ~128, ~0U }, { 0, 128} }, 235 { "PD0R_D_ESE", W(pad0.r[15] ), { ~129, ~0U }, { 0, 129} }, 236 237 /* -------------------------------------------------------------------- */ 238 /* PAD0: The Controller DISC via Joystick */ 239 /* -------------------------------------------------------------------- */ 240 { "PD0L_J_E", W(pad0.l[16] ), { 0, 0 }, { 0, 1 }}, 241 { "PD0L_J_ENE", W(pad0.l[16] ), { 0, 0 }, { 0, 3 }}, 242 { "PD0L_J_NE", W(pad0.l[16] ), { 0, 0 }, { 0, 2 }}, 243 { "PD0L_J_NNE", W(pad0.l[16] ), { 0, 0 }, { 0, 6 }}, 244 { "PD0L_J_N", W(pad0.l[16] ), { 0, 0 }, { 0, 4 }}, 245 { "PD0L_J_NNW", W(pad0.l[16] ), { 0, 0 }, { 0, 12 }}, 246 { "PD0L_J_NW", W(pad0.l[16] ), { 0, 0 }, { 0, 8 }}, 247 { "PD0L_J_WNW", W(pad0.l[16] ), { 0, 0 }, { 0, 24 }}, 248 { "PD0L_J_W", W(pad0.l[16] ), { 0, 0 }, { 0, 16 }}, 249 { "PD0L_J_WSW", W(pad0.l[16] ), { 0, 0 }, { 0, 48 }}, 250 { "PD0L_J_SW", W(pad0.l[16] ), { 0, 0 }, { 0, 32 }}, 251 { "PD0L_J_SSW", W(pad0.l[16] ), { 0, 0 }, { 0, 96 }}, 252 { "PD0L_J_S", W(pad0.l[16] ), { 0, 0 }, { 0, 64 }}, 253 { "PD0L_J_SSE", W(pad0.l[16] ), { 0, 0 }, { 0, 192 }}, 254 { "PD0L_J_SE", W(pad0.l[16] ), { 0, 0 }, { 0, 128 }}, 255 { "PD0L_J_ESE", W(pad0.l[16] ), { 0, 0 }, { 0, 129 }}, 256 257 { "PD0R_J_E", W(pad0.r[16] ), { 0, 0 }, { 0, 1 }}, 258 { "PD0R_J_ENE", W(pad0.r[16] ), { 0, 0 }, { 0, 3 }}, 259 { "PD0R_J_NE", W(pad0.r[16] ), { 0, 0 }, { 0, 2 }}, 260 { "PD0R_J_NNE", W(pad0.r[16] ), { 0, 0 }, { 0, 6 }}, 261 { "PD0R_J_N", W(pad0.r[16] ), { 0, 0 }, { 0, 4 }}, 262 { "PD0R_J_NNW", W(pad0.r[16] ), { 0, 0 }, { 0, 12 }}, 263 { "PD0R_J_NW", W(pad0.r[16] ), { 0, 0 }, { 0, 8 }}, 264 { "PD0R_J_WNW", W(pad0.r[16] ), { 0, 0 }, { 0, 24 }}, 265 { "PD0R_J_W", W(pad0.r[16] ), { 0, 0 }, { 0, 16 }}, 266 { "PD0R_J_WSW", W(pad0.r[16] ), { 0, 0 }, { 0, 48 }}, 267 { "PD0R_J_SW", W(pad0.r[16] ), { 0, 0 }, { 0, 32 }}, 268 { "PD0R_J_SSW", W(pad0.r[16] ), { 0, 0 }, { 0, 96 }}, 269 { "PD0R_J_S", W(pad0.r[16] ), { 0, 0 }, { 0, 64 }}, 270 { "PD0R_J_SSE", W(pad0.r[16] ), { 0, 0 }, { 0, 192 }}, 271 { "PD0R_J_SE", W(pad0.r[16] ), { 0, 0 }, { 0, 128 }}, 272 { "PD0R_J_ESE", W(pad0.r[16] ), { 0, 0 }, { 0, 129 }}, 273 274 /* -------------------------------------------------------------------- */ 275 /* PAD0 "Raw" bit-level input bits for left and right. */ 276 /* -------------------------------------------------------------------- */ 277 { "PD0L_BIT_0", W(pad0.l[17] ), { ~0x01, ~0U }, { 0, 0x01 } }, 278 { "PD0L_BIT_1", W(pad0.l[17] ), { ~0x02, ~0U }, { 0, 0x02 } }, 279 { "PD0L_BIT_2", W(pad0.l[17] ), { ~0x04, ~0U }, { 0, 0x04 } }, 280 { "PD0L_BIT_3", W(pad0.l[17] ), { ~0x08, ~0U }, { 0, 0x08 } }, 281 { "PD0L_BIT_4", W(pad0.l[17] ), { ~0x10, ~0U }, { 0, 0x10 } }, 282 { "PD0L_BIT_5", W(pad0.l[17] ), { ~0x20, ~0U }, { 0, 0x20 } }, 283 { "PD0L_BIT_6", W(pad0.l[17] ), { ~0x40, ~0U }, { 0, 0x40 } }, 284 { "PD0L_BIT_7", W(pad0.l[17] ), { ~0x80, ~0U }, { 0, 0x80 } }, 285 286 { "PD0R_BIT_0", W(pad0.r[17] ), { ~0x01, ~0U }, { 0, 0x01 } }, 287 { "PD0R_BIT_1", W(pad0.r[17] ), { ~0x02, ~0U }, { 0, 0x02 } }, 288 { "PD0R_BIT_2", W(pad0.r[17] ), { ~0x04, ~0U }, { 0, 0x04 } }, 289 { "PD0R_BIT_3", W(pad0.r[17] ), { ~0x08, ~0U }, { 0, 0x08 } }, 290 { "PD0R_BIT_4", W(pad0.r[17] ), { ~0x10, ~0U }, { 0, 0x10 } }, 291 { "PD0R_BIT_5", W(pad0.r[17] ), { ~0x20, ~0U }, { 0, 0x20 } }, 292 { "PD0R_BIT_6", W(pad0.r[17] ), { ~0x40, ~0U }, { 0, 0x40 } }, 293 { "PD0R_BIT_7", W(pad0.r[17] ), { ~0x80, ~0U }, { 0, 0x80 } }, 294 295 /* -------------------------------------------------------------------- */ 296 /* PAD1: Left-hand controller keypad */ 297 /* -------------------------------------------------------------------- */ 298 { "PD1L_KP1", W(pad1.l[1] ), { 0, ~0U }, { 0, 0x81 } }, 299 { "PD1L_KP2", W(pad1.l[2] ), { 0, ~0U }, { 0, 0x41 } }, 300 { "PD1L_KP3", W(pad1.l[3] ), { 0, ~0U }, { 0, 0x21 } }, 301 { "PD1L_KP4", W(pad1.l[4] ), { 0, ~0U }, { 0, 0x82 } }, 302 { "PD1L_KP5", W(pad1.l[5] ), { 0, ~0U }, { 0, 0x42 } }, 303 { "PD1L_KP6", W(pad1.l[6] ), { 0, ~0U }, { 0, 0x22 } }, 304 { "PD1L_KP7", W(pad1.l[7] ), { 0, ~0U }, { 0, 0x84 } }, 305 { "PD1L_KP8", W(pad1.l[8] ), { 0, ~0U }, { 0, 0x44 } }, 306 { "PD1L_KP9", W(pad1.l[9] ), { 0, ~0U }, { 0, 0x24 } }, 307 { "PD1L_KPC", W(pad1.l[10] ), { 0, ~0U }, { 0, 0x88 } }, 308 { "PD1L_KP0", W(pad1.l[0] ), { 0, ~0U }, { 0, 0x48 } }, 309 { "PD1L_KPE", W(pad1.l[11] ), { 0, ~0U }, { 0, 0x28 } }, 310 311 /* -------------------------------------------------------------------- */ 312 /* PAD1: Right-hand controller keypad */ 313 /* -------------------------------------------------------------------- */ 314 { "PD1R_KP1", W(pad1.r[1] ), { 0, ~0U }, { 0, 0x81 } }, 315 { "PD1R_KP2", W(pad1.r[2] ), { 0, ~0U }, { 0, 0x41 } }, 316 { "PD1R_KP3", W(pad1.r[3] ), { 0, ~0U }, { 0, 0x21 } }, 317 { "PD1R_KP4", W(pad1.r[4] ), { 0, ~0U }, { 0, 0x82 } }, 318 { "PD1R_KP5", W(pad1.r[5] ), { 0, ~0U }, { 0, 0x42 } }, 319 { "PD1R_KP6", W(pad1.r[6] ), { 0, ~0U }, { 0, 0x22 } }, 320 { "PD1R_KP7", W(pad1.r[7] ), { 0, ~0U }, { 0, 0x84 } }, 321 { "PD1R_KP8", W(pad1.r[8] ), { 0, ~0U }, { 0, 0x44 } }, 322 { "PD1R_KP9", W(pad1.r[9] ), { 0, ~0U }, { 0, 0x24 } }, 323 { "PD1R_KPC", W(pad1.r[10] ), { 0, ~0U }, { 0, 0x88 } }, 324 { "PD1R_KP0", W(pad1.r[0] ), { 0, ~0U }, { 0, 0x48 } }, 325 { "PD1R_KPE", W(pad1.r[11] ), { 0, ~0U }, { 0, 0x28 } }, 326 327 /* -------------------------------------------------------------------- */ 328 /* PAD1: Action buttons. */ 329 /* -------------------------------------------------------------------- */ 330 { "PD1L_A_T", W(pad1.l[12] ), { 0, ~0U }, { 0, 0xA0 } }, 331 { "PD1L_A_L", W(pad1.l[13] ), { 0, ~0U }, { 0, 0x60 } }, 332 { "PD1L_A_R", W(pad1.l[14] ), { 0, ~0U }, { 0, 0xC0 } }, 333 334 { "PD1R_A_T", W(pad1.r[12] ), { 0, ~0U }, { 0, 0xA0 } }, 335 { "PD1R_A_L", W(pad1.r[13] ), { 0, ~0U }, { 0, 0x60 } }, 336 { "PD1R_A_R", W(pad1.r[14] ), { 0, ~0U }, { 0, 0xC0 } }, 337 338 /* -------------------------------------------------------------------- */ 339 /* PAD1: The Controller DISC. */ 340 /* -------------------------------------------------------------------- */ 341 { "PD1L_D_E", W(pad1.l[15] ), { ~1, ~0U }, { 0, 1 } }, 342 { "PD1L_D_NE", W(pad1.l[15] ), { ~2, ~0U }, { 0, 2 } }, 343 { "PD1L_D_N", W(pad1.l[15] ), { ~4, ~0U }, { 0, 4 } }, 344 { "PD1L_D_NW", W(pad1.l[15] ), { ~8, ~0U }, { 0, 8 } }, 345 { "PD1L_D_W", W(pad1.l[15] ), { ~16, ~0U }, { 0, 16 } }, 346 { "PD1L_D_SW", W(pad1.l[15] ), { ~32, ~0U }, { 0, 32 } }, 347 { "PD1L_D_S", W(pad1.l[15] ), { ~64, ~0U }, { 0, 64 } }, 348 { "PD1L_D_SE", W(pad1.l[15] ), { ~128, ~0U }, { 0, 128} }, 349 350 { "PD1R_D_E", W(pad1.r[15] ), { ~1, ~0U }, { 0, 1 } }, 351 { "PD1R_D_NE", W(pad1.r[15] ), { ~2, ~0U }, { 0, 2 } }, 352 { "PD1R_D_N", W(pad1.r[15] ), { ~4, ~0U }, { 0, 4 } }, 353 { "PD1R_D_NW", W(pad1.r[15] ), { ~8, ~0U }, { 0, 8 } }, 354 { "PD1R_D_W", W(pad1.r[15] ), { ~16, ~0U }, { 0, 16 } }, 355 { "PD1R_D_SW", W(pad1.r[15] ), { ~32, ~0U }, { 0, 32 } }, 356 { "PD1R_D_S", W(pad1.r[15] ), { ~64, ~0U }, { 0, 64 } }, 357 { "PD1R_D_SE", W(pad1.r[15] ), { ~128, ~0U }, { 0, 128} }, 358 359 /* -------------------------------------------------------------------- */ 360 /* PAD1: The Controller DISC via Joystick */ 361 /* -------------------------------------------------------------------- */ 362 { "PD1L_J_E", W(pad1.l[16] ), { 0, 0 }, { 0, 1 }}, 363 { "PD1L_J_ENE", W(pad1.l[16] ), { 0, 0 }, { 0, 3 }}, 364 { "PD1L_J_NE", W(pad1.l[16] ), { 0, 0 }, { 0, 2 }}, 365 { "PD1L_J_NNE", W(pad1.l[16] ), { 0, 0 }, { 0, 6 }}, 366 { "PD1L_J_N", W(pad1.l[16] ), { 0, 0 }, { 0, 4 }}, 367 { "PD1L_J_NNW", W(pad1.l[16] ), { 0, 0 }, { 0, 12 }}, 368 { "PD1L_J_NW", W(pad1.l[16] ), { 0, 0 }, { 0, 8 }}, 369 { "PD1L_J_WNW", W(pad1.l[16] ), { 0, 0 }, { 0, 24 }}, 370 { "PD1L_J_W", W(pad1.l[16] ), { 0, 0 }, { 0, 16 }}, 371 { "PD1L_J_WSW", W(pad1.l[16] ), { 0, 0 }, { 0, 48 }}, 372 { "PD1L_J_SW", W(pad1.l[16] ), { 0, 0 }, { 0, 32 }}, 373 { "PD1L_J_SSW", W(pad1.l[16] ), { 0, 0 }, { 0, 96 }}, 374 { "PD1L_J_S", W(pad1.l[16] ), { 0, 0 }, { 0, 64 }}, 375 { "PD1L_J_SSE", W(pad1.l[16] ), { 0, 0 }, { 0, 192 }}, 376 { "PD1L_J_SE", W(pad1.l[16] ), { 0, 0 }, { 0, 128 }}, 377 { "PD1L_J_ESE", W(pad1.l[16] ), { 0, 0 }, { 0, 129 }}, 378 379 { "PD1R_J_E", W(pad1.r[16] ), { 0, 0 }, { 0, 1 }}, 380 { "PD1R_J_ENE", W(pad1.r[16] ), { 0, 0 }, { 0, 3 }}, 381 { "PD1R_J_NE", W(pad1.r[16] ), { 0, 0 }, { 0, 2 }}, 382 { "PD1R_J_NNE", W(pad1.r[16] ), { 0, 0 }, { 0, 6 }}, 383 { "PD1R_J_N", W(pad1.r[16] ), { 0, 0 }, { 0, 4 }}, 384 { "PD1R_J_NNW", W(pad1.r[16] ), { 0, 0 }, { 0, 12 }}, 385 { "PD1R_J_NW", W(pad1.r[16] ), { 0, 0 }, { 0, 8 }}, 386 { "PD1R_J_WNW", W(pad1.r[16] ), { 0, 0 }, { 0, 24 }}, 387 { "PD1R_J_W", W(pad1.r[16] ), { 0, 0 }, { 0, 16 }}, 388 { "PD1R_J_WSW", W(pad1.r[16] ), { 0, 0 }, { 0, 48 }}, 389 { "PD1R_J_SW", W(pad1.r[16] ), { 0, 0 }, { 0, 32 }}, 390 { "PD1R_J_SSW", W(pad1.r[16] ), { 0, 0 }, { 0, 96 }}, 391 { "PD1R_J_S", W(pad1.r[16] ), { 0, 0 }, { 0, 64 }}, 392 { "PD1R_J_SSE", W(pad1.r[16] ), { 0, 0 }, { 0, 192 }}, 393 { "PD1R_J_SE", W(pad1.r[16] ), { 0, 0 }, { 0, 128 }}, 394 { "PD1R_J_ESE", W(pad1.r[16] ), { 0, 0 }, { 0, 129 }}, 395 396 /* -------------------------------------------------------------------- */ 397 /* PAD1 "Raw" bit-level input bits for left and right. */ 398 /* -------------------------------------------------------------------- */ 399 { "PD1L_BIT_0", W(pad1.l[17] ), { ~0x01, ~0U }, { 0, 0x01 } }, 400 { "PD1L_BIT_1", W(pad1.l[17] ), { ~0x02, ~0U }, { 0, 0x02 } }, 401 { "PD1L_BIT_2", W(pad1.l[17] ), { ~0x04, ~0U }, { 0, 0x04 } }, 402 { "PD1L_BIT_3", W(pad1.l[17] ), { ~0x08, ~0U }, { 0, 0x08 } }, 403 { "PD1L_BIT_4", W(pad1.l[17] ), { ~0x10, ~0U }, { 0, 0x10 } }, 404 { "PD1L_BIT_5", W(pad1.l[17] ), { ~0x20, ~0U }, { 0, 0x20 } }, 405 { "PD1L_BIT_6", W(pad1.l[17] ), { ~0x40, ~0U }, { 0, 0x40 } }, 406 { "PD1L_BIT_7", W(pad1.l[17] ), { ~0x80, ~0U }, { 0, 0x80 } }, 407 408 { "PD1R_BIT_0", W(pad1.r[17] ), { ~0x01, ~0U }, { 0, 0x01 } }, 409 { "PD1R_BIT_1", W(pad1.r[17] ), { ~0x02, ~0U }, { 0, 0x02 } }, 410 { "PD1R_BIT_2", W(pad1.r[17] ), { ~0x04, ~0U }, { 0, 0x04 } }, 411 { "PD1R_BIT_3", W(pad1.r[17] ), { ~0x08, ~0U }, { 0, 0x08 } }, 412 { "PD1R_BIT_4", W(pad1.r[17] ), { ~0x10, ~0U }, { 0, 0x10 } }, 413 { "PD1R_BIT_5", W(pad1.r[17] ), { ~0x20, ~0U }, { 0, 0x20 } }, 414 { "PD1R_BIT_6", W(pad1.r[17] ), { ~0x40, ~0U }, { 0, 0x40 } }, 415 { "PD1R_BIT_7", W(pad1.r[17] ), { ~0x80, ~0U }, { 0, 0x80 } }, 416 417 /* 418 00FFh| 00FEh bits 419 bits | 0 1 2 3 4 5 6 7 420 -----+------------------------------------------------ 421 0 | left, comma, n, v, x, space, [n/a], [n/a] 422 1 | period, m, b, c, z, down, [n/a], [n/a] 423 2 | scolon, k, h, f, s, up, [n/a], [n/a] 424 3 | p, i, y, r, w, q, [n/a], [n/a] 425 4 | esc, 9, 7, 5, 3, 1, [n/a], [n/a] 426 5 | 0, 8, 6, 4, 2, right, [n/a], [n/a] 427 6 | enter, o, u, t, e, ctl, [n/a], [n/a] 428 7 | [n/a], l, j, g, d, a, shift, [n/a] 429 */ 430 431 /* -------------------------------------------------------------------- */ 432 /* ECS Keyboard */ 433 /* -------------------------------------------------------------------- */ 434 435 /* bit 0 */ 436 { "KEYB_LEFT", W(pad1.k[ 0] ), { ~ 1, ~0U }, { 0, 1} }, 437 { "KEYB_PERIOD",W(pad1.k[ 0] ), { ~ 2, ~0U }, { 0, 2} }, 438 { "KEYB_SEMI", W(pad1.k[ 0] ), { ~ 4, ~0U }, { 0, 4} }, 439 { "KEYB_P", W(pad1.k[ 0] ), { ~ 8, ~0U }, { 0, 8} }, 440 { "KEYB_ESC", W(pad1.k[ 0] ), { ~ 16, ~0U }, { 0, 16} }, 441 { "KEYB_0", W(pad1.k[ 0] ), { ~ 32, ~0U }, { 0, 32} }, 442 { "KEYB_ENTER", W(pad1.k[ 0] ), { ~ 64, ~0U }, { 0, 64} }, 443 444 /* bit 1 */ 445 { "KEYB_COMMA", W(pad1.k[ 1] ), { ~ 1, ~0U }, { 0, 1} }, 446 { "KEYB_M", W(pad1.k[ 1] ), { ~ 2, ~0U }, { 0, 2} }, 447 { "KEYB_K", W(pad1.k[ 1] ), { ~ 4, ~0U }, { 0, 4} }, 448 { "KEYB_I", W(pad1.k[ 1] ), { ~ 8, ~0U }, { 0, 8} }, 449 { "KEYB_9", W(pad1.k[ 1] ), { ~ 16, ~0U }, { 0, 16} }, 450 { "KEYB_8", W(pad1.k[ 1] ), { ~ 32, ~0U }, { 0, 32} }, 451 { "KEYB_O", W(pad1.k[ 1] ), { ~ 64, ~0U }, { 0, 64} }, 452 { "KEYB_L", W(pad1.k[ 1] ), { ~128, ~0U }, { 0, 128} }, 453 454 /* bit 2 */ 455 { "KEYB_N", W(pad1.k[ 2] ), { ~ 1, ~0U }, { 0, 1} }, 456 { "KEYB_B", W(pad1.k[ 2] ), { ~ 2, ~0U }, { 0, 2} }, 457 { "KEYB_H", W(pad1.k[ 2] ), { ~ 4, ~0U }, { 0, 4} }, 458 { "KEYB_Y", W(pad1.k[ 2] ), { ~ 8, ~0U }, { 0, 8} }, 459 { "KEYB_7", W(pad1.k[ 2] ), { ~ 16, ~0U }, { 0, 16} }, 460 { "KEYB_6", W(pad1.k[ 2] ), { ~ 32, ~0U }, { 0, 32} }, 461 { "KEYB_U", W(pad1.k[ 2] ), { ~ 64, ~0U }, { 0, 64} }, 462 { "KEYB_J", W(pad1.k[ 2] ), { ~128, ~0U }, { 0, 128} }, 463 464 /* bit 3 */ 465 { "KEYB_V", W(pad1.k[ 3] ), { ~ 1, ~0U }, { 0, 1} }, 466 { "KEYB_C", W(pad1.k[ 3] ), { ~ 2, ~0U }, { 0, 2} }, 467 { "KEYB_F", W(pad1.k[ 3] ), { ~ 4, ~0U }, { 0, 4} }, 468 { "KEYB_R", W(pad1.k[ 3] ), { ~ 8, ~0U }, { 0, 8} }, 469 { "KEYB_5", W(pad1.k[ 3] ), { ~ 16, ~0U }, { 0, 16} }, 470 { "KEYB_4", W(pad1.k[ 3] ), { ~ 32, ~0U }, { 0, 32} }, 471 { "KEYB_T", W(pad1.k[ 3] ), { ~ 64, ~0U }, { 0, 64} }, 472 { "KEYB_G", W(pad1.k[ 3] ), { ~128, ~0U }, { 0, 128} }, 473 474 /* bit 4 */ 475 { "KEYB_X", W(pad1.k[ 4] ), { ~ 1, ~0U }, { 0, 1} }, 476 { "KEYB_Z", W(pad1.k[ 4] ), { ~ 2, ~0U }, { 0, 2} }, 477 { "KEYB_S", W(pad1.k[ 4] ), { ~ 4, ~0U }, { 0, 4} }, 478 { "KEYB_W", W(pad1.k[ 4] ), { ~ 8, ~0U }, { 0, 8} }, 479 { "KEYB_3", W(pad1.k[ 4] ), { ~ 16, ~0U }, { 0, 16} }, 480 { "KEYB_2", W(pad1.k[ 4] ), { ~ 32, ~0U }, { 0, 32} }, 481 { "KEYB_E", W(pad1.k[ 4] ), { ~ 64, ~0U }, { 0, 64} }, 482 { "KEYB_D", W(pad1.k[ 4] ), { ~128, ~0U }, { 0, 128} }, 483 484 /* bit 5 */ 485 { "KEYB_SPACE", W(pad1.k[ 5] ), { ~ 1, ~0U }, { 0, 1} }, 486 { "KEYB_DOWN", W(pad1.k[ 5] ), { ~ 2, ~0U }, { 0, 2} }, 487 { "KEYB_UP", W(pad1.k[ 5] ), { ~ 4, ~0U }, { 0, 4} }, 488 { "KEYB_Q", W(pad1.k[ 5] ), { ~ 8, ~0U }, { 0, 8} }, 489 { "KEYB_1", W(pad1.k[ 5] ), { ~ 16, ~0U }, { 0, 16} }, 490 { "KEYB_RIGHT", W(pad1.k[ 5] ), { ~ 32, ~0U }, { 0, 32} }, 491 { "KEYB_CTRL", W(pad1.k[ 5] ), { ~ 64, ~0U }, { 0, 64} }, 492 { "KEYB_A", W(pad1.k[ 5] ), { ~128, ~0U }, { 0, 128} }, 493 494 /* bit 6 */ 495 { "KEYB_SHIFT", W(pad1.k[ 6] ), { ~128, ~0U }, { 0, 128} }, 496 497 /* -------------------------------------------------------------------- */ 498 /* ECS Keyboard "Shifted" Keys. */ 499 /* -------------------------------------------------------------------- */ 500 { "KEYB_EQUAL", W(pad1.k[ 5]), { ~( 16 << 8), ~0U }, { 0, (16 << 8)} }, 501 { "KEYB_QUOTE", W(pad1.k[ 4]), { ~( 32 << 8), ~0U }, { 0, (32 << 8)} }, 502 { "KEYB_HASH", W(pad1.k[ 4]), { ~( 16 << 8), ~0U }, { 0, (16 << 8)} }, 503 { "KEYB_DOLLAR",W(pad1.k[ 3]), { ~( 32 << 8), ~0U }, { 0, (32 << 8)} }, 504 { "KEYB_PLUS", W(pad1.k[ 3]), { ~( 16 << 8), ~0U }, { 0, (16 << 8)} }, 505 { "KEYB_MINUS", W(pad1.k[ 2]), { ~( 32 << 8), ~0U }, { 0, (32 << 8)} }, 506 { "KEYB_SLASH", W(pad1.k[ 2]), { ~( 16 << 8), ~0U }, { 0, (16 << 8)} }, 507 { "KEYB_STAR", W(pad1.k[ 1]), { ~( 32 << 8), ~0U }, { 0, (32 << 8)} }, 508 { "KEYB_LPAREN",W(pad1.k[ 1]), { ~( 16 << 8), ~0U }, { 0, (16 << 8)} }, 509 { "KEYB_RPAREN",W(pad1.k[ 0]), { ~( 32 << 8), ~0U }, { 0, (32 << 8)} }, 510 { "KEYB_CARET", W(pad1.k[ 5]), { ~( 4 << 8), ~0U }, { 0, ( 4 << 8)} }, 511 { "KEYB_QUEST", W(pad1.k[ 5]), { ~( 2 << 8), ~0U }, { 0, ( 2 << 8)} }, 512 { "KEYB_PCT", W(pad1.k[ 0]), { ~( 1 << 8), ~0U }, { 0, ( 1 << 8)} }, 513 { "KEYB_SQUOTE",W(pad1.k[ 5]), { ~( 32 << 8), ~0U }, { 0, (32 << 8)} }, 514 { "KEYB_COLON", W(pad1.k[ 0]), { ~( 4 << 8), ~0U }, { 0, ( 4 << 8)} }, 515 { "KEYB_GREATER",W(pad1.k[0]), { ~( 2 << 8), ~0U }, { 0, ( 2 << 8)} }, 516 { "KEYB_LESS", W(pad1.k[ 1]), { ~( 1 << 8), ~0U }, { 0, ( 1 << 8)} }, 517 518 /* -------------------------------------------------------------------- */ 519 /* Synthesizer keyboard bindings. */ 520 /* -------------------------------------------------------------------- */ 521 { "SYNTH_00", W(pad1.k[ 0]), { ~( 1 << 16), ~0U }, { 0, ( 1 << 16)} }, 522 { "SYNTH_01", W(pad1.k[ 0]), { ~( 2 << 16), ~0U }, { 0, ( 2 << 16)} }, 523 { "SYNTH_02", W(pad1.k[ 0]), { ~( 4 << 16), ~0U }, { 0, ( 4 << 16)} }, 524 { "SYNTH_03", W(pad1.k[ 0]), { ~( 8 << 16), ~0U }, { 0, ( 8 << 16)} }, 525 { "SYNTH_04", W(pad1.k[ 0]), { ~( 16 << 16), ~0U }, { 0, ( 16 << 16)} }, 526 { "SYNTH_05", W(pad1.k[ 0]), { ~( 32 << 16), ~0U }, { 0, ( 32 << 16)} }, 527 { "SYNTH_06", W(pad1.k[ 0]), { ~( 64 << 16), ~0U }, { 0, ( 64 << 16)} }, 528 { "SYNTH_07", W(pad1.k[ 0]), { ~(128 << 16), ~0U }, { 0, (128 << 16)} }, 529 { "SYNTH_08", W(pad1.k[ 1]), { ~( 1 << 16), ~0U }, { 0, ( 1 << 16)} }, 530 { "SYNTH_09", W(pad1.k[ 1]), { ~( 2 << 16), ~0U }, { 0, ( 2 << 16)} }, 531 { "SYNTH_10", W(pad1.k[ 1]), { ~( 4 << 16), ~0U }, { 0, ( 4 << 16)} }, 532 { "SYNTH_11", W(pad1.k[ 1]), { ~( 8 << 16), ~0U }, { 0, ( 8 << 16)} }, 533 { "SYNTH_12", W(pad1.k[ 1]), { ~( 16 << 16), ~0U }, { 0, ( 16 << 16)} }, 534 { "SYNTH_13", W(pad1.k[ 1]), { ~( 32 << 16), ~0U }, { 0, ( 32 << 16)} }, 535 { "SYNTH_14", W(pad1.k[ 1]), { ~( 64 << 16), ~0U }, { 0, ( 64 << 16)} }, 536 { "SYNTH_15", W(pad1.k[ 1]), { ~(128 << 16), ~0U }, { 0, (128 << 16)} }, 537 { "SYNTH_16", W(pad1.k[ 2]), { ~( 1 << 16), ~0U }, { 0, ( 1 << 16)} }, 538 { "SYNTH_17", W(pad1.k[ 2]), { ~( 2 << 16), ~0U }, { 0, ( 2 << 16)} }, 539 { "SYNTH_18", W(pad1.k[ 2]), { ~( 4 << 16), ~0U }, { 0, ( 4 << 16)} }, 540 { "SYNTH_19", W(pad1.k[ 2]), { ~( 8 << 16), ~0U }, { 0, ( 8 << 16)} }, 541 { "SYNTH_20", W(pad1.k[ 2]), { ~( 16 << 16), ~0U }, { 0, ( 16 << 16)} }, 542 { "SYNTH_21", W(pad1.k[ 2]), { ~( 32 << 16), ~0U }, { 0, ( 32 << 16)} }, 543 { "SYNTH_22", W(pad1.k[ 2]), { ~( 64 << 16), ~0U }, { 0, ( 64 << 16)} }, 544 { "SYNTH_23", W(pad1.k[ 2]), { ~(128 << 16), ~0U }, { 0, (128 << 16)} }, 545 { "SYNTH_24", W(pad1.k[ 3]), { ~( 1 << 16), ~0U }, { 0, ( 1 << 16)} }, 546 { "SYNTH_25", W(pad1.k[ 3]), { ~( 2 << 16), ~0U }, { 0, ( 2 << 16)} }, 547 { "SYNTH_26", W(pad1.k[ 3]), { ~( 4 << 16), ~0U }, { 0, ( 4 << 16)} }, 548 { "SYNTH_27", W(pad1.k[ 3]), { ~( 8 << 16), ~0U }, { 0, ( 8 << 16)} }, 549 { "SYNTH_28", W(pad1.k[ 3]), { ~( 16 << 16), ~0U }, { 0, ( 16 << 16)} }, 550 { "SYNTH_29", W(pad1.k[ 3]), { ~( 32 << 16), ~0U }, { 0, ( 32 << 16)} }, 551 { "SYNTH_30", W(pad1.k[ 3]), { ~( 64 << 16), ~0U }, { 0, ( 64 << 16)} }, 552 { "SYNTH_31", W(pad1.k[ 3]), { ~(128 << 16), ~0U }, { 0, (128 << 16)} }, 553 { "SYNTH_32", W(pad1.k[ 4]), { ~( 1 << 16), ~0U }, { 0, ( 1 << 16)} }, 554 { "SYNTH_33", W(pad1.k[ 4]), { ~( 2 << 16), ~0U }, { 0, ( 2 << 16)} }, 555 { "SYNTH_34", W(pad1.k[ 4]), { ~( 4 << 16), ~0U }, { 0, ( 4 << 16)} }, 556 { "SYNTH_35", W(pad1.k[ 4]), { ~( 8 << 16), ~0U }, { 0, ( 8 << 16)} }, 557 { "SYNTH_36", W(pad1.k[ 4]), { ~( 16 << 16), ~0U }, { 0, ( 16 << 16)} }, 558 { "SYNTH_37", W(pad1.k[ 4]), { ~( 32 << 16), ~0U }, { 0, ( 32 << 16)} }, 559 { "SYNTH_38", W(pad1.k[ 4]), { ~( 64 << 16), ~0U }, { 0, ( 64 << 16)} }, 560 { "SYNTH_39", W(pad1.k[ 4]), { ~(128 << 16), ~0U }, { 0, (128 << 16)} }, 561 { "SYNTH_40", W(pad1.k[ 5]), { ~( 1 << 16), ~0U }, { 0, ( 1 << 16)} }, 562 { "SYNTH_41", W(pad1.k[ 5]), { ~( 2 << 16), ~0U }, { 0, ( 2 << 16)} }, 563 { "SYNTH_42", W(pad1.k[ 5]), { ~( 4 << 16), ~0U }, { 0, ( 4 << 16)} }, 564 { "SYNTH_43", W(pad1.k[ 5]), { ~( 8 << 16), ~0U }, { 0, ( 8 << 16)} }, 565 { "SYNTH_44", W(pad1.k[ 5]), { ~( 16 << 16), ~0U }, { 0, ( 16 << 16)} }, 566 { "SYNTH_45", W(pad1.k[ 5]), { ~( 32 << 16), ~0U }, { 0, ( 32 << 16)} }, 567 { "SYNTH_46", W(pad1.k[ 5]), { ~( 64 << 16), ~0U }, { 0, ( 64 << 16)} }, 568 { "SYNTH_47", W(pad1.k[ 5]), { ~(128 << 16), ~0U }, { 0, (128 << 16)} }, 569 { "SYNTH_48", W(pad1.k[ 6]), { ~( 1 << 16), ~0U }, { 0, ( 1 << 16)} }, 570 571 /* Press 1+9 on controller 0 on the master component */ 572 { "IPAUSE0", W(pad0.l[1] ), { 0, ~0U }, { 0, 0xA5 } }, 573 574 /* Press 1+9 on controller 1 on the master component */ 575 { "IPAUSE1", W(pad0.r[1] ), { 0, ~0U }, { 0, 0xA5 } }, 576 577 }; 578 579 int cfg_event_action_cnt = (int)(sizeof(cfg_event_action)/sizeof(cfg_evtact_t)); 580 581 /* ------------------------------------------------------------------------ */ 582 /* Default key bindings table. */ 583 /* */ 584 /* I really need to make sure there are rows in here for all possible */ 585 /* key inputs, so that when I process a config file, I can just update */ 586 /* this table directly. Otherwise, I need to duplicate this table in */ 587 /* order to change it. */ 588 /* */ 589 /* Column 1 is the default "primarily 1 player" setup. */ 590 /* Column 2 is the alternate "primarily 2 player" setup. */ 591 /* Column 3 is the ECS Keyboard setup. */ 592 /* Column 4 is the Meta/Win/Cmd-key modified setup. */ 593 /* ------------------------------------------------------------------------ */ 594 595 cfg_kbd_t cfg_key_bind[] = 596 { 597 /* ------------------------------------------------------------------------ */ 598 /* Miscellaneous. */ 599 /* ------------------------------------------------------------------------ */ 600 { "QUIT", { "QUIT", "QUIT", "QUIT", "QUIT" }}, 601 { "F1", { "QUIT", "QUIT", "QUIT", "QUIT" }}, 602 { "ESCAPE", { "NA", "NA", "KEYB_ESC", "NA" }}, 603 #ifdef PLAT_MACOS 604 { "F3", { "WTOG", "WTOG", "WTOG", "WTOG" }}, 605 { "LCMD", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 606 { "RCMD", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 607 { "LGUI", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 608 { "RGUI", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 609 #else 610 { "F9", { "WTOG", "WTOG", "WTOG", "WTOG" }}, 611 #endif 612 #ifdef WIN32 613 { "LWIN", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 614 { "RWIN", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 615 { "LGUI", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 616 { "RGUI", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 617 #endif 618 { "F10", { "MOVIE", "MOVIE", "MOVIE", "MOVIE" }}, 619 { "F11", { "SHOT", "SHOT", "SHOT", "SHOT" }}, 620 { "F12", { "RESET", "RESET", "RESET", "RESET" }}, 621 { "HIDE", { "HIDE", "HIDE", "HIDE", "HIDE" }}, 622 //{ "F2", { "HIDE", "HIDE", "HIDE", "HIDE" }}, 623 //{ "F2", { "DUMP", "DUMP", "DUMP", "DUMP" }}, 624 //{ "F3", { "LOAD", "LOAD", "LOAD", "LOAD" }}, 625 { "F4", { "BREAK", "BREAK", "BREAK", "BREAK" }}, 626 { "F5", { "KBD0", "KBD0", "KBD0", "KBD0" }}, 627 { "F6", { "KBD1", "KBD1", "KBD1", "KBD1" }}, 628 { "F7", { "KBD2", "KBD2", "KBD2", "KBD2" }}, 629 /*{ "F8", { "KBD3", "KBD3", "KBD3", "KBD3" }},*/ 630 { "PAUSE", { "PAUSE", "PAUSE", "PAUSE", "PAUSE" }}, 631 { "PAGEUP", { "VOLUP", "VOLUP", "VOLUP", "VOLUP" }}, 632 { "PAGEDOWN",{ "VOLDN", "VOLDN", "VOLDN", "VOLDN" }}, 633 { "F8", { "PSH3", "PSH3", "PSH3", "POP_UP" }}, 634 635 { "FOCUS_LOST", /* Force windowed mode if we lose focus. */ 636 { "WINDOW", "WINDOW", "WINDOW", "WINDOW" }}, 637 638 /* ------------------------------------------------------------------------ */ 639 /* The numeric keypad. */ 640 /* ------------------------------------------------------------------------ */ 641 { "KP_7", { "PD0L_KP1", "PD0L_KP1", "KEYB_1", "NA" }}, 642 { "KP_8", { "PD0L_KP2", "PD0L_KP2", "KEYB_2", "NA" }}, 643 { "KP_9", { "PD0L_KP3", "PD0L_KP3", "KEYB_3", "NA" }}, 644 { "KP_4", { "PD0L_KP4", "PD0L_KP4", "KEYB_4", "NA" }}, 645 { "KP_5", { "PD0L_KP5", "PD0L_KP5", "KEYB_5", "NA" }}, 646 { "KP_6", { "PD0L_KP6", "PD0L_KP6", "KEYB_6", "NA" }}, 647 { "KP_1", { "PD0L_KP7", "PD0L_KP7", "KEYB_7", "NA" }}, 648 { "KP_2", { "PD0L_KP8", "PD0L_KP8", "KEYB_8", "NA" }}, 649 { "KP_3", { "PD0L_KP9", "PD0L_KP9", "KEYB_9", "NA" }}, 650 { "KP_0", { "PD0L_KPC", "PD0L_KPC", "KEYB_0", "NA" }}, 651 { "KP_PERIOD",{ "PD0L_KP0", "PD0L_KP0", "KEYB_PERIOD", "NA" }}, 652 { "KP_ENTER", { "PD0L_KPE", "PD0L_KPE", "KEYB_ENTER", "NA" }}, 653 654 /* ------------------------------------------------------------------------ */ 655 /* The number keys. */ 656 /* ------------------------------------------------------------------------ */ 657 { "1", { "PD0R_KP1", "PD0L_KP1", "KEYB_1", "NA" }}, 658 { "2", { "PD0R_KP2", "PD0L_KP2", "KEYB_2", "NA" }}, 659 { "3", { "PD0R_KP3", "PD0L_KP3", "KEYB_3", "NA" }}, 660 { "4", { "PD0R_KP4", "PD0L_KP4", "KEYB_4", "NA" }}, 661 { "5", { "PD0R_KP5", "PD0L_KP5", "KEYB_5", "NA" }}, 662 { "6", { "PD0R_KP6", "PD0L_KP6", "KEYB_6", "NA" }}, 663 { "7", { "PD0R_KP7", "PD0L_KP7", "KEYB_7", "NA" }}, 664 { "8", { "PD0R_KP8", "PD0L_KP8", "KEYB_8", "NA" }}, 665 { "9", { "PD0R_KP9", "PD0L_KP9", "KEYB_9", "NA" }}, 666 { "-", { "PD0R_KPC", "PD0L_KPC", "KEYB_MINUS", "NA" }}, 667 { "0", { "PD0R_KP0", "PD0L_KP0", "KEYB_0", "NA" }}, 668 { "=", { "PD0R_KPE", "PD0L_KPE", "KEYB_EQUAL", "NA" }}, 669 670 /* ------------------------------------------------------------------------ */ 671 /* Action buttons. */ 672 /* ------------------------------------------------------------------------ */ 673 { "RSHIFT", { "PD0L_A_T", "PD0L_A_T", "KEYB_SHIFT", "NA" }}, 674 { "RALT", { "PD0L_A_L", "PD0L_A_L", "NA", "NA" }}, 675 { "RCTRL", { "PD0L_A_R", "PD0L_A_R", "KEYB_CTRL", "NA" }}, 676 677 { "LSHIFT", { "PD0R_A_T", "PD0L_A_T", "KEYB_SHIFT", "NA" }}, 678 { "LALT", { "PD0R_A_L", "PD0L_A_L", "NA", "NA" }}, 679 { "LCTRL", { "PD0R_A_R", "PD0L_A_R", "KEYB_CTRL", "NA" }}, 680 681 /* ------------------------------------------------------------------------ */ 682 /* Movement keys. */ 683 /* ------------------------------------------------------------------------ */ 684 { "RIGHT", { "PD0L_D_E", "PD0L_D_E", "KEYB_RIGHT", "NA" }}, 685 { "UP", { "PD0L_D_N", "PD0L_D_N", "KEYB_UP", "NA" }}, 686 { "LEFT", { "PD0L_D_W", "PD0L_D_W", "KEYB_LEFT", "NA" }}, 687 { "DOWN", { "PD0L_D_S", "PD0L_D_S", "KEYB_DOWN", "NA" }}, 688 689 { "K", { "PD0L_D_E", "PD0L_D_E", "KEYB_K", "NA" }}, 690 { "O", { "PD0L_D_NE", "PD0L_D_NE", "KEYB_O", "NA" }}, 691 { "I", { "PD0L_D_N", "PD0L_D_N", "KEYB_I", "NA" }}, 692 { "U", { "PD0L_D_NW", "PD0L_D_NW", "KEYB_U", "NA" }}, 693 { "J", { "PD0L_D_W", "PD0L_D_W", "KEYB_J", "NA" }}, 694 { "N", { "PD0L_D_SW", "PD0L_D_SW", "KEYB_N", "NA" }}, 695 { "M", { "PD0L_D_S", "PD0L_D_S", "KEYB_M", "MOVIE" }}, 696 { ",", { "PD0L_D_SE", "PD0L_D_SE", "KEYB_COMMA", "NA" }}, 697 698 { "D", { "PD0R_D_E", "PD0L_D_E", "KEYB_D", "NA" }}, 699 { "R", { "PD0R_D_NE", "PD0L_D_NE", "KEYB_R", "RESET" }}, 700 { "E", { "PD0R_D_N", "PD0L_D_N", "KEYB_E", "NA" }}, 701 { "W", { "PD0R_D_NW", "PD0L_D_NW", "KEYB_W", "WTOG" }}, 702 { "S", { "PD0R_D_W", "PD0L_D_W", "KEYB_S", "SHOT" }}, 703 { "Z", { "PD0R_D_SW", "PD0L_D_SW", "KEYB_Z", "RELOAD" }}, 704 { "X", { "PD0R_D_S", "PD0L_D_S", "KEYB_X", "NA" }}, 705 { "C", { "PD0R_D_SE", "PD0L_D_SE", "KEYB_C", "BREAK" }}, 706 707 /* 708 00FFh| 00FEh bits 709 bits | 0 1 2 3 4 5 6 7 710 -----+------------------------------------------------ 711 0 | left, comma, n, v, x, space, [n/a], [n/a] 712 1 | period, m, b, c, z, down, [n/a], [n/a] 713 2 | scolon, k, h, f, s, up, [n/a], [n/a] 714 3 | p, i, y, r, w, q, [n/a], [n/a] 715 4 | esc, 9, 7, 5, 3, 1, [n/a], [n/a] 716 5 | 0, 8, 6, 4, 2, right, [n/a], [n/a] 717 6 | enter, o, u, t, e, ctl, [n/a], [n/a] 718 7 | [n/a], l, j, g, d, a, shift, [n/a] 719 */ 720 721 /* ------------------------------------------------------------------------ */ 722 /* ECS Keyboard remaining keys. */ 723 /* ------------------------------------------------------------------------ */ 724 { "Q", { "NA", "NA", "KEYB_Q", "QUIT" }}, 725 { "T", { "NA", "NA", "KEYB_T", "NA" }}, 726 { "Y", { "NA", "NA", "KEYB_Y", "NA" }}, 727 { "P", { "NA", "NA", "KEYB_P", "PAUSE" }}, 728 729 { "A", { "NA", "NA", "KEYB_A", "AVI" }}, 730 { "F", { "NA", "NA", "KEYB_F", "WTOG" }}, 731 { "G", { "NA", "NA", "KEYB_G", "GRAMSHOT" }}, 732 { "H", { "NA", "NA", "KEYB_H", "NA" }}, 733 { "L", { "NA", "NA", "KEYB_L", "NA" }}, 734 735 { "V", { "NA", "NA", "KEYB_V", "AVI" }}, 736 #ifdef N900 737 { "B", { "QUIT", "QUIT", "QUIT", "QUIT" }}, 738 #else 739 { "B", { "NA", "NA", "KEYB_B", "NA" }}, 740 #endif 741 { ".", { "NA", "NA", "KEYB_PERIOD", "NA" }}, 742 { ";", { "NA", "NA", "KEYB_SEMI", "NA" }}, 743 744 { "SPACE", { "NA", "NA", "KEYB_SPACE", "NA" }}, 745 { "RETURN", { "NA", "NA", "KEYB_ENTER", "NA" }}, 746 {"BACKSPACE",{ "NA", "NA", "KEYB_LEFT", "NA" }}, 747 748 { "QUOTEDBL",{ "NA", "NA", "KEYB_QUOTE", "NA" }}, 749 { "QUOTE", { "NA", "NA", "KEYB_QUOTE", "NA" }}, 750 { "CARET", { "NA", "NA", "KEYB_CARET", "NA" }}, 751 { "HASH", { "NA", "NA", "KEYB_HASH", "NA" }}, 752 { "PLUS", { "NA", "NA", "KEYB_PLUS", "NA" }}, 753 { "SLASH", { "NA", "NA", "KEYB_SLASH", "NA" }}, 754 { "DOLLAR", { "NA", "NA", "KEYB_DOLLAR", "NA" }}, 755 { "ASTERISK",{ "NA", "NA", "KEYB_STAR", "NA" }}, 756 { "LEFTPAREN",{ "NA", "NA", "KEYB_LPAREN", "NA" }}, 757 { "RIGHTPAREN",{"NA", "NA", "KEYB_RPAREN", "NA" }}, 758 { "QUESTION",{ "NA", "NA", "KEYB_QUEST", "NA" }}, 759 { "COLON", { "NA", "NA", "KEYB_COLON", "NA" }}, 760 { "GREATER",{ "NA", "NA", "KEYB_GREATER", "NA" }}, 761 { "LESS", { "NA", "NA", "KEYB_LESS", "NA" }}, 762 763 /* ------------------------------------------------------------------------ */ 764 /* Default Joystick 0 mapping. */ 765 /* ------------------------------------------------------------------------ */ 766 { "JS0_E", { "PD0L_J_E", "PD0L_J_E", "PD0L_J_E", "PD0L_J_E" }}, 767 { "JS0_ENE", { "PD0L_J_ENE", "PD0L_J_ENE", "PD0L_J_ENE", "PD0L_J_ENE"}}, 768 { "JS0_NE", { "PD0L_J_NE", "PD0L_J_NE", "PD0L_J_NE", "PD0L_J_NE" }}, 769 { "JS0_NNE", { "PD0L_J_NNE", "PD0L_J_NNE", "PD0L_J_NNE", "PD0L_J_NNE"}}, 770 { "JS0_N", { "PD0L_J_N", "PD0L_J_N", "PD0L_J_N", "PD0L_J_N" }}, 771 { "JS0_NNW", { "PD0L_J_NNW", "PD0L_J_NNW", "PD0L_J_NNW", "PD0L_J_NNW"}}, 772 { "JS0_NW", { "PD0L_J_NW", "PD0L_J_NW", "PD0L_J_NW", "PD0L_J_NW" }}, 773 { "JS0_WNW", { "PD0L_J_WNW", "PD0L_J_WNW", "PD0L_J_WNW", "PD0L_J_WNW"}}, 774 { "JS0_W", { "PD0L_J_W", "PD0L_J_W", "PD0L_J_W", "PD0L_J_W" }}, 775 { "JS0_WSW", { "PD0L_J_WSW", "PD0L_J_WSW", "PD0L_J_WSW", "PD0L_J_WSW"}}, 776 { "JS0_SW", { "PD0L_J_SW", "PD0L_J_SW", "PD0L_J_SW", "PD0L_J_SW" }}, 777 { "JS0_SSW", { "PD0L_J_SSW", "PD0L_J_SSW", "PD0L_J_SSW", "PD0L_J_SSW"}}, 778 { "JS0_S", { "PD0L_J_S", "PD0L_J_S", "PD0L_J_S", "PD0L_J_S" }}, 779 { "JS0_SSE", { "PD0L_J_SSE", "PD0L_J_SSE", "PD0L_J_SSE", "PD0L_J_SSE"}}, 780 { "JS0_SE", { "PD0L_J_SE", "PD0L_J_SE", "PD0L_J_SE", "PD0L_J_SE" }}, 781 { "JS0_ESE", { "PD0L_J_ESE", "PD0L_J_ESE", "PD0L_J_ESE", "PD0L_J_ESE"}}, 782 783 #ifndef GP2X 784 {"JS0_BTN_00",{ "PD0L_A_T", "PD0L_A_T", "PD0L_A_T", "PD0L_A_T" }}, 785 {"JS0_BTN_01",{ "PD0L_A_L", "PD0L_A_L", "PD0L_A_L", "PD0L_A_L" }}, 786 {"JS0_BTN_02",{ "PD0L_A_R", "PD0L_A_R", "PD0L_A_R", "PD0L_A_R" }}, 787 {"JS0_BTN_03",{ "PD0L_A_T", "PD0L_A_T", "PD0L_A_T", "PD0L_A_T" }}, 788 {"JS0_BTN_04",{ "PD0L_A_L", "PD0L_A_L", "PD0L_A_L", "PD0L_A_L" }}, 789 {"JS0_BTN_05",{ "PD0L_A_R", "PD0L_A_R", "PD0L_A_R", "PD0L_A_R" }}, 790 {"JS0_BTN_06",{ "PD0L_A_T", "PD0L_A_T", "PD0L_A_T", "PD0L_A_T" }}, 791 {"JS0_BTN_07",{ "PD0L_A_L", "PD0L_A_L", "PD0L_A_L", "PD0L_A_L" }}, 792 {"JS0_BTN_08",{ "PD0L_A_R", "PD0L_A_R", "PD0L_A_R", "PD0L_A_R" }}, 793 794 #else /* GP2X specific mappings. */ 795 796 /* Directional controller */ 797 {"JS0_BTN_00",{ "PD0L_D_N" , "PD0L_D_N" , "PD0L_D_N" , "PD0L_D_N" }}, 798 {"JS0_BTN_01",{ "PD0L_D_NW", "PD0L_D_NW", "PD0L_D_NW", "PD0L_D_NW" }}, 799 {"JS0_BTN_02",{ "PD0L_D_W" , "PD0L_D_W" , "PD0L_D_W" , "PD0L_D_W" }}, 800 {"JS0_BTN_03",{ "PD0L_D_SW", "PD0L_D_SW", "PD0L_D_SW", "PD0L_D_SW" }}, 801 {"JS0_BTN_04",{ "PD0L_D_S" , "PD0L_D_S" , "PD0L_D_S" , "PD0L_D_S" }}, 802 {"JS0_BTN_05",{ "PD0L_D_SE", "PD0L_D_SE", "PD0L_D_SE", "PD0L_D_SE" }}, 803 {"JS0_BTN_06",{ "PD0L_D_E" , "PD0L_D_E" , "PD0L_D_E" , "PD0L_D_E" }}, 804 {"JS0_BTN_07",{ "PD0L_D_NE", "PD0L_D_NE", "PD0L_D_NE", "PD0L_D_NE" }}, 805 806 /* Others: Action, Volume, Quit, etc. */ 807 /* GP2X button mapping: 808 JS0_BTN_08 # start button 809 JS0_BTN_09 # select button 810 JS0_BTN_10 # button L 811 JS0_BTN_11 # button R 812 JS0_BTN_12 # button A 813 JS0_BTN_13 # button B 814 JS0_BTN_14 # button Y 815 JS0_BTN_15 # button X 816 JS0_BTN_16 # volume up 817 JS0_BTN_17 # volume down 818 JS0_BTN_18 # stick press, used for shifting to map 1 819 */ 820 821 {"JS0_BTN_08",{ "PD0R_KPE", "QUIT" , "PD0R_KPE", "QUIT" }}, 822 {"JS0_BTN_09",{ "PD0R_KPC", "RESET" , "PD0R_KPC", "RESET" }}, 823 {"JS0_BTN_10",{ "PD0L_D_W", "PD0R_KP1", "PD0L_D_W", "PD0R_KP1" }}, 824 {"JS0_BTN_11",{ "PD0L_D_E", "PD0R_KP2", "PD0L_D_E", "PD0R_KP2" }}, 825 {"JS0_BTN_12",{ "PD0L_A_T", "PD0R_KP4", "PD0L_A_T", "PD0R_KP4" }}, 826 {"JS0_BTN_13",{ "PD0L_A_R", "PD0R_KP5", "PD0L_A_R", "PD0R_KP5" }}, 827 {"JS0_BTN_14",{ "PD0L_A_T", "PD0R_KP3", "PD0L_A_T", "PD0R_KP3" }}, 828 {"JS0_BTN_15",{ "PD0L_A_L", "PD0R_KP6", "PD0L_A_L", "PD0R_KP6" }}, 829 {"JS0_BTN_16",{ "VOLUP" , "PD0R_KP8", "VOLUP" , "PD0R_KP8" }}, 830 {"JS0_BTN_17",{ "VOLDN" , "PD0R_KP7", "VOLDN" , "PD0R_KP7" }}, 831 {"JS0_BTN_18",{ "SHF10" , "SHF10" , "SHF10" , "SHF10" }}, 832 #endif 833 834 #ifndef WII 835 {"JS0_HAT0_E", {"PD0R_KP6", "PD0R_KP6", "PD0R_KP6", "PD0R_KP6" }}, 836 {"JS0_HAT0_NE",{"PD0R_KP3", "PD0R_KP3", "PD0R_KP3", "PD0R_KP3" }}, 837 {"JS0_HAT0_N", {"PD0R_KP2", "PD0R_KP2", "PD0R_KP2", "PD0R_KP2" }}, 838 {"JS0_HAT0_NW",{"PD0R_KP1", "PD0R_KP1", "PD0R_KP1", "PD0R_KP1" }}, 839 {"JS0_HAT0_W", {"PD0R_KP4", "PD0R_KP4", "PD0R_KP4", "PD0R_KP4" }}, 840 {"JS0_HAT0_SW",{"PD0R_KP7", "PD0R_KP7", "PD0R_KP7", "PD0R_KP7" }}, 841 {"JS0_HAT0_S", {"PD0R_KP8", "PD0R_KP8", "PD0R_KP8", "PD0R_KP8" }}, 842 {"JS0_HAT0_SE",{"PD0R_KP9", "PD0R_KP9", "PD0R_KP9", "PD0R_KP9" }}, 843 #else /* WII Specific Bindings */ 844 845 {"JS0_BTN_09", {"PD0L_KPE", "QUIT" , "PD0R_KPE", "QUIT" }}, 846 {"JS0_BTN_10", {"PD0L_KPC", "RESET" , "PD0R_KPC", "RESET" }}, 847 {"JS0_BTN_11", {"PD0L_KP5", "PD0R_KP1", "PD0L_D_W", "PD0R_KP1" }}, 848 {"JS0_BTN_12", {"PD0L_KP0", "PD0R_KP2", "PD0L_D_E", "PD0R_KP2" }}, 849 {"JS0_HAT0_E", {"PD0L_KP6", "PD0R_KP6", "PD0R_KP6", "PD0R_KP6" }}, 850 {"JS0_HAT0_NE",{"PD0L_KP3", "PD0R_KP3", "PD0R_KP3", "PD0R_KP3" }}, 851 {"JS0_HAT0_N", {"PD0L_KP2", "PD0R_KP2", "PD0R_KP2", "PD0R_KP2" }}, 852 {"JS0_HAT0_NW",{"PD0L_KP1", "PD0R_KP1", "PD0R_KP1", "PD0R_KP1" }}, 853 {"JS0_HAT0_W", {"PD0L_KP4", "PD0R_KP4", "PD0R_KP4", "PD0R_KP4" }}, 854 {"JS0_HAT0_SW",{"PD0L_KP7", "PD0R_KP7", "PD0R_KP7", "PD0R_KP7" }}, 855 {"JS0_HAT0_S", {"PD0L_KP8", "PD0R_KP8", "PD0R_KP8", "PD0R_KP8" }}, 856 {"JS0_HAT0_SE",{"PD0L_KP9", "PD0R_KP9", "PD0R_KP9", "PD0R_KP9" }}, 857 {"JS1_BTN_00", {"PD0R_A_T", "PD0L_A_T", "PD0L_A_T", "PD0L_A_T" }}, 858 {"JS1_BTN_01", {"PD0R_A_L", "PD0L_A_L", "PD0L_A_L", "PD0L_A_L" }}, 859 {"JS1_BTN_02", {"PD0R_A_R", "PD0L_A_R", "PD0L_A_R", "PD0L_A_R" }}, 860 {"JS1_BTN_09", {"PD0R_KPE", "QUIT" , "PD0R_KPE", "QUIT" }}, 861 {"JS1_BTN_10", {"PD0R_KPC", "RESET" , "PD0R_KPC", "RESET" }}, 862 {"JS1_BTN_11", {"PD0R_KP5", "PD0R_KP1", "PD0L_D_W", "PD0R_KP1" }}, 863 {"JS1_BTN_12", {"PD0R_KP0", "PD0R_KP2", "PD0L_D_E", "PD0R_KP2" }}, 864 {"JS1_E", {"PD0R_J_E", "PD0L_J_E", "PD0L_J_E", "PD0L_J_E" }}, 865 {"JS1_ENE", {"PD0R_J_ENE", "PD0L_J_ENE", "PD0L_J_ENE", "PD0L_J_ENE"}}, 866 {"JS1_NE", {"PD0R_J_NE", "PD0L_J_NE", "PD0L_J_NE", "PD0L_J_NE" }}, 867 {"JS1_NNE", {"PD0R_J_NNE", "PD0L_J_NNE", "PD0L_J_NNE", "PD0L_J_NNE"}}, 868 {"JS1_N", {"PD0R_J_N", "PD0L_J_N", "PD0L_J_N", "PD0L_J_N" }}, 869 {"JS1_NNW", {"PD0R_J_NNW", "PD0L_J_NNW", "PD0L_J_NNW", "PD0L_J_NNW"}}, 870 {"JS1_NW", {"PD0R_J_NW", "PD0L_J_NW", "PD0L_J_NW", "PD0L_J_NW" }}, 871 {"JS1_WNW", {"PD0R_J_WNW", "PD0L_J_WNW", "PD0L_J_WNW", "PD0L_J_WNW"}}, 872 {"JS1_W", {"PD0R_J_W", "PD0L_J_W", "PD0L_J_W", "PD0L_J_W" }}, 873 {"JS1_WSW", {"PD0R_J_WSW", "PD0L_J_WSW", "PD0L_J_WSW", "PD0L_J_WSW"}}, 874 {"JS1_SW", {"PD0R_J_SW", "PD0L_J_SW", "PD0L_J_SW", "PD0L_J_SW" }}, 875 {"JS1_SSW", {"PD0R_J_SSW", "PD0L_J_SSW", "PD0L_J_SSW", "PD0L_J_SSW"}}, 876 {"JS1_S", {"PD0R_J_S", "PD0L_J_S", "PD0L_J_S", "PD0L_J_S" }}, 877 {"JS1_SSE", {"PD0R_J_SSE", "PD0L_J_SSE", "PD0L_J_SSE", "PD0L_J_SSE"}}, 878 {"JS1_SE", {"PD0R_J_SE", "PD0L_J_SE", "PD0L_J_SE", "PD0L_J_SE" }}, 879 {"JS1_ESE", {"PD0R_J_ESE", "PD0L_J_ESE", "PD0L_J_ESE", "PD0L_J_ESE"}}, 880 {"JS1_HAT0_E", {"PD0R_KP6", "PD0R_KP6", "PD0R_KP6", "PD0R_KP6" }}, 881 {"JS1_HAT0_NE",{"PD0R_KP3", "PD0R_KP3", "PD0R_KP3", "PD0R_KP3" }}, 882 {"JS1_HAT0_N", {"PD0R_KP2", "PD0R_KP2", "PD0R_KP2", "PD0R_KP2" }}, 883 {"JS1_HAT0_NW",{"PD0R_KP1", "PD0R_KP1", "PD0R_KP1", "PD0R_KP1" }}, 884 {"JS1_HAT0_W", {"PD0R_KP4", "PD0R_KP4", "PD0R_KP4", "PD0R_KP4" }}, 885 {"JS1_HAT0_SW",{"PD0R_KP7", "PD0R_KP7", "PD0R_KP7", "PD0R_KP7" }}, 886 {"JS1_HAT0_S", {"PD0R_KP8", "PD0R_KP8", "PD0R_KP8", "PD0R_KP8" }}, 887 {"JS1_HAT0_SE",{"PD0R_KP9", "PD0R_KP9", "PD0R_KP9", "PD0R_KP9" }}, 888 889 /* Press 1+9 on controller 0 on the master component */ 890 { "JS0_BTN_13",{"IPAUSE0", "IPAUSE0", "IPAUSE0", "IPAUSE0" }}, 891 /* Press 1+9 on controller 1 on the master component */ 892 { "JS1_BTN_13",{"IPAUSE1", "IPAUSE1", "IPAUSE1", "IPAUSE1" }}, 893 #endif 894 #ifdef N900 895 { "Q", { "PD0R_KP1", "PD0L_KP1", "KEYB_1", "NA" }}, 896 { "W", { "PD0R_KP2", "PD0L_KP2", "KEYB_2", "NA" }}, 897 { "E", { "PD0R_KP3", "PD0L_KP3", "KEYB_3", "NA" }}, 898 { "R", { "PD0R_KP4", "PD0L_KP4", "KEYB_4", "NA" }}, 899 { "T", { "PD0R_KP5", "PD0L_KP5", "KEYB_5", "NA" }}, 900 { "Y", { "PD0R_KP6", "PD0L_KP6", "KEYB_6", "NA" }}, 901 { "U", { "PD0R_KP7", "PD0L_KP7", "KEYB_7", "NA" }}, 902 { "I", { "PD0R_KP8", "PD0L_KP8", "KEYB_8", "NA" }}, 903 { "O", { "PD0R_KP9", "PD0L_KP9", "KEYB_9", "NA" }}, 904 { "COMMA", { "PD0R_KPC", "PD0L_KPC", "KEYB_MINUS", "NA" }}, 905 { "P", { "PD0R_KP0", "PD0L_KP0", "KEYB_0", "NA" }}, 906 { "F", { "BREAK", "BREAK", "BREAK", "BREAK" }}, 907 { "G", { "KBD0", "KBD0", "KBD0", "KBD0" }}, 908 { "H", { "KBD1", "KBD1", "KBD1", "KBD1" }}, 909 { "J", { "RESET", "RESET", "RESET", "RESET" }}, 910 #endif 911 { NULL, { NULL, NULL, NULL, NULL }}, 912 }; 913 914 /* ======================================================================== */ 915 /* This program is free software; you can redistribute it and/or modify */ 916 /* it under the terms of the GNU General Public License as published by */ 917 /* the Free Software Foundation; either version 2 of the License, or */ 918 /* (at your option) any later version. */ 919 /* */ 920 /* This program is distributed in the hope that it will be useful, */ 921 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ 922 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */ 923 /* General Public License for more details. */ 924 /* */ 925 /* You should have received a copy of the GNU General Public License along */ 926 /* with this program; if not, write to the Free Software Foundation, Inc., */ 927 /* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ 928 /* ======================================================================== */ 929 /* Copyright (c) 1998-2020, Joseph Zbiciak */ 930 /* ======================================================================== */ 931