From 3effa406ab2464dcf6abc4095c26d4fd5222fc40 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Wed, 23 Feb 2011 18:53:36 -0600 Subject: [PATCH] more mac mouse code --- src/archutils/Darwin/MouseDevice.cpp | 18 ++++--------- src/archutils/Darwin/MouseDevice.h | 40 +++++++++++++++++++--------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/archutils/Darwin/MouseDevice.cpp b/src/archutils/Darwin/MouseDevice.cpp index 718440a0c0..86156db315 100644 --- a/src/archutils/Darwin/MouseDevice.cpp +++ b/src/archutils/Darwin/MouseDevice.cpp @@ -3,10 +3,6 @@ using __gnu_cxx::hash_map; -Mouse::Mouse() : id( InputDevice_Invalid ), -{ -} - bool MouseDevice::AddLogicalDevice( int usagePage, int usage ) { // Mice can either be kHIDUsage_GD_Mouse or kHIDUsage_GD_Pointer... @@ -16,9 +12,6 @@ bool MouseDevice::AddLogicalDevice( int usagePage, int usage ) void MouseDevice::AddElement( int usagePage, int usage, IOHIDElementCookie cookie, const CFDictionaryRef properties ) { - if( usagePage != kHIDPage_GenericDesktop ) - return; - if( usagePage == kHIDPage_Button ) { const DeviceButton buttonID = enum_add2( MOUSE_LEFT, usage - kHIDUsage_Button_1 ); @@ -30,11 +23,6 @@ void MouseDevice::AddElement( int usagePage, int usage, IOHIDElementCookie cooki LOG->Warn( "Button id too large: %d.", int(buttonID) ); break; } - - /* - if( UsbKeyToDeviceButton(usage,button) ) - m_Mapping[cookie] = button; - */ } void MouseDevice::Open() @@ -47,7 +35,11 @@ void MouseDevice::Open() void MouseDevice::GetButtonPresses( vector& vPresses, IOHIDElementCookie cookie, int value, const RageTimer& now ) const { - // hmm... + hash_map::const_iterator iter = m_Mapping.find( cookie ); + if( iter != m_Mapping.end() ) + { + vPresses.push_back( DeviceInput(DEVICE_MOUSE, iter->second, value, now) ); + } } void MouseDeviceDevice::GetDevicesAndDescriptions( vector& vDevices ) const diff --git a/src/archutils/Darwin/MouseDevice.h b/src/archutils/Darwin/MouseDevice.h index 14ee9b40cc..9d3e2565ca 100644 --- a/src/archutils/Darwin/MouseDevice.h +++ b/src/archutils/Darwin/MouseDevice.h @@ -3,19 +3,10 @@ #include "HIDDevice.h" -struct Mouse -{ - InputDevice id; - // map cookie to button - __gnu_cxx::hash_map mapping; - - Mouse(); -}; - class MouseDevice : public HIDDevice { private: - // stuff + __gnu_cxx::hash_map m_Mapping; protected: bool AddLogicalDevice( int usagePage, int usage ); @@ -25,7 +16,32 @@ protected: public: void GetButtonPresses( vector& vPresses, IOHIDElementCookie cookie, int value, const RageTimer& now ) const; void GetDevicesAndDescriptions( vector& vDevices ) const; - // even more stuff }; -#endif \ No newline at end of file +#endif + +/* + * (c) 2011 AJ Kelly + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + \ No newline at end of file