Re-worked mouse code to be devices (to allow for configuration.)

Re-worked the system pathnames (pc.c), renamed cfg_path to usr_path.
Other small things here and there.
Logitech bus mouse re-worked, should be OK now.
This commit is contained in:
waltje
2017-12-04 11:59:26 -05:00
parent 5bf569759e
commit fc34a6eaf3
35 changed files with 1630 additions and 1308 deletions

View File

@@ -8,69 +8,66 @@
*
* Definitions for the mouse driver.
*
* Version: @(#)mouse.h 1.0.8 2017/11/03
* Version: @(#)mouse.h 1.0.10 2017/12/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2017 Fred N. van Kempen.
*/
#ifndef EMU_MOUSE_H
# define EMU_MOUSE_H
#define SERMOUSE_PORT 1 /* attach to Serial1 */
#define MOUSE_TYPE_NONE 0 /* no mouse configured */
#define MOUSE_TYPE_INTERNAL 1 /* machine has internal mouse */
#define MOUSE_TYPE_LOGIBUS 2 /* Logitech/ATI Bus Mouse */
#define MOUSE_TYPE_INPORT 3 /* Microsoft InPort Mouse */
#define MOUSE_TYPE_MSYSTEMS 4 /* Mouse Systems mouse */
#define MOUSE_TYPE_MICROSOFT 5 /* Microsoft Serial Mouse */
#define MOUSE_TYPE_LOGITECH 6 /* Logitech Serial Mouse */
#define MOUSE_TYPE_MSWHEEL 7 /* Serial Wheel Mouse */
#define MOUSE_TYPE_PS2 8 /* IBM PS/2 series Bus Mouse */
#define MOUSE_TYPE_PS2_MS 9 /* Microsoft Intellimouse PS/2 */
#if 0
# define MOUSE_TYPE_GENIUS 10 /* Genius Bus Mouse */
# define MOUSE_TYPE_GENIBUS 4 /* Genius Bus Mouse */
#endif
#define MOUSE_TYPE_MSYSTEMS 5 /* Mouse Systems mouse */
#define MOUSE_TYPE_MICROSOFT 6 /* Microsoft Serial Mouse */
#define MOUSE_TYPE_LOGITECH 7 /* Logitech Serial Mouse */
#define MOUSE_TYPE_MSWHEEL 8 /* Serial Wheel Mouse */
#define MOUSE_TYPE_PS2 9 /* IBM PS/2 series Bus Mouse */
#define MOUSE_TYPE_PS2_MS 10 /* Microsoft Intellimouse PS/2 */
#define MOUSE_TYPE_MASK 0x0f
#define MOUSE_TYPE_3BUTTON (1<<7) /* device has 3+ buttons */
typedef struct _mouse_ {
const char *name;
const char *internal_name;
int type;
void *(*init)(struct _mouse_ *);
void (*close)(void *p);
uint8_t (*poll)(int x, int y, int z, int b, void *p);
} mouse_t;
#ifdef __cplusplus
extern "C" {
#endif
extern int mouse_type;
extern int mouse_x, mouse_y, mouse_z;
extern int mouse_buttons;
extern mouse_t mouse_bus_logitech;
extern mouse_t mouse_bus_msinport;
extern mouse_t mouse_serial_msystems;
extern mouse_t mouse_serial_microsoft;
extern mouse_t mouse_serial_logitech;
extern mouse_t mouse_serial_mswheel;
extern mouse_t mouse_ps2_2button;
extern mouse_t mouse_ps2_intellimouse;
#ifdef EMU_DEVICE_H
extern device_t mouse_logibus_device;
extern device_t mouse_msinport_device;
#if 0
extern device_t mouse_genibus_device;
#endif
extern device_t mouse_mssystems_device;
extern device_t mouse_msserial_device;
extern device_t mouse_lserial_device;
extern device_t mouse_mswheel_device;
extern device_t mouse_ps2_device;
extern device_t mouse_ps2ms_device;
extern void *mouse_ps2_init(device_t *);
#endif
extern void *mouse_ps2_init(void *);
extern void mouse_emu_init(void);
extern void mouse_emu_close(void);
extern void mouse_setpoll(uint8_t (*f)(int,int,int,int,void *), void *);
extern void mouse_init(void);
extern void mouse_reset(void);
extern void mouse_process(void);
extern void mouse_poll(void);
extern void mouse_setpoll(int (*f)(int,int,int,int,void *), void *);
extern char *mouse_get_name(int mouse);
extern char *mouse_get_internal_name(int mouse);
@@ -78,5 +75,9 @@ extern int mouse_get_from_internal_name(char *s);
extern int mouse_get_type(int mouse);
extern int mouse_get_ndev(void);
#ifdef __cplusplus
}
#endif
#endif /*EMU_MOUSE_H*/