added support for special media buttons on Amazon Fire TV remote control
[rocksndiamonds.git] / src / libgame / joystick.h
1 // ============================================================================
2 // Artsoft Retro-Game Library
3 // ----------------------------------------------------------------------------
4 // (c) 1995-2014 by Artsoft Entertainment
5 //                  Holger Schemel
6 //                  info@artsoft.org
7 //                  http://www.artsoft.org/
8 // ----------------------------------------------------------------------------
9 // joystick.h
10 // ============================================================================
11
12 #ifndef JOYSTICK_H
13 #define JOYSTICK_H
14
15 #include "system.h"
16
17 #define JOYSTICK_NOT_AVAILABLE  0
18 #define JOYSTICK_AVAILABLE      (1 << 0)
19 #define JOYSTICK_ACTIVE         (1 << 1)
20 #define JOYSTICK_ACTIVATED      (JOYSTICK_AVAILABLE | JOYSTICK_ACTIVE)
21
22 #if defined(PLATFORM_FREEBSD)
23 #define DEV_JOYSTICK_0          "/dev/joy0"
24 #define DEV_JOYSTICK_1          "/dev/joy1"
25 #define DEV_JOYSTICK_2          "/dev/joy2"
26 #define DEV_JOYSTICK_3          "/dev/joy3"
27 #else
28 #define DEV_JOYSTICK_0          "/dev/js0"
29 #define DEV_JOYSTICK_1          "/dev/js1"
30 #define DEV_JOYSTICK_2          "/dev/js2"
31 #define DEV_JOYSTICK_3          "/dev/js3"
32 #endif
33
34 /* get these values from the program 'js' from the joystick package, */
35 /* set JOYSTICK_PERCENT to a threshold appropriate for your joystick */
36
37 #define JOYSTICK_MAX_AXIS_POS   32767
38
39 #define JOYSTICK_XLEFT          -JOYSTICK_MAX_AXIS_POS
40 #define JOYSTICK_XMIDDLE        0
41 #define JOYSTICK_XRIGHT         +JOYSTICK_MAX_AXIS_POS
42 #define JOYSTICK_YUPPER         -JOYSTICK_MAX_AXIS_POS
43 #define JOYSTICK_YMIDDLE        0
44 #define JOYSTICK_YLOWER         +JOYSTICK_MAX_AXIS_POS
45
46 #define JOYSTICK_PERCENT        25
47
48 #define JOY_NO_ACTION           0
49 #define JOY_LEFT                MV_LEFT
50 #define JOY_RIGHT               MV_RIGHT
51 #define JOY_UP                  MV_UP
52 #define JOY_DOWN                MV_DOWN
53 #define JOY_BUTTON_1            KEY_BUTTON_1
54 #define JOY_BUTTON_2            KEY_BUTTON_2
55 #define JOY_BUTTON_SNAP         KEY_BUTTON_SNAP
56 #define JOY_BUTTON_DROP         KEY_BUTTON_DROP
57 #define JOY_MOTION              KEY_MOTION
58 #define JOY_BUTTON              KEY_BUTTON
59 #define JOY_ACTION              KEY_ACTION
60
61 #define JOY_BUTTON_NOT_PRESSED  0
62 #define JOY_BUTTON_PRESSED      1
63 #define JOY_BUTTON_NEW_PRESSED  2
64 #define JOY_BUTTON_NEW_RELEASED 3
65
66 char *getJoyNameFromJoySymbol(int);
67 int getJoySymbolFromJoyName(char *);
68 int getJoystickNrFromDeviceName(char *);
69 char *getDeviceNameFromJoystickNr(int);
70
71 void CheckJoystickData(void);
72 int Joystick(int);
73 int JoystickExt(int, boolean);
74 int JoystickButton(int);
75 int AnyJoystick(void);
76 int AnyJoystickButton(void);
77
78 void DeactivateJoystick();
79 void ActivateJoystick();
80
81 #endif  /* JOYSTICK_H */