このエントリーをはてなブックマークに追加


USB接続マウスの抜き挿しによりタッチパッドのオン・オフ制御を行うシェルスクリプト

XubuntuをノートPCで使っていたところ、タッチパッドにより誤操作が発生し、USB接続マウスの挿抜により、
タッチパッドを自動的にオン・オフしたいなぁ。と思いシェルスクリプトを作成しました。

適当に作ったサンプルスクリプトなので他にも良い方法があると思います。
シェルスクリプトのサンプルということで活用してください。
また皆様の環境では正常に動作しない可能性もありますので、ご了承ください。


関連記事

使用したディストリビューション

$ lsb_release -cd
Description:	Ubuntu 18.04.2 LTS
Codename:	bionic

マウスの挿抜によりタッチパッドのオン・オフを制御するシェルスクリプト

以下、USB接続マウスの挿抜によりノートPCのタッチパッドをオン・オフするサンプルシェルスクリプトになります。

#!/bin/bash

SLEEP_TIME=2
GREP_WORD='Mouse'

TOUCHPAD='ON'
while :
do
    (lsusb -v | grep $GREP_WORD) > /dev/null 2>&1
    status=$?
    if [ $status -eq 0 -a $TOUCHPAD = 'ON' ]; then
        TOUCHPAD='OFF'
        synclient TouchpadOff=1 > /dev/null 2>&1 # touchpad off
    elif [ $status -ne 0 -a $TOUCHPAD = 'OFF' ]; then
        TOUCHPAD='ON'
        synclient TouchpadOff=0 > /dev/null 2>&1 # touchpad on 
    fi
    sleep $SLEEP_TIME
done

シェルスクリプトの説明

上記のシェルスクリプトについて説明します。

  • whileの無限ループ内で lsusb -v コマンドを発行し、Mouse というキーワードを grep 検索します。
  • grepにより、Mouseというキーワードが見つかった場合、0が返却されるのでstatus変数に格納しています。
  • grepの結果が0(発見)であり、TOUCHPAD変数の状態がONの場合、TOUCHPAD変数をOFFにして、synclientコマンドでタッチパッドを無効にしています。
  • 抜かれた場合の結果は0以外(発見できず)かつTOUCHPAD変数がOFFの場合、TOUCHPAD変数をONにし、synclientコマンドでタッチパッドを有効にしています。
  • SLEEP_TIMEで指定した秒数ウエイトします。
    初期値では2を指定しているので、2秒毎、USB接続マウスのチェックをlsusbコマンドで確認することになります。

synclientコマンドがインストールされていない場合

synclientコマンドがあるパッケージをdpkgコマンドで調べました。

$ dpkg -S `which synclient`
xserver-xorg-input-synaptics: /usr/bin/synclient

synclientコマンドは、xserver-xorg-input-synaptics パッケージにあることがわかりました。
以下のコマンドでインストールすることができます。

sudo apt install xserver-xorg-input-synaptics

インストール後、一度ログアウトしてください。
インストール直後で、synclientコマンドを実行しても動作しない可能性があります。

notify-sendコマンドがインストールされていない場合

notify-sendコマンドがあるパッケージをdpkgコマンドで調べました。

$ dpkg -S `which notify-send`
libnotify-bin: /usr/bin/notify-send

notify-sendコマンドは、libnotify-bin パッケージにあることがわかりました。
以下のコマンドでインストールすることができます。

sudo apt install libnotify-bin

スクリプトの自動実行

本スクリプトを設置し自動実行するようにしてみます。
尚、本スクリプトは ~/bin に保存したと仮定し以下に記します。

  1. 本スクリプトを保存するディレクトリを作成
    mkdir $HOME/bin
  2. 本スクリプトを設置(配置)します。
  3. スクリプトがあることを確認しました。
    $ ls ~/bin/
    touchpad_auto_on_off.sh
  4. パーミッションを変更し動作するようにします。
    chmod +x $HOME/bin/touchpad_auto_on_off.sh
     
    ここで動作確認をしたい場合は、以下のように実行してください。
    $ ~/bin/touchpad_auto_on_off.sh
    Ctrl+Cで停止することもできます。
     
  5. 以下、Xfce(Xubuntu)になりますが、セッションと起動に、今回のスクリプトを設定すればログイン時に自動起動されるようになります。
    • Ubuntuの場合は以下のキャプチャの通り、Dashでsessionと入れれば自動起動設定のアイコンが表示されるので、起動し本スクリプトを追加してください。
      21.png
    • Lubuntuの場合は設定→Lxsessionのデフォルトのアプリケーションの自動立ち上げの設定が行えます。
    1. セッションと起動 の画面です。
      01.png
       
    2. 本シェルスクリプトを追加します。
      02.png
       
    3. 一番下に追加されているのが確認できます。
      03.png
       
    4. 一度、ログアウトし、再度ログインすれば、本スクリプトが自動で実行されます。

notify-sendコマンドを使ってタッチパッドのオンオフを表示する

上記のシェルスクリプトにnotify-sendコマンドを追加し、通知メッセージが表示されるようにしたものになります。

#!/bin/bash

SLEEP_TIME=2
GREP_WORD='Mouse'
# NOTIFY SEND PARAMETER
NOTIFY_TITLE='Touchpad'
NOTIFY_TIME=5000

TOUCHPAD='ON'
while :
do
    notify=''
    (lsusb -v | grep $GREP_WORD) > /dev/null 2>&1
    status=$?
    if [ $status -eq 0 -a $TOUCHPAD = 'ON' ]; then
        TOUCHPAD='OFF'
        synclient TouchpadOff=1 > /dev/null 2>&1 # touchpad off
        notify='Disabled Touchpad.'
    elif [ $status -ne 0 -a $TOUCHPAD = 'OFF' ]; then
        TOUCHPAD='ON'
        synclient TouchpadOff=0 > /dev/null 2>&1 # touchpad on 
        notify='Enabled Touchpad.'
    fi
    if [ "$notify" != "" -a "$DISPLAY" != "" ]; then
        notify-send -t $NOTIFY_TIME "$NOTIFY_TITLE" "$notify"
    fi
    sleep $SLEEP_TIME
done
  • マウス接続時の通知
    11.png
     
  • マウスを抜いたときの通知
    12.png

以上、USB接続マウスの抜き挿しにより、ノートPCのタッチパッドをオン・オフするサンプルシェルスクリプトの紹介でした。



添付ファイル: file21.png 481件 [詳細] file12.png 441件 [詳細] file11.png 447件 [詳細] filetouchpad_auto_on_off_2.sh 487件 [詳細] filetouchpad_auto_on_off_notify.sh [詳細] filetouchpad_auto_on_off.sh 469件 [詳細] file03.png 503件 [詳細] file02.png 435件 [詳細] file01.png 440件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-03-29 (金) 21:35:40