ノートパソコンのキーボードが故障して(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関数が必要です。どの「USB USB Keykoard」文字列で.grepを実行すると、[はい、スペルは間違っていますがリストに表示されます]結果が返されますxinput --list
。 2番目の質問はif関数を書く方法です。
答え1
シェルコマンドの問題がここにあると思います。
| cut -d "[" -f 1
これにより、1つのパラメータのみが残ります14
(数字14の後にいくつかのスペースが続きます。何らかの理由でマークダウンではこれを表示しないことに注意してください)。xinput
探しているパラメータが(14 +いくつかの空白)では14
ないため、コマンドは失敗します。14
代わりに、このセクションではスペースを区切り[
文字として使用してください。
| cut -d " " -f 1