mirror of
https://github.com/marcriera/ddgo-converter.git
synced 2025-04-19 10:29:29 +02:00
Basic ZKNS-001 support
This commit is contained in:
parent
9712d26508
commit
fd032173b8
3 changed files with 61 additions and 2 deletions
|
@ -23,7 +23,6 @@ class InputEvent:
|
|||
BUTTON_LDOOR = 10
|
||||
BUTTON_RDOOR = 11
|
||||
|
||||
|
||||
def __init__(self, type, data):
|
||||
self.type = type
|
||||
self.data = data
|
|
@ -74,6 +74,67 @@ class SwitchGamepad(PhysicalGamepad):
|
|||
input_events.append(InputEvent(InputEvent.EventType(event.value), InputEvent.Button.BUTTON_SELECT))
|
||||
case 313: # PLUS
|
||||
input_events.append(InputEvent(InputEvent.EventType(event.value), InputEvent.Button.BUTTON_START))
|
||||
if event.type == evdev.ecodes.EV_ABS and event.code == evdev.ecodes.ABS_HAT0X:
|
||||
match event.value:
|
||||
case -1: # LEFT
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_SELECT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_LEFT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_RIGHT))
|
||||
case 1: # RIGHT
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_SELECT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_LEFT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_RIGHT))
|
||||
case _: # NONE
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_SELECT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_LEFT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_RIGHT))
|
||||
if event.type == evdev.ecodes.EV_ABS and event.code == evdev.ecodes.ABS_HAT0Y:
|
||||
match event.value:
|
||||
case -1: # UP
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_SELECT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_UP))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_DOWN))
|
||||
case 1: # DOWN
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_SELECT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_UP))
|
||||
input_events.append(InputEvent(InputEvent.EventType.PRESS_BUTTON, InputEvent.Button.BUTTON_DOWN))
|
||||
case _: # NONE
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_SELECT))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_UP))
|
||||
input_events.append(InputEvent(InputEvent.EventType.RELEASE_BUTTON, InputEvent.Button.BUTTON_DOWN))
|
||||
if event.type == evdev.ecodes.EV_ABS and event.code == evdev.ecodes.ABS_Y:
|
||||
match event.value:
|
||||
case 0x0: # EMG
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 9))
|
||||
case 0x5:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 8))
|
||||
case 0x13:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 7))
|
||||
case 0x20:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 6))
|
||||
case 0x2E:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 5))
|
||||
case 0x3C:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 4))
|
||||
case 0x49:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 3))
|
||||
case 0x57:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 2))
|
||||
case 0x65:
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 1))
|
||||
case 0x80: # N
|
||||
input_events.append(InputEvent(InputEvent.EventType.BRAKE_NOTCH, 0))
|
||||
input_events.append(InputEvent(InputEvent.EventType.POWER_NOTCH, 0))
|
||||
case 0x9F:
|
||||
input_events.append(InputEvent(InputEvent.EventType.POWER_NOTCH, 1))
|
||||
case 0xB7:
|
||||
input_events.append(InputEvent(InputEvent.EventType.POWER_NOTCH, 2))
|
||||
case 0xCE:
|
||||
input_events.append(InputEvent(InputEvent.EventType.POWER_NOTCH, 3))
|
||||
case 0xE6:
|
||||
input_events.append(InputEvent(InputEvent.EventType.POWER_NOTCH, 4))
|
||||
case 0xFF: # P5
|
||||
input_events.append(InputEvent(InputEvent.EventType.POWER_NOTCH, 5))
|
||||
return input_events
|
||||
except OSError:
|
||||
return [InputEvent(InputEvent.EventType.ERROR, None)]
|
||||
|
|
|
@ -13,7 +13,6 @@ class GamepadHandler:
|
|||
devices = [InputDevice(path) for path in list_devices()]
|
||||
for device in devices:
|
||||
gamepads.append(gamepad_physical.create_gamepad(device.info.vendor, device.info.product, device.name))
|
||||
gamepads.append(gamepad_physical.create_gamepad(0x0f0d, 0x00c1, "Test gamepad"))
|
||||
return gamepads
|
||||
|
||||
def run_gamepad_emulator(gamepad, emulated_gamepad, stop_event):
|
||||
|
|
Loading…
Add table
Reference in a new issue