您尚未登录。

#1 2014-10-12 08:33:58

mobiusdonut
会员
注册时间: 2014-10-12
帖子: 6

[已解决]fcitx输入法只能在xterm中使用

更新:重装了一次系统,可以正常使用了。至于之前问题出在哪儿就不得而知了。

=========================================================================================================================================
使用的窗口管理器是awesome,右上方可以看到fcitx的图标,xterm下能正常使用。但是在firefox、chromium、vlc中试了试均无法切出中文输入法。请大家指点一下。

安装的fcitx相关组件如下:

local/fcitx 4.2.8.5-2 (fcitx-im)
    Flexible Context-aware Input Tool with eXtension
local/fcitx-configtool 0.4.8-1
    GTK based config tool for Fcitx
local/fcitx-googlepinyin 0.1.6-4
    Fcitx Wrapper for googlepinyin
local/fcitx-gtk2 4.2.8.5-2 (fcitx-im)
    GTK2 IM Module for fcitx
local/fcitx-gtk3 4.2.8.5-2 (fcitx-im)
    GTK3 IM Module for fcitx
local/fcitx-qt4 4.2.8.5-2 (fcitx-im)
    Qt4 IM Module for fcitx
local/fcitx-qt5 0.1.2-1
    Qt5 IM Module for Fcitx
local/fcitx-rime 0.3.1-1
    Fcitx Wrapper for librime

.xinitrc中在exec awesome之前添加了如下内容:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
fcitx&

另外在.bashrc中加入了

export LANG=zh_CN.UTF-8

执行fcitx-diagnose命令得到如下信息:

# 系统信息:
1.  `uname -a`:

        Linux Cyclops 3.16.4-1-ARCH #1 SMP PREEMPT Mon Oct 6 08:22:27 CEST 2014 x86_64 GNU/Linux

2.  `lsb_release`:

    `lsb_release` 未找到.

3.  `/etc/lsb-release`:

    `/etc/lsb-release` 未找到.

4.  `/etc/os-release`:

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

5.  桌面环境:

    无法确定桌面环境。

# 环境:
1.  DISPLAY:

        DISPLAY=':0'

2.  键盘布局:

    1.  `setxkbmap`:

            xkb_keymap {
                xkb_keycodes  { include "evdev+aliases(qwerty)" };
                xkb_types     { include "complete"      };
                xkb_compat    { include "complete"      };
                xkb_symbols   { include "pc+us+inet(evdev)"     };
                xkb_geometry  { include "pc(pc104)"     };
            };

    2.  `xprop`:

            _XKB_RULES_NAMES(STRING) = "evdev", "pc104", "us", "", ""

3.  Locale:

    1.  全部可用 locale:

            C
            en_US.utf8
            POSIX
            zh_CN.utf8
            zh_TW.utf8

    2.  当前 locale:

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

4.  目录:

    1.  主目录:

            /home/travis

    2.  `${XDG_CONFIG_HOME}`:

        环境变量 `XDG_CONFIG_HOME` 没有设定。

        `XDG_CONFIG_HOME` 的当前值是 `~/.config` (`/home/travis/.config`)。

    3.  Fcitx 设置目录:

        当前 fcitx 设置目录是 `~/.config/fcitx` (`/home/travis/.config/fcitx`)。

5.  当前用户:

    脚本作为 travis (1000) 运行。

# Fcitx 状态:
1.  可执行文件:

    在 `/usr/bin/fcitx` 找到了 fcitx.

2.  版本:

    Fcitx 版本: `4.2.8.5`

3.  进程:

    找到了 2 个 fcitx 进程:

          508 fcitx <defunct>
          511 fcitx

4.  `fcitx-remote`:

    **无法连接到 fcitx.**

# Fcitx 配置界面:
1.  配置工具封装:

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

2.  用于 GTK+-2.0 的配置界面:
    **未找到 gtk2 的配置界面.**

3.  用于 GTK+-3.0 的配置界面:

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

4.  KDE 的配置界面:

    **`kcmshell4` 未找到.**

# 前端设置:
## Xim:
1.  `${XMODIFIERS}`:

    环境变量 XMODIFIERS 已经正确地设为了 "@im=fcitx".
    从环境变量中获取的 Xim 服务名称为 fcitx.

2.  根窗口上的 XIM_SERVERS:

    Xim 服务的名称与环境变量中设置的相同.

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

    环境变量 QT_IM_MODULE 已经正确地设为了 "fcitx".

2.  qt5 - `${QT_IM_MODULE}`:

    环境变量 QT_IM_MODULE 已经正确地设为了 "fcitx".

3.  Qt 输入法模块文件:
    找到了 fcitx 的 qt 模块: `/usr/lib/fcitx/qt/libfcitx-quickphrase-editor.so`.
    找到了 Qt5 的输入法模块: `/usr/lib/qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so`.
    找到了 Qt4 的输入法模块: `/usr/lib/qt4/plugins/inputmethods/qtim-fcitx.so`.

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

    环境变量 GTK_IM_MODULE 已经正确地设为了 "fcitx".

2.  `gtk-query-immodules`:

    1.  gtk 2:

        在 `/usr/bin/gtk-query-immodules-2.0` 找到了 gtk `2.24.24` 的 `gtk-query-immodules`.
        版本行:

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

        已找到 gtk `2.24.24` 的 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.12.2` 的 `gtk-query-immodules`.
        版本行:

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

        已找到 gtk `2.24.24` 的 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.12.2` 的 `gtk-query-immodules`.
        版本行:

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

        已找到 gtk `3.12.2` 的 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.24` 的输入法模块缓存.
        版本行:

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

        已找到 gtk `2.24.24` 的 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.12.2` 的输入法模块缓存.
        版本行:

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

        已找到 gtk `3.12.2` 的 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.  找到了 26 个已启用的插件:

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

    2.  找到了 2 个被禁用的插件:

            fcitx-dbus
            fcitx-qw

3.  插件库:

    所有插件所需的库都被找到。

4.  用户界面:

    找到了 2 个已启用的用户界面插件:

        fcitx-classic-ui
        fcitx-kimpanel-ui

## 输入法:
1.  找到了 3 个启用的输入法:

        fcitx-keyboard-us
        googlepinyin
        rime

2.  默认输入法:

    您已经正确的将一个键盘输入法 "fcitx-keyboard-us" 设为默认.

# 日志:
1.  `date`:

        2014年 10月 12日 星期日 16:23:34 CST

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

        总用量 4
        -rw-r--r-- 1 travis users 44 10月 11 23:06 crash.log

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

        fcitx: BadWindow (invalid Window parameter)

最近编辑记录 mobiusdonut (2014-10-12 23:29:32)

离线

#2 2014-10-12 14:52:15

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

Re: [已解决]fcitx输入法只能在xterm中使用

3.  进程:

    找到了 2 个 fcitx 进程:

          508 fcitx <defunct>
          511 fcitx

4.  `fcitx-remote`:

    **无法连接到 fcitx.**

这个是怎么回事?

看看:

ls /tmp/fcitx*
tr '\0' '\n' < /proc/$(pidof firefox)/environ | grep fcitx

离线

#3 2014-10-12 17:40:23

mobiusdonut
会员
注册时间: 2014-10-12
帖子: 6

Re: [已解决]fcitx输入法只能在xterm中使用

看看:

ls /tmp/fcitx*
tr '\0' '\n' < /proc/$(pidof firefox)/environ | grep fcitx

第一条指令得到的结果是:
/tmp/fcitx-socket-:0
第二条的结果是:
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx

抱歉我刚接触linux,对两个fcitx进程和fcitx-remote无法连接没有头绪。另外刚发现在opera下倒可以正常使用输入法,大概是因为opera和xterm一样不使用 Gtk+/Qt 的输入法模块的缘故吧。

离线

#4 2014-10-12 17:46:03

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

Re: [已解决]fcitx输入法只能在xterm中使用

在火狐的输入法框里时,点击 fcitx 的图标有反应吗?

离线

#5 2014-10-12 17:53:36

mobiusdonut
会员
注册时间: 2014-10-12
帖子: 6

Re: [已解决]fcitx输入法只能在xterm中使用

百合仙子 说:

在火狐的输入法框里时,点击 fcitx 的图标有反应吗?

没有反应,还是键盘形图标

离线

#6 2014-10-12 18:05:13

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

Re: [已解决]fcitx输入法只能在xterm中使用

for program in fcitx firefox; do tr '\0' '\n' < /proc/$(pidof $program)/environ | grep DBUS; done

这个呢?

离线

#7 2014-10-12 18:11:52

mobiusdonut
会员
注册时间: 2014-10-12
帖子: 6

Re: [已解决]fcitx输入法只能在xterm中使用

百合仙子 说:
for program in fcitx firefox; do tr '\0' '\n' < /proc/$(pidof $program)/environ | grep DBUS; done

这个呢?

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-lbz3RIAhjW,guid=e36618d37ae2eaef107dd715543ab952
追加:
忘记说明,上面的结果出现了两次,即
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-lbz3RIAhjW,guid=e36618d37ae2eaef107dd715543ab952
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-lbz3RIAhjW,guid=e36618d37ae2eaef107dd715543ab952

最近编辑记录 mobiusdonut (2014-10-12 18:21:17)

离线

#8 2014-10-12 19:42:13

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

Re: [已解决]fcitx输入法只能在xterm中使用

D-Bus 也没问题呀。那是为什么呢 @.@

离线

#9 2014-10-12 19:53:57

mobiusdonut
会员
注册时间: 2014-10-12
帖子: 6

Re: [已解决]fcitx输入法只能在xterm中使用

百合仙子 说:

D-Bus 也没问题呀。那是为什么呢 @.@

确实好诡异,我先去fcitx官网看看,大不了再重装一遍。:P

离线

#10 2014-10-12 23:31:40

mobiusdonut
会员
注册时间: 2014-10-12
帖子: 6

Re: [已解决]fcitx输入法只能在xterm中使用

百合仙子 说:

D-Bus 也没问题呀。那是为什么呢 @.@

重装了系统,这次可以正常使用了。多谢细心解答! big_smile

离线

页脚