前言:從幾乎放棄,到終於能打字
老實說,這篇文章是我在幾乎準備放棄 KDE Plasma Wayland 的虛擬鍵盤時寫下的。
在 Debian 13 + KDE Plasma 6 + Wayland 環境下,官方唯一支援的螢幕鍵盤是 Maliit。
但實際使用後,我遇到的是一連串幾乎無解的問題:
- 鍵盤只出現一次
- swipe 收起後再也叫不回來
- 必須重啟 KWin 或整個桌面
- 與實際平板/二合一裝置使用情境完全不相容
在反覆搜尋解法、翻 GitHub issue、KDE Discuss 討論串的過程中,我一度覺得:
「也許觸控平板選 KDE Wayland 就是死路一條。」
直到我 Google 到一篇 2022 年的 KDE Discuss 討論串:
Plasma 6 and Wayland no on-screen keyboard working - Help - KDE Discuss
其中有一位使用者 @INVICTRA 提到:
I managed to get Onboard working on wayland. Kubuntu 25.04
1 Edit the shortcut in the menu. Within the KDE Menu Editor look for the Environment variables field and add “GDK_BACKEND=x11”.
2 Go to Onboard preferences page. Under Keyboard – >Advanced set:
Input Options → Input event source: GTK
Key-stroke Generation → Key-stroke generator: uinputIf you have time please try it. I would like to know if it works for others too.
我拿去問 ChatGPT 5.2,指出:Onboard + X11 backend + uinput,可能是突破口。
於是我開始實驗,補齊權限、kernel、udev 等細節,最後真的在 Debian 13 + KDE Plasma 6 + Wayland 上,
得到一個 穩定、可重複呼叫、不會卡死 的虛擬鍵盤解法。
這篇文章,就是完整整理後的結果。
一、為什麼需要這樣做(背景說明)
- 2025 年末 KDE Plasma Wayland 官方仍只支援 Maliit
- Maliit 目前在 KDE Plasma 存在嚴重 bug(收起後無法再叫出)
- Wayland 設計上禁止 synthetic input(模擬鍵盤/滑鼠)
- Onboard 可透過 Linux kernel 的 uinput 建立「虛擬鍵盤裝置」
- uinput 屬於 kernel input device,不受 Wayland 限制
簡單說:
Wayland 不讓你「假裝按鍵」,
但 uinput 讓你「真的插一把虛擬鍵盤」。
在目前 Debian + KDE Plasma Wayland 的條件下,
這幾乎是唯一實際可用的方案。
二、系統需求
-
Debian 13
-
KDE Plasma 6
-
Wayland session
-
已安裝 XWayland(通常預設已有)
-
使用者具備 sudo 權限
-
- *
三、安裝必要套件
sudo apt update
sudo apt install onboard xwayland
四、啟用 kernel uinput 模組
1. 確認是否已載入
lsmod | grep uinput
若沒有任何輸出,請手動載入:
sudo modprobe uinput
2. 設定開機自動載入
echo uinput | sudo tee /etc/modules-load.d/uinput.conf
五、設定 uinput 權限(關鍵步驟)
1. 建立群組
sudo groupadd -f uinput
2. 將使用者加入群組(以 hln 為例)
sudo usermod -aG uinput hln
注意:這一步完成後,一定要重新登入或重開機。
3. 建立 udev 規則
sudo nano /etc/udev/rules.d/99-uinput.rules
內容如下:
KERNEL=="uinput", MODE="0660", GROUP="uinput"
重新載入規則:
sudo udevadm control --reload
sudo udevadm trigger
4. 重開機後確認
ls -l /dev/uinput
正確結果應類似:
crw-rw---- 1 root uinput /dev/uinput
確認自己在群組內:
groups
必須看到 uinput。
六、以 X11 backend 啟動 Onboard(非常重要)
在 Wayland 下,一定要強制使用 X11 backend:
GDK_BACKEND=x11 onboard
建議先在 Konsole 中測試,確認鍵盤能正常顯示。
七、Onboard 設定(必做)
開啟 Onboard → Preferences → Keyboard → Advanced
請設定為:
-
Input Options
- Input event source:GTK
-
Keystroke Generation
- Key-stroke generator:uinput
如果你之前試過 uinput 但沒有反應,
完成權限設定後一定要重新測試。
八、實際驗證方式
- 開啟可輸入文字的程式(Kate / Firefox / Konsole)
- 點擊輸入框取得 focus
- 使用 Onboard 點擊鍵盤
成功狀態:
-
文字實際輸入到程式中
-
可反覆叫出 / 收起
-
不需重啟 KWin
-
不會卡死
-
不受 Maliit bug 影響
-
- *
九、建立桌面捷徑(推薦)
nano ~/.local/share/applications/onboard-x11.desktop
內容:
[Desktop Entry]
Name=Onboard (Wayland Safe)
Exec=env GDK_BACKEND=x11 onboard
Type=Application
Icon=onboard
Categories=Utility;Accessibility;
之後可以:
-
加到 KDE 工作列
-
加到桌面
-
當作一鍵呼叫虛擬鍵盤
-
- *
十、限制與注意事項
已知限制
- SDDM 登入畫面無法使用
- 非 Wayland 原生(透過 XWayland)
- 提升輸入層權限,適合個人裝置
優點
-
不會 swipe-down 卡死
-
支援 Ctrl / Alt / Function keys
-
可搭配 Fcitx5 新酷音
-
Synergy / KVM 正常
-
長時間穩定可用
-
- *
十一、回復原狀(可逆)
sudo rm /etc/udev/rules.d/99-uinput.rules
sudo gpasswd -d hln uinput
sudo reboot
十二、結論
在 Debian 13 + KDE Plasma Wayland 環境下:
Onboard + uinput 是目前唯一實際可用的虛擬鍵盤方案。
這不是官方完美解法,但 KDE 社群畢竟是做無償,你不能過度給予不符比例的期待。
最重要的是問題解決,我現在可以拿著沒有鍵盤的平板,打注音或英文操作系統了!
我最近也遇到类似问题,在二合一设备上使用kde plasma时,我需要在锁屏界面使用屏幕键盘,在进入桌面后使用拼音键盘或者混合使用拼音/屏幕键盘
1. 在桌面使用屏幕键盘可以用onboard corekeyboard这类软件来模拟物理键盘输入,可以实现拼音/屏幕键盘混合使用,只需要在托盘唤起屏幕键盘就可以了
2. 要实现锁屏界面混合使用,kde/wayland对于锁屏界面有许多限制,在设置→键盘→虚拟键盘,同时只能使用一个虚拟键盘(Fcitx5,Maliit,Plasma-Keyboard三选一),锁屏界面限制了其他用户软件的工作,不能使用onboard这些软件,若是手动在设置里更改使用什么虚拟键盘也太麻烦了
3. 我能想到的方案 一是编写脚本,在锁屏前更换虚拟键盘为屏幕键盘,这样就能在锁屏界面使用了 二是采用类似fcitx5-osk这样的拼音键盘的前端,通过特点的触摸或者双击事件来唤起屏幕键盘前端,后端仍然是拼音键盘
另外,类似方案在GNOME下开箱即用,ibus与gome自带的屏幕键盘耦合,在gdm和gnome锁屏使用屏幕键盘也不需要什么配置什么
– 如果要使用GNOME下的屏幕键盘推荐安装使用GJS OSK扩展
感谢大佬分享,这个问题令我困扰好久了