« systemd 環境でのキーの遅延時間の設定 | トップページ | Ryzen のノートPC が 意外にいい感じ♪ »

2019年12月22日 (日)

Linuxで画面&タッチスクリーンを90度回転 (Debian10 KDE)

出先で使うのに重宝するレッツのRZシリーズ。
この機種、液晶がタッチスクリーンになっていて、液晶部を180度逆に折りたたむとタブレット化できるんですが、画面を90度回転させる際、タッチスクリーン設定で少々手間取ったのでメモ。画面を回転させず、横長状態でそのまま使うには何の苦労もないのですけれどもね・・・。

263_

ということで、以下作業手順です。なお、作業環境は以下となります。

PC ・・・ Let's RZ
OS ・・・ Debian GNU/Linux 10 KDE

 

【1:画面の回転】 

M_002_r

上図のようにKDEシステム設定から変更可。

 

コマンドで回転作業を行う場合は、

$ xrandr -o right (右に90度回転)
$ xrandr -o left (左に90度回転)
$ xrandr -o inverted (180度回転)
$ xrandr -o normal (デフォルトに戻す)

で、可。
ただし、上記のコマンドの場合、ウィンドウのタイトルバーのところの文字サイズが変わったりすることがあるので、

$ xrandr --output ディスプレイ出力端子名 --rotate right (右に90度回転)
$ xrandr --output ディスプレイ出力端子名 --rotate left (左に90度回転)
$ xrandr --output ディスプレイ出力端子名 --rotate inverted (180度回転)
$ xrandr --output ディスプレイ出力端子名 --rotate normal (デフォルトに戻す)

とすると良いかも。

ちなみに「ディスプレイ出力端子名」は

$ xrandr

と打つと、システムで利用可能な出力端子の名前 (VGA-1, HTMI-1, など) や各端子で利用できる解像度が表示されるので、そこから対象のディスプレイ名を推測する。

M_003_r

ここまでやれば画面の回転作業は終了。

さて、問題はここからで、『タッチスクリーンの設定』がこれに同期しておらず、このままでは、モニタ画面にタッチしてもカーソルが思うように動いてくれない。

ということで、『タッチスクリーンの設定』を以下のように変更する。 

 

【2:タッチスクリーンの回転】 

まず、「xinput」が必要なので、これをインストールする。

# apt install xinput

でインストール。

やり方がわからんな方は「apt-get チュートリアル(apt チュートリアル)」や「KDE パッケージ管理ソフト Apper」を参考に。

インストールが終わったら、

$ xinput list

と入力し、回転させたい対象のデバイスを探す。

M_005_r2

この機種の場合、「eGalax Inc. eGalaxTouch 〜」がタッチスクリーン、「SynPS/2 Synaptics TouchPad」がタッチパッド。今回はタッチスクリーンの方を回転させたいので、「eGalax Inc. eGalaxTouch 〜」の「ID=9」を覚えておく。

あとは以下のコマンドのどれかを打てばよい。

(右に90度回転)
 $ xinput set-prop '<device name>' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
(左に90度回転)
 $ xinput set-prop '<device name>' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
(180度回転)  
  $ xinput set-prop '<device name>' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
(デフォルトに戻す)
  $ xinput set-prop '<device name>' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1

<device name>のところには対象のデバイスのIDを入れる。自分の場合は、今回

$ xinput set-prop '9' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1 (右に90度回転)

とした。

なお、「0,1」などの値については、Retired Colourmanさんの「Linuxでタッチスクリーンを回転して利用する」が詳しい。

原理は行列の回転変換。

ちなみに、右90°回転ならば

『0 1 0 -1 0 0 0 0 1』の方が正しいのでは無いかと思ったが、実際には

『0 1 0 -1 0 1 0 0 1』で良い。というか、こうしないとうまく作動しない。

この値の場合は、画面中央を基準として、座標が変換される。(終)

M_091_

 

 

【3:デフォルトに戻す】 

設定を戻したい場合は、

$ xrandr --output ディスプレイ出力端子名 --rotate normal
$ xinput set-prop '<device name>' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1

とすれば、画面もタッチスクリーンも一緒に戻る。

M_008_

 

 

 

【※ おまけその1】 

画面&タッチスクリーンを回転させるのに毎回このコマンドを打つのは面倒。ということで、スクリプト化して、ワンクリックでできるようにしてしまえ計画。

【シェルスクリプトの作成〜実行】 

《①スクリプト作成》  

vi でも kate でも何のエディタでも良いので、回転化、およびデフォルトに戻すスクリプトを作成。

<右90°回転用>・・・ファイル名は「01_right.sh」とか適当に。

#!/bin/bash
xrandr --output ディスプレイ出力端子名 --rotate right
xinput set-prop '<device name>' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

 

<デフォルト戻し用>・・・ファイル名は「00_def.sh」とか適当に。

#!/bin/bash
xrandr --output ディスプレイ出力端子名 --rotate normal
xinput set-prop '<device name>' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1

 

M_011_r2

 

 

《②スクリプトのパーミッションの変更》  

スクリプトのパーミッションを変更しないとそのままでは動かせないので、パーミッションを「755」に変更する。

$ chmod 755 スクリプトファイル

M_012_r

これでスクリプトが使用できるようになる。

コンソール上からは、

./01_right.sh

と打てばよいし、ワンクリック化するならば、デスクトップやシステムトレイなどにショートカットアイコンを作って動かせば良い。

M_013_r

 

 

【※ おまけその2】 

画面&タッチスクリーンを90度回転させた際、気になってくるものが1つある。

それは壁紙。壁紙もxrandrで一緒に回転してくれるのだが、基本的に壁紙のアスペクト比は「16:9」や「4:3」。90度回転後のディスプレイのアスペクト比は「9:16」や「3:4」となるため、壁紙のアスペクト比が一致せず、選んだ壁紙や設定によっては壁紙が無理やり引き伸ばされたりして、なんかビミョーな感じになってしまう。

解決方法の1つとしては、「回転しても影響の無い壁紙」を選択する。

もう1つは、アスペクト比が「9:16」や「3:4」の画像を用意して、そちらの壁紙に変更する方法がある。

KDE5でコマンドでやる場合、ちょっと長いのだが

qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:////任意の画像ファイル")}'

とすると任意の画像ファイルに変更できる。

これを先のスクリプト内に記述すれば、回転と同時に画像変更してくれる。

M_015_r

M_023

(終)

 

縦長タブレット化いいですね。電車内では新聞を読むようにPDFを読めるし、いざとなったらノートPCとしてすぐ作業できるし。

ただ、タッチスクリーンタイプのノートの液晶ってベゼルの幅が大きくてデザイン的にちょっと残念なんですよね。単体のモニタには幅がスリムなもの出ているので、技術的に不可能では無いとは思うんですが・・・

ちなみにKDEシステム設定からタッチスクリーンの回転や、回転時に壁紙を同時に変更できる設定があると楽なんですが、できないものですかね。

M_024_

 

 

 

 

【参考サイト】

 ・シアターハウス:画面比率について 
 ・wikipedia:画面解像度 
 ・モニタ解像度 図解チャート&一覧 
 ・archwiki:xrandr  
 ・Retired Colourman:Linuxでタッチスクリーンを回転して利用する 
 ・ubuntu wiki:InputCoordinateTransformation 
 ・wikipedia:回転行列 
 ・wikipedia(E):Transformation matrix 
 ・コマンドラインからKDEデスクトップの壁紙を設定するには? 
 ・Ubuntu16.04LTSの画面を自動回転させる 
 ・Linuxのタッチパッドでピンチ・3本指・4本指ジェスチャーを使う 
 ・(英)How to make touch-screen scrolling work in Firefox Quantum? 
    タッチスクリーンでの2本指スクロールがChrome(Chromium)ではデフォで機能するが、firefoxでは一作業必要な話が載ってる

 

 

 

 

 

 

 

 

 

« systemd 環境でのキーの遅延時間の設定 | トップページ | Ryzen のノートPC が 意外にいい感じ♪ »

KDE」カテゴリの記事

モバイルPC」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« systemd 環境でのキーの遅延時間の設定 | トップページ | Ryzen のノートPC が 意外にいい感じ♪ »

2020年7月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ