Linux(特にWayland)でのXP-Pen描画タブレットの設定

Linux(特にWayland)でのXP-Pen描画タブレットの設定

XP-Pen Deco mini 7描画タブレットを購入しました。ポインタと圧力は基本的に機能しますが、左利きモードで回転してキーボードとスタイラスボタンの動作を変更したいと思います。

私はそれを使用していますスイングArchlinuxのWaylandシンセサイザー。

ベストアンサー1

ヘッダー

公式Linux「ドライバ」がありますXP-Penのウェブサイトから(返品オルバウ)。私が知る限り、DE経由で自動起動し、USB経由でタブレットと対話するユーザースペースアプリケーション(X11専用Qt5に接続されています)です。通常のユーザーがXP-Pen USBデバイスに書き込むことを許可するudevルールが提供されています。

straceすべてのUSBデバイス()を試しましたが、/dev/bus/usb/*/*最終的に私のタブレットが見つからないと表示されます。たぶんあなたに良い幸運があるかもしれません。

タブレットイベント処理の概要

                                         +————————————————+
                                         |                |
                                         |  Wayland       |
                                         |  compositor    |
                                         |                |
+——————————+  event  +—————————+  event  +——————————————+ |  event  +———————+
|  Tablet  |————————>|  Linux  |————————>|   libinput   | |————————>|  app  |
+——————————+         +—————————+         |              | |         +———————+
                                         | +——————————+ | |
                                         | | libwacom | | |
                                         +—+——————————+—+—+

Waylandシンセサイザー(Sway、Mutter、KWinからQtへ)を使用ライブラリ入力入力デバイスとそのイベントを処理します。これは順番に使用されますlibwacomタブレットのハードウェア情報(ボタンの数、コード、スタイラスに「ゴム」のヒントがあるかどうかなど)

ライブラリ入力以下を使用してX11で使用できます。xf86-入力-libinputしたがって、次のステップはウェイランドに限定されません。

左手モード

もしlibwacomレポートによると、タブレットは「可逆的」です。ライブラリ入力ポインタイベントを左モードに変換するように設定できます。

オリジナルlibwacom既知のグラフィックタブレットのデータベースとしてそれぞれ.tabletファイルに記述されています(参照:全リスト買戻契約から)。

次の場合に確認できます。libwacomタブレットについて学びます。

$ libwacom-list-local-devices
/dev/input/event19 is a tablet but not supported by libwacom
Failed to find any devices known to libwacom.

.tabletそうでない場合は、自分で作成する必要があります。 XP-Pen Deco mini 7では、次のファイルを次の場所に作成しました/usr/share/libwacom/xp-pen-deco-mini-7.tablet

# XP-Pen
# Deco mini7
#

[Device]
Name=XP-Pen Deco mini7
ModelName=
DeviceMatch=usb:28bd:0928
Class=Bamboo
Width=7
Height=4.37
Styli=0xffffd;

[Features]
Stylus=true
Reversible=true
Touch=false
Buttons=0

最も重要なのは2つのオプションです。

  • DeviceMatchタブレットを認識してフォーマットする方法を指定しますBUS:VENDOR_ID:MODEL_ID。以下で値を見つけることができますudevadm
$ udevadm info /dev/input/event19
...
E: ID_VENDOR_ID=28bd
...
E: ID_MODEL_ID=0928
...
E: ID_BUS=usb
  • Reversibleタブレットを左利きモードで使用できることを示します。

(他のオプションの詳細と説明は、以下で確認できます。リポジトリの例)

libwacomがタブレットを認識していることを確認します。

$ libwacom-list-local-devices
devices:
- name: 'XP-Pen Deco mini7'
  bus: 'usb'
  vid: '0x28bd'
  pid: '0x0928'
  nodes:
  - /dev/input/event19

これで設定できますライブラリ入力シンセサイザーを通して。 Swayの場合は、設定に追加してください。

input type:tablet_tool left_handed enabled

~のため小人そしてケードシステム設定GUIを使用できます。

ノート設定を適用するには、タブレットを再挿入する必要があります。

キーボードとスタイラスのボタンマッピング

XP-Penはキーボードボタンイベントを別のキーボードデバイスに送信します。次のコマンドを使用して表示できますevtest(ボタンはここにマップされます)。

$ sudo evtest /dev/input/event18
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x28bd product 0x928 version 0x100
Input device name: "UGTABLET 6 inch PenTablet Keyboard"
Supported events:
...
Testing ... (interrupt to exit)
Event: time 1648039909.676558, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1648039909.676558, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
Event: time 1648039909.676558, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70056
Event: time 1648039909.676558, type 1 (EV_KEY), code 44 (KEY_Z), value 1
Event: time 1648039909.676558, -------------- SYN_REPORT ------------
^Z
[1]+  Stopped                 sudo evtest /dev/input/event18
$ fg
sudo evtest /dev/input/event18
Event: time 1648039909.764562, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1648039909.764562, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
Event: time 1648039909.764562, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70056
Event: time 1648039909.764562, type 1 (EV_KEY), code 44 (KEY_Z), value 0
Event: time 1648039909.764562, -------------- SYN_REPORT ------------
Event: time 1648039944.475630, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1648039944.475630, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
Event: time 1648039944.475630, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70057
Event: time 1648039944.475630, type 1 (EV_KEY), code 183 (KEY_F13), value 1
Event: time 1648039944.475630, -------------- SYN_REPORT ------------
Event: time 1648039944.551696, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1648039944.551696, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
Event: time 1648039944.551696, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70057
Event: time 1648039944.551696, type 1 (EV_KEY), code 183 (KEY_F13), value 0
Event: time 1648039944.551696, -------------- SYN_REPORT ------------

(最初の2つのボタンを押した結果です。ボタンの1つがCtrl+Zにマップされているため一時bash停止evtest

次のようにマッピングできます。ホビーデータベース(7)/etc/udev/hwdb.d/62-xp-pen-deco-mini-7.hwdbコンテンツを含むファイルを作成します。

evdev:input:b0003v28BDp0928*
 KEYBOARD_KEY_70005=kp0
 KEYBOARD_KEY_70008=kp1
 KEYBOARD_KEY_700e2=kp2
 KEYBOARD_KEY_7002c=f16
 KEYBOARD_KEY_70016=f15
 KEYBOARD_KEY_7001d=f14
 KEYBOARD_KEY_70057=f13
 KEYBOARD_KEY_70056=z

最初の行は.tabletファイルに似たデバイスと一致し、フォーマットがありますb{BUS_ID}v{VENDOR_ID}p{MODEL_ID}。 USBの{BUS_ID}場合0003

次に、スキャンコードを形式のキーマップに書き込みますKEYBOARD_KEY_{scancode}={key}。スキャンコードは、キー名を見つけることができるevtest出力(行)から取得され、小文字でなければなりません。上記の例では、アプリケーションごとに特定のアクションをバインドできるように、最後のボタンを除くすべてのボタンをユニバーサルキーにマップしました。MSC_SCAN/usr/include/linux/input-event-codes.h

XP-Pen Deco mini 7の場合、デフォルトのマッピングは次のとおりです。

  • 70005 - B

  • 70008—e

  • 700e2 — 左翼

  • 7002c — スペース

  • 700e2, 70016 — 左 Ctrl, s

  • 700e2, 7001d — 左 Ctrl, z

  • 700e2, 70057 — 左 Ctrl, kpplus

  • 700e2, 70056 — 左 Ctrl, kpminus

しかし、これはタブレットモデルによって異なります。

ノートscancode をマップしないため、700e2最後の 4 つのキーが渡されます。Ctrl

スタイラスボタンイベントは、タブレット入力自体で生成されます。

$ sudo evtest /dev/input/event19
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x28bd product 0x928 version 0x100
Input device name: "UGTABLET 6 inch PenTablet"
...
Event: time 1648041701.178269, -------------- SYN_REPORT ------------
Event: time 1648041701.686282, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0044
Event: time 1648041701.686282, type 1 (EV_KEY), code 331 (BTN_STYLUS), value 1
Event: time 1648041701.786243, -------------- SYN_REPORT ------------
Event: time 1648041701.790243, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0044
Event: time 1648041701.790243, type 1 (EV_KEY), code 331 (BTN_STYLUS), value 0
Event: time 1648041704.130289, -------------- SYN_REPORT ------------
Event: time 1648041704.134281, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0045
Event: time 1648041704.134281, type 1 (EV_KEY), code 277 (BTN_FORWARD), value 1
Event: time 1648041704.262281, -------------- SYN_REPORT ------------
Event: time 1648041704.266286, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0045
Event: time 1648041704.266286, type 1 (EV_KEY), code 277 (BTN_FORWARD), value 0

デフォルトでは、下ボタン(scancode d0044)は「マウスの中央ボタンを押しました」イベントを発生させて非常に便利ですが、上ボタンには目立つ効果はありません。これを悪用する方法は2つあります。

  • マウスボタンにマップし、アプリケーションの対応するボタンにアクションをバインドします。
KEYBOARD_KEY_d0045=btn_forward
  • BTN_TOOL_RUBBERシミュレートされた「ゴム」ペン先にマッピング
KEYBOARD_KEY_d0045=btn_tool_rubber

好みのバリエーションを追加し、/etc/udev/hwdb.d/62-xp-pen-deco-mini-7.hwdbバイナリhwdbをコンパイルします。

$ sudo systemd-hwdb update

そして、デバイスにマッピングを適用します。

$ sudo udevadm trigger

ノートこのマッピングを使用するには、タブレットを再挿入するか、DE アプリケーションを再起動する必要があります。

おすすめ記事