Switch Pro Controller motion controls
This commit is contained in:
parent
d15eaf4134
commit
d94c8b9125
@ -422,8 +422,6 @@ hacksByName = @{
|
|||||||
JOYCustomReports: @{
|
JOYCustomReports: @{
|
||||||
@(0x30): @[
|
@(0x30): @[
|
||||||
|
|
||||||
// For USB mode, which uses the wrong report descriptor
|
|
||||||
|
|
||||||
@{@"reportID": @(1), @"size":@1, @"offset":@16, @"usagePage":@(kHIDPage_Button), @"usage":@3},
|
@{@"reportID": @(1), @"size":@1, @"offset":@16, @"usagePage":@(kHIDPage_Button), @"usage":@3},
|
||||||
@{@"reportID": @(1), @"size":@1, @"offset":@17, @"usagePage":@(kHIDPage_Button), @"usage":@4},
|
@{@"reportID": @(1), @"size":@1, @"offset":@17, @"usagePage":@(kHIDPage_Button), @"usage":@4},
|
||||||
@{@"reportID": @(1), @"size":@1, @"offset":@18, @"usagePage":@(kHIDPage_Button), @"usage":@1},
|
@{@"reportID": @(1), @"size":@1, @"offset":@18, @"usagePage":@(kHIDPage_Button), @"usage":@1},
|
||||||
@ -456,6 +454,13 @@ hacksByName = @{
|
|||||||
|
|
||||||
@{@"reportID": @(1), @"size":@12, @"offset":@64, @"usagePage":@(kHIDPage_GenericDesktop), @"usage":@(kHIDUsage_GD_Rx), @"min": @0, @"max": @0xFFF},
|
@{@"reportID": @(1), @"size":@12, @"offset":@64, @"usagePage":@(kHIDPage_GenericDesktop), @"usage":@(kHIDUsage_GD_Rx), @"min": @0, @"max": @0xFFF},
|
||||||
@{@"reportID": @(1), @"size":@12, @"offset":@76, @"usagePage":@(kHIDPage_GenericDesktop), @"usage":@(kHIDUsage_GD_Ry), @"min": @0xFFF, @"max": @0},
|
@{@"reportID": @(1), @"size":@12, @"offset":@76, @"usagePage":@(kHIDPage_GenericDesktop), @"usage":@(kHIDUsage_GD_Ry), @"min": @0xFFF, @"max": @0},
|
||||||
|
|
||||||
|
@{@"reportID": @(1), @"size":@16, @"offset":@96, @"usagePage":@(kHIDPage_Sensor), @"min": @0x7FFF, @"max": @-0x7FFF, @"usage":@(kHIDUsage_Snsr_Data_Motion_AccelerationAxisZ)},
|
||||||
|
@{@"reportID": @(1), @"size":@16, @"offset":@112, @"usagePage":@(kHIDPage_Sensor), @"min": @0x7FFF, @"max": @-0x7FFF, @"usage":@(kHIDUsage_Snsr_Data_Motion_AccelerationAxisX)},
|
||||||
|
@{@"reportID": @(1), @"size":@16, @"offset":@128, @"usagePage":@(kHIDPage_Sensor), @"min": @-0x7FFF, @"max": @0x7FFF, @"usage":@(kHIDUsage_Snsr_Data_Motion_AccelerationAxisY)},
|
||||||
|
@{@"reportID": @(1), @"size":@16, @"offset":@144, @"usagePage":@(kHIDPage_Sensor), @"min": @-0x7FFF, @"max": @0x7FFF, @"usage":@(kHIDUsage_Snsr_Data_Motion_AngularVelocityZAxis)},
|
||||||
|
@{@"reportID": @(1), @"size":@16, @"offset":@160, @"usagePage":@(kHIDPage_Sensor), @"min": @-0x7FFF, @"max": @0x7FFF, @"usage":@(kHIDUsage_Snsr_Data_Motion_AngularVelocityXAxis)},
|
||||||
|
@{@"reportID": @(1), @"size":@16, @"offset":@176, @"usagePage":@(kHIDPage_Sensor), @"min": @-0x7FFF, @"max": @0x7FFF, @"usage":@(kHIDUsage_Snsr_Data_Motion_AngularVelocityYAxis)},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -460,8 +460,6 @@ typedef union {
|
|||||||
_iokitToJOY = [NSMutableDictionary dictionary];
|
_iokitToJOY = [NSMutableDictionary dictionary];
|
||||||
|
|
||||||
|
|
||||||
//NSMutableArray *axes3d = [NSMutableArray array];
|
|
||||||
|
|
||||||
_hacks = hacks;
|
_hacks = hacks;
|
||||||
_isSwitch = [_hacks[JOYIsSwitch] boolValue];
|
_isSwitch = [_hacks[JOYIsSwitch] boolValue];
|
||||||
_isDualShock3 = [_hacks[JOYIsDualShock3] boolValue];
|
_isDualShock3 = [_hacks[JOYIsDualShock3] boolValue];
|
||||||
@ -579,6 +577,19 @@ typedef union {
|
|||||||
if (_isSwitch) {
|
if (_isSwitch) {
|
||||||
[self sendReport:[NSData dataWithBytes:(uint8_t[]){0x80, 0x04} length:2]];
|
[self sendReport:[NSData dataWithBytes:(uint8_t[]){0x80, 0x04} length:2]];
|
||||||
[self sendReport:[NSData dataWithBytes:(uint8_t[]){0x80, 0x02} length:2]];
|
[self sendReport:[NSData dataWithBytes:(uint8_t[]){0x80, 0x02} length:2]];
|
||||||
|
|
||||||
|
_lastVendorSpecificOutput.switchPacket.reportID = 0x1; // Rumble and LEDs
|
||||||
|
_lastVendorSpecificOutput.switchPacket.sequence++;
|
||||||
|
_lastVendorSpecificOutput.switchPacket.sequence &= 0xF;
|
||||||
|
_lastVendorSpecificOutput.switchPacket.command = 3; // Set input report mode
|
||||||
|
_lastVendorSpecificOutput.switchPacket.commandData[0] = 0x30; // Standard full mode
|
||||||
|
[self sendReport:[NSData dataWithBytes:&_lastVendorSpecificOutput.switchPacket length:sizeof(_lastVendorSpecificOutput.switchPacket)]];
|
||||||
|
|
||||||
|
_lastVendorSpecificOutput.switchPacket.sequence++;
|
||||||
|
_lastVendorSpecificOutput.switchPacket.sequence &= 0xF;
|
||||||
|
_lastVendorSpecificOutput.switchPacket.command = 0x40; // Enable/disableIMU
|
||||||
|
_lastVendorSpecificOutput.switchPacket.commandData[0] = 1; // Enabled
|
||||||
|
[self sendReport:[NSData dataWithBytes:&_lastVendorSpecificOutput.switchPacket length:sizeof(_lastVendorSpecificOutput.switchPacket)]];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_isDualShock3) {
|
if (_isDualShock3) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user