X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fx11%2Ffg_joystick_x11.c;h=8c75bbebdc2c5f14f3d21407c097d5d6ef1d3a4c;hb=02a9fcfd3f42be8ba441894355ff06cfc94ef8a2;hp=30ad4b5133a1c61b25ee21c71fa8c95cf9a69737;hpb=002dae879eda329f38fe65cb6f99d4f481a2eb47;p=freeglut diff --git a/src/x11/fg_joystick_x11.c b/src/x11/fg_joystick_x11.c index 30ad4b5..8c75bbe 100644 --- a/src/x11/fg_joystick_x11.c +++ b/src/x11/fg_joystick_x11.c @@ -42,8 +42,68 @@ #include +/* BSD defines from "jsBSD.cxx" around lines 42-270 */ + +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) + +# ifdef HAVE_USB_JS +# if defined(__NetBSD__) +# ifdef HAVE_USBHID_H +# include +# else +# include +# endif +# include +# elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +# ifdef HAVE_USBHID_H +# include +# else +# include +# endif +# include +# endif +# include + +/* Compatibility with older usb.h revisions */ +# if !defined(USB_MAX_DEVNAMES) && defined(MAXDEVNAMES) +# define USB_MAX_DEVNAMES MAXDEVNAMES +# endif +# endif + +struct os_specific_s { + char fname [128 ]; + int fd; + int is_analog; + /* The following structure members are specific to analog joysticks */ + struct joystick ajs; +# ifdef HAVE_USB_JS + /* The following structure members are specific to USB joysticks */ + struct hid_item *hids; + int hid_dlen; + int hid_offset; + char *hid_data_buf; + int axes_usage [ _JS_MAX_AXES ]; +# endif + /* We keep button and axes state ourselves, as they might not be updated + * on every read of a USB device + */ + int cache_buttons; + float cache_axes [ _JS_MAX_AXES ]; +}; + +/* Idents lower than USB_IDENT_OFFSET are for analog joysticks. */ +# define USB_IDENT_OFFSET 2 + +# define USBDEV "/dev/usb" +# define UHIDDEV "/dev/uhid" +# define AJSDEV "/dev/joy" + + +#endif + #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) static int hatmap_x[9] = {0, 0, 1, 1, 1, 0, -1, -1, -1}; static int hatmap_y[9] = {0, 1, 1, 0, -1, -1, -1, 0, 1}; @@ -104,6 +164,7 @@ static int fghJoystickFindUSBdev(char *name, char *out, int outlen) } return 0; } +#endif static int fghJoystickInitializeHID(struct os_specific_s *os, int *num_axes, int *num_buttons)