当从终端运行时我输入:
jstest /dev/input/js1 | grep '^Joystick'
并获取名称。
但是jstest
cmd 是交互式的,需要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 中找到您的信息。