求助: ibus 和 fcitx 框架下的输入法状态切换

16 天前
 Neur2n

之前尝试使用 C++实现在 Vim 里面自动切换输入法(相关贴),后来有人提出是否可以只切换输入法状态而不是切换输入法——例如,模拟按Shift键切换中英文状态。

近期发现 Win32 API 是可以实现 Windows 下输入法状态切换的(详情有兴趣可在评论区问),但是在 ibus 、fcitx 找不到类似的功能接口(在 ibux 的 Github 仓库提 issue 问过)。所以想请教各位佬,有什么“奇技淫巧”,可以通过一个外部程序,读写 ibus 、fcitx 输入法的状态。

622 次点击
所在节点    Linux
3 条回复
billlee
16 天前
这个状态应该要具体到某个特定输入法来控制,我用 fcitix + rime, dbus 里有 rime 的 setAsciiMode 接口
ns09005264
16 天前
fcitx5 可以通过 dbus 发送一些指令,比如我用的 fcitx5-rime 可以用这个指令切换中英状态,完整的 nvim lua 配置示例:
```
vim.keymap.set({ "i", "n" }, "<esc>", function()
io.popen(
"dbus-send --session --print-reply --dest=org.fcitx.Fcitx5 /rime org.fcitx.Fcitx.Rime1.SetAsciiMode boolean:true"
)
return "<cmd>noh<cr><esc>"
end, { expr = true, desc = "Exit insert mode to reset rime" })
```
Neur2n
16 天前
@billlee @ns09005264 感谢两位

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1048291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX