如何在 shell/bash 上下文中获取我的操纵杆名称?

如何在 shell/bash 上下文中获取我的操纵杆名称?

当从终端运行时我输入:

jstest /dev/input/js1 | grep '^Joystick'

并获取名称。

但是jstestcmd 是交互式的,需要Ctrl+c才能完成。

我怎样才能将这样的结果放入 shell 脚本中?


xinput -list没有列出我的 USB 操纵杆。我可以使用lsusb:它返回名称但不返回 js 位置。

假设我有 2 个操纵杆(但不知道它们在哪个位置)并且想要校准它们。我的目标是:

if (name("/dev/input/js0")=="Thrustmaster") then
    jscal -s <Thrustmaster params> /dev/input/js0
    jscal -s <FooJs params> /dev/input/js1
elif (name("/dev/input/js0")=="FooJs") then
    jscal -s <FooJs params> /dev/input/js0
    jscal -s <Thrustmaster params> /dev/input/js1
fi

答案1

使用下面的程序,列出的顺序取决于它们插入哪个 USB 插槽。它与我尝试时的 jstest 的顺序一致。

import pygame

pygame.init()

pygame.joystick.init()

joystick_count = pygame.joystick.get_count()

for nr in range(0,joystick_count):
    joystick = pygame.joystick.Joystick(nr)
    print(joystick.get_name())

答案2

jstest /dev/input/js0 | grep Joy > out.txt & sleep 1; pkill jstest

它将 jstest、grep 和输出重定向到后台的一个文件。给它一秒钟时间,然后杀死它(基本上是 Ctrl-c)。您将在 out.txt 中找到您的信息。

相关内容