ubuntu - SDL2 看不到操纵杆,但操作系统可以

标签 ubuntu sdl-2 hid joystick input-devices

我正在使用 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()尽管使用操纵杆和游戏 handle 支持初始化 SDL2,但始终返回 0:
        SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER | SDL_INIT_TIMER | SDL_INIT_AUDIO );

为什么不能SDL2不在 Ubuntu 上使用正常工作的/dev/input/js0 设备?

最佳答案

SDL2 uses /dev/input/event*设备文件来访问操纵杆/游戏 handle ,因此您需要读取(在某些情况下是写入)该文件的权限。大多数 linux 发行版对该文件使用特殊的用户组,例如input在 debian 或 gentoo 上的组;检查您的权限是什么,并使您的用户成为适当组的成员(然后重新登录)。

关于ubuntu - SDL2 看不到操纵杆,但操作系统可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61603693/

相关文章:

C++ SDL 扫雷器在击中炸弹时标记结束游戏

c++ - Opengl 矩形不会渲染

java - 键盘向下箭头的转义序列

macos - 使用 IOKit IOHIDDeviceSetReportWithCallback 写入 USB HID 设备

python - 如何在 ubuntu 中将 xBox kinect 连接到 opencv?

php - 用于在一系列文件中进行 grep 的 Shell 脚本

c++ - SDL2碰撞检测

android - 实用地连接到 HID 键盘设备作为 android 中的输入设备

ubuntu - Ejabberd:安装期间的故障转储

linux - bash 自动完成