![‘xinput list’ 中的虚拟核心指针的 id 是否始终为‘2’?](https://linux22.com/image/1128221/%E2%80%98xinput%20list%E2%80%99%20%E4%B8%AD%E7%9A%84%E8%99%9A%E6%8B%9F%E6%A0%B8%E5%BF%83%E6%8C%87%E9%92%88%E7%9A%84%20id%20%E6%98%AF%E5%90%A6%E5%A7%8B%E7%BB%88%E4%B8%BA%E2%80%982%E2%80%99%EF%BC%9F.png)
你好,我是 Ubuntu 新手。
我需要知道要在.sh
Chrome 的 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
任务:grep
cut
<some_command> --touch-devices=$(xinput --list | awk '/Virtual core pointer/ { print(substr($5, 4)); exit; }')
良好的编程习惯!根据系统告诉您的内容确定现在正确的数字,而不是硬编码曾经正确的数字。