Linuxのペンタブに関するメモ

最近のLinuxではペンタブをUSBに繋ぐだけで直ぐ使えるようになっています。ただ、ワコム以外のマイナーなペンタブを使用する場合や、必要最小限のパッケージしかインストールしていない環境でペンタブを使用する場合は、ドライバのインストール&設定が必要な場合があります。

ペンタブを使うためにはドライバが「2つ」必要

GIMPやKritaなどX Window System上で動くアプリでペンタブを使うには2つのドライバが必要になります。1つはLinuxカーネル用のドライバ(カーネルモジュールとも言います)、もう1つはX Window System用のドライバです。

Linuxカーネル用のペンタブドライバ

使用するペンタブに対応したカーネルドライバが必要になります。

  • linuxwacom

    ワコムのペンタブドライバを開発しているプロジェクトです。このプロジェクトで開発されたドライバはLinuxカーネルに同梱されています。サポートしているペンタブの一覧はこちら

  • DIGImend

    ワコム以外のペンタブ用ドライバを開発しているプロジェクトです。こちらもLinuxカーネルに同梱されています。サボートしているペンタブはこちらで確認できます。プリンストンのペンタブを幾つかサポートしています。

  • このブログで公開しているドライバ

    Waltop製のチップを使用したペンタブ(プリンストンペンタブレットが該当します)用のドライバです。Linuxカーネルには同梱されておらず、こちらのページからダウンロードする必要があります。Linuxに同梱されたドライバより高い性能を引き出すことが出来ます。

  • 製造元が提供しているドライバ

    上記以外にもメーカーがHPでカーネルドライバを配布している場合があります。

X Window System用のペンタブドライバ

X用のドライバは以下の3つから好きなものを選びます。

  • xf86-input-wacom / xorg-x11-drv-wacom

    wacomという文字が入っていますがワコム以外のペンタブでも使えます。細かな設定が可能なので特に理由がなければこのドライバを推奨します。大抵のシステムでは標準でインストールされています。

  • xf86-input-evdev / xorg-x11-drv-evdev

    様々な入力デバイスに対応した汎用ドライバです。汎用なのでxf86-input-wacomほど細かくカスタマイズできません。X Serverと一緒にインストールされているはずです。詳細はman evdevコマンドで確認できます。

  • WizardPen

    wacomドライバやevdevドライバで動かない時に使っていたのですが、最近では使うことも無くなりました。

どのカーネルドライバが使用されているか調べる

Linuxでペンタブが使えない場合、まずはlsusbコマンドでシステムに接続されているUSBデバイスを一覧表示します。私の環境では次のような結果が表示されました。

$ lsusb
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 006: ID 172f:0502 Waltop International Corp. Sirius Battery Free Tablet
Bus 001 Device 004: ID 099a:0638 Zippy Technology Corp. Sanwa Supply Inc. Small Keyboard
Bus 001 Device 003: ID 12cf:0181 DEXIN 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

ペンタブがUSBポートにしっかり接続されおり、故障していないなら「それっぽい」表示があるはずです(ペンタブ毎に表示が異なります)。この場合、"Bus 001"の"Device 006"に"Waltop ... Tablet"という表記があることからWALTOP製のペンタブが接続されていることが分かります(ワコム製のペンタブの場合は"Wacom Co., Ltd"等と出力されるようです(未確認))。また、"ID"から、このペンタブのデバイスIDが"172f:0502"であることが分かります。カーネルドライバがどのデバイスIDのペンタブをサポートしているかはこちらで確認出来ます。カーネルのバーションはuname -rで調べられます。

次にlsusb -tで各デバイスにどのカーネルドライバが使われているか確認します。

$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 3: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 6: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M

先程の結果からペンタブが"Bus 001"に"Device 006"として接続されていることが分かっているので、それを基にツリーを辿って行くと、このペンタブには"usbhid"というドライバが使われていることが分かります(ワコムのペンタブの場合は"wacom"というドライバが使われるはずです(未確認))。もし"Driver"に何も表示がなければ、対応するカーネルドライバが無いため使用できません。カーネルをアップデートするか、メーカーのHPにドライバが無いか探して見ましょう。

どのXドライバが使われているか調べる

ペンタブにどのX用ドライバが使われているかは次のコマンドで確認します。

$ grep -i "using input driver" /var/log/Xorg.0.log
[    14.620] (II) Using input driver 'evdev' for 'Power Button'
[    14.646] (II) Using input driver 'evdev' for 'Power Button'
[    14.647] (II) Using input driver 'evdev' for 'Dexin Corp. Flying Wheel Mouse'
[    14.701] (II) Using input driver 'evdev' for 'USB Keyboard'
[    14.702] (II) Using input driver 'evdev' for 'USB Keyboard'
[    14.715] (II) Using input driver 'wacom' for '         WALTOP     Batteryless Tablet '
[    14.771] (II) Using input driver 'evdev' for '         WALTOP     Batteryless Tablet '
[    14.772] (II) Using input driver 'evdev' for '         WALTOP     Batteryless Tablet '
[    14.779] (II) Using input driver 'wacom' for '         WALTOP     Batteryless Tablet  eraser'

WALTOPのペンタブにwacomドライバとevdevドライバが使われていることが分かります。wacomやevdevはカーネルドライバにもXドライバにも存在しますが、ここで表示されるのはXドライバの方です(ややこしい)。あと、よく分からないのですが、1つのデバイスに対して複数のドライバが使われることがあるようです。

もしXのwacomドライバを使用しているのなら次のコマンドでドライバが認識しているペンタブの一覧を表示することが出来ます。

$ xsetwacom --list devices
         WALTOP     Batteryless Tablet  stylus	id: 11	type: STYLUS    
         WALTOP     Batteryless Tablet  eraser	id: 14	type: ERASER 

カーネルは認識しているのにXが認識しない場合

カーネルは認識しているのにXが認識しない、認識しているが意図しないXドライバが使わている場合、Xの設定を変更する必要があります。私の環境(Arch Linux)では、WALTOP製のタブレットwacomドライバ(xf86-input-wacom)を使用する場合、以下の設定が必要でした。例えばWaltop製タブレットにxf86-input-wacomドライバを使用する場合、次のような設定ファイルを作成する必要があります(通常はxf86-input-wacomパッケージをインストールした時点で作成されます)。

/etc/X11/xorg.conf.d/10-wacom.conf
/usr/share/X11/xorg.conf.d/50-wacom.conf Section "InputClass" Identifier "Waltop class" MatchProduct "WALTOP" MatchIsTablet "on" MatchDevicePath "/dev/input/event*" Driver "wacom" EndSection

さらに詳しい情報はArch Wiki等を参照して下さい。

ペンタブでカーソル移動はできるのに筆圧が効かない場合

筆圧を利用するのに特別な設定が必要なアプリがあります。

  • GIMP

    メニューの"編集">"入力デバイスの設定"で筆圧を有効にしたいデバイスを選択し、
    "モード"を"スクリーン"か"ウィンドウ"のどちらかに設定

  • Krita

    設定の必要なし

  • MyPaint

    設定の必要なし

  • AzPainter / AzDrawing

    設定の必要なし