承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

教你怎样快速解决linux下中文输入法问题

管理员 2023-07-13 07:55:34 互联网圈 6 ℃ 0 评论 2011字 收藏

教你怎样快速解决linux下中文输入法问题

故事背景:最近在做资产上报相关功能,要支持中文输入,如果正常快捷方式启动程序没问题,但是升级或卸载重新安装,自启的时候是使用su usr -C XX.sh启动,root下启动没办法获得用户的环境变量,下面开始我们探险之路。。。

探索之路:通过export打印root和用户下的环境变量对照,和google相关linux下输入法相关问题,找到了QT_IM_MODULE这个变量,区别的系统会是ibus或fctix或其他等等,,,

解决方案:由于程序第一次安装的时候需要用户手动启动,我们需要在代码里面添加获得当前用户下的QT_IM_MODULE的值,然后写入全局一个文件,然后在钩子脚本里面去获得这个全局变量的值,在启动脚本里面通过设置export QT_IM_MODULE=XX就能够了,下面展现代码

代码有话说:

1、程序里面需要添加的代码:

//添加全局中文输入法环境变量
    QString qstrInputMethod = path;
    qstrInputMethod += "/.local/sdforcnos/sdforcnos.inputMethod";
    char *pInputEnv = getenv("QT_IM_MODULE");
    if(pInputEnv != NULL)
    {
      QString qstrCMD = QString("echo %1 > %2").arg(pInputEnv).arg(qstrInputMethod);
      system(qstrCMD.toStdString().c_str());
      printf("---%s-----------QT_IM_MODULE=%s\n", qstrCMD.toStdString().c_str(), pInputEnv);
    }

2、钩子脚本需要的代码:

 if [ -e "/home/${user}/.local/sdforcnos/sdforcnos.inputMethod" ];then
     inputEnv=`cat /home/${user}/.local/sdforcnos/sdforcnos.inputMethod`
     if [ ! -z "$inputEnv" ]; then
       export QT_IM_MODULE="$inputEnv"
     fi
    fi
    su $user -c "/usr/bin/startsd &"

总结

到此这篇关于linux下中文输入法问题的文章就介绍到这了,更多相关linux中文输入法问题内容请搜索之前的文章或继续浏览下面的相关文章希望大家以后多多支持!

文章来源:丸子建站

文章标题:教你怎样快速解决linux下中文输入法问题

https://www.wanzijz.com/view/63814.html

相关文章

Related articles

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信