Como identificar o controlador de jogos para o SDL2 no Ubuntu?

0

Estou tentando fazer do Costume Quest (jogo do Double Fine) usar um dos meus gamepads e de acordo com o suporte tudo que eu preciso fazer é adicionar a linha de configuração do SDL2 ao arquivo SDLGamepad.config , no entanto, não consigo encontrar os valores corretos para o UUID. Nenhum dos valores fornecidos por lsusb , dmesg ou udevadm correspondem a exemplos (abaixo) em que o UUID tem 32 caracteres de comprimento (primeira coluna):

030000006d0400001ec2000020200000,Logitech Rumble Gamepad F510(Linux),a:b0,b:b1,x:b2,y:b3,start:b7,back:b6,guide:b8,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,
030000005e0400008e02000014010000,Microsoft Xbox 360 Gamepad (xpad) (Linux),a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,

O que devo usar lá? As entradas do meu arquivo de configuração não funcionam:

0003:0E8F:0012.0016,GreenAsia Inc. USB Wireless 2.4GHz Gamepad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b13,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
0003:0079:0006.0011,DragonRise Inc. Generic USB Joystick,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b13,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,

lsusb output:

Bus 002 Device 049: ID 0079:0006 DragonRise Inc. Generic USB Joystick
Bus 002 Device 048: ID 0e8f:0012 GreenAsia Inc. USB Wireless 2.4GHz Gamepad

==== edit ====

Caso alguém venha aqui apenas para isto, esta é a minha configuração do GreenAsia Inc., trabalhando no Linux usando o xpad:

030000008f0e00001200000010010000,GreenAsia Inc.,a:b2,b:b1,y:b0,x:b3,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,
    
por cprn 28.10.2013 / 00:14

3 respostas

1

Encontrou isso - aqui está um script ruby que não requer nenhum conhecimento do compilador: link

    
por Tak 04.07.2014 / 19:51
1

O GUID é um ID específico do SDL2, não há uma maneira direta de obtê-lo com a ferramenta do sistema. O GUID é construído comprimindo os números de barramento, fornecedor, produto e versão em um único valor, você pode vê-lo aqui:

link

Uma maneira de obtê-lo é lendo-o no SDL. O programa a seguir faz isso, compila com:

gcc -o sdl2-joystick sdl2-joystick.c 'pkg-config --libs --cflags sdl2'

Salve o seguinte como sdl2-joystick.c :

#include <SDL.h>

int main()
{
  SDL_Init(SDL_INIT_JOYSTICK);
  atexit(SDL_Quit);

  int num_joysticks = SDL_NumJoysticks();
  int i;
  for(i = 0; i < num_joysticks; ++i)
  {
    SDL_Joystick* js = SDL_JoystickOpen(i);
    if (js)
    {
      SDL_JoystickGUID guid = SDL_JoystickGetGUID(js);
      char guid_str[1024];
      SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str));
      const char* name = SDL_JoystickName(js);

      int num_axes = SDL_JoystickNumAxes(js);
      int num_buttons = SDL_JoystickNumButtons(js);
      int num_hats = SDL_JoystickNumHats(js);
      int num_balls = SDL_JoystickNumBalls(js);

      printf("%s \"%s\" axes:%d buttons:%d hats:%d balls:%d\n", 
             guid_str, name,
             num_axes, num_buttons, num_hats, num_balls);

      SDL_JoystickClose(js);
    }
  }

  return 0;
}
    
por Grumbel 30.10.2013 / 21:51
0

Já experimentou o Steams Big Picture Mode e configurou o seu controlador? Até onde eu sei, o Steam irá gerar automaticamente a configuração do SDL2 dessa forma e entregá-la ao jogo.

    
por Grumbel 29.10.2013 / 07:22