本文簡單介紹如何在 Linux 上設定繪圖板。
本文假設你已經懂得使用各個發行版的軟體管理器來安裝軟體,不再囉嗦。本文也假設你認識 Debian,Arch 這兩個主流的 GNU/Linux 發行版(知道就好,不需要深入了解),因為會有幾處提到它們作為例子。
前置#
這部分是一些與繪圖板沒有直接關係但有機會會遇到的問題。
顯示伺服器#
在這裡你不太需要很深入了解甚麼是顯示伺服器。它大概就是一個負責圖形介面的組件。
你只需要知道在 Linux 上的顯示服務一般都是使用 Xorg 或 Wayland 這兩種。目前大部分的圖形介面應用對 Xorg 的支援都比較好、各大發行版預設也是使用 Xorg,而本人也很少使用 Wayland,所以這篇文會以 Xorg 作基準。Wayland 相關的設置可以參考 ArchWiki。
GPU 驅動#
Nvidia GPU#
Nvidia 的驅動基本上需要安裝官方的專有閉源驅動。安裝不難,但容易遇上問題。詳細參見:在 Linux 上安裝 Nvidia GPU 驅動
AMD GPU#
AMD 的 GPU 驅動有官方的自由軟體和專有的驅動兩種。一般來說自由軟體的驅動就足夠的了,除非你遇到嚴重卡頓的問題你才需要試試安裝專有驅動。Debian 系的發行版的話可以參考 Debian Wiki 的 AtiHowTo、或者 Arch 系 ArchWiki 的 AMDGPU。
Intel iGPU#
Intel 的內顯則是完全開箱即用的。
繪圖板自身對 Linux 的支援#
不同廠商對 Linux 的支援都未必一致。
一直以來比起專有軟體我都會優先使用自由軟體(源代碼至少要公開)。Wacom 社的繪圖板在 macOS 上的專有驅動曾經被 發現 會記錄用戶每一個打開的應用並發送到 Google Analytics,用來「改善 軟體」。不過 Wacom 同時也有官方的自由軟體的 The Linux Wacom Project 驅動,沒有以上的問題。除非繪圖板型號過新(或過舊),在 Linux 上你只需要安裝相關的驅動就可以即插即用。Wacom 的驅動所支援的型號可以在這裡找到:https://github.com/linuxwacom/input-wacom/wiki/Device-IDs
Wacom 以外的廠商就可能比較麻煩一點了,畢竟 Linux 並不是主流的作業系統。就算廠商有支援它們也不一定是自由軟體。這需要根據你用的型號到他們的官網了解。Huion、XP-pen 都有支援 Linux 的官方驅動,但似乎都是專有軟體。不過,你也可以試試使用 Digimend 的非官方,但是是自由軟體的驅動。一些型號有可能需要再另外自行修改一些 設置 。Digimend 的驅動所支援的型號可以在這裡找到:https://digimend.github.io/tablets/
另外,你也可以參考 David Revoy 的繪圖板心得(My tablet history log: a listing of all the tablet I tested since 2002 (update: 2023) )。他本人從 2009 年以來都是只使用自由軟體在 GNU/Linux 上作業。
安裝繪圖板相關驅動/套件#
安裝 xf86-input-wacom、libwacom。套件根據不同發行版可能會有不同命名。
Wacom 板所需的驅動只有這兩個套件( Digimend 驅動也會用到)。其他繪圖板的話,視乎廠商,安裝 Digimend 或對應的專有驅動。
在 Debian 系和其他大部分的桌面用發行版上,Wacom 驅動已預先安裝好,繪圖板大概已經是 開箱即用 的了。如果你的非 Wacom 的繪圖板沒有反應,但 Digimend 有 支援 的話,你可以安裝 digimend-dkms。如果還是不行,你需要參考 Enabling Wacom X.org driver 手動設置,還有檢查 Digimend 是否最新版。
在 Arch 系的發行版上、Wacom 和 Digimend 的驅動已經是內梱在 Archlinux 使用的 Linux 內核裡了,所以一般來說也是開箱即用的。
設置繪圖板#
Wacom 官方的 Linux 驅動有別於 Windows 的版本,本體沒有提供圖形介面來設定繪圖板。
Linux 上的桌面環境有很多種。有些功能豐富的桌面環境,像 KDE Plasma 可以有圖形介面可以 設定 繪圖板的的功能。另一種直接,但看上去比較嚇人的方法是使用 xsetwacom 的指令來設定。ArchWiki 和 man xsetwacom 有 xsetwacom 的詳細教學,但我會介紹我常用的設置。
首先用 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以上的 Wacom Bamboo 16FG 4x5 Finger touch 是手指用的觸控感應、Wacom Bamboo 16FG 4x5 Finger pad 是繪圖板本身(用來設定按鈕),而 Wacom Bamboo 16FG 4x5 Pen stylus 就是你的筆、最後 Wacom Bamboo 16FG 4x5 Pen eraser 就是橡皮擦。
你需要用記下以上名稱或者 id 數字來指定它們。以下我會用這幾組名稱來示範。
設置繪圖板映射#
在預設沒有任何設置的情況下,繪圖板的筆和橡皮擦會映射到第一個螢幕上。如果你是使用繪圖螢幕的話,你需要把它們映射到你的繪圖螢幕上。
這裡你需要加上你除了液晶繪圖板以外所有螢幕的長度。首先你要去根據你桌面環境附帶的應用去看看你螢幕的配置,並且建議先把它們排整齊。假如我是雙螢幕另外最後加上一個液晶繪圖板的配置:
螢幕配置範例(示意圖,非準確比例)
假如雙螢幕 1, 2 長度分別為 3840, 1080(一個橫向,一個直向),合共 4920,如果你的繪圖板是 1920x1080 尺寸的話,配置就是如下:
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen stylus" MapToOutput 1920x1080+4920+0
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen eraser" MapToOutput 1920x1080+4920+0意思就是把 1920x1080 繪圖板的作業範圍向右方 4920 距離映射(和向下方 0 距離映射)。
每一個螢幕的原點 0,0 是以左上角為準。設置多螢幕時如果螢幕的頂邊都對齊(如圖),你就不用計算螢幕高度。
如果你是對齊底邊的話,那高度你就要加上 最大螢幕的高度 - 繪圖板螢幕高度。假如我最高的螢幕高度為 2160,那 MapToOutput 應該就要是 1920x1080+4920+1080。
意思就是向右方 4920 和向下方 1080 距離映射。
設置繪圖板壓感#
筆和橡皮擦的壓感設定分別如下:
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen stylus" PressureCurve 0 50 50 100
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen eraser" PressureCurve 0 50 50 100你可以參考 xsetwacom 官方的範例來設定後面那四組參數來控制筆壓的「軟硬」,或者如果怕麻煩的話你也可以直接到支援壓感的軟體內逐個設定(比如繪圖軟體 Krita)。
設置繪圖板按鈕#
繪圖板按鈕設定分別像如下:
xsetwacom set "Wacom Bamboo 16FG 4x5 Pen pad" Button 1 "key shift"以上我是把 Button 1 當作 Shift 鍵來使用。我在 Krita 中按住 Shift + 筆前鍵,然後向左向右揮筆來控制筆刷大小。這是用來設定長按按鈕用的寫法。
xsetwacom set "Wacom Bamboo 16FG 4x5 Pen pad" Button 8 "key +ctrl +z -z -ctrl"以上我是把 Button 8 當作 Ctrl + Z 鍵來使用(即還原鍵),但我想保證我按一下就只會還原一步(不會多於一步)。你會看到有 +ctrl +z -z -ctrl 加加減減的東西,這是用來設定只想單擊按下按鈕用的寫法(繼續長按也會被無視)。
當然,按鍵組合也可以更長:
xsetwacom set "Wacom Bamboo 16FG 4x5 Pen pad" Button 13 "key +b +ctrl +alt +1 -1 -alt -ctrl -b"這是我用來指定 Krita 中某一支筆刷的用法。
這一部分比較麻煩。你可能需要自已試哪個 Button id 的數字對應哪個按鈕。Button 4 到 7 似乎 並不使用。
更變螢幕色域#
這部分和 ICC 色彩描述檔、xsetwacom 無關,但如果你覺得螢幕有種掉色的感覺,可以試試以下簡單方法。
首先用 xrandr --listmonitors 指令來找出螢幕的名稱。假如跑出了像這樣的東西: 3: +*DP-1 1920/521x1080/293+0+0 DP-1,那麼 DP-1 就是第三個螢幕的名稱。
如果是 Intel 負責輸出螢幕:
xrandr output DP-1 --set "Broadcast RGB" "Full"
把 "Full" 換成 "Limited 16:235" 就能變回有限的色域。
如果是 AMD 負責輸出螢幕:
xrandr --output DP-1 --set "output_csc" "bypass"
把 "bypass" 換成 "tvrgb", "ycbcr601" 或 "ycbcr709" 就會變成其他色域。
但是,色域設定不是每個螢幕都支援。
整合以上設定#
以上的設定都是一時性的,螢幕重連後會變回原本的樣子。每次都逐個指令輸入很麻煩,但你可以把以上的指令放到同一個檔案內,放在方便的地方,給它可執行的權限。這樣你每次都只需執行或者「點兩下」那個檔案就會跑裡面所有指令了。比如我有一個叫 mytablet 的檔案(Linux 不太重視副檔名,你也可以命名為 mytablet.sh):
#!/bin/sh
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen stylus" MapToOutput 1920x1080+4920+0
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen eraser" MapToOutput 1920x1080+4920+0
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen stylus" PressureCurve 0 50 50 100
xsetwacom --set "Wacom Bamboo 16FG 4x5 Pen eraser" PressureCurve 0 50 50 100
xsetwacom set "Wacom Bamboo 16FG 4x5 Pen pad" Button 1 "key shift"
xsetwacom set "Wacom Bamboo 16FG 4x5 Pen pad" Button 8 "key +ctrl +z -z -ctrl"
xsetwacom set "Wacom Bamboo 16FG 4x5 Pen pad" Button 13 "key +b +ctrl +alt +1 -1 -alt -ctrl -b"
xrandr --output DP-1 --set "Broadcast RGB" "Full"#!/bin/sh (或者 #!/bin/bash 也可以) 必須放在檔案開頭。這是用來標示它是一個 (sh) 腳本程式。在網上你也可以試試搜尋有沒有人跟你用一樣的型號並且 寫好 了設置腳本,以作為你的參考。
結語#
以上是本人在 Linux 上使用繪圖板時所遇到問題整合。更多的 Linux 上繪圖板的使用心得可以參見 David Revoy 的 部落格 。有關 Linux 上推薦的繪圖軟體會日後繼續。