问题
使用输入法时有一个问题就是输入法的状态,每次都要查看状态栏才能得知当前输入法的状态,否则无法知道当前输入法是英文状态还是中文状态。
想法
因此,我们需要想一个办法可以直观的看到当前输入法的状态,而不是每次都去看状态栏中的输入法状态。
有这么几个想法:
- 使用光标。每次输入法发生变化的时候,修改光标的状态或者颜色,使用光标颜色来分别输入法的状态。
- 使用窗口。每当输入法发生变化的时候,修改窗口的状态或者颜色,使用窗口颜色来区别输入法的状态。
这两个想法的前提是可以修改光标或者窗口的样式或行为。鉴于我使用的是Fvwm窗口管理器,所以这可以做到。但是输入法的功能确成为了瓶颈,我们缺少的是在输入法发生变化时收到事件通知的钩子,就是说我们无法检测到输入法何时发生了变化,因此我们也就不知道合适修改光标或者窗口的样式。
因此,只能换个思路了。Fcitx中有个命令fcitx-remote(1),可以用来控制输入法的切换、激活、关闭等等。因此,我们可以定义快捷键组合,按下该组合后,切换到某个输入法,然后再修改光标的颜色或窗口的状态;按下另一组快捷键时,切换到另一种输入法,同时修改光标或者窗口的颜色。你如果问我是怎么想到的,我也不知道,就是突然想到了。
还要在强调一点,因为我使用的窗口管理器是Fvwm,这使得修改光标或窗口的状态成为可能。不是说其他的窗口管理器做不到,如果你所使用的窗口管理器不能方便的修改光标或者窗口的状态,那你只能另辟蹊径了。
说到这里,我又有了另外的一个想法:抛弃直观状态,直接切换到指定的输入法。不管当前的输入法是什么,只要按下指定的快捷键组合就可以直接切换到指定的输入法。虽然这个想法不如先面的那一个,但也能算是个七八分的解决方案,唯一不足的地方就是无法直观的看到输入法的状态。写到这里的时候,我去看了一眼Fcitx中的附加组件,发现有一个扩展Input method selector,这个扩展可以设置快捷键直接切换到某个输入法。emmmmm…。这里就不介绍了,使用该附加组件,通过设置快捷键可以直接切换到某个输入法。
所以到这里,有了本文后面的总结性的内容。
方案一 设置快捷键(一个可以得到7分的办法)
Fcitx中有一个附加组件Input method selector,这个扩展可以设置快捷键来直接切换到某个输入法。
这里就不展开介绍了。唯一需要注意的一点是:你可能需要设置一个额外的输入法用作默认的输入法。因为在该扩展中第一输入法实际上是输入法列表中的第二个。
同时,我还保留了右SHIFT键进行输入法的切换。当我找到输入法的状态时,使用右SHIFT键直接切换状态。
方案二 远程控制Fcitx的切换(一个可以得到10分的方案)
Fcitx软件包中提供了fcitx-remote(1)命令,可以输入法的切换,使用该命令的-s选项来切换输入法。
在桌面环境中自定义快捷键,按下快捷键组合后,使用fcitx-remote切换到指定的输入法,同时修改窗口或光标的颜色。
更新日志
06/30/2018 创建文章