如果存在 USB 键盘,则关闭笔记本电脑键盘的脚本

如果存在 USB 键盘,则关闭笔记本电脑键盘的脚本

我的笔记本电脑键盘坏了(Esc老是乱按,无法修复),所以我买了一个USB键盘。我想编写一个在登录时运行的脚本,该脚本将检查我的 USB 键盘是否已连接,如果已连接,则禁用我的笔记本电脑键盘。

我想使用 xinput 来做到这一点。对于后台,禁用 ID 14 的设备的正确命令是:

xinput set-int-prop 14 "Device Enabled" 8 0

我有一种我认为可靠的方法来确保我禁用正确的设备,方法是列出、grep、剪切以获取 ID 号,然后在正确的命令中使用它,如下所示:

xinput --list | egrep "AT Translated" | cut -d "=" -f 2| cut -d "[" -f 1 | xargs -I {} xinput set-int-prop {} "Device Enabled" 8 0

然而,即使这样也会产生错误:

unable to find device 14

我不确定为什么会这样(第一个问题),但我想知道如何检查 USB 键盘是否存在?显然我需要一个 if 函数,用于检查是否任何当我从 .grep 字符串“USB USB Keykoard”[是的,拼写错误,但出现在我的列表中] 时,返回结果xinput --list。所以我的第二个问题是,如何编写 if 函数?

答案1

我怀疑你的 shell 命令的问题出在这里:

| cut -d "[" -f 1

这给你留下了一个参数14(数字 14 后跟几个空格;请注意,由于某种原因,markdown 没有显示它)。由于xinput正在查找的参数14不是14(14 加几个空格),因此该命令失败。

相反,在本节中使用空格而不是[作为分隔符:

| cut -d " " -f 1

相关内容