#ifndef JSMAP_H #define JSMAP_H #ifdef JS_SUPPORT #if defined(HAVE_LIBJSW) # include #endif #include "../include/osw-x.h" typedef struct _xsw_jsmap_struct xsw_jsmap_struct; #define XSW_JSMAP(p) ((xsw_jsmap_struct *)(p)) typedef struct _xsw_jsmap_axis_struct xsw_jsmap_axis_struct; #define XSW_JSMAP_AXIS(p) ((xsw_jsmap_axis_struct *)(p)) typedef struct _xsw_jsmap_button_struct xsw_jsmap_button_struct; #define XSW_JSMAP_BUTTON(p) ((xsw_jsmap_button_struct *)(p)) /* * Axis Operations: */ #define JSMAP_AXIS_OP_NONE -1 #define JSMAP_AXIS_OP_TURN 0 #define JSMAP_AXIS_OP_THROTTLE 1 #define JSMAP_AXIS_OP_THRUST_DIR 2 #define JSMAP_AXIS_OP_AIM_WEAPON_HEADING 3 #define JSMAP_AXIS_OP_AIM_WEAPON_PITCH 4 #define JSMAP_AXIS_OP_SCANNER_ZOOM 10 #define JSMAP_AXIS_OP_VS_ZOOM 11 /* * Joystick Map: */ struct _xsw_jsmap_struct { char *device_name; #if defined(HAVE_LIBJSW) js_data_struct jsd; #endif xsw_jsmap_axis_struct **axis; int total_axises; xsw_jsmap_button_struct **button; int total_buttons; }; /* * Axis: */ struct _xsw_jsmap_axis_struct { int op; /* One if JSMAP_AXIS_OP_* */ }; /* * Button: */ struct _xsw_jsmap_button_struct { keycode_t keycode; /* Keycode generated by button */ key_state_t key_state; /* Modifier keys generated by button */ bool_t state; /* Button state change marker */ }; /* jsmap.cpp */ extern "C" xsw_jsmap_struct *JSMapNew(void); extern "C" int JSMapInitializeJoystick( xsw_jsmap_struct *jsm, const char *device_name, const char *calibration_file ); extern "C" void JSMapSyncWithData(xsw_jsmap_struct *jsm); extern "C" void JSMapShutdownJoystick(xsw_jsmap_struct *jsm); extern "C" void JSMapDelete(xsw_jsmap_struct *jsm); extern "C" void JSMapsListClear( xsw_jsmap_struct **list, const int total ); #endif /* JS_SUPPORT */ #endif /* JSMAP_H */