1 /* 2 * UAE - The Un*x Amiga Emulator 3 * 4 * Joystick, mouse and keyboard emulation prototypes and definitions 5 * 6 * Copyright 1995 Bernd Schmidt 7 * Copyright 2001-2002 Toni Wilen 8 */ 9 10 11 #define IDTYPE_JOYSTICK 0 12 #define IDTYPE_MOUSE 1 13 #define IDTYPE_KEYBOARD 2 14 15 struct inputdevice_functions { 16 int (*init)(void); 17 void (*close)(void); 18 int (*acquire)(unsigned int,int); 19 void (*unacquire)(unsigned int); 20 void (*read)(void); 21 int (*get_num)(void); 22 const char *(*get_name)(unsigned int); 23 int (*get_widget_num)(unsigned int); 24 int (*get_widget_type)(unsigned int,unsigned int,char*,uae_u32*); 25 int (*get_widget_first)(unsigned int,int); 26 }; 27 extern struct inputdevice_functions inputdevicefunc_joystick; 28 extern struct inputdevice_functions inputdevicefunc_mouse; 29 extern struct inputdevice_functions inputdevicefunc_keyboard; 30 extern int pause_emulation; 31 32 struct uae_input_device_kbr_default { 33 int scancode; 34 int event; 35 }; 36 37 #define IDEV_WIDGET_NONE 0 38 #define IDEV_WIDGET_BUTTON 1 39 #define IDEV_WIDGET_AXIS 2 40 #define IDEV_WIDGET_KEY 3 41 42 #define IDEV_MAPPED_AUTOFIRE_POSSIBLE 1 43 #define IDEV_MAPPED_AUTOFIRE_SET 2 44 45 #define ID_BUTTON_OFFSET 0 46 #define ID_BUTTON_TOTAL 32 47 #define ID_AXIS_OFFSET 32 48 #define ID_AXIS_TOTAL 32 49 50 extern int inputdevice_iterate (int devnum, int num, char *name, int *af); 51 extern int inputdevice_set_mapping (int devnum, int num, char *name, char *custom, int af, int sub); 52 extern int inputdevice_get_mapped_name (int devnum, int num, int *pflags, char *name, char *custom, int sub); 53 extern void inputdevice_copyconfig (struct uae_prefs *src, struct uae_prefs *dst); 54 extern void inputdevice_copy_single_config (struct uae_prefs *p, int src, int dst, int devnum); 55 extern void inputdevice_swap_ports (struct uae_prefs *p, int devnum); 56 extern void inputdevice_config_change (void); 57 extern int inputdevice_config_change_test (void); 58 extern int inputdevice_get_device_index (int devnum); 59 extern char *inputdevice_get_device_name (int type, int devnum); 60 extern int inputdevice_get_device_status (int devnum); 61 extern void inputdevice_set_device_status (int devnum, int enabled); 62 extern int inputdevice_get_device_total (int type); 63 extern int inputdevice_get_widget_num (int devnum); 64 extern int inputdevice_get_widget_type (int devnum, int num, char *name); 65 66 extern void input_get_default_mouse (struct uae_input_device *uid); 67 extern void input_get_default_joystick (struct uae_input_device *uid); 68 69 #define DEFEVENT(A, B, C, D, E, F) INPUTEVENT_ ## A, 70 enum inputevents { 71 INPUTEVENT_ZERO, 72 #include "inputevents.def" 73 INPUTEVENT_END 74 }; 75 #undef DEFEVENT 76 77 extern void handle_cd32_joystick_cia (uae_u8, uae_u8); 78 extern uae_u8 handle_parport_joystick (int port, uae_u8 pra, uae_u8 dra); 79 extern uae_u8 handle_joystick_buttons (uae_u8); 80 extern int getbuttonstate (int joy, int button); 81 extern int getjoystate (int joy); 82 83 extern int needmousehack (void); 84 extern int mousehack_alive (void); 85 extern int mousehack_allowed (void); 86 87 extern void toggle_fullscreen (void); 88 89 extern void setmousebuttonstateall (int mouse, uae_u32 buttonbits, uae_u32 buttonmask); 90 extern void setjoybuttonstateall (int joy, uae_u32 buttonbits, uae_u32 buttonmask); 91 extern void setjoybuttonstate (int joy, int button, int state); 92 extern void setmousebuttonstate (int mouse, int button, int state); 93 extern void setjoystickstate (int joy, int axle, int state, int max); 94 void setmousestate (int mouse, int axis, int data, int isabs); 95 extern void inputdevice_updateconfig (struct uae_prefs *prefs); 96 97 extern int inputdevice_translatekeycode (int keyboard, int scancode, int state); 98 extern void inputdevice_setkeytranslation (struct uae_input_device_kbr_default *trans); 99 extern void handle_input_event (int nr, int state, int max, int autofire); 100 extern void inputdevice_do_keyboard (int code, int state); 101 extern void inputdevice_release_all_keys (void); 102 103 extern uae_u16 potgo_value; 104 extern uae_u16 POTGOR (void); 105 extern void POTGO (uae_u16 v); 106 extern uae_u16 POT0DAT (void); 107 extern uae_u16 POT1DAT (void); 108 extern void JOYTEST (uae_u16 v); 109 extern uae_u16 JOY0DAT (void); 110 extern uae_u16 JOY1DAT (void); 111 112 extern void inputdevice_vsync (void); 113 extern void inputdevice_hsync (void); 114 extern void inputdevice_reset (void); 115 116 extern void write_inputdevice_config (struct uae_prefs *p, FILE *f); 117 extern void read_inputdevice_config (struct uae_prefs *p, char *option, char *value); 118 extern void reset_inputdevice_config (struct uae_prefs *pr); 119 120 extern void inputdevice_init (void); 121 extern void inputdevice_close (void); 122 extern void inputdevice_default_prefs (struct uae_prefs *p); 123 124 extern void inputdevice_acquire (void); 125 extern void inputdevice_unacquire (void); 126 127 extern void indicator_leds (int num, int state); 128 129 extern void warpmode (int mode); 130 extern void pausemode (int mode); 131 132 extern void inputdevice_add_inputcode (int code, int state); 133 extern void inputdevice_handle_inputcode (void); 134 135 #define JSEM_KBDLAYOUT 0 136 #define JSEM_JOYS 100 137 #define JSEM_MICE 200 138 #define JSEM_END 300 139 #define JSEM_DECODEVAL(port,p) ((port) == 0 ? (p)->jport0 : (p)->jport1) 140 #define JSEM_ISNUMPAD(port,p) (jsem_iskbdjoy(port,p) == JSEM_KBDLAYOUT) 141 #define JSEM_ISCURSOR(port,p) (jsem_iskbdjoy(port,p) == JSEM_KBDLAYOUT + 1) 142 #define JSEM_ISSOMEWHEREELSE(port,p) (jsem_iskbdjoy(port,p) == JSEM_KBDLAYOUT + 2) 143 #define JSEM_ISXARCADE1(port,p) (jsem_iskbdjoy(port,p) == JSEM_KBDLAYOUT + 3) 144 #define JSEM_ISXARCADE2(port,p) (jsem_iskbdjoy(port,p) == JSEM_KBDLAYOUT + 4) 145 #define JSEM_LASTKBD 5 146 #define JSEM_ISANYKBD(port,p) (jsem_iskbdjoy(port,p) >= JSEM_KBDLAYOUT && jsem_iskbdjoy(port,p) < JSEM_KBDLAYOUT + JSEM_LASTKBD) 147 extern int compatibility_device[2]; 148 149 extern int jsem_isjoy (int port, struct uae_prefs *p); 150 extern int jsem_ismouse (int port, struct uae_prefs *p); 151 extern int jsem_iskbdjoy (int port, struct uae_prefs *p); 152 153 extern int inputdevice_uaelib (char*, char*); 154