Some cleanup. Work around EMS auto mapping problem.
This commit is contained in:
@@ -7,7 +7,6 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
using __gnu_cxx::hash_map;
|
using __gnu_cxx::hash_map;
|
||||||
|
|
||||||
|
|
||||||
Joystick::Joystick() : id( DEVICE_NONE ),
|
Joystick::Joystick() : id( DEVICE_NONE ),
|
||||||
x_axis( DeviceButton_Invalid ),
|
x_axis( DeviceButton_Invalid ),
|
||||||
y_axis( DeviceButton_Invalid ),
|
y_axis( DeviceButton_Invalid ),
|
||||||
@@ -31,39 +30,40 @@ void JoystickDevice::AddElement( int usagePage, int usage, int cookie, const CFD
|
|||||||
CFTypeRef object;
|
CFTypeRef object;
|
||||||
CFTypeID numID = CFNumberGetTypeID();
|
CFTypeID numID = CFNumberGetTypeID();
|
||||||
|
|
||||||
|
ASSERT( m_vSticks.size() );
|
||||||
Joystick& js = m_vSticks.back();
|
Joystick& js = m_vSticks.back();
|
||||||
|
|
||||||
switch( usagePage )
|
switch( usagePage )
|
||||||
{
|
{
|
||||||
case kHIDPage_GenericDesktop:
|
case kHIDPage_GenericDesktop:
|
||||||
{
|
{
|
||||||
int min = 0;
|
int iMin = 0;
|
||||||
int max = 0;
|
int iMax = 0;
|
||||||
|
|
||||||
object = CFDictionaryGetValue( dict, CFSTR(kIOHIDElementMinKey) );
|
object = CFDictionaryGetValue( dict, CFSTR(kIOHIDElementMinKey) );
|
||||||
if( object && CFGetTypeID(object) == numID )
|
if( object && CFGetTypeID(object) == numID )
|
||||||
IntValue( object, &min );
|
IntValue( object, iMin );
|
||||||
|
|
||||||
object = CFDictionaryGetValue( dict, CFSTR(kIOHIDElementMaxKey) );
|
object = CFDictionaryGetValue( dict, CFSTR(kIOHIDElementMaxKey) );
|
||||||
if( object && CFGetTypeID(object) == numID )
|
if( object && CFGetTypeID(object) == numID )
|
||||||
IntValue( object, &max );
|
IntValue( object, iMax );
|
||||||
|
|
||||||
switch( usage )
|
switch( usage )
|
||||||
{
|
{
|
||||||
case kHIDUsage_GD_X:
|
case kHIDUsage_GD_X:
|
||||||
js.x_axis = cookie;
|
js.x_axis = cookie;
|
||||||
js.x_min = min;
|
js.x_min = iMin;
|
||||||
js.x_max = max;
|
js.x_max = iMax;
|
||||||
break;
|
break;
|
||||||
case kHIDUsage_GD_Y:
|
case kHIDUsage_GD_Y:
|
||||||
js.y_axis = cookie;
|
js.y_axis = cookie;
|
||||||
js.y_min = min;
|
js.y_min = iMin;
|
||||||
js.y_max = max;
|
js.y_max = iMax;
|
||||||
break;
|
break;
|
||||||
case kHIDUsage_GD_Z:
|
case kHIDUsage_GD_Z:
|
||||||
js.z_axis = cookie;
|
js.z_axis = cookie;
|
||||||
js.z_min = min;
|
js.z_min = iMin;
|
||||||
js.z_max = max;
|
js.z_max = iMax;
|
||||||
break;
|
break;
|
||||||
case kHIDUsage_GD_DPadUp:
|
case kHIDUsage_GD_DPadUp:
|
||||||
js.mapping[cookie] = JOY_UP;
|
js.mapping[cookie] = JOY_UP;
|
||||||
@@ -178,7 +178,13 @@ void JoystickDevice::GetDevicesAndDescriptions( vector<InputDevice>& dev, vector
|
|||||||
FOREACH_CONST( Joystick, m_vSticks, i )
|
FOREACH_CONST( Joystick, m_vSticks, i )
|
||||||
{
|
{
|
||||||
dev.push_back( i->id );
|
dev.push_back( i->id );
|
||||||
desc.push_back( GetDescription() );
|
const RString& description = GetDescription();
|
||||||
|
|
||||||
|
// XXX hack around remapping problem.
|
||||||
|
if( description == "0b43:0003" )
|
||||||
|
desc.push_back( "EMS USB2" );
|
||||||
|
else
|
||||||
|
desc.push_back( description );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user