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ルールの後半を受け入れます。

答え2

許可された回答が私のシステムでは機能しないため、以下は両方udevに適用される規則です。gnome/gdm v. 3.16.2udev/systemd v. 226

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", \
ATTRS{bInterfaceSubClass}=="01", ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority", \
ENV{DISPLAY}=":0", ENV{REMOVE_CMD}="/usr/bin/xinput --enable 'SynPS/2 Synaptics TouchPad'", \
RUN+="/usr/bin/xinput --disable 'SynPS/2 Synaptics TouchPad'"

ENV{REMOVE_CMD}デバイスを削除するために使用されるコマンド。
SynPS/2 Synaptics TouchPad報告されたタッチパッドデバイスの名前xinput。私のルールなどで使用されている項目は
ユーザーと一致する必要があります。行の末尾にバックスラッシュが必要です。それ以外の場合、ルールは複数行にまたがることはできません。ラインが好きなら:UIDENV{XAUTHORITY}1000ID
udev

 ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput --enable 'SynPS/2 Synaptics TouchPad'", RUN+="/usr/bin/xinput --disable 'SynPS/2 Synaptics TouchPad'"

答え3

KDE(プラズマ、sddm)に適した他の答えを提供してください。

/etc/udev/rules.d/61-touchpadoff.rules次の内容でルールファイル名を追加しました。

ACTION!="add", GOTO="touchpadoff_end"

KERNEL=="mouse[0-9]", SUBSYSTEM=="input", SUBSYSTEMS=="usb", ENV{DISPLAY}=":0", ENV{REMOVE_CMD}="/usr/bin/xinput --enable 'Elan TouchPad'", RUN+="/usr/bin/xinput --disable 'Elan TouchPad'"

LABEL="touchpadoff_end"

タッチパッドハードウェアの名前を変更する必要があります。これを表示するには、次のコマンドを実行します。% xinput --list

これがKDE愛好家に役立つことを願っています。

関連情報