ラズパイ (reTerminal) のタッチパネル停止方法

Linux,プログラムRaspberry Pi,reTerminal,シェルスクリプト,タッチパネル

ラズパイでタッチパネルの操作を無効化するときのメモ。ここでは reTerminal というあらかじめタッチパネル付き画面とセットのコンポーネントになっている Raspberry Pi を設定します。

reTerminal の写真
reTerminal の写真

適当に調べて出てくる方法ではうまくいかなかったので、失敗した方法とうまくいった方法を並べておきます。

ダメだった方法

調べるとタッチパネル操作を無効化するためには /boot/config.txtdisable_touchscreen=1 と追記すればよいとわかりました。

disable_touchscreen=1

ところが、この設定を書き込んでから再起動してもタッチパネルが無効になりませんでした。

xinput を使って無効化する

どうやら X Window System の方でタッチを検出しているようです(ドライバの問題でしょうか?)。そのため、X11 を起動した GUI 画面でタッチパネルの入力を無効化する設定を行います。

X11 が起動していないと以下の操作は行えません。したがって ssh などで CUI 操作していると設定の確認などができません。画面で直接操作するか、VNC などを利用する必要があります。

入力デバイス番号の確認

まず、タッチ操作を検出している入力デバイスの id を確認します。ターミナルを起動して xinput コマンドを実行して調べます。

$ xinput list
⎡ Virtual core pointer     id=2	[master pointer  (3)]
⎜ ...
⎜   ↳ seed-tp            	 id=6	[slave  pointer  (2)]
...

色々出てきますが、ここでは seed-tp というのがタッチパネルデバイスのようです(seed の Touch Panel の頭文字だと思われる)。id は 6 です。

タッチパネル入力を無効化

ターミナルで id = 6 のデバイスの入力を無効化するコマンドを実行します。これも xinput を使います

$ xinput disable 6

xinput disable [id] と実行するだけで無効化できます。逆に、タッチパネル操作を復活させたいときは

$ xinput enable 6

と実行することで復活します。

ただ、このままだと X11 を起動するたびにコマンドを打たないと無効化できません。最初から無効化するためには X11 起動時に実行する設定ファイルに書き込んでおく必要があります。

起動時に毎回無効化する設定

先ほどのタッチパネルを無効化するコマンドを X11 起動時に毎回実行するように設定します。

この環境では LXDE をデスクトップ環境に使っているため /etc/xdg/lxsession/LXDE-pi/autostart に書き込みます。以下の行を追記します。

/usr/bin/xinput disable 6

ここでは xinput コマンドのフルパスを与えています。これで毎回起動するたびに無効化コマンドが実行されることで、タッチパネルが反応しないようになりました。

reTerminal 関連の設定

ディスプレイドライバを入れ直したりしたら、タッチ操作がおかしくなってしまったので、それを治すための記事「ラズパイ(reTerminal)の画面ドライバを入れ直し、回転したタッチパネル判定を直す方法」です。

参考資料