[Plib-cvs] plib/src/js jsMacOSX.cxx,NONE,1.1 Makefile.am,1.9,1.10 js.h,1.28,1.29 jsNone.cxx,1.1,1.2
Brought to you by:
sjbaker
From: Steve B. <sj...@us...> - 2003-01-04 02:55:58
|
Update of /cvsroot/plib/plib/src/js In directory sc8-pr-cvs1:/tmp/cvs-serv3590/plib/src/js Modified Files: Makefile.am js.h jsNone.cxx Added Files: jsMacOSX.cxx Log Message: Committed numerous patches from 3rd parties: Added JS support for Mac OS-X. Removed JS support for HPUX. Fixes for IRIX sound support. Compile problems fixed in ul.h. Load/Save FLT fixed to include byte-swapping. Several fixes to MDL loader. Fixed 'frozen particle' bug in ssgaParticleSystem. --- NEW FILE: jsMacOSX.cxx --- #include "js.h" #ifdef UL_MAC_OSX #include <mach/mach_error.h> #include <IOKit/hid/IOHIDKeys.h> #include <IOKit/IOCFPlugIn.h> #include <CoreFoundation/CoreFoundation.h> #ifdef MACOS_10_0_4 # include <IOKit/hidsystem/IOHIDUsageTables.h> #else /* The header was moved here in MacOS X 10.1 */ # include <Kernel/IOKit/hidsystem/IOHIDUsageTables.h> #endif int jsJoystick::kNumDevices = 32 ; int jsJoystick::numDevices = -1; io_object_t jsJoystick::ioDevices[kNumDevices]; [...294 lines suppressed...] } void jsJoystick::rawRead(int *buttons, float *axes) { *buttons = 0; IOHIDEventStruct hidEvent; for (int b=0; b<num_buttons; ++b) { (*hidDev)->getElementValue(hidDev, buttonCookies[b], &hidEvent); if (hidEvent.value) *buttons |= 1 << b; } for (int a=0; a<num_axes; ++a) { (*hidDev)->getElementValue(hidDev, axisCookies[a], &hidEvent); axes[a] = hidEvent.value; } } #endif Index: Makefile.am =================================================================== RCS file: /cvsroot/plib/plib/src/js/Makefile.am,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- Makefile.am 30 Nov 2002 15:52:38 -0000 1.9 +++ Makefile.am 4 Jan 2003 02:55:53 -0000 1.10 @@ -5,7 +5,8 @@ include_HEADERS = js.h libplibjs_a_SOURCES = js.cxx jsLinux.cxx jsLinuxOld.cxx jsMacOS.cxx \ - jsWindows.cxx jsBSD.cxx jsNone.cxx + jsMacOSX.cxx jsWindows.cxx jsBSD.cxx \ + jsNone.cxx INCLUDES = -I$(top_srcdir)/src/util Index: js.h =================================================================== RCS file: /cvsroot/plib/plib/src/js/js.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- js.h 30 Nov 2002 00:41:49 -0000 1.28 +++ js.h 4 Jan 2003 02:55:53 -0000 1.29 @@ -37,9 +37,15 @@ #endif #ifdef UL_BSD -# include <machine/joystick.h> -# define JS_DATA_TYPE joystick -# define JS_RETURN (sizeof(struct JS_DATA_TYPE)) +# include <machine/joystick.h> +# define JS_DATA_TYPE joystick +# define JS_RETURN (sizeof(struct JS_DATA_TYPE)) +#endif + +#ifdef UL_MAC_OSX +# include <mach/mach.h> +# include <IOKit/IOkitLib.h> +# include <IOKit/hid/IOHIDLib.h> #endif #ifdef UL_LINUX @@ -85,6 +91,31 @@ #define isp_num_needs 41 ISpElementReference isp_elem [ isp_num_needs ] ; ISpNeed isp_needs [ isp_num_needs ] ; + +#elif defined(UL_MAC_OSX) + + IOHIDDeviceInterface ** hidDev; + static const int kNumDevices; + static int numDevices; + static io_object_t ioDevices[kNumDevices]; + + static void findDevices(mach_port_t); + static CFDictionaryRef getCFProperties(io_object_t); + + void enumerateElements(CFTypeRef element); + /// callback for CFArrayApply + static void elementEnumerator( const void *element, void* vjs); + void parseElement(CFDictionaryRef element); + + void addAxisElement(CFDictionaryRef axis); + void addButtonElement(CFDictionaryRef button); + void addHatElement(CFDictionaryRef hat); + + IOHIDElementCookie buttonCookies[41]; + IOHIDElementCookie axisCookies[_JS_MAX_AXES]; + long minReport[_JS_MAX_AXES], + maxReport[_JS_MAX_AXES]; + #elif defined(UL_WIN32) JOYCAPS jsCaps ; JOYINFOEX js ; Index: jsNone.cxx =================================================================== RCS file: /cvsroot/plib/plib/src/js/jsNone.cxx,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- jsNone.cxx 30 Nov 2002 15:52:38 -0000 1.1 +++ jsNone.cxx 4 Jan 2003 02:55:54 -0000 1.2 @@ -22,7 +22,7 @@ #include "js.h" -#if defined(UL_IRIX) || defined(UL_SOLARIS) +#if defined(UL_IRIX) || defined(UL_SOLARIS) || defined(UL_HPUX) /* check the joystick driver version */ |