2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
15 * $Source: /cvs/cvsroot/d2x/arch/include/joy.h,v $
18 * $Date: 2001-10-18 23:59:22 $
20 * Header for joystick functions
22 * $Log: not supported by cvs2svn $
23 * Revision 1.3 2001/10/12 00:18:37 bradleyb
24 * Switched from Cygwin to mingw32 on MS boxes. Vastly improved compilability.
26 * Revision 1.2 2001/01/29 13:36:14 bradleyb
27 * Removed duplicate files
29 * Revision 1.1 2001/01/28 16:10:57 bradleyb
30 * unified input headers.
40 #define JOY_1_BUTTON_A 1
41 #define JOY_1_BUTTON_B 2
42 #define JOY_2_BUTTON_A 4
43 #define JOY_2_BUTTON_B 8
44 #define JOY_ALL_BUTTONS (1+2+4+8)
46 #define JOY_1_X_AXIS 1
47 #define JOY_1_Y_AXIS 2
48 #define JOY_1_Z_AXIS 4
49 #define JOY_1_R_AXIS 16
50 #define JOY_1_U_AXIS 32
51 #define JOY_1_V_AXIS 64
54 #define JOY_NUM_AXES 7
55 #elif defined __linux__
56 #define JOY_NUM_AXES 5
58 #define JOY_NUM_AXES 4
61 #if defined(_WIN32) && !defined(__MINGW32__)
63 #define JOY_ALL_AXIS (1+2+4+8)
64 #define JOY_EXT_AXIS (16+32+64)
66 #define JOY_2_X_AXIS 4
67 #define JOY_2_Y_AXIS 8
68 #define JOY_ALL_AXIS (1+2+4+8)
71 #define JOY_SLOW_READINGS 1
72 #define JOY_POLLED_READINGS 2
73 #define JOY_BIOS_READINGS 4
74 /* not present in d2src, maybe we don't really need it? */
75 #define JOY_FRIENDLY_READINGS 8
78 #define MAX_BUTTONS 64
80 #define MAX_BUTTONS 20
83 //==========================================================================
84 // This initializes the joy and does a "quick" calibration which
85 // assumes the stick is centered and sets the minimum value to 0 and
86 // the maximum value to 2 times the centered reading. Returns 0 if no
87 // joystick was detected, 1 if everything is ok.
88 // joy_init() is called.
91 extern int joy_init(int joy, int spjoy);
92 extern int joy95_init_stick(int joy, int spjoy);
94 extern int joy_init();
96 extern void joy_close();
98 extern char joy_installed;
99 extern char joy_present;
101 //==========================================================================
102 // The following 3 routines can be used to zero in on better joy
103 // calibration factors. To use them, ask the user to hold the stick
104 // in either the upper left, lower right, or center and then have them
105 // press a key or button and then call the appropriate one of these
106 // routines, and it will read the stick and update the calibration factors.
107 // Usually, assuming that the stick was centered when joy_init was
108 // called, you really only need to call joy_set_lr, since the upper
109 // left position is usually always 0,0 on most joys. But, the safest
110 // bet is to do all three, or let the user choose which ones to set.
112 extern void joy_set_ul();
113 extern void joy_set_lr();
114 extern void joy_set_cen();
117 //==========================================================================
118 // This reads the joystick. X and Y will be between -128 and 127.
119 // Takes about 1 millisecond in the worst case when the stick
120 // is in the lower right hand corner. Always returns 0,0 if no stick
123 extern void joy_get_pos( int *x, int *y );
125 //==========================================================================
126 // This just reads the buttons and returns their status. When bit 0
127 // is 1, button 1 is pressed, when bit 1 is 1, button 2 is pressed.
128 extern int joy_get_btns();
130 //==========================================================================
131 // This returns the number of times a button went either down or up since
132 // the last call to this function.
133 extern int joy_get_button_up_cnt( int btn );
134 extern int joy_get_button_down_cnt( int btn );
136 //==========================================================================
137 // This returns how long (in approximate milliseconds) that each of the
138 // buttons has been held down since the last call to this function.
139 // It is the total time... say you pressed it down for 3 ticks, released
140 // it, and held it down for 6 more ticks. The time returned would be 9.
141 extern fix joy_get_button_down_time( int btn );
143 extern ubyte joy_read_raw_buttons();
144 extern ubyte joystick_read_raw_axis( ubyte mask, int * axis );
145 extern void joy_flush();
146 extern ubyte joy_get_present_mask();
147 extern void joy_set_timer_rate(int max_value );
148 extern int joy_get_timer_rate();
150 extern int joy_get_button_state( int btn );
151 extern void joy_set_cen_fake(int channel);
152 extern ubyte joy_read_stick( ubyte masks, int *axis );
153 extern void joy_get_cal_vals(int *axis_min, int *axis_center, int *axis_max);
154 extern void joy_set_cal_vals(int *axis_min, int *axis_center, int *axis_max);
155 extern void joy_set_btn_values( int btn, int state, fix timedown, int downcount, int upcount );
156 extern int joy_get_scaled_reading( int raw, int axn );
157 extern void joy_set_slow_reading( int flag );
159 #if defined(_WIN32) && !defined(__MINGW32__)
160 extern int joy95_init_stick(int joy, int spjoy);