Когда новый hid_sony драйвер был выпущен, он разделил исходные данные гироскопа/акселерометра на отдельные устройства джойстика. Теперь несколько недель и обновлений обновления позже я нахожу только палки, триггеры и регистры устройства ввода данных кнопок; это не проблема для меня. Потеря осей гироскопа/акселерометра является проблемой. Вы видите pastebin ниже, когда я соединяюсь, Датчики PLAYSTATION(R)3 Controller Motion Sony не регистрируются как устройство джойстика, в то время как Контроллер Sony PLAYSTATION(R)3 действительно становится присвоенным джойстик. Возможно просто файл конфигурации должен быть отредактирован, чтобы позволить устройству гироскопа зарегистрироваться (или в этом отношении принять решение зарегистрировать аналоговые входы кнопки). Я не изменил свою конфигурацию, так как новый sony_hid был выпущен, и у меня сначала было эти два джойстика (физический и гироскоп) на контроллер Dualshock, но я больше не получаю то второе устройство джойстика гироскопа на Dualshock3, который я соединяю или на USB или на Bluetooth. Есть ли некоторое редактирование .config, которое может заставить оси гироскопа регистрироваться, а также (раньше доступный под старым драйвером) аналоговые оси кнопки для тех, кому нужно это также?
4.15.0-38-универсальный # SMP с 41 Ubuntu среда 10 октября 10:59:38 GNU/Linux UTC 2018 x86_64 x86_64 x86_64 https://pastebin.com/zw8W8Ucs
Я нашел Вашу ошибку на панели запуска, но как оказалось, это - 'регрессия' в joydev
драйвер, представленный в
Вход: joydev - помещают в черный список ds3/ds4/udraw датчики движения
Автор не объяснил фиксацию, и я честно не вижу причины позади нее. Я предлагаю, чтобы Вы зарегистрировали ошибку против него.
Существует также незначительная ошибка с evdev узлом устройства, созданным hid_sony
: это не доступный пользователь, таким образом, Датчики Движения не разоблачат в приложениях то использование evdev
устройства вместо joydev
. Если это - Ваша проблема, создайте файл /etc/udev/rules.d/51-ds3-accels-uaccess.rules
со следующим содержанием:
SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="*Motion Sensors", TAG+="uaccess"
То правило будет соответствовать каждому устройству, которое заканчивается в "Датчиках Движения", таким образом, оно также соответствует PS3-контроллерам копии как Gasia/Shanwan (суффикс добавляется hid_sony
драйвер).
Начиная с evdev
устройство присутствует, мы можем работать вокруг joydev
черный список путем создания нового uinput
устройство, которое не будет помещено в черный список и передаст события к нему.
Установка python-evdev
и создайте следующие 3 файла:
~/.local/bin/evdev-forwarder.py:
import evdev, sys
device = evdev.InputDevice(sys.argv[1])
joystick = evdev.UInput.from_device(device, name=(device.name + ' forwarded'))
for event in device.read_loop():
joystick.write_event(event)
~/.config/systemd/user/evdev-forwarder. сервис:
[Unit]
Description=Forwarding evdev device: %I
[Service]
Type=simple
Environment="ARGS=%I"
ExecStart=/usr/bin/python %h/.local/bin/evdev-forwarder.py $ARGS
/etc/udev/rules.d/51-ds3-accels-workaround.rules
KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"
ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="*Motion Sensors", TAG+="uaccess", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}="evdev-forwarder@$env{DEVNAME}.service"
Примечание: вышеупомянутое 51-ds3-accels-uaccess.rules
не необходимо в этом случае.
Используя hid_sony
драйвер, мы никогда не будем, вероятно, возвращать аналоговые кнопки. Существует несколько комментариев в исходном коде, которые указывают на это, например:
Мы используем ту же ось и кнопку, отображающуюся как DS3, который использует спецификацию игрового планшета Linux.
... и...
DS3 обеспечивает аналоговые значения для большинства кнопок и даже для осей ШЛЯПЫ через Указатель GD. О L2 и R2 сообщают среди них также вместо как GD Z / RZ. Перекарта L2 и R2 и игнорирует другие аналоговые 'оси кнопки', поскольку нет никакого хорошего пути к созданию отчетов о них.
Я выделил те части, потому что они - вероятно, причина почему. Спецификация Игрового планшета Linux не упоминает аналоговые кнопки кроме слева/справа триггеров.
Если Вы не измените драйвер сами или используете что-то действительно устаревшее как QtSixA/sixad, Вы не сможете использовать аналоговые события кнопок поверхности.