1 /* 2 * OpenBOR - http://www.LavaLit.com 3 * ----------------------------------------------------------------------- 4 * All rights reserved, see LICENSE in OpenBOR root for details. 5 * 6 * Copyright (c) 2004 - 2011 OpenBOR Team 7 */ 8 9 #ifndef CONTROL_H 10 #define CONTROL_H 11 12 // Generic control stuff (keyboard+joystick). 13 #include <SDL_keysym.h> 14 #include "joysticks.h" 15 16 #ifdef DINGOO 17 #define CONTROL_ESC DINGOO_BUTTON_SELECT 18 #define CONTROL_DEFAULT1_START DINGOO_BUTTON_START 19 #define CONTROL_DEFAULT1_UP DINGOO_BUTTON_UP 20 #define CONTROL_DEFAULT1_DOWN DINGOO_BUTTON_DOWN 21 #define CONTROL_DEFAULT1_LEFT DINGOO_BUTTON_LEFT 22 #define CONTROL_DEFAULT1_RIGHT DINGOO_BUTTON_RIGHT 23 #define CONTROL_DEFAULT1_FIRE1 DINGOO_BUTTON_A 24 #define CONTROL_DEFAULT1_FIRE2 DINGOO_BUTTON_Y 25 #define CONTROL_DEFAULT1_FIRE3 DINGOO_BUTTON_R 26 #define CONTROL_DEFAULT1_FIRE4 DINGOO_BUTTON_L 27 #define CONTROL_DEFAULT1_FIRE5 DINGOO_BUTTON_B 28 #define CONTROL_DEFAULT1_FIRE6 DINGOO_BUTTON_X 29 #define CONTROL_DEFAULT1_SCREENSHOT SDLK_F12 30 #elif GP2X 31 #define CONTROL_ESC (JOY_LIST_FIRST + 15) 32 #define CONTROL_DEFAULT1_UP (JOY_LIST_FIRST + 1) 33 #define CONTROL_DEFAULT1_RIGHT (JOY_LIST_FIRST + 2) 34 #define CONTROL_DEFAULT1_DOWN (JOY_LIST_FIRST + 3) 35 #define CONTROL_DEFAULT1_LEFT (JOY_LIST_FIRST + 4) 36 #define CONTROL_DEFAULT1_FIRE1 (JOY_LIST_FIRST + 5) 37 #define CONTROL_DEFAULT1_FIRE2 (JOY_LIST_FIRST + 6) 38 #define CONTROL_DEFAULT1_FIRE3 (JOY_LIST_FIRST + 7) 39 #define CONTROL_DEFAULT1_FIRE4 (JOY_LIST_FIRST + 8) 40 #define CONTROL_DEFAULT1_FIRE5 (JOY_LIST_FIRST + 9) 41 #define CONTROL_DEFAULT1_FIRE6 (JOY_LIST_FIRST + 10) 42 #define CONTROL_DEFAULT1_START (JOY_LIST_FIRST + 11) 43 #define CONTROL_DEFAULT1_SCREENSHOT (JOY_LIST_FIRST + 12) 44 #else 45 #define CONTROL_ESC SDLK_ESCAPE 46 #define CONTROL_DEFAULT1_START SDLK_RETURN 47 #define CONTROL_DEFAULT1_UP SDLK_UP 48 #define CONTROL_DEFAULT1_DOWN SDLK_DOWN 49 #define CONTROL_DEFAULT1_LEFT SDLK_LEFT 50 #define CONTROL_DEFAULT1_RIGHT SDLK_RIGHT 51 #define CONTROL_DEFAULT1_FIRE1 SDLK_a 52 #define CONTROL_DEFAULT1_FIRE2 SDLK_s 53 #define CONTROL_DEFAULT1_FIRE3 SDLK_z 54 #define CONTROL_DEFAULT1_FIRE4 SDLK_x 55 #define CONTROL_DEFAULT1_FIRE5 SDLK_d 56 #define CONTROL_DEFAULT1_FIRE6 SDLK_f 57 #define CONTROL_DEFAULT1_SCREENSHOT SDLK_F12 58 #endif 59 60 #define CONTROL_DEFAULT2_UP ((JOY_LIST_FIRST + 1) + JOY_MAX_INPUTS) 61 #define CONTROL_DEFAULT2_RIGHT ((JOY_LIST_FIRST + 2) + JOY_MAX_INPUTS) 62 #define CONTROL_DEFAULT2_DOWN ((JOY_LIST_FIRST + 3) + JOY_MAX_INPUTS) 63 #define CONTROL_DEFAULT2_LEFT ((JOY_LIST_FIRST + 4) + JOY_MAX_INPUTS) 64 #define CONTROL_DEFAULT2_FIRE1 ((JOY_LIST_FIRST + 5) + JOY_MAX_INPUTS) 65 #define CONTROL_DEFAULT2_FIRE2 ((JOY_LIST_FIRST + 6) + JOY_MAX_INPUTS) 66 #define CONTROL_DEFAULT2_FIRE3 ((JOY_LIST_FIRST + 7) + JOY_MAX_INPUTS) 67 #define CONTROL_DEFAULT2_FIRE4 ((JOY_LIST_FIRST + 8) + JOY_MAX_INPUTS) 68 #define CONTROL_DEFAULT2_FIRE5 ((JOY_LIST_FIRST + 9) + JOY_MAX_INPUTS) 69 #define CONTROL_DEFAULT2_FIRE6 ((JOY_LIST_FIRST + 10) + JOY_MAX_INPUTS) 70 #define CONTROL_DEFAULT2_START ((JOY_LIST_FIRST + 11) + JOY_MAX_INPUTS) 71 #define CONTROL_DEFAULT2_SCREENSHOT ((JOY_LIST_FIRST + 12) + JOY_MAX_INPUTS) 72 73 #define CONTROL_DEFAULT3_UP ((JOY_LIST_FIRST + 1) + (JOY_MAX_INPUTS * 2)) 74 #define CONTROL_DEFAULT3_RIGHT ((JOY_LIST_FIRST + 2) + (JOY_MAX_INPUTS * 2)) 75 #define CONTROL_DEFAULT3_DOWN ((JOY_LIST_FIRST + 3) + (JOY_MAX_INPUTS * 2)) 76 #define CONTROL_DEFAULT3_LEFT ((JOY_LIST_FIRST + 4) + (JOY_MAX_INPUTS * 2)) 77 #define CONTROL_DEFAULT3_FIRE1 ((JOY_LIST_FIRST + 5) + (JOY_MAX_INPUTS * 2)) 78 #define CONTROL_DEFAULT3_FIRE2 ((JOY_LIST_FIRST + 6) + (JOY_MAX_INPUTS * 2)) 79 #define CONTROL_DEFAULT3_FIRE3 ((JOY_LIST_FIRST + 7) + (JOY_MAX_INPUTS * 2)) 80 #define CONTROL_DEFAULT3_FIRE4 ((JOY_LIST_FIRST + 8) + (JOY_MAX_INPUTS * 2)) 81 #define CONTROL_DEFAULT3_FIRE5 ((JOY_LIST_FIRST + 9) + (JOY_MAX_INPUTS * 2)) 82 #define CONTROL_DEFAULT3_FIRE6 ((JOY_LIST_FIRST + 10) + (JOY_MAX_INPUTS * 2)) 83 #define CONTROL_DEFAULT3_START ((JOY_LIST_FIRST + 11) + (JOY_MAX_INPUTS * 2)) 84 #define CONTROL_DEFAULT3_SCREENSHOT ((JOY_LIST_FIRST + 12) + (JOY_MAX_INPUTS * 2)) 85 86 #define CONTROL_DEFAULT4_UP ((JOY_LIST_FIRST + 1) + (JOY_MAX_INPUTS * 3)) 87 #define CONTROL_DEFAULT4_RIGHT ((JOY_LIST_FIRST + 2) + (JOY_MAX_INPUTS * 3)) 88 #define CONTROL_DEFAULT4_DOWN ((JOY_LIST_FIRST + 3) + (JOY_MAX_INPUTS * 3)) 89 #define CONTROL_DEFAULT4_LEFT ((JOY_LIST_FIRST + 4) + (JOY_MAX_INPUTS * 3)) 90 #define CONTROL_DEFAULT4_FIRE1 ((JOY_LIST_FIRST + 5) + (JOY_MAX_INPUTS * 3)) 91 #define CONTROL_DEFAULT4_FIRE2 ((JOY_LIST_FIRST + 6) + (JOY_MAX_INPUTS * 3)) 92 #define CONTROL_DEFAULT4_FIRE3 ((JOY_LIST_FIRST + 7) + (JOY_MAX_INPUTS * 3)) 93 #define CONTROL_DEFAULT4_FIRE4 ((JOY_LIST_FIRST + 8) + (JOY_MAX_INPUTS * 3)) 94 #define CONTROL_DEFAULT4_FIRE5 ((JOY_LIST_FIRST + 9) + (JOY_MAX_INPUTS * 3)) 95 #define CONTROL_DEFAULT4_FIRE6 ((JOY_LIST_FIRST + 10) + (JOY_MAX_INPUTS * 3)) 96 #define CONTROL_DEFAULT4_START ((JOY_LIST_FIRST + 11) + (JOY_MAX_INPUTS * 3)) 97 #define CONTROL_DEFAULT4_SCREENSHOT ((JOY_LIST_FIRST + 12) + (JOY_MAX_INPUTS * 3)) 98 99 #define JOYBUTTON(index, btn) (1 + i * JOY_MAX_INPUTS + btn) 100 #define JOYAXIS(index, axis, dir) (JOYBUTTON(index, joysticks[index].NumButtons) + 2 * axis + dir) 101 102 103 typedef struct{ 104 int settings[JOY_MAX_INPUTS]; 105 u32 keyflags, newkeyflags; 106 int kb_break; 107 }s_playercontrols; 108 109 void control_exit(); 110 void control_init(int joy_enable); 111 int control_usejoy(int enable); 112 int control_getjoyenabled(); 113 114 void control_setkey(s_playercontrols * pcontrols, unsigned int flag, int key); 115 int control_scankey(); 116 117 char *control_getkeyname(unsigned int keycode); 118 void control_update(s_playercontrols ** playercontrols, int numplayers); 119 void control_rumble(int port, int msec); 120 int keyboard_getlastkey(); 121 122 #endif 123 124