我让 Linux REAPER 实现了输入法的功能

I made Linux REAPER implement the functionality of an input method

Posted by Tee on July 23,2025

朋友们,我非常自豪地向你介绍 —— 我让 Linux REAPER 实现了输入法的功能!

前情提要

早在2017年,REAPER 刚发布“预发布”的 Linux 版本时,我就在官网论坛咨询过关于 Linux 上输入法的事情。

2017年的咨询

在2018年我也提交了“功能请求”,后面陆陆续续有过讨论,但都是无疾而终。

在当时,想要让 Linux REAPER “输入中文”,只有复制/粘贴,或用第三方输入框的方案。无论哪个方案都不算方便。

转折来了

在2022年,我在 Fcitx(一个极为流行的输入法框架) 讨论组里提问了这个事情,并附上了 Linux REAPER 的开源图形库 SWELL 的仓库地址。

2022年在 Fcitx 的提问

Fcitx 的开发者 csslayer 回答了我的提问,并给予了大方向的实现步骤。得知这个“可能性”是非常重要的,大方向的实现步骤也是本文能落地的关键。

推波助澜

Steam 在过去十多年的时间里,也一直没有 Linux 输入法的支持。

steam

今年我才得知原来在去年连 Steam 本身也支持了 Linux 输入法。从官方论坛的相关讨论就能看到,Linux REAPER 并不是没有 CJK(中日韩) 用户的。现在连Steam都解决了10多年的问题,我决定 REAPER 部分我来实现。

安装要求

  1. 首先要让 REAPER 显示 CJK 字符,最简单的方式就是用 fontconfig 指定: 如何在Linux REAPER里显示中文

  2. 其次要让你的 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=1PRELOAD_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 国际许可协议进行许可。