您尚未登录。

#1 2018-02-05 08:28:59

YouWentiDeRen
会员
注册时间: 2018-02-05
帖子: 2

*解答了*求助: fcitx无法输入中文了

我觉得我会疯了!昨天系统更新之后,我的fcitx中文输入无法就坏啦.

其实urvxt的终端我还能打字但是firefox, libreoffice, gedit, 等等,我无法输入.

我觉得有点奇怪的是,我删除了fcitx,安装了ibus以后,ibus也 不行了.看起来我的电脑不要我打汉语了  :-(
可是现在我又想用fcitx了

我的xinitrc就是

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi
xrdb -merge ~/.Xresources
nitrogen --restore &
compton &
cairo-dock -o &
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
exec openbox-session

所以那个重要的

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

当然有...

fcitx-diagnose:

# 系統資訊:
1.  `uname -a`:

        Linux shishi 4.14.15-1-ARCH #1 SMP PREEMPT Tue Jan 23 21:49:25 UTC 2018 x86_64 GNU/Linux

2.  `lsb_release`:

    找不到 `lsb_release`。

3.  `/etc/lsb-release`:

    找不到 `/etc/lsb-release`。

4.  `/etc/os-release`:

        NAME="Arch Linux"
        PRETTY_NAME="Arch Linux"
        ID=arch
        ID_LIKE=archlinux
        ANSI_COLOR="0;36"
        HOME_URL="https://www.archlinux.org/"
        SUPPORT_URL="https://bbs.archlinux.org/"
        BUG_REPORT_URL="https://bugs.archlinux.org/"

5.  桌面環境:

    無法確認桌面環境。

6.  Bash Version:

        BASH_VERSION='4.4.18(1)-release'

# 環境:
1.  DISPLAY:

        DISPLAY=':0'

2.  鍵盤配置:

    1.  `setxkbmap`:

            xkb_keymap {
            	xkb_keycodes  { include "evdev+aliases(qwertz)"	};
            	xkb_types     { include "complete"	};
            	xkb_compat    { include "complete"	};
            	xkb_symbols   { include "pc+de+cn:2+inet(evdev)"	};
            	xkb_geometry  { include "pc(pc105)"	};
            };

    2.  `xprop`:

        找不到 `xprop`。

3.  地區設定:

    1.  全部地區設定:

            C
            POSIX
            zh_TW.utf8

    2.  目前地區設定:

            LANG=zh_TW.UTF-8
            LC_CTYPE="zh_TW.UTF-8"
            LC_NUMERIC="zh_TW.UTF-8"
            LC_TIME="zh_TW.UTF-8"
            LC_COLLATE="zh_TW.UTF-8"
            LC_MONETARY="zh_TW.UTF-8"
            LC_MESSAGES="zh_TW.UTF-8"
            LC_PAPER="zh_TW.UTF-8"
            LC_NAME="zh_TW.UTF-8"
            LC_ADDRESS="zh_TW.UTF-8"
            LC_TELEPHONE="zh_TW.UTF-8"
            LC_MEASUREMENT="zh_TW.UTF-8"
            LC_IDENTIFICATION="zh_TW.UTF-8"
            LC_ALL=

4.  目錄:

    1.  家目錄:

            /home/shizi

    2.  `${XDG_CONFIG_HOME}`:

        環境變數 `XDG_CONFIG_HOME` 未設定。

        `XDG_CONFIG_HOME` 目前的值為 `~/.config` (`/home/shizi/.config`)。

    3.  Fcitx 設定目錄:

        目前的 fcitx 設定目錄為 `~/.config/fcitx` (`/home/shizi/.config/fcitx`)。

5.  目前使用者:

    此腳本以 shizi (1000) 執行。

# Fcitx 狀態:
1.  可執行檔:

    在 `/usr/bin/fcitx` 找到 fcitx。

2.  版本:

    Fcitx 版本:`4.2.9.5`

3.  程序:

    找到 2 個 fcitx 程序:

          498 fcitx
          507 fcitx-dbus-watc

4.  `fcitx-remote`:

    `fcitx-remote` 運作正常。

5.  DBus 介面:

    Using `dbus-send` to check dbus.

    Owner of DBus name `org.fcitx.Fcitx` is `:1.11`.

    PID of DBus name `org.fcitx.Fcitx` owner is `498`.

# Fcitx 設定介面:
1.  設定工具封裝:

    在 `/usr/bin/fcitx-configtool` 找到 fcitx-configtool。

2.  gtk2 的設定介面:

    **找不到 gtk2 的設定介面。**

3.  gtk3 的設定介面:

    在 `/usr/bin/fcitx-config-gtk3` 找到了 `fcitx-config-gtk3`。

4.  KDE 的設定介面:

    **找不到 `kcmshell4`。**

# 前端設定:
## Xim:
1.  `${XMODIFIERS}`:

    **XMODIFIERS 未設定**

    **請設定環境變數 XMODIFIERS 到「@im=fcitx」,使用您的發行版提供的工具或加入 `export XMODIFIERS=@im=fcitx` 到您的 `~/.xprofile`。請參閱 [輸入法相關環境變數:XMODIFIERS](http://fcitx-im.org/wiki/Input_method_related_environment_variables#XMODIFIERS)。**
    環境變數中 XIM 服務名稱為 fcitx。

2.  root 視窗上的 XIM_SERVERS:

    **找不到 `xprop`。**

## Qt:
1.  qt4 - `${QT4_IM_MODULE}`:

    **請設定環境變數 QT_IM_MODULE 到「fcitx」,使用您的發行版提供的工具或加入 `export QT_IM_MODULE=fcitx` 到您的 `~/.xprofile`。請參閱 [輸入法相關環境變數:QT_IM_MODULE](http://fcitx-im.org/wiki/Input_method_related_environment_variables#QT_IM_MODULE)。**

2.  qt5 - `${QT_IM_MODULE}`:

    **請設定環境變數 QT_IM_MODULE 到「fcitx」,使用您的發行版提供的工具或加入 `export QT_IM_MODULE=fcitx` 到您的 `~/.xprofile`。請參閱 [輸入法相關環境變數:QT_IM_MODULE](http://fcitx-im.org/wiki/Input_method_related_environment_variables#QT_IM_MODULE)。**

3.  Qt 輸入法模組檔案:

    找到了 Qt4 的 fcitx 輸入法模組:`/usr/lib/qt4/plugins/inputmethods/qtim-fcitx.so`。
    找到了 fcitx 的 qt 模組:`/usr/lib/fcitx/qt/libfcitx-quickphrase-editor5.so`。
    找到了 fcitx 的 qt 模組:`/usr/lib/fcitx/qt/libfcitx-libpinyin-dictmanager.so`。
    找到了 Qt5 的 fcitx 輸入法模組:`/usr/lib/qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so`。

## Gtk:
1.  gtk - `${GTK_IM_MODULE}`:

    **請設定環境變數 GTK_IM_MODULE 到「fcitx」,使用您的發行版提供的工具或加入 `export GTK_IM_MODULE=fcitx` 到您的 `~/.xprofile`。請參閱 [輸入法相關環境變數:GTK_IM_MODULE](http://fcitx-im.org/wiki/Input_method_related_environment_variables#GTK_IM_MODULE)。**

2.  `gtk-query-immodules`:

    1.  gtk 2:

        在 `/usr/bin/gtk-query-immodules-2.0` 找到 gtk `2.24.32` 的 `gtk-query-immodules`。
        版本:

            # Created by /usr/bin/gtk-query-immodules-2.0 from gtk+-2.24.32

        找到了 gtk `2.24.32` 的 fcitx 輸入法模組。

            "/usr/lib/gtk-2.0/2.10.0/immodules/im-fcitx.so" 
            "fcitx" "Fcitx (Flexible Input Method Framework)" "fcitx" "/usr/share/locale" "ja:ko:zh:*" 

    2.  gtk 3:

        在 `/usr/bin/gtk-query-immodules-3.0` 找到 gtk `3.22.26` 的 `gtk-query-immodules`。
        版本:

            # Created by /usr/bin/gtk-query-immodules-3.0 from gtk+-3.22.26

        找到了 gtk `3.22.26` 的 fcitx 輸入法模組。

            "/usr/lib/gtk-3.0/3.0.0/immodules/im-fcitx.so" 
            "fcitx" "Fcitx (Flexible Input Method Framework)" "fcitx" "/usr/share/locale" "ja:ko:zh:*" 

3.  Gtk 輸入法模組快取:

    1.  gtk 2:

        在 `/usr/lib/gtk-2.0/2.10.0/immodules.cache` 找到 gtk `2.24.32` 的輸入法模組快取。
        版本:

            # Created by /usr/bin/gtk-query-immodules-2.0 from gtk+-2.24.32

        找到了 gtk `2.24.32` 的 fcitx 輸入法模組。

            "/usr/lib/gtk-2.0/2.10.0/immodules/im-fcitx.so" 
            "fcitx" "Fcitx (Flexible Input Method Framework)" "fcitx" "/usr/share/locale" "ja:ko:zh:*" 

    2.  gtk 3:

        在 `/usr/lib/gtk-3.0/3.0.0/immodules.cache` 找到 gtk `3.22.26` 的輸入法模組快取。
        版本:

            # Created by /usr/bin/gtk-query-immodules-3.0 from gtk+-3.22.26

        找到了 gtk `3.22.26` 的 fcitx 輸入法模組。

            "/usr/lib/gtk-3.0/3.0.0/immodules/im-fcitx.so" 
            "fcitx" "Fcitx (Flexible Input Method Framework)" "fcitx" "/usr/share/locale" "ja:ko:zh:*" 

4.  Gtk 輸入法模組檔案:

    1.  gtk 2:

        所有找到的 gtk 2 輸入法模組檔案皆存在。

    2.  gtk 3:

        所有找到的 gtk 3 輸入法模組檔案皆存在。

# 設定:
## Fcitx 附加元件:
1.  附加元件設定目錄:

    找到 fcitx 附加元件設定目錄:`/usr/share/fcitx/addon`。

2.  附加元件清單:

    1.  找到 30 個啟用的附加元件:

            fcitx-autoeng
            fcitx-chttrans
            fcitx-classic-ui
            fcitx-clipboard
            fcitx-dbus
            fcitx-freedesktop-notify
            fcitx-fullwidth-char
            fcitx-imselector
            fcitx-ipc
            fcitx-ipcportal
            fcitx-keyboard
            fcitx-kimpanel-ui
            fcitx-libpinyin
            fcitx-mozc
            fcitx-notificationitem
            fcitx-pinyin
            fcitx-pinyin-enhance
            fcitx-punc
            fcitx-quickphrase
            fcitx-remote
            fcitx-rime
            fcitx-spell
            fcitx-sunpinyin
            fcitx-table
            fcitx-unicode
            fcitx-vk
            fcitx-x11
            fcitx-xim
            fcitx-xkb
            fcitx-xkbdbus

    2.  找到 1 個停用的附加元件:

            fcitx-qw

3.  附加元件函式庫:

    找到了所有附加元件的函式庫。

4.  使用者介面:

    找到 2 個啟用的使用者介面附加元件:

        fcitx-classic-ui
        fcitx-kimpanel-ui

## 輸入法:
1.  找到 5 個啟用的輸入法:

        fcitx-keyboard-cn
        pinyin-libpinyin
        sunpinyin
        mozc

2.  預設輸入法:

    您使用鍵盤輸入法 fcitx-keyboard-cn,正確加入作為您的預設輸入法。

# 日誌:
1.  `date`:

        一  2月  5 01:08:33 CET 2018

2.  `~/.config/fcitx/log/`:

        總計 4
        -rw-r--r-- 1 shizi users 843  2月  5 00:38 crash.log

3.  `~/.config/fcitx/log/crash.log`:

        =========================
        FCITX 4.2.9.5 -- Get Signal No.: 6
        Date: try "date -d @1517787516" if you are using GNU date ***
        ProcessID: 1072
        fcitx(+0x156e)[0x559ea197156e]
        /usr/lib/libc.so.6(+0x348e0)[0x7f36d25de8e0]
        /usr/lib/libc.so.6(gsignal+0x110)[0x7f36d25de860]
        /usr/lib/libc.so.6(abort+0x1c9)[0x7f36d25dfec9]
        /usr/lib/libdbus-1.so.3(_dbus_abort+0x27)[0x7f36d1d714e7]
        /usr/lib/libdbus-1.so.3(+0x2f9a3)[0x7f36d1d679a3]
        /usr/lib/libdbus-1.so.3(dbus_watch_get_enabled+0x34)[0x7f36d1d66504]
        /usr/lib/fcitx/fcitx-dbus.so(+0x1dea)[0x7f36d1f8adea]
        /usr/lib/fcitx/fcitx-dbus.so(+0x1fc5)[0x7f36d1f8afc5]
        /usr/lib/libfcitx-core.so.0(+0x951c)[0x7f36d2fb551c]
        /usr/lib/libfcitx-core.so.0(FcitxInstanceRun+0x330)[0x7f36d2fb5fb0]
        fcitx(+0xe9b)[0x559ea1970e9b]
        /usr/lib/libc.so.6(__libc_start_main+0xea)[0x7f36d25caf4a]
        fcitx(_start+0x2a)[0x559ea1970f1a]

我不理解为什么它再说

**XMODIFIERS 未設定**

因为我一定设定了...现在在~/.xinitrc里面,我还是试图了 ~/.xprofile, /etc/profile 可是仍然不行吧

我完全变成一个疯子之前,请有人搭救我吧

谢谢大家

最近编辑记录 YouWentiDeRen (2018-02-05 17:07:54)

离线

#2 2018-02-05 08:50:50

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: *解答了*求助: fcitx无法输入中文了

你是怎么登录到图形界面的?

写 ~/.pam_environment 里试试(记住这里不是 shell,不要写 export)。

离线

#3 2018-02-05 17:17:12

YouWentiDeRen
会员
注册时间: 2018-02-05
帖子: 2

Re: *解答了*求助: fcitx无法输入中文了

依雲-谢谢你老板!我的问题解决了!

我好惊讶问题的解答是那么容易的!但是我无处找到这个方法了...甚至fcitx的wiki一次也没有提议~/.pam_environment...

多谢多谢, 祝你一个愉快的晚上!^_^

离线

#4 2018-04-02 08:58:45

sunjo
会员
注册时间: 2018-04-02
帖子: 1

Re: *解答了*求助: fcitx无法输入中文了

请参考以下代码fcitx部分。
#!/bin/env bash

## author: si9ma
## my blog: www.coolcodes.me
##
## use this script to config chinese environment 
##


. log.sh

# don't run this script as root
. no_root.sh

# import yaourt function
. yaourt.sh

# get usrname
usrname=$(whoami)

EXIT_MSG="You have left from Archlinux Installer!"
Config_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

#
title="Chinese Configure"
msg="Hey! Are you using chinese? Would you want to set your desktop environment locale to chinese?        [ESC] to exit the installer\n\nPlease confirm before typing the [ENTER], because you can't undo it."
dialog --no-cancel --ok-button "Select" --ascii-lines --title "$title" --backtitle "$HEADER" --menu "$msg" 18 75 18 \
    "(1)" "Yes" \
    "(2)" "Yes,but I just install chinese font and chinese input method."\
    "(3)" "No" 2>tempfile

retval=$?
choice=$(cat tempfile)
echo

# if ESC,exit
case $retval in
    255) # ESC
        echo
        echo $EXIT_MSG
        exit 255;;
esac

# set chinese locale
if [ "$choice" = "(1)" ]
then
    # configure xprofile
    echo "export LANG=zh_CN.UTF-8" >>~/.xprofile
    echo "export LANGUAGE=zh_CN:en_US" >>~/.xprofile
    echo "export LC_CTYPE=en_US.UTF-8" >>~/.xprofile

    # install chinese font
    sudo pacman --noconfirm -S wqy-microhei wqy-microhei-lite wqy-bitmapfont wqy-zenhei

    # fontconfig
    cp $Config_DIR/config/font/.fonts.conf ~/.fonts.conf

    # install chinese input method,just fcitx-sogoupinyin
    sudo pacman --noconfirm -S fcitx-im fcitx-configtool

    # configure xprofile
    echo "export GTK_IM_MODULE=fcitx" >>~/.xprofile
    echo "export QT_IM_MODULE=fcitx" >>~/.xprofile
    echo "export XMODIFIERS=\"@im=fcitx\"" >>~/.xprofile
    echo "gsettings set org.gnome.settings-daemon.plugins.xsettings overrides \"{'Gtk/IMModule':<'fcitx'>}\"">>~/.xprofile

    #
    val=$(check_yaourt)

    # have install yaourt
    if [ "$val" = "0" ]
    then
        yaourt --noconfirm -S fcitx-sogoupinyin
    else
        install_yaourt
        yaourt --noconfirm -S fcitx-sogoupinyin
    fi

    # configure sougoupinyin
    # hide status bar
    #sed -i 's/^HideStatusBar.*/HideStatusBar=true/' ~/.config/SogouPY/sogouEnv.ini
    # chinese english switch key - nothing
    #sed -i 's/^SwitchCE_key.*/SwitchCE_key=Nothing/' ~/.config/SogouPY/sogouEnv.ini
    # appearance for sougoupinyin
    #sed -i 's/^CurtSogouSkinType.*/CurtSogouSkinType=Tickle Black Ver/' ~/.config/sogou-qimpanel/main.conf
    # fcitx triggerkey
    #sed -i 's/^TriggerKey.*/TriggerKey=SHIFT_SPACE/' ~/.config/fcitx/config
    # fcitx Enable Hotkey to scroll Between Input Method
    #sed -i 's/^.IMSwitchKey*/IMSwitchKey=False/' ~/.config/fcitx/config

    # fcitx
    cp $Config_DIR/config/fcitx ~/.config/ -r

    # sogoupinyin
    cp $Config_DIR/config/sogou/SogouPY ~/.config/ -r
    cp $Config_DIR/config/sogou/SogouPY.users ~/.config/ -r
    cp $Config_DIR/config/sogou/sogou-qimpanel ~/.config/ -r

elif [ "$choice" = "(2)" ] # just install chinese font and chinese input method
then
    # install chinese font
    sudo pacman --noconfirm -S wqy-microhei wqy-microhei-lite wqy-bitmapfont wqy-zenhei

    # fontconfig
    cp $Config_DIR/config/font/.fonts.conf ~/.fonts.conf

    # install chinese input method,just fcitx-sogoupinyin
    sudo pacman --noconfirm -S fcitx-im fcitx-configtool

    # configure xprofile
    echo "export GTK_IM_MODULE=fcitx" >>~/.xprofile
    echo "export QT_IM_MODULE=fcitx" >>~/.xprofile
    echo "export XMODIFIERS=\"@im=fcitx\"" >>~/.xprofile
    echo "gsettings set org.gnome.settings-daemon.plugins.xsettings overrides \"{'Gtk/IMModule':<'fcitx'>}\"">>~/.xprofile

    #
    val=$(check_yaourt)

    # have install yaourt
    if [ "$val" = "0" ]
    then
        yaourt --noconfirm -S fcitx-sogoupinyin
    else
        install_yaourt
        yaourt --noconfirm -S fcitx-sogoupinyin
    fi

    ## myself
    # fcitx
    cp $Config_DIR/config/fcitx ~/.config/ -r

    # sogoupinyin
    cp $Config_DIR/config/sogou/SogouPY ~/.config/ -r
    cp $Config_DIR/config/sogou/SogouPY.users ~/.config/ -r
    cp $Config_DIR/config/sogou/sogou-qimpanel ~/.config/ -r
fi

## continue to install application
bash /home/$usrname/Archlinux-Installer/app.sh

离线

页脚