この文章について
ラズベリーパイを縦置きタッチスクリーンで使用できるようにしたときのちょっとしたOS設定変更についてのメモです。
環境
- raspberrypi 3b
- RASPBIAN STRETCH WITH DESKTOP
- PN-L401C
- OS起動時にpiユーザで自動的にDesktopログインするようになっています。
ディスプレイ表示の回転
設定ファイル「/boot/config.txt」に起動時のパラメータをセットすることでディスプレイ表示を回転させることができます。
設定できる値は下記です。
設定値 | 回転 |
---|---|
0 | 回転なし |
1 | 時計回りに90° |
2 | 時計回りに180° |
3 | 時計回りに270° |
※「/boot/config.txt」の末尾に回転させたい向きを設定して再起動します。
ディスプレイ表示を時計回りに90°回転する場合
display_hdmi_rotate=1
ディスプレイ表示を時計回りに270°回転する場合
display_hdmi_rotate=3
再起動したら画面表示が回転した状態になっているかと思います。
タッチデバイスの回転
ここまでの手順のままだとタッチデバイスの上下左右がディスプレイの回転に追従できていません。
xinputコマンドにてタッチデバイスの回転を制御することが可能です。
まずは、タッチデバイスのデバイス名を知る必要があるので次のコマンドで確認します。
pi@raspberrypi:~ $ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Sharp Corp. Sharp LT40 TouchPanel id=7 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ UVC Camera (046d:0825) id=6 [slave keyboard (3)]
「Virtual core pointer」のツリーにぶらさがっている「Sharp Corp. Sharp LT40 TouchPanel」が「PN-L401C」なのでこのデバイスに対してxinputの設定をします。
コマンドは次の通り
タッチデバイスを時計回りに90°回転する場合
pi@raspberrypi:~ $ xinput --set-prop 'Sharp Corp. Sharp LT40 TouchPanel' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
タッチデバイスを時計回りに270°回転する場合
pi@raspberrypi:~ $ xinput --set-prop 'Sharp Corp. Sharp LT40 TouchPanel' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
ここまでの手順でディスプレイ表示とタッチデバイス入力の回転ができるようになりました。
デスクトップ開始時にタッチデバイスを設定
最後にデスクトップ環境起動時のxinputでのタッチデバイスを設定をします。
前準備としてさきほどのxinputコマンドを実行するシェルスクリプトを作成しておきます。保存先は「~/rotate_touch_screen.sh」とします。
!/bin/bash
xinput --set-prop 'Sharp Corp. Sharp LT40 TouchPanel' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
※上記は「タッチデバイスを時計回りに90°回転する場合」です。
スクリプト実行できるようにフラグをつけておきます。
pi@raspberrypi:~ $ chmod +x ~/rotate_touch_screen.sh
次に起動時設定にスクリプト実行設定を追加します。設定するファイルは「~/.config/lxsession/LXDE-pi/autostart」で末尾に追加します。
@/home/pi/rotate_touch_screen.sh
再起動してみて、画面の回転、タッチデバイスの回転が問題なければ設定完了です。