web-dev-qa-db-ja.com

デルのラップトップでタッチパッドを無効化/有効化/切り替えする方法

Ubuntu 16.04でタッチパッドを微調整しようとしていますが、通常の方法はどれも機能していないようです。例えば.

synclient touchpadOff=1

それでも機能します!

$ xinput set-prop $DEVICE_ID "Device Enabled" 0
$ xinput list-props 15 |head -n2
  Device 'SynPS/2 Synaptics TouchPad':
    Device Enabled (168):   0

...それでも動作します!

設定アプリから無効にできます。しかし、これをキーボードショートカットにマッピングできるようにしたいので、コマンドラインソリューションを探しています。

Gnome-ShellとUnityで回答した場合のボーナスポイント:-)

編集:コメントで要求されたxinputの出力。

$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=12   [slave  pointer  (2)]
⎜   ↳ DLL06E4:01 06CB:7A13 Touchpad             id=13   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=16   [slave  keyboard (3)]

Nb。 $DEVICE_IDに15を使用しました

編集-以下の答えのおかげで、ここに私のトグルスクリプトがあります

あなたは1つのライナーでそれを行うことができますが、この方法でも素敵な通知を受け取ります。これをショートカットキーに添付しましたが、これは魅力的です。皆さんありがとう。

#!/bin/bash
if xinput list-props 13 | grep "Device Enabled (168):.*1" >/dev/null
then
  xinput disable 13
  notify-send -u low -i mouse "Trackpad disabled"
else
  xinput enable 13
  notify-send -u low -i mouse "Trackpad enabled"
fi
7
artfulrobot

次のコマンドを使用して、タッチパッドをオフに切り替えることができます。

xinput disable 13

で有効にする

xinput enable 13

デバイスはpsmouseによって制御されません。 synaptics_i2cによって制御されます。そして、それはデバイス13です。

IDに依存するのではなく、以前に試したように名前で切り替えることもできます。ただし、新しい入力デバイスを接続しない場合、IDはそのままである必要があります。

詳細については、 この回答 をご覧ください。

誤って検出されたデバイスを削除するには、i8042.nopnpカーネルブートパラメーターを追加する必要があります。

9
Pilot6

Gsettingsを使用する

Ifgsettingsで設定を変更できます。通常はこれが推奨されるオプションです。システム設定からタッチパッドを有効/無効にすることができ、システム設定doesgsettingsを使用していることを確信しているため、以下の方法のように見えますデルでも同様です。

タッチパッドを切り替えるスクリプト

14.04

#!/usr/bin/env python3
import subprocess

key = "org.gnome.settings-daemon.peripherals.touchpad" ;val = "touchpad-enabled"
curr = subprocess.check_output(["gsettings", "get", key, val]).decode("utf-8").strip()
newval = "false" if curr == "true" else "true"
subprocess.Popen(["gsettings", "set", key, val, newval])

15.04 +

#!/usr/bin/env python3
import subprocess

key = "org.gnome.desktop.peripherals.touchpad" ;val = "send-events"
curr = subprocess.check_output(["gsettings", "get", key, val]).decode("utf-8").strip()
newval = "disabled" if curr == "'enabled'" else "enabled"
subprocess.Popen(["gsettings", "set", key, val, newval])

それを使用するには

  1. 正しいUbuntuバージョンの上記のスクリプトを空のファイルにコピーし、toggle_touchpad.pyとして保存します
  2. 次のコマンドをショートカットに追加します。

    python3 /path/to/toggle_touchpad.py
    

    システム設定>「キーボード」>「ショートカット」>「カスタムショートカット」を選択します。 「+」をクリックして、コマンドを追加します。

    python3 /path/to/toggle_touchpad.py
    

説明

タッチパッドを無効にするコマンド:

14.04の場合

gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled false

15.04の場合

gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled

現在の状態を読む

スクリプトを使用して、コマンドによって現在の設定を読み取る場合:

gsettings get org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled

(14.04)、または

gsettings get org.gnome.desktop.peripherals.touchpad send-events

(15.04+)

スクリプトに反対の値を設定させ、タッチパッドをtoggleにすることができます。



編集;トグルスクリプトのbashバージョン

完成させるために、OPはpythonスクリプトが機能しているが、pythonを使用したくないことを示しているため、2つのトグルスクリプトのbashバージョンは、

14.04

#!/bin/bash

key="org.gnome.settings-daemon.peripherals.touchpad"
val="touchpad-enabled" ;curr="$key $val"

if [ "$(gsettings get $curr)" == "false" ]
then
 gsettings set $key $val true
else
 gsettings set $key $val false
fi

15.04 +

#!/bin/bash

key="org.gnome.desktop.peripherals.touchpad"
val="send-events" ;curr="$key $val"

if [ "$(gsettings get $curr)" == "'enabled'" ]
then
 gsettings set $key $val disabled
else
 gsettings set $key $val enabled
fi

ショートカットキーの下に配置するには

  • スクリプトをtoggle_touchpad.shとして保存します
  • 次のコマンドをカスタムショートカットの下に配置します。

    /bin/bash /path/to/toggle_touchpad.sh
    
3
Jacob Vlijm

私も16.04です。私は通常、キーボードショートカットに配置する小さなスクリプトを使用します。実行するとタッチパッドがオフになります...しかし、オンになってから数秒後に...

スクリプト:

    #!/bin/sh

STATUS=`synclient | grep TouchpadOff | awk '{ print $3}'`

        if [ $STATUS != 1 ];
        then
                synclient touchpadOff=1;
        else
                synclient touchpadOff=2;
        fi
exit 0

私はあなたの質問を見る前にそれを使用しようとしません...

1
monitor35