raspberry pi 公式ディスプレイとraspbian jessie Pixelで、画面の90°回転ができない!!を解決。
lcd_rotate=1,3が効かない! 2は効くのに!!
やりたいことは、画面の90°回転。もしくは270°回転。タッチパネルもあわせてね。
ひょんなことで、Raspberry Pi公式ディスプレイを縦位置で画面表示する必要に迫られまして。
lcd_rotate=1
この設定を/boot/config.txtに追記してあげればすぐに変更できると思ってたのに、そうじゃなかったので、解決策をメモ。
以下の内容は、次のスレッドの議論を元に設定変更を行い、手元の環境で動作を確認しました。
(手元環境: raspberry pi3, raspbian jessie with pixel(どのリリースかわすれた。。。), raspberry pi公式ディスプレイ(たぶん、element14のやつ))
画面を回転させる設定
/boot/config.txt
に、以下の呪文を追記します。
display_rotate=1
再起動後、画面が時計回りに90°回転するはず。
反時計回りに90°(つまり時計回りに270°)回転させる場合は、設定値を3に。
タッチパネルのx,yを回転させる設定
上記ディスプレイの回転では、画面しか回転しないため、タッチパネルがおかしなことになります。
なので、以下のコマンドで、タッチパネルのx,yの軸を変更します。
xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
コマンドラインで上のコマンドを実行すると、すぐに反映されるはず。
起動時に実行するように、スクリプトファイルにして、ログイン時に実行させる
上記コマンドを毎回打つのもアレなので、ホームフォルダにシェルスクリプトファイルを作ります。
#!/bin/sh xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
(display_rotate=3の場合は、そちらのスクリプトを)
で、
chmod 777 rotatetouch.sh で実行権限をつけて、LXDEの自動実行に追記。
/home/pi/rotatetouch.sh
これで、自動的にタッチパネルも入力が正しく行われるようになるはず。
ハマったところ
ネットをさまよっていると、下記コマンドでタッチパネルが回転できる記述が多くありました。
xinput --set-prop 'FT5406 memory based driver' 'Evdev Axis Inversion' 0 1 xinput --set-prop 'FT5406 memory based driver' 'Evdev Axes Swap' 1
が、そんな設定ないよ、と怒られて設定できない模様。
“Coordinate Transformation Matrix”
これで、設定する必要があるみたい。
I can run xinput list and see 'FT5406 memory based driver' in the list and I can xinput list-props 'FT5406 memory based driver' | grep "Coordinate Transformation Matrix" and see the identity matrix I just can't seem to set it with --set-prop