XP-PenなどペンタブのLinux対応について

XP-Penなどの中華製ペンタブもLinuxで使える環境が整いつつあるので、その情報にアクセスしやすいように簡単にまとめました。ほかに情報などお持ちの方(どなたでも書き込めるので)ご自由に追記してください。



萌え萌えmoebuntuの記事へのリンク


参考

液タブ関連のツールの説明などがあります。


最新ドライバの入手先

新しい製品は別途ドライバが必要になるケースがあります。対応ができたものに関してはNeoblastさんのサイトよりダウンロードできるので確認してみてください。主にXP-PEN、UGEEの製品に対応します。


ちょっとだけ宣伝

NeoblastさんのところではAmazonと同価格で販売するそうですので、よければ利用してあげてください。Linux用ドライバなどの開発のサポートにつながります。 by TOY


野良サポート

質問やトラブルなどあれば以下に書き込めばわかる範囲でお答えします。もしかしたらNeoblastさんからのアドバイスも得られるかもしれません。


(質問)XP-PEN ARTIST 15.6 のキャリブレーションができません

お世話になっております。
tapaboy と申します。

xinput_calibrator で XP-PEN ARTIST 15.6 のキャリブレーションを行ったのですが、設定が反映されずに困っています。
解決方法がございましたら、ご教示ください。

  • 症状
スタイラスペンのペン先とマウスポインター位置が一致せず、マウスポインターがちょうどペンで隠れる位置になってしまう。キャリブレーションを行っても、ズレが解消されない。
スタイラスペンを液タブに対して垂直にした状態でも、若干のズレがある。
試しにキャリブレーションの値を極端な数値にしても、反映されていない。

  • xinput_calibrator の実行結果及び行った作業等は以下のとおりです。
(モニターはミラーモードで、スタイラスペンは液タブ側で感知するよう設定済みの状態で実行)

$ xinput_calibrator -v --device 11 の実施結果(左端は行番号)

1 DEBUG: XInputExtension version is 2.3
2 DEBUG: Skipping virtual master devices and devices without axis valuators.
3 DEBUG: Selected device: XP-PEN ARTIST 15.6 Pen stylus
4 DEBUG: Not usbtouchscreen calibrator: Not a usbtouchscreen device
5 DEBUG: Not evdev calibrator: Evdev: invalid "Evdev Axis Calibration" property format
6 Calibrating standard Xorg driver "XP-PEN ARTIST 15.6 Pen stylus"
7 current calibration values: min_x=0, max_x=34419 and min_y=0, max_y=19461
8 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).
9 DEBUG: Name 'XP-PEN ARTIST 15.6 Pen stylus' does not match any in '/sys/class/input/event*/device/name'
10 DEBUG: Adding click 0 (X=250, Y=158)
11 DEBUG: Adding click 1 (X=1685, Y=161)
12 DEBUG: Adding click 2 (X=247, Y=1056)
13 DEBUG: Adding click 3 (X=1687, Y=1056)
14 --> Making the calibration permanent <--
15 DEBUG: Name 'XP-PEN ARTIST 15.6 Pen stylus' does not match any in '/sys/class/input/event*/device/name'
16 copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)
17 Section "InputClass"
18 Identifier "calibration"
19 MatchProduct "!!Name_Of_TouchScreen!!"
20 Option "MinX" "160"
21 Option "MaxX" "34519"
22 Option "MinY" "164"
23 Option "MaxY" "19549"
24 Option "SwapXY" "0" # unless it was already set to 1
25 Option "InvertX" "0" # unless it was already set
26 Option "InvertY" "0" # unless it was already set
27 EndSection
28
29 Change '!!Name_Of_TouchScreen!!' to your device's name in the config above.

29行目に「!!Name_Of_TouchScreen!!」を上記の設定にあるデバイス名に変更しなさいと書いてあるので、19行目を MatchProduct "XP-PEN ARTIST 15.6 Pen stylus" に修正して、17行目から27行目を /usr/share/X11/xorg.conf.d/99-calibration.conf に保存して再起動してもズレが解消されません。

20行目〜23行目を「Option "Calibration" "160 34519 164 19549"」にしたり、MinX MaxX MinY MaxY をそれぞれ Min-X Max-X Min-Y Max-Y にしたりしてみましたが、反映されませんでした。

なお、今回の不具合に関係あるのかわかりませんが、メッセージの15行目に「XP-PEN ARTIST 15.6 Pen stylus というのは /sys/class/input/event*/device/name のいずれにも一致しません。」という意味のことが書いてありました。
そこで /sys/class/input/ フォルダを見てみると、 event で始まるフォルダが event0〜event22 の23個あり、ひとつずつ当たっていったところ、 /sys/class/input/event5/device/name に「XP-PEN ARTIST 15.6 Pen」と記述してあり、「stylus」が抜けていました。
試しに、99-calibration.conf の MatchProduct を「XP-PEN ARTIST 15.6 Pen」に変えてみたりしましたが、状況に変化はありませんでした。

追記:メッセージを読み返してみると、4行目、5行目にも怪しげなことが書いてありますね。

NEOBLASTの平野です。
現在、標準のカーネルモジュールでは、Artist15.6は、対応していないのですが、
どのように動作させているのでしょうか?
スクリプト又はXinputSubsystemでなにかしらの設定で、動作させていると思われます。
このあたりが、わからないので、正確な回答ができないかも知れません。
弊社のお客様は、年齢45歳以上の方ばかりなので、なにもしないでも、
動作するように、現在、試験的ですが、Digimendのチームに所属して、
カーネルモジュールを作成しております。
よろしければ、使ってください。

さて、
標準カーネルモジュールが未対応をArtist15.6をどのように動作させているかは、
不明ですが、上記の情報だけで、考えます。

A.ドライバの件
4 DEBUG: Not usbtouchscreen calibrator: Not a usbtouchscreen device
5 DEBUG: Not evdev calibrator: Evdev: invalid "Evdev Axis Calibration" property format
6 Calibrating standard Xorg driver "XP-PEN ARTIST 15.6 Pen stylus"
ここから見ますと、
evdevは、使われていないようです。

9 DEBUG: Name 'XP-PEN ARTIST 15.6 Pen stylus' does not match any in '/sys/class/input/event*/device/name'
19 MatchProduct "!!Name_Of_TouchScreen!!"
から見ますと、
inputclassには、登録されていないようです。
おそらく、
Section "InputClass"
      Identifier "libinput touchscreen catchall"
       MatchIsTouchscreen "on"
       MatchDevicePath "/dev/input/event*"
       Driver "libinput"
EndSection
を使用しているように思われます。

となると、Arist15.6は、Stylusとして動作しているのではなく、
touchscreenとして、動作しているように思われます。

当然、
MatchProduct "XP-PEN ARTIST 15.6 Pen stylus"
は、無理でしょう。
MatchUSBID "28bd:000c"
を使用されれば、認識すると思われます。


B.Calibrationの動作について

$ xinput_calibrator -v --precalib --device 11
をおこなうとHIDレポートディスクリプタの信号を大きく乖離しているかの
確認ができます。

7 current calibration values: min_x=0, max_x=34419 and min_y=0, max_y=19461
を実際に、Artist15.6のReportDescriptorの信号をProbeしてデコードすると。
当方のデータでは、
 |           Manufacturer: XP-PEN
   |                Product: ARTIST 15.6
64 |        Params block #1: ?????
   |                          Max X: 34419
   |                          Max Y: 19461
   |                   Max pressure: 8191
   |                     Resolution: 2540
   |
79 |         Internal model: F60 _UG_VAT16_q1124
7b |         Buttons status: F60 _UG_VAT16_q1124
c8 |        Params block #2: F60 _UG_VAT16_q1124
   |                          Max X: 3539014
   |                          Max Y: 12288
   |                   Max pressure: 32
   |                     Resolution: 95
   |
c9 |      Unknown string #1: F60 _UG_VAT16_q1124
ca |  Internal manufacturer: F60 _UG_VAT16_q1124

となっております。
問題なく、データを読み取っております。
キャリブレーションのデータですが、

20 Option "MinX" "160"
21 Option "MaxX" "34519"
22 Option "MinY" "164"
23 Option "MaxY" "19549"
比較すると、それほど、大きな乖離はないので、正常にデータは取得されていると思います。


C.反映されない理由
まず、
XP-PEN ARTIST 15.6 Pen stylusとして、xinput_subsystemは、認識できないから、
反映できないのでしょう。

MatchUSBID "28bd:000c"
を利用すれば、反映できると思います。

D.追加
どのようなスクリプトか設定でペンタブレットの筆圧処理、キーイベントの処理をしているのか
わかりませんが、、、
そのスクリプト又は設定ファイルを見ることが先かと思われます。

もし、そのような、コンフリクトの可能性がないのであれば、
弊社から試験的に配布している、カーネルモジュールを使用するほうが良いかと思います。

ご助言ありがとうございます

平野様
ご助言ありがとうございます。
お返事が遅くなりすみません。

先に書いておくべきでしたが、私自身アラ還暦で(いや歳のせいにしてはいけませんね。)極めてリテラシが低いので、内容がチンプンカンプンである可能性が高いことをお断りしておきます。

  • ドライバについて
今入っているのは、貴社の2k18Sep01 タブレットドライバのはずですが、他のドライバのインストール、アンインストールを繰り返しているため、確実なところは言えません。

このフォルダを見れば、どんなドライバが入っているかわかるとか、生きているドライバを調べるコマンドとかあるでしょうか?

  • 99-calibration.conf の記述について
当然、
MatchProduct "XP-PEN ARTIST 15.6 Pen stylus"
は、無理でしょう。
MatchUSBID "28bd:000c"
を使用されれば、認識すると思われます。

及び
XP-PEN ARTIST 15.6 Pen stylusとして、xinput_subsystemは、認識できないから、
反映できないのでしょう。

MatchUSBID "28bd:000c"
を利用すれば、反映できると思います。

つまり、製品名では認識してくれないので、代わりにベンダー及び製品ごとに決まっているUSBIDを決め打ちして認識させるというふうに解釈して、/usr/share/X11/xorg.conf.d/99-calibration.conf を次のように修正しましたが、改善は見られませんでした。
Section "InputClass"
  Identifier    "calibration"
   MatchUSBID "28bd:000c"
   Option    "MinX"        "160"
   Option    "MaxX"    "34519"
   Option    "MinY"        "164"
   Option    "MaxY"    "19549"
   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

修正の仕方が間違っている、あるいは他のファイル(例えば、/usr/share/X11/xorg.conf.d/40-libinput.confとか?)も修正するということでしょうか?

どのようなスクリプトか設定でペンタブレットの筆圧処理、キーイベントの処理をしているのか
わかりませんが、、、
そのスクリプト又は設定ファイルを見ることが先かと思われます。

取り立てて独自のスクリプトや上記以外のファイルの作成、変更はしていないはずですが、いろいろ試している中で変な残骸が残っている可能性はあります。

それにしても、コマンドのメッセージや設定ファイルで、デバイスという言葉や XP-PEN ARTIST 15.6 PEN が液タブ本体を指しているのか、付属のペンを指しているのか、あるいは本体とペンを一体のものとして示しているのか混乱しています。





コメント遅くなりすみません。
混乱させてスミマセン。

NonWacomのペンタブをどうさせる手法は、様々、ありまして、、、
余計なことを考えてスミマセン。

簡単に申しますと、
xinput-systemの中で、
xinput_calibratorは、
evdevを使用するのが前提になっております。

今回の現象は、evdevドライバが使用されていないことが原因ですので、
多分、下記だけで、大丈夫だと思います。

Distoroによって異なりますが、
Ubuntu系の場合、
/usr/share/X11/xorg.conf.d

      • ----------------------------------------------------------------
10-amdgpu.conf 11-evdev-trackpoint.conf 70-synaptics.conf
10-evdev.conf 40-libinput.conf 70-wacom.conf
10-quirks.conf 50-tablet.conf 99-calibration.conf
10-radeon.conf 51-synaptics-quirks.conf
11-evdev-quirks.conf 52-egalax-virtual.conf
      • ----------------------------------------------------------------
このようなファイルがあると思います。
他の設定ファイルとバッティングすることがありますので、

下記の設定ファイルを入れて、動作しなかった場合は、
"artist15.6"または"28bd:000c"または"28bd"
というキーワードに気をつけてください。
あった場合は、コメントアウト、バックアップをとって、削除なりをお願いいたします。


ここでは、私が、よく使うファイル名で申し訳ありませんが、
geanyなどのエディタを使用して、
geany 50-tablet.conf

を起動して、
Section "InputClass"
  Identifier "Tablet"
   Driver "evdev"
   MatchDevicePath "/dev/input/event*"
   MatchUSBID "28bd:000c"
EndSection

を記入して、セーブします。
そして、再起動します。

明示的にevdevのドライバを読みますので、
xinput_calibrator
が動作すると思います。

もし、動作しなかった場合は、
xinput --list
xinput_calibrator --list
の取得をお願いいたします。

うまくゆかない場合は、
他のキャリブレーションの方法について、
コメントしたいと思います。

前回は、複雑な説明にしてしまってスミマセンでした。



(追伸)
当方のカーネルモジュールを使用していてよかったです。
このカーネルモジュールは、カーネルで動作しますので、
この上に、wacomドライバ、evdevドライバが乗ります。

必要に応じて、wacom環境を作ることもできます。
もちろん、xsetwacom
などのwacomコマンドも使用できるようになります。


ご回答ありがとうございます

平野さま
度々のご助言ありがとうございます。

ちょっと今日は時間がないのですが、実際に試したら、結果をご報告します。
とりあえずはお礼まで。


キャリブレーションできました!

平野さま

ご教示いただいたように、50-tablet.confに以下の内容を書いて/usr/share/X11/xorg.conf.dに保存したところ、正常にキャリブレーションできました。
Section "InputClass"
  Identifier "Tablet"
   Driver "evdev"
   MatchDevicePath "/dev/input/event*"
   MatchUSBID "28bd:000c"
EndSection


ちなみに、xinput list-props 11(11はXPPENのID)を実行した結果は次のとおりで、ドライバとしてEndevが使われていることが確認できました。(以前は、ドライバがlibinputでした。)
   Device 'XP-PEN ARTIST 15.6':
   Device Enabled (140):    1
   Coordinate Transformation Matrix (142):    1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
   Device Accel Profile (274):    0
   Device Accel Constant Deceleration (275):    1.000000
   Device Accel Adaptive Deceleration (276):    1.000000
   Device Accel Velocity Scaling (277):    10.000000
   Device Product ID (267):    10429, 12
   Device Node (266):    "/dev/input/event20"
   Evdev Axis Inversion (303):    0, 0
   Evdev Axis Calibration (304):    <no items>
   Evdev Axes Swap (305):    0
   Axis Labels (306):    "Abs X" (300), "Abs Y" (301), "Abs Pressure" (302), "Rel Vert Wheel" (299)
   Button Labels (307):    "Button Left" (143), "Button Middle" (144), "Button Right" (145), "Button Wheel Up" (146), "Button Wheel Down" (147), "Button Horiz Wheel Left" (148), "Button Horiz Wheel Right" (149), "Button Side" (268), "Button Extra" (269), "Button Forward" (270), "Button Unknown" (298), "Button Unknown" (298), "Button Unknown" (298), "Button Unknown" (298)
   Evdev Scrolling Distance (308):    1, 1, 1
   Evdev Middle Button Emulation (309):    0
   Evdev Middle Button Timeout (310):    50
   Evdev Middle Button Button (311):    2
   Evdev Third Button Emulation (312):    0
   Evdev Third Button Emulation Timeout (313):    1000
   Evdev Third Button Emulation Button (314):    3
   Evdev Third Button Emulation Threshold (315):    20
   Evdev Wheel Emulation (316):    0
   Evdev Wheel Emulation Axes (317):    0, 0, 4, 5
   Evdev Wheel Emulation Inertia (318):    10
   Evdev Wheel Emulation Timeout (319):    200
   Evdev Wheel Emulation Button (320):    4
   Evdev Drag Lock Buttons (321):    0

これで、ストレスなく液タブを使えるようになりました。
本当にありがとうございます。


Q ここにみだしをいれます。


  • 最終更新:2018-10-14 21:17:47

このWIKIを編集するにはパスワード入力が必要です

認証パスワード