SDL2看不到操纵杆,但操作系统看到了。

问题描述 投票:0回答:1

我使用的是 Ubuntu 18.0.4.4 LTS. 与一个自制的基于Arduino的USB操纵杆相连。

操作系统在两个方面都能看到这个设备 /dev/input/js0/dev/input/event5 和jstest一起工作。

$ jstest /dev/input/js0 
Driver version is 2.1.0.
Joystick (Arduino LLC Arduino Micro) has 6 axes (X, Y, Z, Rx, Ry, Rz)
and 0 buttons ().
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0 ^C

evtest也可以,作为root。

$ sudo evtest /dev/input/event5 
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x2341 product 0x8037 version 0x101
Input device name: "Arduino LLC Arduino Micro"
Supported events:
  Event type 0 (EV_SYN)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min     -100
      Max      100
      Flat      12
    Event code 1 (ABS_Y)
      Value      0
      Min     -100
      Max      100
      Flat      12
    Event code 2 (ABS_Z)
      Value      0
      Min     -100
      Max      100
      Flat      12
    Event code 3 (ABS_RX)
      Value      0
      Min     -100
      Max      100
      Flat      12
    Event code 4 (ABS_RY)
      Value      0
      Min     -100
      Max      100
      Flat      12
    Event code 5 (ABS_RZ)
      Value      0
      Min     -100
      Max      100
      Flat      12

然而,SDL2的 SDL_NumJoysticks() 总是返回0,尽管SDL2初始化时支持操纵杆和游戏手柄。

        SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER | SDL_INIT_TIMER | SDL_INIT_AUDIO );

Why can't SDL2 在Ubuntu上不能使用工作的devinputjs0设备?

ubuntu sdl-2 hid joystick input-devices
1个回答
1
投票

SDL2 用途 /dev/input/event* 设备文件来访问操纵杆和游戏板,所以你需要对这些文件有读(有时也需要写)权限。大多数Linux发行版都使用特殊的用户组来处理这些文件,如 input debian或gentoo上的group;检查你的权限是什么,然后让你的用户成为合适的组成员(之后重新登录)。

© www.soinside.com 2019 - 2024. All rights reserved.