Я пытаюсь читать с контроллера PS3 в python на Ubuntu, и я не очень повезло. Я начал с драйвера ps3joy из Willow Garage (http://www.ros.org/wiki/ps3joy), который предположительно публикует все важные биты контроллера PS3 в нечто, о чем я никогда не слышал, называется "uinput". По-видимому, это функция Linux, которая позволяет драйверам пользовательского пространства предоставлять системные события. ... Почему для драйвера WG требуется root-доступ, учитывая, что это якобы драйвер пользовательского пространства, я не понимаю, но это не мой вопрос.
В любом случае, в настоящее время я пытаюсь заставить его работать: у меня работает драйвер, и я проверил, что он реагирует на нажатия кнопок на контроллере, но я не знаю, как вытащить любые из этих данных, чтобы я мог их использовать.
Моей первой догадкой было использовать pygame для (надеюсь) чтения из /dev/uinput (я почти уверен, что драйвер отправляет данные):
from pygame import joystick
if not joystick.get_init():
joystick.init()
js = joystick.Joystick(0) # there is only one joystick... even if the driver isn't running(!)
js.init()
print js.get_numbuttons() # perhaps coincidentally correctly prints 17 which is the number of buttons on a PS3 controller
for i in range(js.get_numaxes()):
print js.get_axis(i) # always prints 0, no matter what I'm doing with the controller
но это не сработало. Самая важная часть проблемы заключается в том, что она делает то же самое, если у меня вообще не работает драйвер WG.
Я уверен, что это что-то простое, что я просто не читаю нужную информацию, но поиск в Google не помог мне найти нужную информацию, и я начинаю уставать и отчаиваться.