2021年09月03日
LinuxでタッチパッドのON/OFFをショートカットキーで可能にする (xubuntu)
梅雨前線っぽい天気図が9月になっても残っているという異常気象で、今日の松山は雨模様。雨でエサを探せないのか単なる雨宿りなのか、近所のスズメたちが大挙してベランダ周辺に集結してて超うるさい金曜日のお昼前、みなさまいかがお過ごしでしょうか。
えー、ワタシは現在暇つぶし用 PC を Windows から Linux に入れ替えてて、仕事以外の大半はそのPCを使っているんですが、やっぱちょこちょこと不便な所があって我慢するか自分で何とかするかの二択を迫られることが多くあります。
今回は今までガマンしてたテキスト入力中に一番不便だったところを何とかしようと思い立ちました。
それは・・・ノートPCで xubuntu を使ってると、どーも入力中にタッチパッドに触れてカーソルがあらぬ方向に飛んでいってヒジョーにウザいという問題。
長時間エディタだけを使う時は仕方がないので設定→マウスのアイコンをダブルクリックしてタッチパッドの有効無効を切り替えていたのだけど、これがどうにもこうにもメンドくさい。
しかも出先でマウス持ってない場合なんかは一旦 OFF にしたら ON にできない(GUI アプリなんでトグルスイッチをマウスクリックしなけりゃ ON にできないため)
Windows10 だったらマウス接続中はタッチパッドを無効にするという設定が出来るのだけど、Linux のマウス設定にはそんな便利な設定項目はハナから存在しない。
これはやはり不便。
で、機能が無いんだったら作ってしまえということで、キーボードショートカットでタッチパッドの ON/OFF をする設定をしてみました。
今回の例はワタシがメインで使っているディストリビューションの xubuntu 上の話なので DE は Xfce4 であり、これにベッタリの設定なので、他のDEを使っているディストリビューションには対応してません。
debian xfce とか LinuxMint xfce とか ubuntu xfce などのDEにXfce4を使っている場合にのみ参考にして下さいませ。
さて実際の作業ですが、とりあえず、ショートカットキーの定義が存在しないか、要らない機能に割りあてられているショートカットキーのうち、タッチパッドのON/OFFを連想しやすそうなキーを考えました。
今回は
[CTRL]+[ALT]+[@] でタッチパッドのOFF
[CTRL]+[ALT]+[P] でタッチパッドのON
とする方向でやってみることに。
以下、方法
「設定」→「キーボード」と進み、「アプリケーションショートカットキー」のタブを開く。
左下の「追加+」ボタンを押し、「コマンド」の箇所に以下を入力
synclient TouchpadOff=1
そして「OK」を押すと、実際のショートカットキーの入力になるので、[CTRL]+[ALT]+[@] と押す。
これでタッチパッドOFFのショートカット登録完了。
次はタッチパッドONのショートカット登録。
同じように「追加+」を押し、今度は
synclient TouchpadOff=0
と入力して「OK」、ショートカットキーの入力は [CTRL]+[ALT]+[P] と押す。
これでイチイチ「マウス」アイコンをいじらなくても素早く切り替えが出来るようになった。
この synclient コマンドは一時的に設定を変えるだけなので、再起動すれば設定内容は無効になる。
常時マウスを繋いでる場合に恒久的に設定を変える場合は「設定」→「マウス」でやっちゃってもいいかも。
また、このショートカットキー登録ではコマンドの他にターミナルで動かすシェルスクリプトを登録することもできます。
その場合は「コマンド」の所に
exo-open --launch TerminalEmulator {シェルスクリプトのフルパス}
と入れて下さい。
より具体的に書くと
exo-open --launch TerminalEmulator /home/user01/testmenu.sh
みたいな感じですね。
忘れやすいコマンドやよく使うけど長ったらしいコマンドなどは、シェルスクリプトで小さなメニューを作っておいてそれに書いておくとなかなか便利です。
まあ、なんでもかんでもメニューに書いてしまうとコマンド入力しなくなってコマンドを忘れちゃうという弊害もありますが(笑)
そんで実際のメニューの書き方ですが、ターミナル内で動作するメニューをシェルスクリプトで書くには whiptail コマンドを使うのが一番簡単で適用範囲も広いと思います。
他にも bash の標準機能である select を使う方法や、dialog というコマンドを使う方法、さらには GUI で動くzenity なんてのもありますが、selectは画面がしょぼいし dialog や zenity は標準では入ってない事のほうが多い。
だけど、whiptail は debian 系であればほとんどデフォルトで入っているのでシェルスクリプトを書くだけですぐに使えます。
whiptail を使ったシェルスクリプトのメニューはこんな感じで書きます。
------< testmenu.sh >------
#!/bin/bash
# テストメニュー
#
selected="0"
while [ "$selected" != "99" ]
do
selected=$(whiptail --notags --nocancel --menu "ShellScript menu" 0 0 0 \
TOP "top コマンド" \
SUDOFM "root でファイルマネージャ起動" \
VER "バージョン確認" \
HW "ハードウェア構成確認" \
SMBST "Sambaステータス確認" \
INSTALL "最近インストールしたパッケージ確認" \
99 "終了" \
3>&1 1>&2 2>&3)
printf '\e[2J';printf '\e[0;0H'
case "$selected" in
"TOP")
top
;;
"SUDOFM")
sudo thunar
;;
"VER")
lsb_release -a ; uname -a
read wait
;;
"HW")
sudo lshw | less
;;
"SMBST")
sudo service smbd status | less
;;
"INSTALL")
cat /var/log/apt/history.log | grep install | less
;;
esac
done
-----------------------
※このブログでは行頭のホワイトスペースが削除されるのでインデント皆無になって見難いけど、コピペすると動くはず。
これをセーブして chmod で実行権限を与えて実行すると
こんなメニューが出てきて、項目選択すると、
とか
とかの実行結果が得られます。
whiptail の詳しい説明は man ページを見て下さい(投げやり)
We wish you well / Whitesnake
えー、ワタシは現在暇つぶし用 PC を Windows から Linux に入れ替えてて、仕事以外の大半はそのPCを使っているんですが、やっぱちょこちょこと不便な所があって我慢するか自分で何とかするかの二択を迫られることが多くあります。
今回は今までガマンしてたテキスト入力中に一番不便だったところを何とかしようと思い立ちました。
それは・・・ノートPCで xubuntu を使ってると、どーも入力中にタッチパッドに触れてカーソルがあらぬ方向に飛んでいってヒジョーにウザいという問題。
長時間エディタだけを使う時は仕方がないので設定→マウスのアイコンをダブルクリックしてタッチパッドの有効無効を切り替えていたのだけど、これがどうにもこうにもメンドくさい。
しかも出先でマウス持ってない場合なんかは一旦 OFF にしたら ON にできない(GUI アプリなんでトグルスイッチをマウスクリックしなけりゃ ON にできないため)
Windows10 だったらマウス接続中はタッチパッドを無効にするという設定が出来るのだけど、Linux のマウス設定にはそんな便利な設定項目はハナから存在しない。
これはやはり不便。
で、機能が無いんだったら作ってしまえということで、キーボードショートカットでタッチパッドの ON/OFF をする設定をしてみました。
今回の例はワタシがメインで使っているディストリビューションの xubuntu 上の話なので DE は Xfce4 であり、これにベッタリの設定なので、他のDEを使っているディストリビューションには対応してません。
debian xfce とか LinuxMint xfce とか ubuntu xfce などのDEにXfce4を使っている場合にのみ参考にして下さいませ。
さて実際の作業ですが、とりあえず、ショートカットキーの定義が存在しないか、要らない機能に割りあてられているショートカットキーのうち、タッチパッドのON/OFFを連想しやすそうなキーを考えました。
今回は
[CTRL]+[ALT]+[@] でタッチパッドのOFF
[CTRL]+[ALT]+[P] でタッチパッドのON
とする方向でやってみることに。
以下、方法
「設定」→「キーボード」と進み、「アプリケーションショートカットキー」のタブを開く。
左下の「追加+」ボタンを押し、「コマンド」の箇所に以下を入力
synclient TouchpadOff=1
そして「OK」を押すと、実際のショートカットキーの入力になるので、[CTRL]+[ALT]+[@] と押す。
これでタッチパッドOFFのショートカット登録完了。
次はタッチパッドONのショートカット登録。
同じように「追加+」を押し、今度は
synclient TouchpadOff=0
と入力して「OK」、ショートカットキーの入力は [CTRL]+[ALT]+[P] と押す。
これでイチイチ「マウス」アイコンをいじらなくても素早く切り替えが出来るようになった。
この synclient コマンドは一時的に設定を変えるだけなので、再起動すれば設定内容は無効になる。
常時マウスを繋いでる場合に恒久的に設定を変える場合は「設定」→「マウス」でやっちゃってもいいかも。
また、このショートカットキー登録ではコマンドの他にターミナルで動かすシェルスクリプトを登録することもできます。
その場合は「コマンド」の所に
exo-open --launch TerminalEmulator {シェルスクリプトのフルパス}
と入れて下さい。
より具体的に書くと
exo-open --launch TerminalEmulator /home/user01/testmenu.sh
みたいな感じですね。
忘れやすいコマンドやよく使うけど長ったらしいコマンドなどは、シェルスクリプトで小さなメニューを作っておいてそれに書いておくとなかなか便利です。
まあ、なんでもかんでもメニューに書いてしまうとコマンド入力しなくなってコマンドを忘れちゃうという弊害もありますが(笑)
そんで実際のメニューの書き方ですが、ターミナル内で動作するメニューをシェルスクリプトで書くには whiptail コマンドを使うのが一番簡単で適用範囲も広いと思います。
他にも bash の標準機能である select を使う方法や、dialog というコマンドを使う方法、さらには GUI で動くzenity なんてのもありますが、selectは画面がしょぼいし dialog や zenity は標準では入ってない事のほうが多い。
だけど、whiptail は debian 系であればほとんどデフォルトで入っているのでシェルスクリプトを書くだけですぐに使えます。
whiptail を使ったシェルスクリプトのメニューはこんな感じで書きます。
------< testmenu.sh >------
#!/bin/bash
# テストメニュー
#
selected="0"
while [ "$selected" != "99" ]
do
selected=$(whiptail --notags --nocancel --menu "ShellScript menu" 0 0 0 \
TOP "top コマンド" \
SUDOFM "root でファイルマネージャ起動" \
VER "バージョン確認" \
HW "ハードウェア構成確認" \
SMBST "Sambaステータス確認" \
INSTALL "最近インストールしたパッケージ確認" \
99 "終了" \
3>&1 1>&2 2>&3)
printf '\e[2J';printf '\e[0;0H'
case "$selected" in
"TOP")
top
;;
"SUDOFM")
sudo thunar
;;
"VER")
lsb_release -a ; uname -a
read wait
;;
"HW")
sudo lshw | less
;;
"SMBST")
sudo service smbd status | less
;;
"INSTALL")
cat /var/log/apt/history.log | grep install | less
;;
esac
done
-----------------------
※このブログでは行頭のホワイトスペースが削除されるのでインデント皆無になって見難いけど、コピペすると動くはず。
これをセーブして chmod で実行権限を与えて実行すると
こんなメニューが出てきて、項目選択すると、
とか
とかの実行結果が得られます。
whiptail の詳しい説明は man ページを見て下さい(投げやり)
We wish you well / Whitesnake
Posted by ROY at 11:58│Comments(4)
│日常
この記事へのコメント
[CTRL]+[ALT]+[DEL]が得意です。(笑)
毎回の力作、飛ばし読みしました。
マニアならでの苦悩と楽しみがあるみたいですね。
頑張れ〜。
毎回の力作、飛ばし読みしました。
マニアならでの苦悩と楽しみがあるみたいですね。
頑張れ〜。
Posted by 酒ちゃん at 2021年09月03日 12:12
酒ちゃん
マニアとか言うとなんだかインモラルな響きが含まれてそうで不本意です(笑)
まあ半分仕事と関係ある事ですし、大目に見てほしいっす。
そろそろこっちは秋イカシーズン到来なんですが、なかなか釣りにもいけなくなってしまったのが残念です〜
マニアとか言うとなんだかインモラルな響きが含まれてそうで不本意です(笑)
まあ半分仕事と関係ある事ですし、大目に見てほしいっす。
そろそろこっちは秋イカシーズン到来なんですが、なかなか釣りにもいけなくなってしまったのが残念です〜
Posted by ROY at 2021年09月03日 13:18
私も、文章が目から入って後頭部に抜けていくような感じでした。
デスクトップの海の画面は、皆さん同じやなーという感想です笑
どこの海ですか?私は大芝島です!
デスクトップの海の画面は、皆さん同じやなーという感想です笑
どこの海ですか?私は大芝島です!
Posted by ポッキーパパ at 2021年09月03日 13:21
ポッキーさん
すんません、ここんとこ釣りネタがないもんで。
みんな海を壁紙にしてるんですねー
さすが釣り仲間(笑)
デスクトップの壁紙はモルディブの海岸です。
すんません、ここんとこ釣りネタがないもんで。
みんな海を壁紙にしてるんですねー
さすが釣り仲間(笑)
デスクトップの壁紙はモルディブの海岸です。
Posted by ROY at 2021年09月04日 02:39