Fcitx中文状态下的英文输入问题解决方案

Fcitx--企鹅输入法广受Linuxer们的喜爱,我本人也被其小巧/简洁所吸引.

不过在用了一段时间后,发现Fcitx有个小毛病,就是在中文输入状态下,如果我要输入英文单词,并且这个单词以小写字母开头,中间夹着大写字母,这时输入的大写字母就直接输入到编辑器中了,而不是在输入窗口中,这样最终输入的单词就是错位的.也许表述不是很明确,下面贴上图(输入英文"autoEng.c"):


Fcitx在中文输入状态下,如果第一个字母是大写的话,其将自动进入英文输入状态.于是,我就想对其进行一些改造,使其能够在中文输入的状态下输入大小写混用的英文单词(开头是小写字母).

首先,到Google  Code上下载Fcitx的源码(http://code.google.com/p/fcitx/downloads/list),我下载的是fcitx-4.1.1_all.tar.bz2.

解压后,进入Fcitx的解压目录,使用vi编辑文件"src/module/autoeng/AutoEng.c",并定位到185行,或是含有如下IF语句的行:

if (autoEngState->owner->input.iCodeInputCount == 0 && IsHotKeyUAZ(sym, state))

将该if语句修改成如下所示:

if (/*autoEngState->owner->input.iCodeInputCount == 0 && */IsHotKeyUAZ(sym, state))
{   
    /*autoEngState->index = 1;
    autoEngState->buf[0] = sym;
    autoEngState->buf[1] = '\0';*/
    autoEngState->buf[autoEngState->index++] = sym;
    autoEngState->buf[autoEngState->index] = '\0';
    *retval = IRV_DISPLAY_MESSAGE;
    input->bShowCursor = false;
    autoEngState->index = strlen(autoEngState->buf);
    autoEngState->active = true;
    ShowAutoEngMessage(autoEngState);
    return true;
}
AutoEng.c文件是用于控制在中文输入法下何时进入英文输入状态,从代码中可以看到,原来判断英文输入状态是通过第一个字母是否为大写来判断的,如果是第一个输入且为大写字母,则进入英文输入,否则,就是中文输入.

在这里,我只需要判断输入的字母中是否有大写字母,如果有大写字母,则也进入英文输入,而不管其是否是第一个输入,并让其紧接着前面的一起构成要输入的英文单词.

修改完毕后,运行如下命令,对fcitx进行重新编译和安装:

$: cmake . && make && sudo make install
退出Fcitx并通过终端输入fcitx命令启动企鹅输入法,然后,在输入大小写混合的英文单词时,你会发现,你成功啦!

下面是截图(仍然输入英文"autoEng.c"):



如果你已经安装了Debian系统并且尝试使用FCITX输入中文但是无法正常工作,可以按照以下步骤排查和解决: 1. **检查是否安装了FCITX**: - 打开终端(Ctrl+Alt+T),运行`apt list | grep fci`tx``,确认FCITX及其依赖是否已安装。如果没有,运行`sudo apt install fcitx fcitx-config-gtk` 来安装。 2. **配置环境变量**: - 如果FCITX已经安装,确保环境变量设置正确。编辑`~/.bashrc` 或 `~/.profile` 并添加以下行: ``` export GTK_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx ``` 3. **启动和启用FCITX**: - 运行 `sudo fcitx` 启动输入法客户端,然后通过桌面面板或快捷键开启输入法。 4. **重启输入法服务**: - 如果上述操作无效,试试 `sudo service fcitx restart`。 5. **检查语言支持**: - 确保已经安装了相应的语言包,例如`sudo apt-get install language-pack-zh-hans`(针对简体中文)。安装完后重启系统让更改生效。 6. **检查配置文件**: - 查看 `/etc/fcitx/config.xml` 文件,确认是否有正确的键位表和其他配置设置。 7. **检查是否有冲突应用**: - 有时候其他输入法软件可能会干扰FCITX的工作。关闭这些可能冲突的应用并测试FCITX是否可以正常使用。 如果以上步骤都完成之后仍然无法输入中文,可能是软件兼容性问题或系统配置问题,建议查阅Debian社区的文档或者搜索类似问题解决方案,或者寻求技术支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值