XP-Pen Deco mini 7 그리기 태블릿을 구입했습니다. 포인터와 압력은 기본적으로 작동하지만 왼손잡이 모드로 회전하여 키보드와 스타일러스 버튼의 동작을 변경하고 싶습니다.
나는 그것을 사용하고 있다그네Archlinux의 Wayland 신디사이저.
답변1
머리말
공식 리눅스 "드라이버"가 있습니다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따라서 다음 단계는 Wayland에만 국한되지 않습니다.
왼손 모드
만약에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
가장 중요한 것은 두 가지 옵션입니다.
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 ------------
(처음 두 개의 버튼을 누른 결과입니다. 버튼 중 하나가 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
file과 유사한 장치와 일치하며 형식이 있습니다 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
)은 "마우스 가운데 버튼을 눌렀습니다" 이벤트를 발생시켜 매우 편리하지만 위쪽 버튼에는 눈에 띄는 효과가 없습니다. 이를 악용하는 방법에는 두 가지가 있습니다.
- 마우스 버튼에 매핑하고 애플리케이션의 해당 버튼에 작업을 바인딩합니다.
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 애플리케이션을 다시 시작해야 할 수도 있습니다.
답변2
그리기 영역, 왼쪽 모드, 종횡비, 펜 압력 등과 같은 모든 옵션을 처리하려면 다음을 따르십시오.MadRunner의 답변(단락 왼쪽 모드).
.tablet
구성을 생성한 후 프로젝트에 기여하려면 libwacom
(나중에 오는 사람들이 이 프로세스를 거칠 필요가 없도록) 아래 지침에 따라 끌어오기 요청을 하세요."기부하다 libwacom
"
그래픽 태블릿 버튼의 동작을 변경하는 더 쉬운 방법이 있습니다. 당신은 그것을 사용할 수 있습니다입력 리매퍼.
답변3
이 작업을 수행하려는 사람은 4시간 동안 작업을 수행한 후 다음을 사용해 보세요.
evdev:이름:(장치 이름):*
바꾸다
evdev:입력:b0003v28BDp0928*
답변해주셔서 정말 감사합니다! btn_middle
스크롤로 작업을 완료하는 방법을 찾지는 못했지만 .