绘图板
- 绘图板(也称为数字化仪、数字绘图板、笔式绘图板、手绘板、外置绘图板或数字艺术板)是一种计算机输入设备,使用户能够使用特殊的笔状触控笔手绘图像、动画和图形,类似于人们用铅笔和纸张绘画的方式。
大多数绘图板在 Arch Linux 下即插即用。某些额外功能(例如按钮重映射和调整绘图板的纵横比)需要额外配置。本文介绍如何在 Xorg 下使用 xf86-input-wacom 驱动程序配置您的绘图板。 有关在 Wayland 下配置,或使用默认 xf86-input-libinput 驱动程序时的配置,请参阅 #Wayland 和 libinput。
安装
Arch Linux 内核 包含 linux-wacom 和 DIGImend 项目的驱动程序。 linux-wacom 支持 Wacom 设备,而 DIGImend 支持其他制造商的设备。 这两个项目都发布了受支持设备列表:linux-wacom,DIGImend。 通过 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
重启 X 后,命令 xsetwacom list devices
现在应该列出一些设备。 如果没有,请参阅 #手动设置。
实用程序
- Wacom Tablet KCM — 一个 KDE 配置模块,允许重映射按钮和将绘图板映射到显示器。 它还支持特定于绘图板的配置文件和热插拔。 它在 Wayland 上不起作用,因为它需要 wacom Xorg 驱动程序。
- mapwacom — 一个脚本,可自动将绘图板映射到显示器,同时使用 #减小绘图区域高度 方法保留纵横比。
- wacom2monitor — 一个脚本,使用 #将绘图板映射到显示器 方法映射所有 Wacom 设备,并允许在可用输出之间循环切换。 它旨在通过 Xbindkeys 或 sxhkd 激活。
备选驱动
- Tuhi — 一个应用程序,可以从 Wacom 的智能板系列设备(例如 Bamboo Spark 和 Bamboo Slate)下载绘图。
- Huion Linux Driver — Huion 的官方专有 Linux 驱动程序。
- XP-Pen Linux Driver — XP-Pen 的官方专有 Linux 驱动程序。 某些 UGEE 设备也可能受支持。
- OpenTabletDriver — 一个跨平台用户空间驱动程序,适用于多种不同的绘图板型号。
- wacom_serial5 — 一个用于旧 Wacom 串行绘图板的内核驱动程序。 有关连接串行设备的更多信息,请参阅 串行输入设备到内核输入。
Weylus
Weylus 是一个允许在计算机上使用智能手机或平板电脑作为绘图板的项目。 它以 weylusAUR 或 weylus-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
对于 get
和 set
命令,可以通过名称或 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
查看修饰符的完整列表。 - 关键字(例如
key
和button
)可以混合使用。
要将按钮重映射到 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 将绘图板按钮直接映射到自定义命令,但可以将它们映射到将激活自定义按键绑定实用程序(例如 Xbindkeys,sxhkd 或窗口管理器或桌面环境的键盘快捷键配置系统)的组合键。
可以将绘图板按钮重映射到硬件上不可用的功能键或鼠标按钮,例如 F20 或鼠标按钮 10。 这样,您可以设置仅通过绘图板按钮执行的自定义命令。
调整纵横比
绘图板的绘图区域通常比 16:9 纵横比的常用宽屏显示器更接近正方形,从而导致您的输入在垂直方向上略有压缩。 要解决此类纵横比不匹配问题,您需要通过减小绘图区域高度(在 Windows 上称为强制比例)或减小屏幕区域宽度来妥协。 前者浪费了绘图区域,而后者阻止您使用触控笔到达屏幕的右边缘。 这可能仍然是一个值得做出的妥协,因为它可以防止笔划倾斜。
通过运行以下命令找出绘图板的分辨率
$ xsetwacom get stylus Area
减小绘图区域高度
运行
$ xsetwacom set stylus Area 0 0 tablet_width height
其中 height 为 tablet_width * screen_height / screen_width。
可以使用以下命令将绘图板分辨率重置为默认值
$ xsetwacom set stylus ResetArea
减小屏幕区域宽度
运行
$ xsetwacom set stylus MapToOutput WIDTHxSCREEN_HEIGHT+0+0
其中 WIDTH 为 screen_height * tablet_width / tablet_height。
将绘图板映射到显示器
如果您有多个显示器,则将绘图板映射到单个显示器以避免绘图时失真非常有用。 如果您有带屏幕的绘图板,也可以使用它将绘图板的活动区域映射到其自身的屏幕。
您可以使用以下命令将绘图板映射到显示器,其中 output 是您的显示器标识符,由 xrandr 报告
$ xsetwacom set stylus MapToOutput output
例如
$ xsetwacom set 'Wacom Intuos S Pen stylus' MapToOutput VGA-0
如果这不适用于 Nvidia 二进制驱动程序,请尝试根据显示器编号使用 HEAD-0,HEAD-1,...。
或者,您可以使用参数 next 切换到下一个可用显示器。
例如
$ xsetwacom set 'Wacom Intuos S Pen stylus' MapToOutput next
如果 xsetwacom 无法找到您的输出,则可以使用 #减小屏幕区域宽度 中的命令将绘图板手动映射到与您的显示器匹配的区域。 运行
$ xsetwacom set stylus MapToOutput SCREEN_WIDTHxSCREEN_HEIGHT+HORIZONTAL_OFFSET+VERTICAL_OFFSET
其中 SCREEN_WIDTH 和 SCREEN_HEIGHT 是显示器的宽度和高度(以像素为单位),而 HORIZONTAL_OFFSET 和 VERTICAL_OFFSET 是所需显示器的坐标,从设置中最左侧和最高的像素开始。 例如,如果您有两个 1920x1080 的显示器并排,并且您想将绘图板映射到最右侧的显示器,则可以运行
$ xsetwacom set stylus MapToOutput 1920x1080+1920+0
如果 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 用户服务启动时,所需的变量 DISPLAY
和 XAUTHORITY
应该已经设置。 有关详细信息,请参阅 systemd/User#DISPLAY 和 XAUTHORITY。
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 和 xorg.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 服务器才能生效。
xsetwacom 可以尝试以 xorg.conf 格式打印设备的所有当前设置
$ xsetwacom get device all
按钮重映射
通过 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
然后,您可以使用 #执行自定义命令 将这些按钮映射到其他命令,或使用 自动化工具 映射到其他按键。
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 库来管理触控笔压力。 请参阅 Digimend 关于 Alchemy 的文档。
Blender
要在 Blender 中启用面板按钮和额外的笔按钮,您可以创建一个 xsetwacom 包装器来临时重映射 Blender 会话的按钮。
DrawPile
drawpileAUR 是一个绘图白板(网络协作绘图工具)。 它管理其绘图工具上的压力级别。 在“Freehand”框中,需要激活每个参数右侧的画笔图标,才能对此参数进行压力管理。 窗口右下角(“Input”框)只有一个通用曲线,可以应用于触控笔、距离和速度。
GIMP
要在 GIMP 中启用正确的使用和压力感应绘画,只需转到 编辑 > 输入设备。 现在,对于您的每个橡皮擦、触控笔和光标设备,将模式设置为屏幕,并记住保存。
- 请注意,如果存在面板设备,则应保持禁用状态,因为我不认为 GIMP 支持此类设备。 或者,要使用绘图板的此类功能,您应该使用诸如 Wacom ExpressKeys 之类的程序将它们映射到键盘命令。
- 您还应该注意,为触控笔选择的工具与橡皮擦的工具无关。 这实际上可能非常方便,因为您可以将橡皮擦设置为用作您喜欢的任何工具。
有关更多信息,请查看 GIMP Talk - Community - Install Guide: Getting Wacom Drawing Tablets To Work In Gimp 的Setting up GIMP 部分。
如果以上方法还不够,您可能需要尝试使用 xinput create-master
和 xinput reattach
命令将绘图板的触控笔(和橡皮擦)设置为第二个鼠标指针(使其与鼠标分离)。 当即使触控笔触摸绘图板,GIMP 也不开始绘画时,这可能会有所帮助。
Inkscape
Inkscape 中的压力感应与 GIMP 中的启用方式相同。 转到 编辑 > 输入设备...。 现在,对于您的每个橡皮擦、触控笔和光标设备,将模式设置为屏幕,并记住保存。
Krita
如果您的绘图板在 Krita 中无法绘图(未注册点击/压力),但在具有小测试区域的笔刷选择对话框中有效,请尝试将 Krita 置于全屏或仅画布模式。
Krita 仅要求 Qt 能够使用您的绘图板正常运行。 如果您的绘图板在 Krita 中不起作用,请务必先检查它在 Qt 中是否有效。 然后可以在 painttop 配置中调整绘图板压力的效果,例如,通过选择不透明度,然后从下拉菜单中选择压力并根据您的偏好调整曲线。
MyPaint
mypaint (额外的 mypaint-brushes、mypaint-brushes1,请注意,这些笔刷也用于使用 libmypaint 的其他应用程序)是一个通用的位图绘制应用程序。 它的高级笔刷设置已被 GIMP、Krita、OpenToonz 和其他一些应用程序采用,并且正在 Pencil2D 中集成。 它是一个非常轻量级的工具,可以在低端计算机中使用。
在 MyPaint 中,有关于绘图板的常规设置和每个笔刷的特定参数(您可以设置自己的笔刷)。
常规设置位于菜单 编辑 > 编辑首选项 中。
- “压力”选项卡用于全局压力映射。
- “设备”选项卡显示检测到的输入设备列表,其中包含少量常规信息。 通过单击“用于...”(任何任务、忽略、非绘画任务、仅导航)和“滚动...”(缩放、平移)列中的参数,可以将每个设备分配给特定任务。
- “按钮”选项卡允许将按钮分配给特定功能。
可以通过笔刷上下文菜单(右键单击工具)访问笔刷设置。您可以在修改前复制现有工具,从而保留具有默认预设的工具(上下文菜单中的“克隆”)。
- 要编辑笔刷设置,只需使用笔刷上下文菜单中的编辑笔刷设置。有几个设置,有关完整描述,请参阅MyPaint 文档,或者亲自尝试以了解它们的作用。
OpenToonz
opentoonz 是一款专业的 2D 动画工具,最初由吉卜力工作室开发,并被吉卜力工作室和 Folimage 等公司使用。
默认情况下,默认工具会管理手写笔压力。在第二行,右上角有一个压力复选框,可以取消选中以禁用压力管理。可以通过预设右侧的菜单按钮选择多个预设,并使用 +/- 按钮添加或删除预设。
libmypaint 笔刷可以在基础模式(右上角选项卡)中选择,然后在绘图区域和曝光表之间的列中选择:在“[LEVEL]: Palette”按钮处,单击“Raster”选项卡以查看笔刷。笔刷可以使用 MyPaint 编辑并在 OpenToonz 中使用。
Pencil2D
pencil2d 是一款轻量级的 2D 动画工具。每个可以使用压力参数的工具(铅笔、橡皮擦、钢笔和笔刷)都有一个名为“压力”的复选框,默认情况下选中该复选框以使用手写笔压力参数。
Xournal++
Xournal++ (xournalpp) 是 xournalAUR 的继任者,并且完全支持压感手写笔输入。有关配置,请参阅编辑 > 首选项菜单中的输入设备和手写笔。
Wayland 和 libinput
当您使用 Wayland 时,图形平板电脑由 libinput 处理,libinput 依赖于 libwacom 提供的信息。在这种情况下,无法通过 xsetwacom 进行配置。您只能通过 桌面环境或 Wayland 合成器中提供的设置来配置平板电脑。请参阅 [4] 以检查您的设备是否完全受支持,以及为您的设备添加支持的方法。
- GNOME 完全支持配置按钮以及将平板电脑映射到显示器。[5]
- KDE Plasma 完全支持配置按钮以及将平板电脑映射到显示器。[6] [7]
- Sway 仅支持将平板电脑映射到显示器或区域,请参阅 #Sway 和 sway-input(5) § 映射配置。
- Hyprland 仅支持将平板电脑映射到显示器或区域,请参阅 Hyprland 文档。
- 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_pad
和 type: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_X和ABS_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-udev 中的 udev 配置中,该配置位于 /usr/lib/udev/rules.d/wacom.rules
中。将该文件复制到 /etc/udev/rules.d/wacom.rules
并在其中进行修改。
通过复制另一个设备的某一行并调整 idVendor、idProduct 和符号链接名称以适应您的设备,将您的设备添加到文件中。可以使用以下命令确定这两个 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 设置。静态 Xorg 设置通常无法识别您的 Wacom 平板电脑,当它连接到不同的 USB 端口时,甚至在拔下并重新插入到同一端口后也无法识别,因此应将其视为已弃用。
如果您坚持使用静态设置,只需在下一节中使用正确的 /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"
鼠标因接近传感器而 Erratically 移动
您可以禁用由于接近传感器检测到不存在的手写笔而导致的鼠标跳动。您可以使用 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 中提供的 lsusb
和 usbhid-dump
程序。