自升级以来,死(组合)键在 GTK 应用程序中不起作用

hsi*_*siu 3 ubuntu gtk dead-keys kubuntu

我正在使用 KDE 作为我的主要桌面环境运行 Kubuntu。

前段时间我设置了死键,所以我可以输入中文拼音和其他重音字母和特殊字符。

作为旁注,我使用 IBUS,因为它似乎最容易设置我的中文字符 IME。

在更新之前,死/组合键在所有应用程序中都能正常工作。

现在,它们适用于 QT 应用程序,但不适用于 GTK 应用程序(例如此浏览器)。这是不幸的,因为这是我打字最多的地方。我现在的解决方法是在 KDE 的启动器中输入重音符号并复制过去(Alt+F2,使用死键输入,Ctrl+X,Esc,Ctrl+V),这有点麻烦。

我不确定哪些信息在调试时有用,因为我已经有一段时间没有设置这些信息了。

有趣的是,环境变量 $QT_IM_MODULE 没有值。$GTK_IM_MODULE 有 xim。

我安装了 ibus-gtk3,我可以发布任何其他有助于诊断的信息。

我已在不同位置(例如 en_US、/etc/X11/xinit/xinput.d/ibus 等)中粘贴了安装脚本下方。我不确定哪个优先,也不确定是否正在运行,因为 QT_IM_MODULE 在我回显时没有任何值,而这些都表明如果不是 ibus,默认情况下它应该是“xim”。

我还应该提到,下面提到的库(im-ibus.so 等)我没有,也找不到如何获取它们或将它们链接到哪里。事实上,我的 gtk-3.0.0/ 和 qt4/ 目录甚至没有 inputmethod/ 或 plugin/ 目录。这可能是问题的一部分,但同样,它在更新之前工作,所以我不知道。

# start IBus
# vim: set sts=4 expandtab:

# start IBus daemon
#/usr/bin/ibus-daemon --daemonize --xim
XIM=ibus
XIM_PROGRAM=/usr/bin/ibus-daemon
XIM_ARGS="--xim"

# set variables for the plain XIM
XMODIFIERS=@im=ibus

GTK_IM_MODULE=xim
# use immodule only when available for both GTK 2.0 and 3.0
IM_CONFIG_MARKER2=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-2.0/*/immodules/im-ibus.so \
                        /usr/lib/gtk-2.0/*/immodules/im-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER2=1
        break
    fi
done

IM_CONFIG_MARKER3=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-3.0/*/immodules/im-ibus.so \
                        /usr/lib/gtk-3.0/*/immodules/im-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER3=1
        break
    fi
done
if [ $IM_CONFIG_MARKER2 = 1 ] && [ $IM_CONFIG_MARKER3 = 1 ] ; then
    GTK_IM_MODULE=ibus
fi

QT_IM_MODULE=xim
# use immodule when available for Qt4 (Qt3 has been long dead)
for IM_CONFIG_MARKER in /usr/lib/*/qt4/plugins/inputmethods/libqtim-ibus.so\
                        /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        QT_IM_MODULE=ibus
        break
    fi
done

CLUTTER_IM_MODULE=xim
# use immodule when available for clutter
for IM_CONFIG_MARKER in /usr/lib/*/clutter-imcontext/immodules/im-ibus.so \
                        /usr/lib/clutter-imcontext/immodules/im-ibus.so; do
    if [ -e $IM_CONFIG_MARKER ]; then
        CLUTTER_IM_MODULE=ibus
        break
    fi
done

DEPENDS="ibus, ibus-gtk|ibus-qt4|ibus-clutter"
Run Code Online (Sandbox Code Playgroud)

Pab*_*aga 5

如果您在 X11 级别使用输入模块(例如,由 定义的模块XMODIFIERS=…),则 X11 不再处理死键,也不再组合,这取决于输入模块。

您需要的是一种在XMODIFIERS="@im=ibus"和之间切换的方法XMODIFIERS="@im=none"(让 X11 完成工作)。也许已经有一个 Gtk 配​​置来做到这一点,并让它出现在输入法的右键菜单中;如果没有,这对 Gtk/Gnome 团队来说是一个很好的建议 :)