Я пытаюсь создать виртуальное устройство джойстика для использования в паровых играх на Linux (в частности, Manjaro). Я использую Python для этого проекта и пытался использовать библиотеки evdev и uinput с одинаковым результатом: система, кажется, распознает устройство (/ dev / input / files правильно создана, evdev и jscal все работают правильно, et c), но steam не принимает его в качестве действующего контроллера. Вот код, который я использую для его проверки:
#!/bin/python
import uinput
import time
def main():
events = (
uinput.BTN_JOYSTICK,
uinput.ABS_X + (0, 255, 0, 0),
uinput.ABS_Y + (0, 255, 0, 0),
)
with uinput.Device(events) as device:
for i in range(20):
device.emit(uinput.ABS_X, 5, syn=False)
device.emit(uinput.ABS_Y, 5)
time.sleep(2)
device.emit_click(uinput.BTN_JOYSTICK)
if __name__ == "__main__":
main()
Запустив пар в консоли, я получаю следующий вывод при подключении физического контроллера:
Local Device Found
type: 046d ca04
path: sdl://0
serial_number: - 0
Manufacturer:
Product: dev:xb1:Logitech Logitech Racing Wheel
Release: 110
Interface: -1
!! Steam controller device opened for index 0.
Steam Controller reserving XInput slot 0
Controller 0 connected, configuring it now...
Installing breakpad exception handler for appid(steam)/version(1576908998)
Controller has an Invalid or missing unit serial number, setting to '46d-ca04-655a04e'
!! Controller 0 attributes:
Type: 32
ProductID: 51716
Serial: 46d-ca04-655a04e
Capabilities: 0018414f
Firmware Version: 0
Firmware Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT)
Bootloader Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT)
Opted-in Controller Mask for AppId 413080: f
Loaded Config for Local Selection Path for App ID 413080, Controller 0
[413080]Non-Steam Controller Configs Enabled: 1
!! Controller 0 attributes:
Type: 32
ProductID: 51716
Serial: 46d-ca04-655a04e
Capabilities: 0018414f
Firmware Version: 0
Firmware Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT)
Bootloader Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT)
Fetching Config Sets 0
Однако когда я Создавая виртуальное устройство, я получаю следующий вывод:
Local Device Found
type: 0001 0001
path: sdl://2
serial_number: - 0
Manufacturer:
Product: python-uinput
Release: 0
Interface: -1
Local Device Found
type: 0001 0001
path: sdl://2
serial_number: - 0
Manufacturer:
Product: python-uinput
Release: 0
Interface: -1
Таким образом, steam, похоже, правильно определяет устройство, но не распознает его как действующий игровой контроллер. Я попытался изменить все детали устройства (имя, тип, продукт и т. Д. c), чтобы соответствовать существующему физическому устройству, но безуспешно. Он выдает «Локальное устройство найдено» дважды для виртуального устройства и только один раз для физического, я не уверен, что это актуально или что его вызывает.
Заранее спасибо