• 解決 Ubuntu 平台無法在 Qt5 切換 Fcitx 輸入法的問題

解決 Ubuntu 平台無法在 Qt5 切換 Fcitx 輸入法的問題

參考資料:

http://www.cnblogs.com/cposture/p/5397694.html

使用 Python 3 啟動 Leo editor、QtCreator,甚至是自己的 PyQt 專案時,會發生無法在視窗內使用英文以外的輸入法。

在 Qt4 時,這個功能可以直接在 Qt Setting 中選擇。Qt5 則是依賴「fcitx-qt5」這個套件,使用 apt 檢查時,會顯示已經安裝並為最新版。

但是安裝 Qt 時的 fcitx-qt5 套件沒有對應到作業系統的 Fcitx 版本時,就要手動 make 了。

在編譯 fcitx-qt5 前,先確認已經安裝最新的 CMake。

示範的 Qt 安裝位置為 /opt/Qt/,版本為 5.6,請根據自身版本做調整。

這些流程在 14.04 和 16.04 中是大同小異的,並沒有太大分別。

編譯 fcitx-qt5

從官方倉儲下載 fcitx-qt5,進入該資料夾中:

$git clone https://github.com/fcitx/fcitx-qt5
$cd fcitx-qt5

接著準備編譯 fcitx-qt5。

$cmake .
$make
$sudo make install

在使用 CMake 時會發生如下問題。

extra-cmake-modules

錯誤訊息:

CMake Error at CMakeLists.txt:8 (find_package):
Could not find a package configuration file provided by "ECM" (requested
  version 1.4.0) with any of the following names:
ECMConfig.cmake
ecm-config.cmake
  Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"
  to a directory containing one of the above files.  If "ECM" provides a
  separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!

到下面網址下載 CMake 額外模組:

https://launchpad.net/ubuntu/+source/extra-cmake-modules/1.4.0-0ubuntu1

解壓縮進入,編譯並安裝模組。編譯前必須指定 CMAKE_PREFIX_PATH 位置到 Qt GCC 的 CMake 上。

$export CMAKE_PREFIX_PATH="/opt/Qt/5.6/gcc_64/lib/cmake/"
$cmake .
$make
$sudo make install

xkbcommon

錯誤訊息:

-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") 
-- Could NOT find XKBCommon_XKBCommon (missing:  XKBCommon_XKBCommon_LIBRARY XKBCommon_XKBCommon_INCLUDE_DIR) 
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find XKBCommon (missing: XKBCommon_LIBRARIES XKBCommon) (Required is at least version "0.5.0")

http://xkbcommon.org/ 下載最新的穩定版本。

解壓縮後進入資料夾,安裝時需要用到 bison 套件。

$sudo apt-get install bison
$./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --disable-x11
$make
$sudo make install

安裝 fcitx-qt5

若順利執行 CMake 並成功編譯,會在 platforminputcontext 出現 fcitx-qt5 的程式庫,名為 libfcitxplatforminputcontextplugin.so

接著刪除 Qt 內的 fcitx-qt5 套件:

$sudo rm -f /opt/Qt/5.6/gcc_64/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
$sudo rm -f /opt/Qt/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

然後進入 platforminputcontext 資料夾,先讓該程式庫「可執行化」後再複製。

$sudo chmod +x libfcitxplatforminputcontextplugin.so
$sudo cp libfcitxplatforminputcontextplugin.so /opt/Qt/5.6/gcc_64/plugins/platforminputcontexts/
$sudo cp libfcitxplatforminputcontextplugin.so /opt/Qt/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/

然後設定 Qt5 的預設輸入法為 Fcitx。

直接執行下面這兩個命令,若是登出或重新開機失效,則要到 .bashrc 文件中加入。

$export XMODIFIERS=@im=fcitx
$export QT_IM_MODULE=fcitx

重新啟動 Qt 相關的程式,便能使用 Fcitx 切換其他輸入法了。


Comments

comments powered by Disqus