У меня есть дешевый контроллер PS3 и контроллер NEO-GEO X. Они оба обнаружены, например. Fedora 20 и Lubuntu 14.04. Они появляются в lsusb
Bus 001 Device 012: ID 0e8f:0003 GreenAsia Inc. MaxFire Blaze2
Bus 001 Device 016: ID 1292:4e47 Innomedia
Устройства отображаются под /dev/input
. Запуск udevadm на них обоих показывает, что устройство GreenAsia использует драйвер pantherlord
, тогда как другое устройство использует hid-generic
.
Если я запускаю следующий тестовый код, SDL сообщает только об устройстве GreenAsia. Если я отключу его, то будет обнаружено другое устройство. Это известное ограничение SDL или какая-то другая проблема?
// from http://www.libsdl.org/release/SDL-1.2.15/docs/html/guideinput.html
#include "SDL/SDL.h"
int main () {
if (SDL_Init( SDL_INIT_VIDEO | SDL_INIT_JOYSTICK ) < 0)
{
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
exit(1);
}
printf("%i joysticks were found.\n\n", SDL_NumJoysticks() );
printf("The names of the joysticks are:\n");
for( int i=0; i < SDL_NumJoysticks(); i++ )
{
printf(" %s\n", SDL_JoystickName(i));
}
return 0;
}
SDL_JOYSTICK_DEVICE
(':' разделенные пути abs) или 2) построить SDL из исходного кода и пройти черезsrc/linux/SDL_sysjoystick.c:SDL_SYS_JoystickInit()
. Просматривая код, я не понимаю, почему он не работает, но отладка не должна быть слишком сложной, поскольку теперь вы фактически исключили проблемы с драйверами. - person Brian McFarland   schedule 14.04.2015SDL_JOYSTICK_DEVICE
дает мне 3 джойстика в списке! (один из джойстиков указан дважды). Таким образом, обходной путь, по крайней мере, состоит в том, чтобы выяснить, какой джойстик не подхватывается SDL, и установить для него эту переменную среды. - person wreckgar23   schedule 14.04.2015