USBマウスが接続されているときにタッチパッドを自動的に無効にするUdevルール

USBマウスが接続されているときにタッチパッドを自動的に無効にするUdevルール

私はこれに慣れておらず、udevUSBマウスが接続されているときにタッチパッドを無効にするルールを作成したいと思います。

私が思いついた内容は次のとおりです(主に耳で)。

ACTION=="add", SUBSYSTEM=="input", ENV{ID_MODEL}=="USB_Mouse", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/nikitautiu/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/synclient TouchpadOff=0", RUN+="/usr/bin/synclient TouchpadOff=1"

それにもかかわらず、所望の効果は生じなかった。コマンドは問題ないようですが、USBマウスが接続されているとルールは実行されません。

ベストアンサー1

あなたのルールがなぜそんなに複雑なのか理解できませんか?特にこの部分は

ENV{ID_MODEL}=="USB_Mouse",\
ENV{DISPLAY}=":0",\
ENV{XAUTHORITY}="/home/nikitautiu/.Xauthority",\   
ENV{REMOVE_CMD}="/usr/bin/synclient TouchpadOff=0"

最初の行では、ID_MODEL反対だけが見える環境変数を照合します。次の3行は環境変数に値を割り当てます。同様に、ルールが適用されると、実行されたコマンドとしてのみ表示できます。udevUSB_Mouseudevsynclient

このルールは決して適用されないと確信しています(ログファイルを解析してそれを確認できます)。これは、以前に環境で設定していない限り、変数にアクセスできる内容がudevない可能性が高いためです。ID_MODELUSB_MouseID_MODELudev

ほとんどの場合、十分なマウスの動作、ベンダーID、製品IDを一致させることをお勧めします。それからあなたのルールは次のようになります

ACTION=="add", ATTRS{idVendor}=="<idVendor>", ATTRS{idProduct}=="<idProduct>", RUN+="/usr/bin/synclient TouchpadOff=1"

出力を解析して合計を<idVendor>取得できます。<idProduct>

lsusb -v

古典的な形式が与えられた16進値を受け入れることを覚えていません0xffff。私はいつも0xルールの後半を受け入れます。

おすすめ記事