是否有任何命令行实用程序可以捕获操纵杆按钮按下的情况?

是否有任何命令行实用程序可以捕获操纵杆按钮按下的情况?

这是我的情况:我有一个安装了 Raspbian 的 Raspberry Pi。我还安装了 RetroArch 并连接了一个简单的 USB 游戏手柄。一切正常,但我想对其进行设置,以便按组合键(例如 L1+L2+R1+R2)可以正常退出模拟器,这样我就不必保留键盘了。 RetroArch 正常退出的默认键是 ESC,由于 RetroArch 的限制,我无法将其重新映射到组合键(不过,我可以将其重新映射到单个游戏手柄键)。

所以我想知道是否有任何实用程序可以监听游戏手柄的按键,并在按下特定组合时执行操作(将 ESC 键发送到模拟器)。还是有更简单的方法来实现我想要的,而我只是很愚蠢?

编辑:现在我想起来了,如果我可以使用不同的组合键执行启动模拟器的 bash 脚本,这样我也可以在没有键盘的情况下启动它,那就太好了。

答案1

jstest一下。本文讨论了它的使用,标题为:Flightgear.org - 输入设备。似乎在大多数发行版中默认安装。另外,这里有一个链接jstest手册页

基本上,您必须确定操纵杆被分配给哪个设备。dmesg插入后查看日志文件以获取此信息。可能是类似的东西/dev/input0

$ dmesg | grep Joystick
input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on usb2:3.0 

然后运行这个命令:

$ jstest /dev/input0

答案2

这看起来像是 RetroPie/仿真站的常见问题。

他们在 RetroPie-Setup Wiki 中解决了这个问题: https://github.com/petrockblog/RetroPie-Setup/wiki/EmulationStation#my-emulator-wont-close-through-my-gamepad

它应该只需要编辑您的 RetroArch 配置文件来添加一行:

input_exit_emulator_btn = “6″

其中“6”是游戏手柄按钮标识符。


如果您想让它使用组合键,您可以添加以下行:(来自http://forum.themaister.net/viewtopic.php?pid=1065#p1065

input_enable_hotkey_btn = 1
input_exit_emulator_btn = 2

这使得您需要按按钮 1 来“解锁”热键,并同时按 2 退出。

答案3

将其放入您的.rc文件中(.bashrc如果您是 bash 用户,则source .bashrc)。

joyst () {
    js='/dev/input/js0'
    jscal  $js
    jstest $js
}

答案4

稍微更新jstest答案...使用我刚刚配置的操纵杆作为示例。

在 Debian(以及大多数衍生版本)中jstest是在joystick软件包中。

apt install joystick

然后我们检查内核消息,看看操纵杆设备提供了哪些人类可读的描述。它位于方括号之间。 (我没有找到此消息的稳定规范,因此您可能会在输出中发现更多、更少或没有方括号对。)

dmesg | grep -i joystick

    [14265.976322] logitech 0003:046D:C215.0005: input,
    hidraw4: USB HID v1.10 Joystick [Logitech Logitech 
    Extreme 3D] on usb-0000:22:00.3-1.1.1/input0

(以上输出显示在一行上。为了便于阅读,我已将其分解。)

我们在输入设备集中搜索该字符串。 (该命令在一行上输入;为了便于阅读,这里将其分成两行。)

grep -A 10 -B 2 "Logitech Logitech Extreme 3D" 
/proc/bus/input/devices | grep ^H

    H: Handlers=event13 js1

现在我们知道要向哪个设备提供特殊文件jstest

jstest /dev/input/js1

相关内容