2021-01-30

【備忘録】ファイルをデフォルトアプリで開く

Python のスクリプトから、特定のファイル、例えば Excel のファイルをデフォルトのアプリ(この場合は Excel)で開きたい時、subprocess.Popen'explorer' と、開きたいファイルのパスを渡して開いています。もちろんこれは Windows でスクリプトを実行する場合です。

それでは Linux ではどうするか。Excel ファイルを Linux で扱うことができますが、アプリはもちろん Microsoft Office ではありません。LibreOffice や WPS Office など複数の選択肢があります。デスクトップ環境は GNOME ばかりではないので、'nautilus' に頼るわけにも行きません。さらに、これらのアプリが Flatpak でインストールされている場合もあります。

そんなとき、Freedesktop.org の xdg-open を使えば良いことが判ったので、備忘録としました。

Python でファイルをデフォルトアプリで開く例
        :
        :
    def open_file_with_app(self, name_file):
        path = pathlib.PurePath(name_file)

        if platform.system() == 'Linux':
            app_open = 'xdg-open'
        else:
            app_open = 'explorer'

        subprocess.Popen([app_open, path])
        :
        :

Fedora では xdg-utils というパッケージに収録されています。

[bitwalk@fedora-pc ~]$ rpm -qf /usr/bin/xdg-open
xdg-utils-1.1.3-7.fc33.noarch
[bitwalk@fedora-pc ~]$ rpm -qi xdg-utils
Name        : xdg-utils
Version     : 1.1.3
Release     : 7.fc33
Architecture: noarch
Install Date: 2020年09月30日 16時38分09秒
Group       : Unspecified
Size        : 319997
License     : MIT
Signature   : RSA/SHA256, 2020年07月31日 05時29分30秒, Key ID 49fd77499570ff31
Source RPM  : xdg-utils-1.1.3-7.fc33.src.rpm
Build Date  : 2020年07月31日 05時25分40秒
Build Host  : buildvm-a64-17.iad2.fedoraproject.org
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://portland.freedesktop.org/
Bug URL     : https://bugz.fedoraproject.org/xdg-utils
Summary     : Basic desktop integration functions
Description :
The xdg-utils package is a set of simple scripts that provide basic
desktop integration functions for any Free Desktop, such as Linux.
They are intended to provide a set of defacto standards.
This means that:
*  Third party software developers can rely on these xdg-utils
   for all of their simple integration needs.
*  Developers of desktop environments can make sure that their
   environments are well supported
*  Distribution vendors can provide custom versions of these utilities

The following scripts are provided at this time:
* xdg-desktop-icon      Install icons to the desktop
* xdg-desktop-menu      Install desktop menu items
* xdg-email             Send mail using the user's preferred e-mail composer
* xdg-icon-resource     Install icon resources
* xdg-mime              Query information about file type handling and
                        install descriptions for new file types
* xdg-open              Open a file or URL in the user's preferred application
* xdg-screensaver       Control the screensaver
* xdg-settings          Get various settings from the desktop environment
[bitwalk@fedora-pc ~]$ 

参考サイト

  1. xdg-utils
  2. 【 xdg-open 】コマンド――ファイルをデフォルトアプリケーションで開く:Linux基本コマンドTips(310) - @IT [2019-06-06]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村

2021-01-23

GNOME Shell 40 を触ってみた

GNOME (/ɡəˈnoʊm, ˈnoʊm/) は、Unix ライクの OS のためのフリーでオープンソースのデスクトップ環境です。現行の GNOME 3 は、Fedora、Ubuntu、Red Hat Enterprise Linux、Pop!_OS など多くの Linux ディストリビューションでデフォルトのデスクトップ環境になっています。

Wikipedia より引用、翻訳、編集

現行の GNOME 3 がリリースされたのは 2011 年のことです。このリリースではデスクトップインターフェイスが GNOME パネルから GNOME Shell へ一新されて賛否を呼びましたが、開発は一貫して続けられました。そして、10 年後の今年 2021 年 3 月末に、次のメジャーバージョン GNOME 40 のリリースが予定されています [1][2]。今度のリリースは今までの開発の延長上にあり、大きな変更はなさそうです。

たとえ大きな変更が無くとも、新しい GNOME 40 にいち早く触れたくなり、あれこれ調べてみたところ Fedora Rawhide で GNOME Shell が 40 になっているのを知り、テスト機と仮想環境ににインストールしてみました [3]

ということで、今回使用した OS は下記の通りです。

Fedora Rawhide (Workstation Edition) x86_64

インストール後の GNOME デスクトップは下記のようになっています。

Fedora Rawhide(Fedora 34 Prerelease 版)のデスクトップ画面 (GNOME)

見た目は従来の GNOME Shell 3 と変わらないように見えますが、地味に少しだけ違っています。

オーバービューのワークスペースが水平に移動

アクティビティのオーバービューのワークスペースが水平に配置されるようになりました。

ただ、ブログ記事 [2] で紹介したモックアップとは少し違うような…。まだ予定しているレイアウト全ては実装されていないということなのでしょうか。

Fedora Rawhide をインストールしたあと、「設定(GNOME コントロールセンター)」を確認すると、3.38.3 となっています。

「設定(GNOME コントロールセンター)」が示す GNOME のバージョン

しかしこれは「設定(GNOME コントロールセンター)」のバージョンを示しているようです。

[bitwalk@rawhide ~]$ rpm -q gnome-control-center
gnome-control-center-3.38.3-1.fc34.x86_64
[bitwalk@rawhide ~]$ 

GNOME Shell は 40.0-alpha になっています。今、アルファだと春のリリースに間に合うのかちょっと心配になります。もっとも 4 月末にリリース予定の Fedora 34 の ChangeSet には、GNOME 40 の項目はありません。

[bitwalk@rawhide ~]$ rpm -q gnome-shell
gnome-shell-40.0~alpha.1.1-2.fc34.x86_64
[bitwalk@rawhide ~]$ 

ちなみに gnome-shell パッケージが依存するパッケージを確認すると、gtk3 と gtk4 両方に依存しています。

[bitwalk@rawhide ~]$ rpm -qR gnome-shell
/usr/bin/python3
/usr/bin/sh
  :
  :
gstreamer1(x86-64) >= 1.4.5
gtk3(x86-64) >= 3.15.0
gtk4(x86-64) >= 4.0.0
ibus(x86-64) >= 1.5.2
  :
  :
xdg-desktop-portal-gtk >= 1.8.0
[bitwalk@rawhide ~]$ 

gtk4 は昨年 12 月にリリースされた GTK4 ライブラリですが、今後 GNOME の GTK ライブラリへの依存は段階的に GTK3 から GTK4 へ移行していくのでしょう。

少し遅くなりましたが 今年の抱負

デスクトップ環境を一新した最初の GNOME 3 が 10 年前にリリースされて、ポピュラーな Linux ディストロのデフォルトのデスクトップ環境に採用されながら現在に至っています。GNOME の開発チーム内でどのように活動を維持してきたか判りませんが、一貫したアプローチで 10 年も改善を続けてリリースを行っていることに脱帽しかありません。

これを考えれば、新しい GNOME 40 が今後の 10 年を引き継ぐことになるかもしれません。

デスクトップ PC の OS のデファクトスタンダードといえば、もちろん Microsoft Windows ですが、とても羨ましいと思うことは、毎年改訂を重ねて出版され続ける、いわゆる「定番」の Windows(いまでは Windows 10)入門書があることです。

Linux は変化が早いので、とてもそんな定番の入門書を刊行することは無理だと思っていましたが、考えてみるとデスクトップ環境 GNOME 3 は、もう 10 年も使われています。デスクトップの使い方を紹介するような情報は、はじめて Linux を使ってみようとするユーザーにとっては、いつも重要なことだと思っています。

というわけで、新しい GNOME 40 が長く使い続けられることを想定して、リリース初期の段階から「GNOME 40 の使い方」みたいな入門サイトを作りたいと考えています。どうやったら解りやすい内容になるかを追求し、願わくば GNOME のマイナーチェンジに対応できる息の長いサイトにしたいと思っています。

これが、遅くなりましたが、今年の抱負です。😅

選択の自由がある Linux の世界では、GNOME が標準デスクトップ環境の座に君臨することはないかもしれません。しかし、Red Hat 系 Linux では一貫して GNOME をデフォルトのデスクトップ環境に採用しているので、一定の需要は見込めるだろうと思っています。Windows に較べて Linux のユーザー数は全然少ないので、書籍化は無理でも、せめてホームページで情報公開をしていきます。

参考サイト

  1. Forty - GNOME Wiki!
  2. bitWalk's: GNOME 40 がやってくる [2020-12-20]
  3. Index of /pub/fedora/linux/development/rawhide/Workstation/x86_64/iso
  4. bitWalk's: GTK4 を触ってみた [2020-12-21]
  5. bitWalk's: いまどきの GNOME デスクトップ [2018-06-22]
  6. bitWalk's: GNOME Shell 40 を触ってみた (2) [2021-01-11]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村

2021-01-18

【備忘録】Alien で RPM を DEB パッケージに変換

Alien [1] は、異なる Linux パッケージフォーマット間の変換を行うコンピュータプログラムです。Joey Hess 氏によって作成され、現在は Kyle Barry 氏によってメンテナンスされています。

Wikipedia より引用、翻訳

以前、Debian / Ubuntu の DEB パッケージを Fedora / CentOS 用の RPM パッケージへ変換するために使ったことがありましたが、逆のケースでは使ったことが無かったので、備忘録としました。なお、参考サイト [2] で説明されている内容を参考にさせていただきました。

使用した OS は下記の通りです。

Ubuntu Desktop 20.10 x86_64

Alien のインストール

まず、alien をインストールします。

bitwalk@ubuntu-pc:~$ sudo apt install alien
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu build-essential
  debhelper debugedit dh-autoreconf dh-strip-nondeterminism dpkg-dev dwz fakeroot g++ g++-10 gcc gcc-10 gettext
  intltool-debian libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive-cpio-perl
  libarchive-zip-perl libasan6 libatomic1 libbinutils libc-dev-bin libc6-dev libcroco3 libcrypt-dev libctf-nobfd0
  libctf0 libdebhelper-perl libfakeroot libfile-stripnondeterminism-perl libgcc-10-dev libitm1 liblsan0 libltdl-dev
  liblua5.2-0 libmail-sendmail-perl libnsl-dev librpm8 librpmbuild8 librpmio8 librpmsign8 libsigsegv2 libstdc++-10-dev
  libsub-override-perl libsys-hostname-long-perl libtirpc-dev libtool libtsan0 libubsan1 linux-libc-dev m4 make
  manpages-dev po-debconf rpcsvc-proto rpm rpm-common rpm2cpio
提案パッケージ:
  lintian autoconf-archive gnu-standards autoconf-doc binutils-doc dh-make rpm-i18n debian-keyring g++-multilib
  g++-10-multilib gcc-10-doc gcc-multilib flex bison gcc-doc gcc-10-multilib gcc-10-locales gettext-doc
  libasprintf-dev libgettextpo-dev glibc-doc libtool-doc libstdc++-10-doc gfortran | fortran95-compiler gcj-jdk m4-doc
  make-doc libmail-box-perl elfutils rpmlint rpm2html
以下のパッケージが新たにインストールされます:
  alien autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu build-essential
  debhelper debugedit dh-autoreconf dh-strip-nondeterminism dpkg-dev dwz fakeroot g++ g++-10 gcc gcc-10 gettext
  intltool-debian libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive-cpio-perl
  libarchive-zip-perl libasan6 libatomic1 libbinutils libc-dev-bin libc6-dev libcroco3 libcrypt-dev libctf-nobfd0
  libctf0 libdebhelper-perl libfakeroot libfile-stripnondeterminism-perl libgcc-10-dev libitm1 liblsan0 libltdl-dev
  liblua5.2-0 libmail-sendmail-perl libnsl-dev librpm8 librpmbuild8 librpmio8 librpmsign8 libsigsegv2 libstdc++-10-dev
  libsub-override-perl libsys-hostname-long-perl libtirpc-dev libtool libtsan0 libubsan1 linux-libc-dev m4 make
  manpages-dev po-debconf rpcsvc-proto rpm rpm-common rpm2cpio
アップグレード: 0 個、新規インストール: 67 個、削除: 0 個、保留: 0 個。
45.0 MB のアーカイブを取得する必要があります。
この操作後に追加で 188 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
  :
  :
  :
bitwalk@ubuntu-pc:~$

変換する RPM パッケージ

DEB パッケージへ変換するパッケージには、最近、本ブログで取り組んでいるタッチスクリーンデバイスのファームウェア (Silead MSSL1680) の RPM を例として使います。

wget で下記のようにダウンロードします。

bitwalk@ubuntu-pc:~$ cd ダウンロード
bitwalk@ubuntu-pc:~/ダウンロード$ wget https://osdn.net/downloads/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
--2021-01-18 10:01:44--  https://osdn.net/downloads/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
osdn.net (osdn.net) をDNSに問いあわせています... 202.221.179.17
osdn.net (osdn.net)|202.221.179.17|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://osdn.net/frs/chamber_redir.php?m=jaist&f=%2Fusers%2F27%2F27216%2Fmssl1680-firmware-jumper-ezpad6pro-1.0.gipm [続く]
--2021-01-18 10:01:48--  https://jaist.dl.osdn.jp/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247
c34-2.fc33.noarch.rpm
jaist.dl.osdn.jp (jaist.dl.osdn.jp) をDNSに問いあわせています... 150.65.7.130, 2001:df0:2ed:feed::feed
jaist.dl.osdn.jp (jaist.dl.osdn.jp)|150.65.7.130|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 22953 (22K)
`mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' に保存中

mssl1680-firmware-jumper-ezpa 100%[=================================================>]  22.42K  --.-KB/s    in 0.02s

2021-01-18 10:01:48 (919 KB/s) - `mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' へ保存完了 [22953/22953]

bitwalk@ubuntu-pc:~/ダウンロード$ ls
mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
bitwalk@ubuntu-pc:~/ダウンロード$

DEB パッケージへ変換

fakeroot で管理者を装って alien コマンドを実行します。sudo で実行しても良いのですが、その場合、出力ファイルの所有者が root になります。

bitwalk@ubuntu-pc:~/ダウンロード$ alien mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
Must run as root to convert to deb format (or you may use fakeroot).
bitwalk@ubuntu-pc:~/ダウンロード$ fakeroot alien mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb generated
bitwalk@ubuntu-pc:~/ダウンロード$ ll
-rw-rw-r--  1 bitwalk bitwalk    22953  1月 14 19:54 mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
-rw-r--r--  1 bitwalk bitwalk    14032  1月 18 12:18 mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb
bitwalk@ubuntu-pc:~/ダウンロード$

変換された DEB パッケージのバージョン番号が、RPM パッケージの 2 から 3 へひとつ上がっています。

インストールと確認

apt コマンドでインストールして、問題なくインストールできることを確認します。

bitwalk@ubuntu-pc:~/ダウンロード$ sudo apt install ./mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
注意、'./mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb' の代わりに 'mssl1680-firmware-jumper-ezpad6pro' を選択します
以下のパッケージが新たにインストールされます:
  mssl1680-firmware-jumper-ezpad6pro
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
14.0 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 54.3 kB のディスク容量が消費されます。
取得:1 /home/bitwalk/ダウンロード/mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb mssl1680-firmware-jumper-ezpad6pro all 1.0.git20201209.e247c34-3 [14.0 kB]
以前に未選択のパッケージ mssl1680-firmware-jumper-ezpad6pro を選択しています。
(データベースを読み込んでいます ... 現在 199117 個のファイルとディレクトリがインストールされています。)
.../mssl1680-firmware-jumper-ezpad6pro_1.0.git20201209.e247c34-3_all.deb を展開する準備をしています ...
mssl1680-firmware-jumper-ezpad6pro (1.0.git20201209.e247c34-3) を展開しています...
mssl1680-firmware-jumper-ezpad6pro (1.0.git20201209.e247c34-3) を設定しています ...
bitwalk@ubuntu-pc:~/ダウンロード$ dpkg -L mssl1680-firmware-jumper-ezpad6pro
/.
/usr
/usr/lib
/usr/lib/firmware
/usr/lib/firmware/silead
/usr/lib/firmware/silead/mssl1680.fw
/usr/share
/usr/share/doc
/usr/share/doc/mssl1680-firmware-jumper-ezpad6pro
/usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/README.md
/usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/changelog.Debian.gz
/usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/copyright
bitwalk@ubuntu-pc:~/ダウンロード$

期待通りに元の RPM パッケージと同じファイルがインストールされているばかりでなく、changelog.Debian.gz まで加えられています。😮

bitwalk@ubuntu-pc:~/ダウンロード$ less /usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/changelog.Debian.gz

mssl1680-firmware-jumper-ezpad6pro (1.0.git20201209.e247c34-3) experimental; urgency=low

  * Converted from .rpm format to .deb by alien version 8.95

  - correct firmware license to 'Proprietary'.
  - change firmwre from gsl3692-jumper-ezpad-6-pro.fw to gsl3692-jumper-ezpad-6-pro-b.fw.

 -- Fuhito Suguri   Mon, 18 Jan 2021 12:18:17 +0900
/usr/share/doc/mssl1680-firmware-jumper-ezpad6pro/changelog.Debian.gz (END)

まとめ

今回試したパッケージの中身は、もともとコンパイラによるビルドを必要としない単純な構成です。このぐらいの単純なパッケージであれば、alien を積極的に活用して、RPM や DEB のパッケージ双方をそろえていくことに努めていこうと思いました。

ちなみに、今回 DEB 形式へ変換したパッケージは、下記にアップしました。

mssl1680-firmware-jumper-ezpad6pro パッケージの公開場所

参考サイト

  1. alien-pkg-convert download | SourceForge.net
  2. Alien で rpm を deb に変換してみる - CUBE SUGAR CONTAINER [2016-03-24]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村

2021-01-16

Windows 10 のタブレットモードを知る

恥ずかしながら、Windows 10 にタブレットモードがあることを初めて知りました😅💦。タブレット PC を買って Windows 10 の初期設定をした後、自動的にタブレットモードにならないなんて、タブレット用の OS としてなっとらん!💢と憤慨したところで仕方がありません。

言い訳になりますが、会社から支給されている業務用ノート PC が、日常的に Windows に触れることができるほとんど唯一の機会なので、タブレットモードの存在なんて考えてみたこともありませんでした。そもそも、Windows 8 系で、Windows のタブレット対応は終わったと思い込んでいたことも遠因でしょう。

今や、タブレットデバイスの OS は、iOS と Android が市場のほとんどを占めていますので [1]、Windows のタブレットモードを知らなくたってちっとも困りません。

しかし、新年早々 Amazon.jp の初売りセールで衝動買いした格安の中華タブレット Jumper EZpad Mini 8 を [2]、自信を持って Linux 化できるようになるまでの間、Windows を使い続けることになります。同種のタッチスクリーンコントローラを搭載した別機種で Linux でタッチスクリーンを使えるようにするのに苦戦しており、このタブレット PC の Linux 化には時間が掛かりそうです [3]。この機会に、知らなかった WIndows 10 のタブレットモードなるものを使いこなしたくなりました。

というわけで、いまさらですが、Windows 10 のタブレットモードについて簡単にまとめました。

Windows 10 のタブレットモード

「Windows 10 タブレットモード」をキーワードに Google 検索をすると、二番目にマイクロソフトのサポートサイト [4] が出てきますが、内容はいたってシンプルで、紹介されているスクリーンショットは英語版の Windows 10 のものです。なんだかやる気の無さを感じます。

タブレットモードにするには、タスク バーのアクション センターを選択し、タブレット モードを選択してオンにします。

Windows 10 タブレットモードをオンにする

いかにもタブレット風のアイコン主体の画面になります。

Windows 10 タブレットモードの画面

画面を縦長にすると、ますますタブレットっぽくなりますが、なんだか画面の解像度を有効に使いきっていないような気がします。ディスプレイの解像度は 1200 x 1920 ですが、200% に画面を拡大しているので、実質的には 600 x 960 相当でしょうか。

Windows 10 タブレットモードの画面(縦横回転)

折角の解像度をフルに反映させたいとばかり、100% の画面にするとちょっと見るのが辛い細かさになってしまいます。この解像度で使いたければ、表示フォントのサイズをはじめ、いろいろとカスタマイズしないと使えるようになりません。まあ、Windows は汎用の OS ですので、カスタマイズを必要とするのは仕方がないことかもしれません。

Windows 10 タブレットモードの画面(フル解像度 1200 x 1920)

解像度が 1200 x 1920 のままで、表示フォントを大きくするなど、すぐできるカスタマイズをした結果が下記の画面です。まだ、スタートメニューのバーなど大きくできていないところがあったり、アプリを起動するとフォントサイズが小さかったりと、不具合があるので、一律 175% とか 200% に拡大した方がいいのかもしれません。

少しカスタマイズしした Windows 10 タブレットモードの画面(フル解像度 1200 x 1920)

まとめ

きっと Windows 10 のタブレットモードに慣れていないからでしょう、使いにくいです。iOS や Andoroid はインストールするメーカーが対象のデバイス専用に調整をしていますが、Windows はそうではありません。まあ、カスタマイズする楽しみができたとポジティブに考えてしばらく使ってみます。Linux をインストールすることがゴールですが、すぐには出来ないのでその間は Windows のタブレットモードをいじりまわすのも一興でしょう。

参考サイト

  1. Tablet Operating System Market Share Worldwide | StatCounter Global Stats
  2. bitWalk's: 格安タブレット PC を衝動買い [2021-01-08]
  3. bitWalk's: Linux のタッチスクリーンの設定に苦しむ (3) ~ 一応の成功編 ~ [2021-01-15]
  4. タブレット モードをオンまたはオフにする

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村

2021-01-15

Linux のタッチスクリーンの設定に苦しむ (3) ~ 一応の成功編 ~

このところ Jumper 製の格安 PC、Ezpad 6 Pro のタッチスクリーンを Linux 上で使えるようにするため、あれこれと試行錯誤を続けています。インターネット上で情報検索を続けたところ、xinput_calibrator に代わる xcalibrate という Python のソフトウェアを見つけました。

このソフトウェアでタッチパネルをキャリブレーションしたところ、うまい具合に動作するようになったので、その顛末を纏めました。

使用した OS は下記の通りです。

Fedora 33 (Workstation Edition) x86_64

この手の調査は、あれこれ /usr 以下を管理者権限でいじりまわしたり、本当に必要かどうか判っていないパッケージをむやみにインストールしてしまうことがあります。そのため、結果をまとめるときには、一旦 OS(今回は Fedora)をクリーンインストールしてから、再現性を確認するようにしています。

Fedora インストール後

Fedora をインストールして最初の再起動でアカウントを設定した後、パッケージを更新します。

[bitwalk@localhost ~]$ sudo rpm --rebuilddb
[sudo] bitwalk のパスワード:
[bitwalk@localhost ~]$ sudo dnf -y update
  :
  :
完了しました!
[bitwalk@localhost ~]$ 

再起動する前に、タッチスクリーンのファームウェアをインストールしておきます。

[bitwalk@localhost ~]$ wget https://osdn.net/downloads/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
  :
  :
  :
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 22953 (22K)
`mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' に保存中

mssl1680-firmware-jumper-ezpad 100%[===================================================>]  22.42K  --.-KB/s 時間 0.02s

2021-01-14 21:22:38 (1.01 MB/s) - `mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' へ保存完了 [22953/22953]

[bitwalk@localhost ~]$ sudo dnf install mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
[sudo] bitwalk のパスワード:
Fedora 33 openh264 (From Cisco) - x86_64                                                   1.1 kB/s | 989  B     00:00
Fedora 33 - x86_64 - Updates                                                                12 kB/s | 5.7 kB     00:00
Fedora 33 - x86_64                                                                          14 kB/s | 6.8 kB     00:00
依存関係が解決しました。
===========================================================================================================================
 パッケージ                                Arch          バージョン                              リポジトリー        サイズ
===========================================================================================================================
インストール:
 mssl1680-firmware-jumper-ezpad6pro        noarch        1.0.git20201209.e247c34-2.fc33          @commandline         22 k

トランザクションの概要
===========================================================================================================================
インストール  1 パッケージ

合計サイズ: 22 k
インストール後のサイズ: 40 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
  :
  :
  :

インストール済み:
  mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch

完了しました!
[bitwalk@localhost ~]$ sudo reboot

wget でパッケージを取得できない場合は、パッケージを更新して、古いのを削除した可能性が高いので、下記のサイトにアクセスして該当パッケージをダウンロードしてください。

mssl1680-firmware-jumper-ezpad6pro パッケージの公開場所

再起動後、タッチスクリーンのデバイスでエラーが出ていないかを確認します。(※ ホスト名を変えました。)

[bitwalk@ezpad6 ~]$ dmesg | grep silead_ts
[   19.074747] silead_ts i2c-MSSL1680:00: supply vddio not found, using dummy regulator
[   19.074986] silead_ts i2c-MSSL1680:00: supply avdd not found, using dummy regulator
[   19.079476] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x80360000
[   20.494647] input: silead_ts as /devices/pci0000:00/0000:00:16.3/i2c_designware.3/i2c-3/i2c-MSSL1680:00/input/input25
[bitwalk@ezpad6 ~]$

xcalibrate

いろいろなサイトを検索するうち、xcalibrate - X.org touchscreen calibrator というサイトを見つけました。

xcalibrate の github のサイト [3] では、これは xinput_calibrator の代替品 (alternative) と説明されています。さらに xinput_calibrator には、プリキャリブレーション、タイムアウト、誤クリック検出、フェイクドライバテスト、サイズ変更可能なウィンドウなどの機能がありますが、xcalibrate にはこれらの機能を備えていないとあります。

機能が充実していなくとも、キャリブレーションに成功すれば良いのです。大袈裟ですが、藁をも掴む思いで試してみました。

GNOME on Xorg でログイン

Wayland では、そもそもキャリブレーションができなかったので、前回と同じく、ログイン時にディスプレイサーバを X.Org (GNOME on Xorg) に切り替えて作業をしています。

GNOME on Xorg でログイン

必要な Python モジュールをインストール

xcalibrate の実行に必要な Python モジュールをインストールします。

[bitwalk@ezpad6 ~]$ sudo dnf install python3-numpy python3-tkinter
[sudo] bitwalk のパスワード:
メタデータの期限切れの最終確認: ...
依存関係が解決しました。
========================================================================================================================
 パッケージ                      アーキテクチャー       バージョン                        リポジトリー            サイズ
========================================================================================================================
インストール:
 python3-numpy                   x86_64                 1:1.19.4-1.fc33                   updates                 4.4 M
 python3-tkinter                 x86_64                 3.9.1-1.fc33                      updates                 310 k
依存関係のインストール:
 tk                              x86_64                 1:8.6.10-5.fc33                   fedora                  1.6 M

トランザクションの概要
========================================================================================================================
インストール  3 パッケージ

ダウンロードサイズの合計: 6.3 M
インストール後のサイズ: 27 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
  :
  :
  :

完了しました!
[bitwalk@ezpad6 ~]$

xcalibrate のダウンロードと実行

git コマンドで xcalibrate を clone します。

[bitwalk@ezpad6 ~]$ git clone https://github.com/reinderien/xcalibrate.git
Cloning into 'xcalibrate'...
remote: Enumerating objects: 71, done.
remote: Total 71 (delta 0), reused 0 (delta 0), pack-reused 71
Receiving objects: 100% (71/71), 15.24 KiB | 300.00 KiB/s, done.
Resolving deltas: 100% (31/31), done.
[bitwalk@ezpad6 ~]$

作業ディレクトリを xcalibrate 内に移して実行します。タッチスクリーン (silead_ts) の ID 番号をしている箇所以外はデフォルトのまま Enter で大丈夫です。

[bitwalk@ezpad6 ~]$ cd xcalibrate
[bitwalk@ezpad6 xcalibrate]$ ls
license  readme.md  xcalibrate
[bitwalk@ezpad6 xcalibrate]$ ./xcalibrate
Pointer devices:
  ID                                Name
   4          Virtual core XTEST pointer
   8               Logitech M280/320/275
  11  SIPODEV USB Composite Device Mouse
  15                           silead_ts

Device to calibrate [4]: 15Enter

Old calibration:
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

Calibrate? [y]: Enter
Point count (min 3) [4]: Enter
Disable rotation? [y]: Enter

キャリブレーション用の画面が表示されます。

xcalibrate の実行画面

キャリブレーションが終わると、Test? でもう一度キャリブレーション画面が表示されます。何をテストするのかよく判っていません。😓

/home/bitwalk/xcalibrate/./xcalibrate:206: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.
To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.
  m_transform, residuals, rank, singular = np.linalg.lstsq(m_mouse, m_screen)
New calibration:
[[ 2.08259508  0.         -0.00519201]
 [ 0.         -2.69994727  1.00499014]
 [ 0.          0.          1.        ]]
Quality (should be at least 3): 4.4

Test? [y]: Enter
Point count (min 3) [4]: Enter
Use calibration? [y]: Enter

キャリブレーションが終わると、結果が出力されます。出力は CalibrationMatrix の形式です。

Create a file (for example 99-libinput-ts-calib.conf) in /usr/share/X11/xorg.conf.d/ and put in the following

Section "InputClass"
    Identifier      "calibration"
    MatchProduct    "silead_ts"
    Option          "CalibrationMatrix"  "2.0825950811376504 0.0 -0.005192009916594044 0.0 -2.699947266654949 1.004990136911389 0.0 0.0 1.0"
EndSection

[bitwalk@ezpad6 xcalibrate]$

上記、黄色にマーキングした箇所をコピーして、99-libinput-ts-calib.conf というファイルを作成し、/etc/X11/xorg.conf.d/ へ移します。

[bitwalk@ezpad6 xcalibrate]$ vi 99-libinput-ts-calib.conf
[bitwalk@ezpad6 xcalibrate]$ sudo mv 99-libinput-ts-calib.conf /etc/X11/xorg.conf.d/
[sudo] bitwalk のパスワード:
[bitwalk@ezpad6 xcalibrate]$ sudo reboot

念のため再起動して、ログイン後にタッチスクリーンが期待通りに反応することを確認できました。😃

残る問題

xcalibrate を使って、確かにタッチスクリーンのキャリブレーションができました。しかし、これでメデタシとはいきませんでした。

GDM のログイン画面では、タッチスクリーンに反応するもののキャリブレーションした結果が反映されていないのか、On-Screen Keyboard を表示して入力するところまでたどり着けませんでした。

さらに、On-Screen Keyboard が必要になった時に自動的に画面に表示されるのは良いのですが、なんと入力が反映されません。😭

GNOME の On-Screen Keyboard

画面上のキーには反応しているようなのですが、入力結果に反映されません。入力を必要とするアプリでは致命的な問題です。

なにかの設定が不足しているのか…、皆目判りません。一歩も二歩も前進した気分ですが、現実はまだまだです。試行錯誤は続きます。

参考サイト

  1. bitWalk's: Linux のタッチスクリーンの設定に苦しむ [2021-01-10]
  2. bitWalk's: Linux のタッチスクリーンの設定に苦しむ (2) [2021-01-14]
  3. reinderien/xcalibrate: X.org touchscreen calibrator

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村

2021-01-14

Linux のタッチスクリーンの設定に苦しむ (2)

格安価格に釣られて、正月早々衝動的に買ってしまったタブレット PC、Jumper EZpad Mini 8 ですが、Linux のライブメディアを試した限りでは、肝心のタッチスクリーンを利用できませんでした。タッチスクリーンを利用できなければタブレット PC の利用価値が無いので、無理に Linux をインストールせずに Windows のまま使い続けています。

一方、格安 PC に Linux をインストールするのを趣味としている私は、同じ Jumper 製の格安 PC、Ezpad 6 Pro も持っています。

これは 2-in-1 タイプの 11.6 インチタッチスクリーンタブレットノートパソコンです [1]。Linux の起動ログから、どちらも同じメーカーのタッチスクリーンデバイス (Silead touchscreen controller) が用いられていることが判ったので、まずはこちら (Jumper Ezpad 6 Pro) のタッチスクリーンを使えるようにすることにしました。

前回のブログ記事で [2]、gsl-firmware で公開されているファームウェアのイメージ [3] を利用して、タッチスクリーンが反応するところまで漕ぎ着けました。

ただ、タッチ位置がとんでもなくズレています。しかし、たとえズレていてもキャリブレーションさえできればめでたくタッチスクリーンを使えるようになると思ったのですが、残念ながらキャリブレーションの結果を反映できていません。

うまくいっていない事例を紹介することは心苦しいのですが、情報を整理するため、顛末をまとめました。

使用した OS は下記の通りです。

Fedora 33 (Workstation Edition) x86_64

インストールの詳細は割愛しますが、Fedora (Fedora-Workstation-Live-x86_64-33-1.2.iso) を Jumper Ezpad 6 Pro にクリーンインストールして動作確認をしています。ちなみに、Fedora 33 をインストールした Jumper Ezpad Pro 6 のデバイスの動作状況は下記のようになっています。

WiFi  
オーディオ  
Bluetooth  
カメラ  
タッチスクリーン ×  
画面自動回転 ×  

以前、Fedora 31 beta で試したときは WiFi が安定していませんでしたが [1]、Fedora 33 では問題なさそうです。つまり、タッチスクリーン関係以外は動作しています。

Fedora インストール後

Fedora をインストールして最初の再起動でアカウントを設定した後、パッケージを更新します。

[bitwalk@localhost ~]$ sudo dnf -y update

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] bitwalk のパスワード:
  :
  :
トランザクションの確認を実行中
エラー: トランザクションの確認 vs depsolve:
glibc = 2.32-1.fc33 は (インストール済み)glibc-langpack-ja-2.32-1.fc33.x86_64 に必要とされています
glibc-common = 2.32-1.fc33 は (インストール済み)glibc-langpack-ja-2.32-1.fc33.x86_64 に必要とされています
libreoffice-core(x86-64) = 1:7.0.1.2-5.fc33 は (インストール済み)libreoffice-help-ja-1:7.0.1.2-5.fc33.x86_64 に必要とされています
libreoffice-core(x86-64) = 1:7.0.1.2-5.fc33 は (インストール済み)libreoffice-langpack-ja-1:7.0.1.2-5.fc33.x86_64 に必要とされています
問題を診断するには実行してみてください: 'rpm -Va --nofiles --nodigest'.
RPMDB を破損させたかもしれませんが、'rpm --rebuilddb' を実行することでこの問題を解決できる可能性があります。
ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保存されました。
'dnf clean packages' を実行することでキャッシュパッケージを削除できます。
[bitwalk@localhost ~]$ 

Fedora 33 は rpm のデータベースを Berkeley DB から SQLIte へ移行する過渡期であるためか、最初の更新でかならずエラーになってしまいます。rpm のデータベースを初期化して、再びパッケージを更新します。

[bitwalk@localhost ~]$ sudo rpm --rebuilddb
[sudo] bitwalk のパスワード:
[bitwalk@localhost ~]$ sudo dnf -y update
  :
  :
完了しました!
[bitwalk@localhost ~]$ 

再起動する前に、タッチスクリーンのファームウェア [2] をインストールしておきます。

[bitwalk@localhost ~]$ wget https://osdn.net/downloads/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
--2021-01-14 20:19:34--  https://osdn.net/downloads/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
osdn.net (osdn.net) をDNSに問いあわせています... 202.221.179.17
osdn.net (osdn.net)|202.221.179.17|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://osdn.net/frs/chamber_redir.php?m=osdn&f=%2Fusers%2F27%2F27216%2Fmssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm [続く]
--2021-01-14 20:19:37--  https://osdn.net/frs/chamber_redir.php?m=osdn&f=%2Fusers%2F27%2F27216%2Fmssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
osdn.net:443 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://osdn.dl.osdn.net/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm [続く]
--2021-01-14 20:19:37--  https://osdn.dl.osdn.net/users/27/27216/mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
osdn.dl.osdn.net (osdn.dl.osdn.net) をDNSに問いあわせています... 202.221.179.23
osdn.dl.osdn.net (osdn.dl.osdn.net)|202.221.179.23|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 22953 (22K) [application/x-redhat-package-manager]
`mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' に保存中

mssl1680-firmware-jumper-ezpad6 100%[======================================================>]  22.42K  84.4KB/s 時間 0.3s

2021-01-14 20:19:37 (84.4 KB/s) - `mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm' へ保存完了 [22953/22953]

[bitwalk@localhost ~]$ sudo dnf install mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch.rpm
Fedora 33 openh264 (From Cisco) - x86_64        1.2 kB/s | 989  B     00:00    
Fedora 33 - x86_64 - Updates                     13 kB/s | 7.6 kB     00:00    
Fedora 33 - x86_64 - Updates                    364 kB/s | 445 kB     00:01    
Fedora 33 - x86_64                               11 kB/s | 6.8 kB     00:00    
依存関係が解決しました。
================================================================================
 パッケージ            Arch   バージョン                     リポジトリー サイズ
================================================================================
インストール:
 mssl1680-firmware-jumper-ezpad6pro
                       noarch 1.0.git20201209.e247c34-2.fc33 @commandline  22 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

合計サイズ: 23 k
インストール後のサイズ: 39 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1 
  インストール中   : mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e   1/1 
  scriptletの実行中: mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e   1/1 
  検証             : mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e   1/1 

インストール済み:
  mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-2.fc33.noarch      

完了しました!
[bitwalk@localhost ~]$ reboot

再起動後、タッチスクリーンのデバイスでエラーが出ていないかを確認します。(※ ホスト名を変えました。)

[bitwalk@ezpad6 ~]$ dmesg | grep silead_ts
[    8.819065] silead_ts i2c-MSSL1680:00: supply vddio not found, using dummy regulator
[    8.819137] silead_ts i2c-MSSL1680:00: supply avdd not found, using dummy regulator
[    8.823782] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x80360000
[   10.330015] input: silead_ts as /devices/pci0000:00/0000:00:16.3/i2c_designware.3/i2c-3/i2c-MSSL1680:00/input/input32
[bitwalk@ezpad6 ~]$

xinput_calibrator

xinput_calibrator は X.Org 用の汎用タッチスクリーンキャリブレーションプログラムです。

GNOME on Xorg でログイン

xinput_calibrator の Github のプロジェクトサイト [4] の最終更新は控えめに見て 6 年前、多くのソースの最終更新日は 7 - 8 年前です。

今や、Fedora のディスプレイサーバは X.Org から Wayland へ移行しています。ディスプレイ以外の部分がどうなっているのか、正直判らないので、念のため、ログイン時にディスプレイサーバを X.Org (GNOME on Xorg) に切り替えて作業をすることにしました。

GNOME on Xorg でログイン

xinput コマンドで入力デバイスを確認すると、以下のようになっています。

[bitwalk@ezpad6 ~]$ xinput --list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech M280/320/275                   	id=8	[slave  pointer  (2)]
⎜   ↳ SIPODEV USB Composite Device Mouse      	id=11	[slave  pointer  (2)]
⎜   ↳ silead_ts                               	id=15	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Video Bus                               	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=7	[slave  keyboard (3)]
    ↳ USB 2.0 Camera: USB 2.0 Camera          	id=9	[slave  keyboard (3)]
    ↳ SIPODEV USB Composite Device            	id=10	[slave  keyboard (3)]
    ↳ SIPODEV USB Composite Device Wireless Radio Control	id=12	[slave  keyboard (3)]
    ↳ SIPODEV USB Composite Device System Control	id=13	[slave  keyboard (3)]
    ↳ SIPODEV USB Composite Device Consumer Control	id=14	[slave  keyboard (3)]
    ↳ Intel HID events                        	id=16	[slave  keyboard (3)]
    ↳ Intel HID 5 button array                	id=17	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=18	[slave  keyboard (3)]
    ↳ Logitech M280/320/275                   	id=19	[slave  keyboard (3)]
[bitwalk@ezpad6 ~]$ 

コンパイル環境の準備

まずコンパイル環境を整えます。

C コンパイラ (gcc) と関係ツール、ライブラリをインストールします。

[bitwalk@ezpad6 ~]$ sudo dnf group install "C 開発ツールとライブラリー"
[sudo] bitwalk のパスワード:
メタデータの期限切れの最終確認: ...
依存関係が解決しました。
========================================================================================================================
 パッケージ                   Arch            バージョン                                         リポジトリー     サイズ
========================================================================================================================
group/moduleパッケージをインストール:
 autoconf                     noarch          2.69-34.fc33                                       fedora           666 k
 automake                     noarch          1.16.2-2.fc33                                      fedora           664 k
 bison                        x86_64          3.6.4-3.fc33                                       fedora           860 k
 byacc                        x86_64          1.9.20200330-3.fc33                                fedora            87 k
 ccache                       x86_64          3.7.11-1.fc33                                      fedora           233 k
 cscope                       x86_64          15.9-8.fc33                                        fedora           221 k
 flex                         x86_64          2.6.4-5.fc33                                       fedora           311 k
 gcc-c++                      x86_64          10.2.1-9.fc33                                      updates           11 M
 indent                       x86_64          2.2.12-6.fc33                                      fedora           181 k
 libtool                      x86_64          2.4.6-36.fc33                                      fedora           578 k
 ltrace                       x86_64          0.7.91-39.fc33                                     fedora           140 k
 perf                         x86_64          5.9.9-200.fc33                                     updates          2.3 M
 strace                       x86_64          5.10-1.fc33                                        updates          1.2 M
 valgrind                     x86_64          1:3.16.1-11.fc33                                   updates          4.7 M
依存関係のインストール:
 ed                           x86_64          1.14.2-9.fc33                                      fedora            75 k
 info                         x86_64          6.7-8.fc33                                         fedora           228 k
 libstdc++-devel              x86_64          10.2.1-9.fc33                                      updates          2.0 M
 m4                           x86_64          1.4.18-15.fc33                                     fedora           211 k
 opencsd                      x86_64          0.14.1-2.fc33                                      fedora           266 k
 perl-File-Compare            noarch          1.100.600-465.fc33                                 updates           25 k
 perl-File-Copy               noarch          2.34-465.fc33                                      updates           32 k
 perl-Thread-Queue            noarch          3.14-457.fc33                                      fedora            21 k
 perl-threads                 x86_64          1:2.25-457.fc33                                    fedora            58 k
 perl-threads-shared          x86_64          1.61-457.fc33                                      fedora            44 k
 slang                        x86_64          2.3.2-8.fc33                                       fedora           380 k
 xemacs-filesystem            noarch          21.5.34-38.20200331hge2ac728aa576.fc33             fedora           9.3 k
グループのインストール中:
 C Development Tools and Libraries


トランザクションの概要
========================================================================================================================
インストール  26 パッケージ

ダウンロードサイズの合計: 27 M
インストール後のサイズ: 98 M
これでよろしいですか? [y/N]: y
  :
  :
  :
完了しました!
[bitwalk@ezpad6 ~]$

X.Org 関係の開発用パッケージをインストールします。

[bitwalk@ezpad6 ~]$ sudo dnf install libX11-devel libXext-devel libXi-devel xorg-x11-drv-evdev-devel xorg-x11-drv-libinput-devel
メタデータの期限切れの最終確認: ...
依存関係が解決しました。
========================================================================================================================
 パッケージ                                アーキテクチャー     バージョン                  リポジトリー          サイズ
========================================================================================================================
インストール:
 libX11-devel                              x86_64               1.6.12-3.fc33               updates               941 k
 libXext-devel                             x86_64               1.3.4-4.fc33                fedora                 73 k
 libXi-devel                               x86_64               1.7.10-4.fc33               fedora                100 k
 xorg-x11-drv-evdev-devel                  x86_64               2.10.6-7.fc33               fedora                 10 k
 xorg-x11-drv-libinput-devel               x86_64               0.30.0-3.fc33               fedora                 11 k
依存関係のインストール:
 libXau-devel                              x86_64               1.0.9-4.fc33                fedora                 13 k
 libXfixes-devel                           x86_64               5.0.3-12.fc33               fedora                 12 k
 libxcb-devel                              x86_64               1.13.1-5.fc33               fedora                1.0 M
 xorg-x11-proto-devel                      noarch               2019.1-4.fc33               fedora                261 k

トランザクションの概要
========================================================================================================================
インストール  9 パッケージ

ダウンロードサイズの合計: 2.4 M
インストール後のサイズ: 5.6 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
  :
  :
  :
完了しました!
[bitwalk@ezpad6 ~]$

xinput_calibrator のコンパイル

git コマンドで xinput_calibrator を clone します。

[bitwalk@ezpad6 ~]$ git clone https://github.com/tias/xinput_calibrator.git
Cloning into 'xinput_calibrator'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1369 (delta 0), reused 0 (delta 0), pack-reused 1368
Receiving objects: 100% (1369/1369), 410.16 KiB | 626.00 KiB/s, done.
Resolving deltas: 100% (808/808), done.
[bitwalk@ezpad6 ~]$

clone した xinput_calibrator 内に作業ディレクトリを移し、以下のようにコンパイルします。

[bitwalk@ezpad6 ~]$ cd xinput_calibrator
[bitwalk@ezpad6 xinput_calibrator]$ ./autogen.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
  ;
  ;
config.status: executing libtool commands
[bitwalk@ezpad6 xinput_calibrator]$ make
Making all in src
make[1]: ディレクトリ '/home/bitwalk/xinput_calibrator/src' に入ります
Making all in calibrator
  :
  :
  :
make[1]: 'all-am' に対して行うべき事はありません.
make[1]: ディレクトリ '/home/bitwalk/xinput_calibrator' から出ます
[[bitwalk@ezpad6 xinput_calibrator]$

xinput_calibrator の実行

コンパイルが終わったら、ソースのあるディレクトリ src へ移り、xinput_calibrator を起動します。

[bitwalk@ezpad6 xinput_calibrator]$ cd src
[bitwalk@ezpad6 src]$ ls
Makefile        gui              tester-EvdevTester.o  xinput_calibrator-Evdev.o           xinput_calibrator-main_x11.o
Makefile.am     main_common.cpp  tester-Tester.o       xinput_calibrator-Usbtouchscreen.o  xinput_calibrator-x11.o
Makefile.in     main_gtkmm.cpp   tester-calibrator.o   xinput_calibrator-XorgPrint.o
calibrator      main_x11.cpp     tester-tester.o       xinput_calibrator-calibrator.o
calibrator.cpp  tester           tester.cpp            xinput_calibrator-gui_common.o
calibrator.hh   tester-Evdev.o   xinput_calibrator     xinput_calibrator-main_common.o
[bitwalk@ezpad6 src]$ ./xinput_calibrator

キャリブレーション用の画面が表示されます。

xinput_calibrator の実行画面

左上の赤十字の真ん中をタッチすると、右上、左下、右下と次々赤十字が表示されますので、表示に従って赤十字の真ん中をタッチしていきます。タッチ箇所がズレているとキャリブレーションは左上からやり直しになります。

キャリブレーションが終わると、結果が出力されます。

Calibrating standard Xorg driver "silead_ts"
	current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535
	If these values are estimated wrong, either supply it manually with the --precalib option, or run the 'get_precalib.sh' script to automatically get it (through HAL).
INFO: width=1920, height=1080
	--> Making the calibration permanent <--
  copy the policy below into '/etc/hal/fdi/policy/touchscreen.fdi'
<match key="info.product" contains="silead_ts">
  <merge key="input.x11_options.minx" type="string">16341</merge>
  <merge key="input.x11_options.maxx" type="string">28697</merge>
  <merge key="input.x11_options.miny" type="string">420</merge>
  <merge key="input.x11_options.maxy" type="string">24490</merge>
  <merge key="input.x11_options.swapxy" type="string">0</merge>
  <merge key="input.x11_options.invertx" type="string">0</merge>
  <merge key="input.x11_options.inverty" type="string">0</merge>
</match>
[bitwalk@ezpad6 src]$ 

さて、この出力はなんでしょう?

HAL について

HAL は デーモン型の Hardware Abstract Layer の一種で、デスクトップアプリケーションがハードウェア情報に容易にアクセスできるようにすることで、バスやデバイスの種類に寄らずに各種デバイスを利用できるようにするオープンソースプロジェクトです。これにより、GUI が一貫した形式で全てのリソースをユーザーに提示できます。

HAL はすでに旧態化しており、現在は単にメンテナンスのみが行われている。HALの機能は DeviceKit や udev 等に移行しています。

Wikipedia より引用、編集

調べてみると、Fedora ではずいぶん前に HAL は使われなくなっています [5]

参考サイト [6] で、出力形式のオプションを調べて、次のようにして再び xinput_calibrator を実行しました。

[bitwalk@ezpad6 src]$ ./xinput_calibrator --output-type xorg.conf.d
Calibrating standard Xorg driver "silead_ts"
	current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535
	If these values are estimated wrong, either supply it manually with the --precalib option, or run the 'get_precalib.sh' script to automatically get it (through HAL).
INFO: width=1920, height=1080
	--> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)
Section "InputClass"
	Identifier	"calibration"
	MatchProduct	"silead_ts"
	Option	"MinX"	"11912"
	Option	"MaxX"	"26931"
	Option	"MinY"	"91"
	Option	"MaxY"	"24121"
	Option	"SwapXY"	"0" # unless it was already set to 1
	Option	"InvertX"	"0"  # unless it was already set
	Option	"InvertY"	"0"  # unless it was already set
EndSection
[bitwalk@ezpad6 src]$ 

上記、黄色にマーキングした箇所をコピーして、99-calibration.conf というファイルを作成し、/etc/X11/xorg.conf.d/ へコピーします。

[bitwalk@ezpad6 src]$ vi 99-calibration.conf
[bitwalk@ezpad6 src]$ sudo mv 99-calibration.conf /etc/X11/xorg.conf.d/
[sudo] bitwalk のパスワード:
[bitwalk@ezpad6 src]$ ls /etc/X11/xorg.conf.d/
00-keyboard.conf  99-calibration.conf
[bitwalk@ezpad6 src]$ sudo reboot

再起動後、タッチスクリーンを確認しましたが、依然、あらぬ方向にポップアップメニューが出ます。😭

タッチスクリーンは応答するものの…

試行錯誤はまだまだつづく

xinput_calibrator を使ったキャリブレーションは、残念ながらうまくいっていません。しかし、キャリブレーション中に、タッチした情報を取得しているはずですので、補正が可能であるならば、まだなにか方法があるはずです。インターネット上で探せるタッチスクリーンのキャリブレーションに関する情報はそれほど多くはありませんが、まだ試す余地がありそうですので、うまくいったら「成功編」としてまとめます。

参考サイト

  1. bitWalk's: Jumper EZpad 6 Pro と Fedora 31 beta [2019-10-20]
  2. bitWalk's: Linux のタッチスクリーンの設定に苦しむ [2021-01-10]
  3. onitake/gsl-firmware: Firmware repository for Silead touchscreen controllers
  4. tias/xinput_calibrator: A generic touchscreen calibration program for X.Org
  5. Features/HalRemoval - Fedora Project Wiki
  6. xinput_calibrator(1) - Linux man page

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村