‘xinput list’ 中的虚拟核心指针的 id 是否始终为‘2’?

‘xinput list’ 中的虚拟核心指针的 id 是否始终为‘2’?

你好,我是 Ubuntu 新手。

我需要知道要在.shChrome 的 shell 文件(扩展名)中使用的虚拟核心指针 ID。我使用命令,--touch-devices=2它工作正常。但我不确定虚拟核心指针值是否始终为 2。(我知道实际的硬件设备 ID 会有所不同,因为Logitech Optical USB Mouse id=9不一定总是 9。)

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech Optical USB Mouse id=9 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]

我想使用通用命令作为

<some_command> --touch-devices=$(xinput --list --id-only 'Virtual core pointer')

但它不起作用。

请建议我该如何处理?

答案1

以下是我如何弄清楚该怎么做的:

xinput --list
xinput --list| grep "Virtual core pointer"
xinput --list| grep "Virtual core pointer" | awk '{print $5}'
xinput --list| grep "Virtual core pointer" | awk '{print $5}' | cut -d= -f2

因此,你的答案是:

<some_command> --touch-devices=$(xinput --list| grep "Virtual core pointer" | awk '{print $5}' | cut -d= -f2)  

管道很有趣,但最好只用于应该做的awk任务:grepcut

<some_command> --touch-devices=$(xinput --list | awk '/Virtual core pointer/ { print(substr($5, 4)); exit; }')

良好的编程习惯!根据系统告诉您的内容确定现在正确的数字,而不是硬编码曾经正确的数字。

相关内容