Linux下Qt4與qt5的程序使用輸入法(ibus與fcitx)不沖突


這篇文章引用了較多其他作者的內容,也忘記引用的出處了,只能感謝了。以下轉入正題。

 

對於qt5.5,要下載libqt庫源碼自己編譯,參考解決Qt5 Creator無法切換輸入法(fcitx),Ubuntu中不能使用搜狗輸入法錄入漢字問題

 

Linux下有兩種輸入法,分別是ibus和fcitx,如果喜歡搜狗輸入法的話,需要安裝fcitx.

首先說第一種輸入法ibus.

 

一、ibus

安裝步驟如下:

第一:安裝IBus框架,

sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4

啟動IBus框架,在終端輸入:

im-switch -s ibus

安裝完IBus框架后注銷系統,保證更改立即生效。

注意,這里可能會出錯,提示如下:no configuration file “ibus” exists.解決辦法是修改im-switch的配置文件,步驟如下:

$ cd /etc/X11/xinit/xinput.d/ $ sudo cp default ibus $ sudo vim ibus

在Vim中編輯配置項:

XIM=ibus XIM_PROGRAM=/usr/bin/ibus-daemon XIM_ARGS="—xim"

 

 

創建好配置文件之后再重新啟動im-switch,就可以發現這回能夠選擇到ibus,而括號里面的就是我們的配置文件名,通過配置文件將設置指向了ibus的守護進程ibus-daemon,這樣每次X在啟動的時候就能自動關聯該輸入法,如下:

 

 

第三步:安裝拼音引擎
 

有下面幾種常用選擇:

IBus拼音:sudo apt-get install ibus-pinyin

IBUS五筆:sudo apt-get install ibus-table-wubi

谷歌拼音輸入法:sudo apt-get install ibus-googlepinyin

Sun拼音輸入法:sudo apt-get install ibus-sunpinyin

第四步:設置IBus框架  

ibus-setup

設置IBUS

第五步:環境變量設置

通常情況下,IBus圖標(一個小鍵盤)會出現在桌面右上角的任務欄中。有時候這個圖標會自行消失,可使用以下命令,找回消失的IBus圖標:

ibus-daemon -drx

 

要啟用輸入法,還需要配置環境變量,具體如下(IBus支持 XIM 協議及 Gtk IM 模塊以及 Qt IM 模塊):

export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus

 

要啟用輸入法對qt的支持,步驟如下:

/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so

將該文件復制到

qt安裝目錄/Tools/QtCreator/bin/plugins/platforminputcontexts(作用是使得qtcreator開發環境支持輸入法)

qt安裝目錄/5.3/gcc_64/plugins/platforminputcontexts(個人猜測是使得用編譯器編譯出來的qt程序也支持輸入法)

如果qt開發出來的程序不支持輸入法,那么可以在程序所在的目錄創建platforminputcontexts目錄,然后把libibusplatforminputcontextplugin.so拷貝進去,發布的時候與可執行程序一起發布,如果還是不行,重啟電腦,在重新運行可執行程序。

開機啟動Ibus

System >> Preferences >> Startup Applications
Click the button: Add
Name: ibus daemon
Command: /usr/bin/ibus-daemon -d
Comment: start ibus daemon when gnome start

 

System >> Preferences >> Startup Applications
Click the button: Add
Name: ibus daemon-open
Command: /usr/bin/ibus-daemon -drx

Comment: start ibus daemon when gnome starting

 

常用命令:

im-switch -s ibus   #啟動ibus框架

ibus-setup     #設置ibus框架

ibus-daemon -drx  #通常情況下,IBus圖標(一個小鍵盤)會出現在桌面右上角的任務欄中。有時候這個圖標會自行消失,可使用以下命令,找回消失的IBus圖標

im-switch   #設置系統輸入法

 

$ sudo killall ibus-daemon   #重啟ibus

$ sudo ibus-daemon -d –xim  

 

 

 

二、fcitx輸入法:

 

1、安裝fcitx for Qt5動態庫,從而得到需要的依賴庫

執行如下命令:sudo apt-get install fcitx-libs-qt5

安裝fcitx輸入法前端:sudo apt-get install fcitx-frontend-qt5 

 

2、配置Fcitx環境變量:

export XMODIFIERS=@im=fcitx  

export XIM=fcitx  

export XIM_PROGRAM=fcitx  

export GTK_IM_MODULE=fcitx  

export QT_IM_MODULE=fcitx

 

3.1讓qtcreator開發環境支持搜狗輸入法:

   進入Qt安裝目錄的下面路徑:{path}是Qt的安裝目錄cd{path}(可用命令dpkg -L 包名看文件安裝路徑)

/Qt5.3.1/Tools/QtCreator/bin/plugins/platforminputcontexts 

   拷貝fcitx輸入法支持文件:執行如下命令 將支持文件copy 到上文的目錄sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so . (對於32位系統,對應的目錄為/usr/lib/i386-linux-gnu/qt5/plugins/platforminputcontexts/

)

為剛才的文件添加可執行命令: chmod+x  libfcitxplatforminputcontextplugin.so  重啟Qt就可以使用搜狗輸入法了!!如果還是不行,重啟電腦,再重新打開qtCreator就可以了。 但是 原來的ctrl+空格是代碼提示快捷鍵,現在用於切換輸入法。這也好解決:
Qt creator--->工具--->選項--->環境--->鍵盤。然后找到Complete This修改之即可

3.2讓qt5開發出來的程序也支持搜狗輸入法:

   發布程序時同時把拷貝到程序所在目錄,需要在工程目錄創建platforminputcontexts目錄,然后把/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so拷貝到platforminputcontexts目錄,與程序一起發布,就可以讓qt開發出來的程序在其他機器也能支持fcitx輸入法了,如果還是不行,重啟電腦,重新運行可執行程序。

   

   

 

 

常用命令:

Im-switch -s fcitx切換當前輸入法為fcitx

im-switch -s fcitx -z default  #將fcitx設為默認輸入法

 

 

總結

 

qt安裝目錄下/5.3/gcc_64/plugins這個目錄是用qt creator編譯出的程序運行時調用插件的目錄,所以這個輸入法插件要放到這。好像自己在編譯出的程序下新建
plugins/platforminputcontexts/目錄,再將libfcitxplatforminputcontextplugin.so放進去也是可以的。
qt安裝目錄下/Tools/QtCreator/bin/plugins/這個目錄是qt creator自己調用插件的目錄,所以要想在qt creator中輸入中文這里也要放一個。
 

測試結果:

測試環境: Linux gdlctech-System-Product-Name 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

 

測試程序(以下程序同時運行時均可以正常使用輸入法,不沖突):

qt4.8.5(用自己系統安裝的

qtcreator以及其開發出來的程序)

qt5.3.1(32位的qtCreator可執行程序以及用它開發出來的程序)

Qt4.7.4(金山wps)

QQ程序(應該是qt4的某個版本)

 

注意事項:當ibus和fcitx輸入法同時運行時,切換輸入法會有沖突!!所以,不要把兩種輸入法同時運行!!

http://blog.csdn.net/u013281495/article/details/50560817


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM