绘图板

来自 ArchWiki

来自 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 Driver — Huion 官方专有的 Linux 驱动程序。
https://www.huion.com || huiontabletAUR
  • XP-Pen Linux Driver — XP-Pen 官方专有的 Linux 驱动程序。某些 UGEE 设备也可能受支持。
https://www.xp-pen.com || xp-pen-tabletAUR
  • OpenTabletDriver — 一个跨平台用户空间驱动程序,适用于多种不同的绘图板型号。
https://opentabletdriver.net || opentabletdriverAUR
https://github.com/RoaldFre/wacom_serial5 || wacom_serial5-dkms-gitAUR

Weylus

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

配置

可以使用 xsetwacom 临时配置 Xorg 驱动程序,请参阅 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

将绘图板映射到显示器

如果您有多个显示器,将绘图板映射到单个显示器以避免绘图时失真非常有用。 如果您有带屏幕的绘图板,这也可用于将绘图板的活动区域映射到其自身的屏幕。

您可以使用以下命令将绘图板映射到显示器,其中 output 是您的显示器标识符,如 xrandr 报告的那样

$ 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 中启用正确的使用和压力感应绘画,只需转到编辑 > 输入设备。 现在,对于您的每个橡皮擦触控笔光标设备,将模式设置为屏幕,并记住保存。

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

有关更多信息,请查看 GIMP 讨论 - 社区 - 安装指南:使 Wacom 绘图板在 Gimp 中工作设置 GIMP 部分。

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

Inkscape

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

Krita

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

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

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

MyPaint

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

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

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

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

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

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

OpenToonz

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

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

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

Pencil2D

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

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 Fixed device files with 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 程序。

另请参阅