Купил Logitech Gamepad F310 для удаленного управления робототехникой. Я использую Pygame (версия 1.9.1, версия Python 2.7.11+) в Linux Mint (выпуск 18, Сара).
В качестве простого теста для проверки функциональности джойстика я написал этот короткий скрипт, который выводит значения для разных осей:
import pygame
pygame.display.init()
pygame.joystick.init()
pygame.joystick.Joystick(0).init()
# Get the name of the joystick and print it
JoyName = pygame.joystick.Joystick(0).get_name()
print "Name of the joystick:"
print JoyName
# Get the number of axes
JoyAx = pygame.joystick.Joystick(0).get_numaxes()
print "Number of axis:"
print JoyAx
# Print the values for the axes
pygame.event.pump()
print pygame.joystick.Joystick(0).get_axis(0)
print pygame.joystick.Joystick(0).get_axis(1)
print pygame.joystick.Joystick(0).get_axis(2)
print pygame.joystick.Joystick(0).get_axis(3)
Независимо от положения осей, когда я запускаю скрипт, я всегда получаю следующий вывод:
Name of the joystick:
Logitech Gamepad F310
Number of axis:
6
SDL_JoystickGetAxis value:0:
0.0
SDL_JoystickGetAxis value:0:
0.0
SDL_JoystickGetAxis value:0:
0.0
SDL_JoystickGetAxis value:0:
0.0
Насколько я понимаю, вывод "SDL_joystick.Joystick(0).getAxis value" связан с тем, что разработчики сохранили флаг отладки при компиляции исходного кода. Но я не понимаю, почему скрипт возвращает 0 для всех значений оси, если они не находятся в позиции 0.
Я протестировал джойстик с пакетом jstest-gtk. Используя этот пакет, он работает без сбоев. Есть ли ошибка в моем коде?
Я запускал код в Windows, там все работает без сбоев. Есть идеи, почему это не работает в дистрибутиве Linux?