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
ノート設定を適用するには、タブレットを再挿入する必要があります。
キーボードとスタイラスのボタンマッピング
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 アプリケーションを再起動する必要があります。