web-dev-qa-db-ja.com

USBマウス接続でノートブックのタッチパッドを無効にする方法(および最後に遅くする方法)

not have function keyfn そのために:(.

何か案は?たぶん設定やコマンドがありますか?


他の主題は役に立たなかった:

  • gpointing-device-settings(自動無効化設定はチェックされません);
  • kde-config-touchpad(単独ではインストールできません);
  • 使い方がわからないudevd.
8
Esamo

解決策-自動ではない

以下のスクリプトを実行すると、マウスが接続されている場合はタッチパッドを無効にしますが表示され、通知が表示されます。

touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);


if xinput | grep -i "mouse" | grep -i "pointer"

    then xinput set-prop $touchpad_id "Device Enabled" 0 |
         notify-send "Disabling the touchpad..." ""

    else xinput set-prop $touchpad_id "Device Enabled" 1 |
         notify-send "The touchpad is now enabled." ""

fi

私の場合、とにかくマウスの切断時にタッチパッドが有効になりますが、逆の状況も追加されました。スクリプトをファイルに保存し、マウスを接続するたびにUnity LauncherTerminalセクションから実行しています。


高度な

  1. 他のマウス?

    mouseデバイスリストに基づいた名前、"mouse"フラグメントの値を展開して、タッチパッドを無効にするxinputを明確にします。

  2. 怖がっているマウスがエッジからエッジに走りますか?

    マウスに対して追加のコマンドを実行する必要がありました-cursor accelerationを減らすと、接続ごとに狂って10に設定されるためです。実際、しばらくしてから自動検出スクリプトを作成しました(マウスIDと速度のプロップを取得します。cutのパフォーマンスについては知らない)...

    touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);
    mouse_id=$(xinput | grep -i "mouse" | grep -i 'pointer' | cut -f2 | cut -d '=' -f2);
    mouse_prop=$(xinput list-props $mouse_id | grep -i "velocity" | cut -f2 | cut -d '(' -f2 | cut -d ')' -f1 );
    
    
    if xinput | grep -i "mouse" | grep -i "pointer"
    
        then xinput set-prop $touchpad_id "Device Enabled" 0 |
             xinput set-prop $mouse_id $mouse_prop 3 |
             notify-send "Disabling the touchpad..." ""
    
        else xinput set-prop $touchpad_id "Device Enabled" 1 |
             notify-send "The touchpad is now enabled." ""
    
    fi
    

上記を作るために今日多くのことを学んだ:D。


SOMEONE PRO?

  1. 自動化する方法を知っていると便利でしょう。

  2. また、なぜマウス設定が保存されないのか興味があります(2.)。

5
Esamo

ソリューション-自動

エサモと彼の作品に感謝します。

起動時にマウスを接続するための自動トリガーを追加するには:

ファイルを作成します:/etc/udev/rules.d/10-local.rules

このコンテンツを埋めます:($ USERをユーザー名に置き換えます)

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh false"

ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh true"

例:

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh false"

ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh true"

次に、スクリプトを好きな場所に配置します。 〜/ scriptsに配置しました

touchpad_switcher.sh

#!/bin/sh
enabled=$1
touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);

if $enabled
then
  xinput set-prop $touchpad_id "Device Enabled" 1 | notify-send "The touchpad is now enabled." ""
else
  xinput set-prop $touchpad_id "Device Enabled" 0 | notify-send "Disabling the touchpad..." ""
fi

実行許可を追加することを忘れないでください:

chmod +x touchpad_switcher.sh

今すぐ再起動してください! (単にudevを再起動しても機能しないようです...)


その他の便利なもの:

dev rules に関するいくつかの情報

ArchLinuxの例

類似の質問

9
Dawid Drozd

@David Drozdが投稿したものは、Ubuntu 16.04では機能しませんでした。

xinputのトリックのように思えますが、udevでは機能しません。 synclient TouchpadOff=[0|1]のみが機能しました。また、ACTION="remove"は単独では機能しませんでした。

ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'"を追加すると、ようやくわかりました

完全なソリューション:次の行を使用してファイル/etc/udev/rules.d/10-local.rulesを作成します($ USERをユーザー名に置き換えます)

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1' "
1