
Ubuntu日本語フォーラム
ログインしていません。
Tablet PC(dynabook Tab S68/N)における画面自動回転の挙動について(Ubuntu 19.04)助力いただけないでしょうか
TOSHIBA dynabook Tab S68/N に Ubuntu Desktop 19.04 をインストールしました。
画面自動回転の挙動に問題(後述)があり、修正を試みたのですが力不足でした。
関連情報お持ちの方、情報提供いただけますと助かります。
■ 環境
・ ハード(タブレットPC)
TOSHIBA dynabook Tab S68/N(Intel Atom Z3735F)
https://dynabook.com/pc/catalog/tablet_ … 8/spec.htm
$ dmesg | grep 'TOSHIBA dynabook' [ 0.000000] DMI: TOSHIBA dynabook Tab S68/N/Type2 - Board Product Name, BIOS 1.40 04/15/2015
・ OS
Ubuntu 19.04 64-bit PC (AMD64) desktop
http://releases.ubuntu.com/19.04/
$ uname -a Linux U1904 5.0.0-13-generic #14-Ubuntu SMP Mon Apr 15 14:59:14 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
■ 問題の詳細
タブレットPCの物理的な向きと、デスクトップ画面の向き及びタッチスクリーンのタッチ位置情報が整合しません。
文章で説明するのが難しいため図を添付します。
・ デスクトップ画面の向き
縦持ち(正立)と、時計回り90度のときのデスクトップの向きが逆
時計周り180度と、時計回り270度のときのデスクトップの向きが逆
・ タッチ位置の認識状況
見た目のタッチ位置はズレていますが、タッチスクリーン上のタッチ座標をデスクトップ画面の座標にマッピングする挙動としては正確なようです。
■ これまで実施したワークアラウンド
・ 問題発生層の切り分け
どのレイヤーが問題なのか切り分けるため、まずはセンサーの出力を確認しました。
タブレットを正立から90度ずつ時計周りに回転させた際のセンサーの出力は以下のとおりでした。
$ monitor-sensor Waiting for iio-sensor-proxy to appear +++ iio-sensor-proxy appeared === Has accelerometer (orientation: left-up) === No ambient light sensor Accelerometer orientation changed: normal Accelerometer orientation changed: right-up Accelerometer orientation changed: bottom-up
この時点でセンサーの出力(または iio-sensor-proxy によるセンサー出力の解釈)が問題であることがわかりました。
・ iio-sensor-proxy 関連の情報収集
https://github.com/hadess/iio-sensor-proxyにドンピシャな内容があったので、
https://github.com/systemd/systemd/blob … ensor.hwdbを参考にしつつ、
udev のルールを書こうとしましたが、ACCEL_LOCATION に何を書けば良いのかまったくわかりません。
追加で情報収集したところ、[url]https://wiki.ubuntu.com/X/InputCoordinateTransformation[url]を見つけ、
アフィン変換の行列に対応しているっぽいことまでは理解しました。
そのうえで、手動で xrandr と input を実行すれば問題ないことまでは確認できています。
縦持ち(正立)時に正常動作することを確認したコマンド
xrandr -o normal xinput set-prop 'Wacom HID 5011 Finger' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
上記コマンド実行後にタブレットを回転させると上記で図示した問題が再発生するので、
やはり udev のルールを書く必要があると考えています。
何か心当たりのある方、情報提供いただけると助かります。
オフライン
前回の投稿から進展ありましたので記載します。
1. デスクトップ画面のズレ → 解決
2. タッチスクリーンのズレ → 未解決
■ デスクトップ画面のズレの修正について
※ 前回の投稿で ACCEL_LOCATION と書いてしまいましたが、 ACCEL_MOUNT_MATRIX の誤りでした。すいません。
https://github.com/systemd/systemd/blob … ensor.hwdbのコメント部分を参照し、以下の手順を実施しました。
$ cat /sys/`udevadm info -q path -n /dev/iio:device0`/../modalias acpi:INVN6500: $ cat /sys/class/dmi/id/modalias dmi:bvnTOSHIBA:bvr1.40:bd04/15/2015:svnTOSHIBA:pndynabookTabS68/N:pvrPS68NSYK9L7JA41:rvnType2-BoardManufacturer:rnType2-BoardProductName:rvrType2-BoardVersion:cvnChassisManufacturer:ct10:cvrChassisVersion: $ su - # cat <<EOF >>/etc/udev/hwdb.d/61-sensor-local.hwdb sensor:modalias:acpi:INVN6500*:dmi:*svnTOSHIBA*:pndynabookTabS68* ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 EOF # systemd-hwdb update # sudo udevadm trigger -v -p DEVNAME=/dev/iio:device0 /sys/devices/platform/80860F41:02/i2c-2/i2c-INVN6500:00/iio:device0 # udevadm info -export-db | grep ACCEL # systemctl reboot
上記手順で、タブレットPCの回転に応じてデスクトップが正しい向きで表示されるようになりました。
■ タッチスクリーンのズレの修正について
前回の投稿から進展していません。
センサーの出力をトリガーに画面を回転させているプロセスがあると考えていますが、探しきれていません。
どなたか情報お持ちの方いらっしゃいましたらご助力いただけないでしょうか。
オフライン
タッチ位置のズレですが、ディスプレイサーバをWaylandにすれば問題無いことがわかりました。
しばらくこの状態で使用してみます。
オフライン