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