當存在外部鍵盤時如何停用/啟用鍵盤

當存在外部鍵盤時如何停用/啟用鍵盤

我有一台帶有西班牙語 QWERTY 鍵盤的 Ubuntu 20 LTS 筆記型電腦。為了在編碼時輕鬆找到反引號和其他特殊字符,我額外購買了一個外部 USB 鍵盤。

我想做到這一點,以便當連接外部鍵盤時,主鍵盤被禁用(這樣我可以將其放在頂部,而不會按下按鍵導致不需要的輸入),這樣當外部鍵盤斷開連接時,主要功能再次啟用。

我想出了一個作為守護程序運行的腳本,並輪詢以查看外部鍵盤是否已連接。

#!/bin/bash
while true; do

if [ $(xinput -list | grep "SEM USB Keyboard" | wc -l) -gt 0 ]; then
    echo "External keyboard found"
    xinput --disable "AT Translated Set 2 keyboard"
    echo "Main keyboard disabled"
else
    echo "External keyboard NOT found"
    xinput --enable "AT Translated Set 2 keyboard"
    echo "Main keyboard enabled"
fi
echo "Waiting..."
sleep 5
done

這裡有兩個問題。

  1. 該腳本在前台運行時運行良好,但在後台運行時如下所示:
setsid kb-disabler-daemon.sh >/dev/null 2>&1 < /dev/null &

然後,當外接鍵盤斷開時,無法再次啟用主鍵盤。我究竟做錯了什麼?

  1. 有沒有更簡單的方法來做到這一點?也許有一個實用程式應用程式或某種配置可以做到這一點?

相關內容