绘图板

来自 ArchWiki
(重定向自 Wacom tablet

来自 Wikipedia:Graphics tablet

绘图板(也称为数字化仪、数字绘图板、笔式绘图板、手写绘图板、外接绘图板或数字艺术板)是一种计算机输入设备,使用户能够使用特殊的笔状触控笔手绘图像、动画和图形,类似于人用铅笔和纸张绘画的方式。

大多数绘图板在 Arch Linux 下都能即插即用。某些额外功能(例如按钮重映射和调整绘图板的宽高比)需要额外配置。本文介绍如何在 Xorg 下使用 xf86-input-wacom 驱动程序配置您的绘图板。有关在 Wayland 下配置,或在使用默认 xf86-input-libinput 驱动程序时配置,请参阅 #Wayland 和 libinput

安装

Arch Linux 内核 包含来自 linux-wacomDIGImend 项目的驱动程序。 linux-wacom 支持 Wacom 设备,而 DIGImend 支持其他制造商的设备。这两个项目都发布了支持设备列表:linux-wacomDIGImend。通过 USB 或 蓝牙 连接绘图板后,它应该在以 root 身份运行 dmesg 时显示出来,并列在 /proc/bus/input/devices 中。对于 USB 设备,usbutils 中的 lsusb 命令也应该显示您的绘图板。如果您的绘图板未显示,或者某些功能不起作用,请参阅 #内核无法识别设备

安装 xf86-input-wacom Xorg 驱动程序。Wacom 设备不需要额外配置,因为包含的 /usr/share/X11/xorg.conf.d/70-wacom.conf 文件会在插入 Wacom 设备时自动加载 wacom(4) 驱动程序。如果您的设备来自其他制造商,您需要手动 配置 Xorg 以使用 wacom 驱动程序,这将允许通过 xsetwacom 进行配置。在 /etc/X11/xorg.conf.d创建一个文件,其中 VID:PID 是您的 USB ID,如 lsusb 所见

/etc/X11/xorg.conf.d/10-tablet.conf
Section "InputClass"
    Identifier "Tablet"
    Driver "wacom"
    MatchDevicePath "/dev/input/event*"
    MatchUSBID "VID:PID"
EndSection
提示: DIGImend 项目 此处 提供了一个涵盖多个非 Wacom 设备的示例配置文件。

重启 X 后,命令 xsetwacom list devices 现在应该列出一些设备。如果未列出,请参阅 #手动设置

实用程序

  • Wacom Tablet KCM — 一个 KDE 配置模块,允许重映射按钮并将绘图板映射到显示器。它还支持特定于绘图板的配置文件和热插拔。它在 Wayland 上不起作用,因为它需要 wacom Xorg 驱动程序。
https://invent.kde.org/system/wacomtablet || wacomtablet
  • mapwacom — 一个脚本,使用 #减小绘图区域高度 方法,自动化将绘图板映射到显示器,同时保持宽高比。
https://gist.github.com/tom-galvin/6c19fe907945d735c045 ||
https://gist.github.com/Konfekt/d57567b84b264e37e62bd5c001e76457 ||

替代驱动

  • Tuhi — 一个应用程序,可以从 Wacom 的智能板设备系列(例如 Bamboo Spark 和 Bamboo Slate)下载绘图。
https://github.com/tuhiproject/tuhi || tuhi-gitAUR
  • Huion Linux 驱动 — Huion 的官方专有 Linux 驱动程序。
https://www.huion.com || huiontabletAUR
  • XP-Pen Linux 驱动 — XP-Pen 的官方专有 Linux 驱动程序。某些 UGEE 设备也可能受支持。
https://www.xp-pen.com || xp-pen-tabletAUR
  • OpenTabletDriver — 一个跨平台用户空间驱动程序,适用于多种不同的绘图板型号。
https://opentabletdriver.net || opentabletdriverAUR
  • wacom_serial5 — 一个用于旧 Wacom 串行绘图板的内核驱动程序。有关附加串行设备的更多信息,请参阅 串行输入设备到内核输入
https://github.com/RoaldFre/wacom_serial5 || wacom_serial5-dkms-gitAUR

Weylus

Weylus 是一个允许将智能手机或平板电脑用作计算机上的绘图板的项目。它以 weylusAURweylus-binAUR 的形式提供。

配置

Xorg 驱动程序可以使用 xsetwacom 临时配置,请参阅 xsetwacom(1)。更改在 X 服务器重启或重新插入绘图板后会丢失,请参阅 #永久配置 以查看保持设置持久性的方法。

列出可用设备

$ xsetwacom list devices
Wacom Bamboo 16FG 4x5 Finger touch	id: 12	type: TOUCH
Wacom Bamboo 16FG 4x5 Finger pad	id: 13	type: PAD       
Wacom Bamboo 16FG 4x5 Pen stylus	id: 17	type: STYLUS    
Wacom Bamboo 16FG 4x5 Pen eraser	id: 18	type: ERASER

对于 getset 命令,可以通过名称或 id 指定设备。脚本应使用名称,因为 id 在 X 服务器重启或重新插入后可能会更改。

重映射按钮

Xorg 将绘图板和笔上的按钮视为鼠标按钮。绘图板按钮从 1 开始,笔按钮从 2 开始(1 是笔尖接触事件)。由于大多数应用程序不允许将快捷方式映射到鼠标按钮,因此用户可能对将这些按钮重映射到键盘按钮感兴趣。

如果您尚未重映射按钮,则可以使用 xorg-xev 轻松识别其编号,方法是运行以下命令,将鼠标光标放在创建的窗口上并按下按钮

$ xev -event button
Outer window is 0x1a00001, inner window is 0x1a00002

ButtonPress event, serial 25, synthetic NO, window 0x1a00001,
    root 0x2a0, subw 0x0, time 3390669, (404,422), root:(1047,444),
    state 0x0, button 8, same_screen YES

识别按钮后,您可以使用 xsetwacom 重映射它。通用映射语法如下

$ xsetwacom set pad-or-stylus Button number keyword arguments

关键字及其参数的完整列表可在 xsetwacom(1) § Button 中找到。以下是一些示例

注意
  • 键之前的 + 号表示按下,而 - 号表示释放。没有符号的键表示先按下然后释放。
  • 您可以使用 xsetwacom list modifiers 查看修饰符的完整列表。
  • 诸如 keybutton 之类的关键字可以混合使用。

将按钮重映射到 Ctrl+z

$ xsetwacom set pad Button 1 "key +ctrl z -ctrl"

将按钮重映射到鼠标按钮 3

$ xsetwacom set pad Button 1 "button 3"

在按住 Shift 的同时按下鼠标按钮 1

$ xsetwacom set pad Button 1 "key +shift button 1 key -shift"

清除按钮的所有自定义映射

$ xsetwacom set pad Button 1

执行自定义命令

虽然您不能使用 xsetwacom 将绘图板按钮直接映射到自定义命令,但可以将它们映射到将激活自定义快捷键实用程序(例如 Xbindkeyssxhkd 或窗口管理器或桌面环境的键盘快捷键配置系统)的组合键。

可以将绘图板按钮重映射到硬件上不可用的功能键或鼠标按钮,例如 F20 或鼠标按钮 10。这样,您可以设置仅通过绘图板按钮执行的自定义命令。

调整宽高比

绘图板的绘图区域通常比 16:9 宽高比的常用宽屏显示器更接近正方形,这会导致您的输入在垂直方向上略有压缩。要解决这种宽高比不匹配问题,您需要通过减小绘图区域高度(在 Windows 上称为强制比例)或减小屏幕区域宽度来折衷。前者浪费了绘图区域,后者阻止您使用触控笔到达屏幕的右边缘。但这可能仍然是一个值得做出的折衷,因为它可以防止您的笔画倾斜。

通过运行以下命令找出绘图板的分辨率

$ xsetwacom get stylus Area

减小绘图区域高度

运行

$ xsetwacom set stylus Area 0 0 tablet_width height

其中 heighttablet_width * screen_height / screen_width

可以使用以下命令将绘图板分辨率重置为默认值

$ xsetwacom set stylus ResetArea

减小屏幕区域宽度

运行

$ xsetwacom set stylus MapToOutput WIDTHxSCREEN_HEIGHT+0+0

其中 WIDTHscreen_height * tablet_width / tablet_height

将绘图板映射到显示器

如果您有多个显示器,则最好将绘图板映射到单个显示器,以避免绘图时出现失真。如果您有带屏幕的绘图板,也可以使用此方法将绘图板的活动区域映射到其自身的屏幕。

您可以使用以下命令将绘图板映射到显示器,其中 outputxrandr 报告的显示器标识符

$ xsetwacom set stylus MapToOutput output

例如

$ xsetwacom set 'Wacom Intuos S Pen stylus' MapToOutput VGA-0

如果这在使用 Nvidia 二进制驱动程序时不起作用,请尝试根据显示器编号使用 HEAD-0HEAD-1、...。

或者,您可以使用参数 next 切换到下一个可用显示器。

例如

$ xsetwacom set 'Wacom Intuos S Pen stylus' MapToOutput next

如果 xsetwacom 无法找到您的输出,您可以使用 #减小屏幕区域宽度 中的命令手动将绘图板映射到与您的显示器匹配的区域。运行

$ xsetwacom set stylus MapToOutput SCREEN_WIDTHxSCREEN_HEIGHT+HORIZONTAL_OFFSET+VERTICAL_OFFSET

其中 SCREEN_WIDTHSCREEN_HEIGHT 是您的显示器的宽度和高度(以像素为单位),而 HORIZONTAL_OFFSETVERTICAL_OFFSET 是所需显示器的坐标,从设置中最左侧和最高的像素开始。例如,如果您有两个并排的 1920x1080 显示器,并且您想将绘图板映射到最右边的显示器,您将运行

$ xsetwacom set stylus MapToOutput 1920x1080+1920+0
提示: 您可以将此与 #减小屏幕区域宽度 中的公式结合使用,以不扭曲宽高比的方式将绘图板映射到输出,方法是将 SCREEN_WIDTH 替换为公式中计算出的宽度。

如果 xsetwacom 不起作用,您可以尝试 xinput。首先,您需要找到触控笔 ID

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Wacom Intuos PT S 2 Finger                id=11   [slave  pointer  (2)]
⎜   ↳ Wacom Intuos PT S 2 Pad                   id=12   [slave  pointer  (2)]
⎜   ↳ USB Keyboard                              id=14   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=16   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=17   [slave  pointer  (2)]
⎜   ↳ SteelSeries Kinzu V2 Gaming Mouse         id=9    [slave  pointer  (2)]
⎜   ↳ Wacom Intuos PT S 2 Pen Pen (0x6281780c)  id=20   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ ...

在本例中,触控笔 ID 为 20。要将其映射到显示器 VGA-0,请运行

$ xinput map-to-output 20 VGA-0

如果所有方法都失败,您将需要调整绘图板的坐标转换矩阵。有关计算绘图板矩阵的说明,请参阅 xf86-input-wacom wiki

压力曲线

使用 Wacom 压力曲线和阈值图 找到您所需曲线的 P1=红色(例如 50,0)和 P2=紫色(例如 100,80)。x 轴是您施加到笔的输入压力;y 轴是应用程序获得的输出压力。

您可以使用以下命令更改压力曲线

$ xsetwacom set stylus PressureCurve x1 y1 x2 y2

永久配置

通过 udev 和 systemd 服务使用 xsetwacom

可以将您的 xsetwacom 参数保存在 shell 脚本中,该脚本通过 udev 使用自定义 systemd/User 单元文件进行自动启动。此方法比通过桌面环境或窗口管理器自动启动 shell 脚本更复杂,但是,它将在每次将绘图板连接到计算机时运行脚本。

首先安装 usbutils 并运行 lsusb 以查找绘图板的供应商 ID(在下面的示例中为 056a)。

然后创建一个 udev 规则,以在连接绘图板时启动 systemd 单元(相应地替换供应商 ID)

/etc/udev/rules.d/99-wacom.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}+="wacom.service"

准备 systemd 单元文件。它连接到特殊的 graphical-session.target,只要任何图形会话处于活动状态,它就应该是活动的,请参阅 systemd.special(7) § Special Passive User Units

~/.config/systemd/user/wacom.service
[Unit]
Description=Configure my Wacom tablet
After=graphical-session.target
PartOf=graphical-session.target

[Service]
Type=oneshot
ExecStart=/path/to/wacom-config.sh

[Install]
WantedBy=graphical-session.target

准备绘图板配置脚本。从 systemd 用户服务启动时,应该已经设置了所需的变量 DISPLAYXAUTHORITY。有关详细信息,请参阅 systemd/User#DISPLAY 和 XAUTHORITY

注意
  • Wacom 输入设备可能在 udev 调用 systemd 服务并且脚本启动时尚未准备就绪。一种解决方法是在脚本的开头添加 sleep 1(可能需要更多时间,例如,对于带有集成显示器的 Cintiq,由于其启动时间,最多可能需要 10 秒)。如果仍然不起作用,请查看 [1] 以获取可能的解决方案。
  • 按钮 ID 每次插入绘图板时都可能更改。因此,脚本不应硬编码 ID,而应从 xsetwacom list devices 输出中解析正确的 ID。有关详细信息,请参阅 [2]
wacom-config.sh
#!/bin/sh

for i in $(seq 10); do
    if xsetwacom list devices | grep -q Wacom; then
        break
    fi
    sleep 1
done

list=$(xsetwacom list devices)
pad=$(echo "${list}" | awk '/pad/{print $7}')
stylus=$(echo "${list}" | xsetwacom list devices | awk '/stylus/{print $7}')

if [ -z "${pad}" ]; then
    exit 0
fi

# configure the buttons on ${stylus} with your xsetwacom commands...
#xsetwacom set "${stylus}" Button 2 11
#...

最后,使用 --user 标志启动/启用 服务 wacom.service

与 Xfce4 显示配置文件兼容

如果您有带有集成显示器的绘图板,并且想要在 Xfce4 中无缝切换多个显示配置文件,则仅监听 udev 事件可能不够。您需要在显示几何图形更改时(例如,镜像与并排设置)更改设备设置。

在这些情况下,您可以使用 xfconf-query 监视对活动显示配置文件的更改。

wacom-config-daemon.sh
#!/usr/bin/env sh

# Use this to target your specific monitor device
screen_dev="HDMI-A-0"

xfconf-query -c displays -p /ActiveProfile -m | while IFS= read -r; do
  echo "Reconfiguring..."

  # Tested with Wacom Cintiq 16 Pen (stylus/eraser)
  for id in $(xsetwacom list devices | grep -i wacom | awk '/Pen/{print $7}'); do
    xsetwacom set "${id}" MapToOutput "${screen_dev}"
  done
done

现在将此脚本添加到 设置 > 会话和启动 > 应用程序自动启动 中的自动启动应用程序中

通过 Xorg.conf

注意: xorg.conf 缺少 xsetwacom 的某些选项,并且仅允许您将按钮映射到鼠标按钮。

可以在 xorg.confxorg.conf(5) 中进行持久性配置。

您首先需要在 Xorg 日志文件中找出您的产品名称

$ grep "Using input driver 'wacom'" ~/.local/share/xorg/Xorg.0.log
[ 25059.351] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pen'
[ 25059.409] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pad'
[ 25059.428] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pen eraser'
[ 25059.429] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pen cursor'

对于这些产品名称,节将是

/etc/X11/xorg.conf.d/72-wacom-options.conf
Section "InputClass"
	Identifier "WACOM OPTIONS pen"
	MatchDriver "wacom"
	MatchProduct "Pen"
	NoMatchProduct "eraser"
	NoMatchProduct "cursor"
EndSection

Section "InputClass"
	Identifier "WACOM OPTIONS pad"
	MatchDriver "wacom"
	MatchProduct "Pad"
EndSection

Section "InputClass"
	Identifier "WACOM OPTIONS eraser"
	MatchDriver "wacom"
	MatchProduct "eraser"
EndSection

Section "InputClass"
	Identifier "WACOM OPTIONS cursor"
	MatchDriver "wacom"
	MatchProduct "cursor"
EndSection
  • wacom(4) 中描述的选项可以添加到节中。
  • 产品名称需要包含 MatchProduct 值,以便节匹配。父设备的匹配需要负匹配。
  • Identifier 可以是任意的,并且在节匹配时打印到 Xorg 日志中。为您的标识符提供一个公共前缀可以让您轻松地 grep 哪些节已匹配
    grep "WACOM OPT" /var/log/Xorg.0.log
  • 配置更改需要重启 X 服务器才能生效。
注意: xorg.conf 选项可能与 xsetwacom 选项不同。

xsetwacom 可以尝试使用以下命令以 xorg.conf 格式打印设备的所有当前设置

$ xsetwacom get device all
按钮重映射

通过 Xorg.conf 进行按钮重映射仅允许您将绘图板按钮重映射到鼠标按钮。

注意: 由于 X 使用按钮 4-7 作为四个滚动方向,因此默认情况下,绘图板按钮 4 及更高版本会转换为鼠标按钮 8 及更高版本。虽然 xorg.conf 使用实际的按钮编号,但 xsetwacom 使用转换后的鼠标按钮编号。例如,绘图板上的第四个按钮在 xorg.conf 上将是 Button4,而在 xsetwacom 上将是 button 8
/etc/X11/xorg.conf.d/10-tablet.conf
Section "InputClass"
    [...]
    # Setting up buttons (preferably choose the correct button order, so the topmost key is mapped to 10 and so on)
    Option "Button1" "10"
    Option "Button2" "11"
    Option "Button3" "12"
    Option "Button4" "13"
EndSection

然后,您可以使用 #执行自定义命令 将这些按钮映射到其他命令,或使用 自动化工具 映射到其他键。

提示: 您可以查看绘图板的布局 SVG,以概述其按钮布局。通过递归 grep 搜索 xsetwacom list devices 报告的绘图板名称来查找文件名
$ grep -rl 'Wacom Bamboo 16FG 4x5' /usr/share/libwacom/*.tablet
/usr/share/libwacom/bamboo-16fg-s-t.tablet
在本例中,相应的布局 SVG 是 /usr/share/libwacom/layouts/bamboo-16fg-s-t.svg。SVG 中的字母对应于按钮编号:A=1,B=2,C=3,...
让 libinput 控制触摸板

由于 wacom 触摸板通常不支持反向滚动,因此可能需要使用 libinput 来控制触摸板。

为此,请创建包含以下内容的 /etc/X11/xorg.conf.d/90-libinput-wacom.conf

Section "InputClass"
    Identifier "libinput Wacom touchpad override class"
    MatchUSBID "056a:*"
    MatchDevicePath "/dev/input/event*"
    MatchIsTouchpad "true"
    Driver "libinput"
EndSection

之后重启。

有关更详细的说明,请参阅 [3]

LED

请参阅 sysfs-driver-wacom 文档。要进行更改而无需 root 权限,您可能需要创建一个 udev 规则,如下所示

/etc/udev/rules.d/99-wacom.rules
# Give the users group permissions to set Wacom device LEDs.
ACTION=="add", SUBSYSTEM=="hid", DRIVERS=="wacom", RUN+="/usr/bin/sh -c 'chown :users /sys/%p/wacom_led/*'"

可以使用 i4oledAUR 设置 Intuos OLED。

应用程序特定配置

Alchemy

AlchemyAUR(和 Alchemy-gitAUR)需要 JPen 库来管理触控笔压力。请参阅 关于 Alchemy 的 Digimend 文档

Blender

要在 Blender 中启用绘图板按钮和额外的笔按钮,您可以创建一个 xsetwacom 包装器来临时重映射 Blender 会话的按钮。

DrawPile

drawpileAUR 是一个绘图白板(网络协作绘图工具)。它管理其绘图工具上的压力级别。在“Freehand”框中,需要激活每个参数右侧的画笔图标才能对此参数进行压力管理。窗口右下角只有一个通用曲线(“Input”框),可以应用于触控笔、距离和速度。

GIMP

要在 GIMP 中启用正确的使用和压力感应绘画,只需转到 编辑 > 输入设备。现在,对于您的每个 eraserstyluscursor 设备,将 模式 设置为 屏幕,并记住保存。

  • 请注意,如果存在 pad 设备,则应保持禁用状态,因为我认为 GIMP 不支持此类设备。或者,要使用绘图板的此类功能,您应该使用诸如 Wacom ExpressKeys 之类的程序将它们映射到键盘命令。
  • 您还应该注意,为 stylus 选择的工具与 eraser 的工具是独立的。这实际上可能非常方便,因为您可以将 eraser 设置为用作您喜欢的任何工具。

有关更多信息,请查看 GIMP Talk - Community - Install Guide: Getting Wacom Drawing Tablets To Work In GimpSetting up GIMP 部分。

如果以上方法还不够,您可能需要尝试使用 xinput create-masterxinput reattach 命令将绘图板的触控笔(和橡皮擦)设置为第二个鼠标指针(使其与鼠标分离)。当 GIMP 即使触控笔触摸绘图板也不开始绘画时,这可能会有所帮助。

Inkscape

Inkscape 中的压力感应与 GIMP 中的启用方式相同。转到 编辑 > 输入设备...。现在,对于您的每个 eraserstyluscursor 设备,将 模式 设置为 屏幕,并记住保存。

Krita

如果您的绘图板在 Krita 中无法绘图(未注册点击/压力),但在具有小测试区域的画笔选择对话框中有效,请尝试将 Krita 置于全屏或仅画布模式。

Krita 仅要求 Qt 能够使用您的绘图板正常工作。如果您的绘图板在 Krita 中不起作用,请务必首先检查它在 Qt 中是否有效。然后可以在 painttop 配置中调整绘图板压力的效果,例如,通过选择不透明度,然后从下拉列表中选择压力并根据您的喜好调整曲线。

注意: 上游提供的 Krita 二进制文件带有针对 Qt 和其他依赖项的多个补丁krita 软件包不包含这些补丁,因此它可能存在官方 Krita 二进制版本中不存在的某些错误。如果您在使用 Arch Linux 的 krita 软件包时遇到问题,请尝试首先使用 Krita 的 AppImage 版本 重现问题。

MyPaint

mypaint(额外 mypaint-brushes, mypaint-brushes1, 请注意,这些画笔也用于使用 libmypaint 的其他应用程序)是一个通用的位图绘图应用程序。其高级画笔设置已被 GIMPKritaOpenToonz 和其他一些应用程序采用,并在 Pencil2D 中处于集成过程中。它是一个非常轻量级的工具,可以在低端计算机中使用。

在 MyPaint 中,有关于绘图板的常规设置和每个画笔的特定参数(您可以设置自己的画笔)。

常规设置位于菜单 编辑 > 编辑首选项 中。

  • “压力”选项卡用于全局压力映射。
  • “设备”选项卡显示检测到的输入设备列表以及少量常规信息。通过单击“用于...”(任何任务、忽略、非绘图任务、仅导航)和“滚动...”(缩放、平移)列中的参数,可以将每个设备分配给特定任务。
  • “按钮”选项卡允许将按钮分配给特定功能。

可以通过画笔上下文菜单(右键单击工具)访问画笔设置。您可以在进行修改之前复制现有工具,从而保留具有默认预设的工具(上下文菜单中的“克隆”)。

  • 要编辑画笔设置,只需使用画笔上下文菜单中的编辑画笔设置。有几个设置,有关完整说明,请参阅 MyPaint 文档,或者使用它们来发现它们的作用。

OpenToonz

opentoonz 是一款专业的 2D 动画工具,最初由吉卜力工作室开发,并被吉卜力工作室和 Folimage 等公司使用。

默认情况下,默认工具上管理着触控笔压力。在第二行,右上角有一个Pressure复选框,可以取消选中以禁用压力管理。可以通过Preset右侧的菜单按钮选择多个预设,并使用 +/- 按钮添加或删除。

libmypaint 画笔可以在Basics模式(右上角的选项卡)中选择,然后在绘图区域和曝光表之间的列中选择:在“[LEVEL]: Palette”按钮处,单击“Raster”选项卡以查看画笔。画笔可以使用 MyPaint 编辑并在 OpenToonz 中使用。

Pencil2D

pencil2d 是一个轻量级的 2D 动画工具。每个可以使用压力参数的工具(铅笔、橡皮擦、钢笔和画笔)都有一个名为“Pressure”(压力)的复选框,默认情况下会选中该复选框以使用手写笔压力参数。

Xournal++

Xournal++ (xournalpp) 是 xournalAUR 的后继者,并且完全支持压感手写笔输入。有关配置,请参阅编辑 > 首选项菜单中的输入设备手写笔

Wayland 和 libinput

当您使用 Wayland 时,数位板由 libinput 处理,后者依赖于 libwacom 提供的信息。在这种情况下,无法通过 xsetwacom 进行配置。您只能通过您的 桌面环境或 Wayland 合成器中提供的设置来配置您的数位板。请参阅 [4] 以检查您的设备是否完全受支持,以及将支持添加到您设备的方法。

提示
  • input-remapper-gitAUR 可以在使用 libinput 或 Wayland 时重新映射数位板按钮。
  • 如果您的 Wayland 环境不提供数位板选项,也可以使用 OpenTabletDriver。请参阅 #替代驱动程序

Sway

映射到输出

这与 #将数位板映射到显示器 具有相同的效果,这意味着数位板将不会与输出具有精确的纵横比匹配。

将以下行添加到您的 sway 配置文件中

~/.config/sway/config
input Identifier map_to_output Display-Name

其中 Identifier 是您的数位板的标识符,可以通过 swaymsg -t get_inputs 读取

$ swaymsg -t get_inputs
Input device: Wacom One by Wacom S Pen
 Type: Tablet tool
 Identifier: 1386:890:Wacom_One_by_Wacom_S_Pen
 Product ID: 890
 Vendor ID: 1386
 Libinput Send Events: enabled
 ...
提示: 如果您想将此映射应用于您连接的任何数位板,您可以使用 type:tablet_padtype:tablet_tool 代替设备标识符。

Display-Name 是您的输出的标识符,可以通过 swaymsg -t get_outputs 读取

$ swaymsg -t get_outputs
 Output HDMI-A-1 'Samsung Electric Company ...'
 Current mode: 1920x1080 @ 60.000 Hz
 Position: 0,0
 Scale factor: 1.000000
 Scale filter: nearest
 ...

映射到输出区域

这与 #减小屏幕区域宽度 具有相同的效果。首先,您需要找出您的数位板的活动区域。运行

# libinput debug-tablet

将您的数位板手写笔移动到右下角以获取最大 ABS_XABS_Y 值,然后将以下行添加到您的 sway 配置中

~/.config/sway/config
input Identifier map_to_region X Y width output_height

其中 width 通过 output_height * (ABS_X / ABS_Y) 计算得出,X 和 Y 是区域的起始坐标。

例如,如果您有两个 1920x1080 并排的显示器,并且您想将您的数位板映射到最右侧显示器中的一个区域,请使用以下行

~/.config/sway/config
input Identifier map_to_region 1920 0 width 1080

故障排除

内核无法识别设备

某些数位板可能太新,以至于您当前的内核不支持。在 Wacom 设备上,这由您的 dmesg 输出中的 “Unknown device_type” 消息表示。在这种情况下,树外版本的驱动程序有可能在您的数位板被上游到内核之前就对其提供支持。

安装 input-wacom-dkms-gitAUR 如果您有 Wacom 数位板,或者 digimend-kernel-drivers-dkms-gitAUR 如果您有来自其他制造商的数位板。您还需要当前内核的头文件,请参阅 DKMS 以获取更多信息。

数位板已被识别,但 xsetwacom 和类似的工具不显示它

您的日志表明已选择正确的驱动程序,并且数位板工作正常。但是,当运行 xsetwacom list devices 或使用依赖于正确驱动程序的类似工具时,您会得到一个空列表。

原因可能是您的 xorg 配置的执行顺序。/usr/share/X11/xorg.conf.d 首先执行,然后是 /etc/X11/xorg.conf.d。软件包 xf86-input-wacom 包含文件 /usr/share/X11/xorg.conf.d/70-wacom.conf。如果有一个针对数位板的通配符,在该文件之后执行,则先前选择的 wacom 驱动程序将被通用的驱动程序覆盖,而该驱动程序不适用于 xsetwacom 等。

为了确保,请检查在 /usr/share/X11/xorg.conf.d/70-wacom.conf 之后执行的文件中包含的规则,以查找任何看起来像图形数位板的内容。

手动设置

手动配置在 /etc/X11/xorg.conf 中或 /etc/X11/xorg.conf.d/ 目录中的单独文件中完成。Wacom 数位板设备使用 /dev/input/ 中的输入事件接口访问,该接口由内核驱动程序提供。接口编号 event?? 在拔下并重新插入到相同或尤其是不同的 USB 端口时可能会更改。因此,明智的做法是不要使用其具体的 event?? 接口(静态配置)来引用设备,而是让 udev 动态地创建一个指向正确 event 文件的符号链接(动态配置)。

USB 设备

在(重新)插入您的 USB 数位板后(或至少在重新启动后),一些符号链接应出现在 /dev/input 中,指向您的数位板设备。

$ ls /dev/input/wacom*
/dev/input/wacom  /dev/input/wacom-stylus  /dev/input/wacom-touch

如果不是,则您的设备可能尚未包含在 wacom-udevudev 配置中,该配置位于 /usr/lib/udev/rules.d/wacom.rules 中。将文件复制到 /etc/udev/rules.d/wacom.rules 并在那里修改它。

通过复制另一个设备的一些行并将 idVendoridProduct 和符号链接名称适配到您的设备,将您的设备添加到文件中。这两个 id 可以使用以下命令确定

$ lsusb | grep -i wacom
Bus 002 Device 007: ID 056a:0062 Wacom Co., Ltd

在此示例中,idVendor 为 056a,idProduct 为 0062。如果您有带触摸功能的设备(例如 Bamboo Pen&Touch),您可能需要为触摸输入接口添加第二行。有关详细信息,请查看 linuxwacom wiki 使用 udev 固定设备文件

保存文件并使用命令 udevadm control --reload-rules 重新加载 udev 的配置配置文件。再次检查 /dev/input 的内容,以确保 wacom 符号链接出现。请注意,您可能需要再次插入数位板才能使设备出现。

对于 Xorg 配置,进一步感兴趣的文件是 /dev/input/wacom 和用于触摸设备的 /dev/input/wacom_touch

静态设置

通常建议依赖于 Xorg 的自动检测或使用动态设置。但是,对于内部数位板设备,如果自动检测不起作用,则可以考虑静态 Xorg 设置。当 Wacom 数位板连接到不同的 USB 端口,甚至在拔下并重新插入到同一端口后,静态 Xorg 设置通常无法识别您的 Wacom 数位板,因此应将其视为已弃用。

如果您坚持使用静态设置,只需在下一节中使用正确的 /dev/input/event?? 文件在 Xorg 配置中引用您的数位板,可以通过查看 /proc/bus/input/devices 找到这些文件。

Xorg 配置

在任何情况下,动态或静态设置,您现在都在 /dev/input/ 中获得了一个或两个文件,它们引用了您的数位板的正确输入事件设备。剩下的就是将相关信息添加到 /etc/X11/xorg.conf/etc/X11/xorg.conf.d/ 下的专用文件中。确切的配置当然取决于您的数位板的功能。xsetwacom list devices 可能会提供有关您的数位板需要哪些 InputDevice 部分的有用信息。

Volito2 的示例配置可能如下所示

Section "InputDevice"
    Driver        "wacom"
    Identifier    "stylus"
    Option        "Device"       "/dev/input/wacom"   # or the corresponding event?? for a static setup
    Option        "Type"         "stylus"
    Option        "USB"          "on"                 # USB ONLY
    Option        "Mode"         "Relative"           # other option: "Absolute"
    Option        "Vendor"       "WACOM"
    Option        "tilt"         "on"  # add this if your tablet supports tilt
    Option        "Threshold"    "5"   # the official linuxwacom howto advises this line
EndSection
Section "InputDevice"
    Driver        "wacom"
    Identifier    "eraser"
    Option        "Device"       "/dev/input/wacom"   # or the corresponding event?? for a static setup
    Option        "Type"         "eraser"
    Option        "USB"          "on"                  # USB ONLY
    Option        "Mode"         "Relative"            # other option: "Absolute"
    Option        "Vendor"       "WACOM"
    Option        "tilt"         "on"  # add this if your tablet supports tilt
    Option        "Threshold"    "5"   # the official linuxwacom howto advises this line
EndSection
Section "InputDevice"
    Driver        "wacom"
    Identifier    "cursor"
    Option        "Device"       "/dev/input/wacom"   # or the corresponding event?? for a static setup
    Option        "Type"         "cursor"
    Option        "USB"          "on"                  # USB ONLY
    Option        "Mode"         "Relative"            # other option: "Absolute"
    Option        "Vendor"       "WACOM"
EndSection

确保您也更改了鼠标的路径 ("Device"),因为它现在将是 /dev/input/mouse_udev

Section "InputDevice"
    Identifier  "Mouse1"
    Driver      "mouse"
    Option      "CorePointer"
    Option      "Device"             "/dev/input/mouse_udev"
    Option      "SendCoreEvents"     "true"
    Option      "Protocol"           "IMPS/2"
    Option      "ZAxisMapping"       "4 5"
    Option      "Buttons"            "5"
EndSection

将其添加到 ServerLayout 部分

InputDevice "cursor" "SendCoreEvents" 
InputDevice "stylus" "SendCoreEvents"
InputDevice "eraser" "SendCoreEvents"

最后,确保更新 ServerLayout 部分中鼠标的标识符 – 因为我的从

InputDevice    "Mouse0" "CorePointer"

InputDevice    "Mouse1" "CorePointer"

鼠标由于接近传感器而异常移动

您可以禁用由于接近传感器检测到不存在的手写笔而导致的鼠标跳动。您可以使用 xinput --list 找到您的设备,并在发现手写笔后,使用以下命令禁用它

$ xinput disable device

这仅在您当前未使用手写笔时才有效。

图形数位板上的触摸仲裁不起作用

如果您正在使用 libinput,则具有手写笔和触摸屏的图形数位板可能不支持开箱即用的 触摸仲裁,因为这些设备未分组到同一个 libinput 设备组中。您可以通过编写 udev 规则来解决此问题。例如,如果触摸屏被识别为 0001:000a,而 Wacom 数位板被识别为 0002:000b,您可以创建 /etc/udev/rules.d/80-touch-arbitration.rules 作为将这些设备分组到组 f865e87b 中的规则

/etc/udev/rules.d/80-touch-arbitration.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0001", ATTRS{idProduct}=="000a", ENV{LIBINPUT_DEVICE_GROUP}="f865e87b"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0002", ATTRS{idProduct}=="000b", ENV{LIBINPUT_DEVICE_GROUP}="f865e87b"

报告非 Wacom 数位板的问题

如果您有缺少功能的非 Wacom 数位板,您可以 向 DIGImend 驱动程序作者报告平板电脑测试,以便将其功能包含到驱动程序中。DIGImend 诊断工具在 AUR 上以 uclogic-toolsAUR 的形式提供。您还需要 usbutils 中提供的 lsusbusbhid-dump 程序。

参见