朋友们,我非常自豪地向你介绍 —— 我让 Linux REAPER 实现了输入法的功能!
前情提要
早在2017年,REAPER 刚发布“预发布”的 Linux 版本时,我就在官网论坛咨询过关于 Linux 上输入法的事情。
在2018年我也提交了“功能请求”,后面陆陆续续有过讨论,但都是无疾而终。
在当时,想要让 Linux REAPER “输入中文”,只有复制/粘贴,或用第三方输入框的方案。无论哪个方案都不算方便。
转折来了
在2022年,我在 Fcitx(一个极为流行的输入法框架) 讨论组里提问了这个事情,并附上了 Linux REAPER 的开源图形库 SWELL 的仓库地址。
Fcitx 的开发者 csslayer 回答了我的提问,并给予了大方向的实现步骤。得知这个“可能性”是非常重要的,大方向的实现步骤也是本文能落地的关键。
推波助澜
Steam 在过去十多年的时间里,也一直没有 Linux 输入法的支持。
今年我才得知原来在去年连 Steam 本身也支持了 Linux 输入法。从官方论坛的相关讨论就能看到,Linux REAPER 并不是没有 CJK(中日韩) 用户的。现在连Steam都解决了10多年的问题,我决定 REAPER 部分我来实现。
安装要求
-
首先要让 REAPER 显示 CJK 字符,最简单的方式就是用 fontconfig 指定: 如何在Linux REAPER里显示中文
-
其次要让你的 Linux 系统设置正确的输入法相关的环境变量,简单来说起码要在 Linux QQ 上能正常使用输入法。
安装步骤
步骤任选其一
-
你可以下载我项目里的预编译库:
备份原来 REAPER 安装目录里的
libSwell.so
文件,把下载的新libSwell.so
文件放到 REAPER 的安装目录里。如果你是使用 Archlinux 的包管理安装的 REAPER,安装目录就在/usr/lib/REAPER/
(你可能需要 sudo 来操作)。 -
你也可以自己编译自己的版本:
git clone https://github.com/wastee/REAPER-IM-SWELL.git cd REAPER-IM-SWELL/WDL/swell/ make PRELOAD_GDK=1 SWELL_SUPPORT_GTK=1 SWELL_SUPPORT_IM=1
编译命令
SWELL_SUPPORT_IM=1
是必须的;使用SWELL_SUPPORT_IM=1
的前提是SWELL_SUPPORT_GTK=1
;PRELOAD_GDK=1
这个对于 sws 是必须的,如果你不使用 sws 可以不必添加。编译完成后也是把
libSwell.so
文件复制到你的安装目录。
如果你完成了上述的安装步骤,那么就已经可以尝试在输入框里输入你第一个中文字了!
已知问题
测试过的系统和输入法框架在仓库 README 有详细说明:GitHub - wastee/REAPER-IM-SWELL: A input method support for SWELL, aimed at providing basic input method functionality for REAPER on Linux.
也有一些已知问题:
-
如果关闭 REAPER 前没有关闭的窗口,比如 Media Explorer。重启 REAPER 后输入法候选框的位置会不听使唤,一般重新打开窗口就没问题了。也有极个别的重新打开也会有问题,比如 add fx 窗口。这个问题目前我没有任何办法能够解决。
-
在不同的 DPI 下,输入法候选框的位置可能会不适合你,如把预编辑文字给盖住。你可以手动编辑这一行,然后编译出你自己的版本。
给我鼓励
毫不夸张的说,这个项目花费了我成吨的时间做测试和调试。如果这个项目帮到你,欢迎给我的仓库打上⭐或给我捐赠。
如果你有任何想法或代码贡献,也欢迎提交PR。
本作品采用知识共享署名 4.0 国际许可协议进行许可。