mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-19 11:03:01 +00:00
Fix Xbox 360 driver
This commit is contained in:
parent
ee01a8b5a0
commit
7ad1ebd0e8
@ -102,7 +102,7 @@ public class UsbDriverService extends Service implements UsbDriverListener {
|
|||||||
|
|
||||||
private void handleUsbDeviceState(UsbDevice device) {
|
private void handleUsbDeviceState(UsbDevice device) {
|
||||||
// Are we able to operate it?
|
// Are we able to operate it?
|
||||||
if (XboxOneController.canClaimDevice(device)) {
|
if (XboxOneController.canClaimDevice(device) || Xbox360Controller.canClaimDevice(device)) {
|
||||||
// Do we have permission yet?
|
// Do we have permission yet?
|
||||||
if (!usbManager.hasPermission(device)) {
|
if (!usbManager.hasPermission(device)) {
|
||||||
// Let's ask for permission
|
// Let's ask for permission
|
||||||
|
@ -67,10 +67,24 @@ public class Xbox360Controller extends AbstractXboxController {
|
|||||||
super(device, connection, deviceId, listener);
|
super(device, connection, deviceId, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int unsignByte(byte b) {
|
||||||
|
if (b < 0) {
|
||||||
|
return b + 256;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean handleRead(ByteBuffer buffer) {
|
protected boolean handleRead(ByteBuffer buffer) {
|
||||||
// Skip first byte
|
if (buffer.limit() < 14) {
|
||||||
buffer.position(buffer.position() + 1);
|
LimeLog.severe("Read too small: "+buffer.limit());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip first short
|
||||||
|
buffer.position(buffer.position() + 2);
|
||||||
|
|
||||||
// DPAD
|
// DPAD
|
||||||
byte b = buffer.get();
|
byte b = buffer.get();
|
||||||
@ -102,8 +116,8 @@ public class Xbox360Controller extends AbstractXboxController {
|
|||||||
setButtonFlag(ControllerPacket.SPECIAL_BUTTON_FLAG, b & 0x04);
|
setButtonFlag(ControllerPacket.SPECIAL_BUTTON_FLAG, b & 0x04);
|
||||||
|
|
||||||
// Triggers
|
// Triggers
|
||||||
leftTrigger = buffer.get() / 255.0f;
|
leftTrigger = unsignByte(buffer.get()) / 255.0f;
|
||||||
rightTrigger = buffer.get() / 255.0f;
|
rightTrigger = unsignByte(buffer.get()) / 255.0f;
|
||||||
|
|
||||||
// Left stick
|
// Left stick
|
||||||
leftStickX = buffer.getShort() / 32767.0f;
|
leftStickX = buffer.getShort() / 32767.0f;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user