之前尝试使用 C++实现在 Vim 里面自动切换输入法(相关贴),后来有人提出是否可以只切换输入法状态而不是切换输入法——例如,模拟按Shift
键切换中英文状态。
近期发现 Win32 API 是可以实现 Windows 下输入法状态切换的(详情有兴趣可在评论区问),但是在 ibus 、fcitx 找不到类似的功能接口(在 ibux 的 Github 仓库提 issue 问过)。所以想请教各位佬,有什么“奇技淫巧”,可以通过一个外部程序,读写 ibus 、fcitx 输入法的状态。
1
billlee 163 天前
这个状态应该要具体到某个特定输入法来控制,我用 fcitix + rime, dbus 里有 rime 的 setAsciiMode 接口
|
2
ns09005264 163 天前
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" }) ``` |
3
Neur2n OP @billlee @ns09005264 感谢两位
|