Linux 下 Tk 应用无法使用输入法

2022-03-29 22:22:33 +08:00
 LaTero

Arch linux KDE ,输入法框架是 ibus Qt 应用和火狐正常。应该不是我程序的问题,在 Windows 下没问题,而且用 Tk 的 IDLE 也输不了中文,弹不出候选栏,英文直接上屏了。fcitx5 也试过,不仅 Tk 用不了,Qt 和火狐也用不了了…… 有人有过这方面经验吗?网上完全找不到相关信息,欧洲用户切换母语和英语是怎么搞的?他们都没有这种问题吗?

2483 次点击
所在节点    Linux
18 条回复
Cooky
2022-03-29 22:30:21 +08:00
fcitx5 装了对应的模块了吗? fcitx5-gtk fcitx5-qt ?
LaTero
2022-03-29 22:36:41 +08:00
@Cooky 装了,fcitx5-im 组里面有。另外火狐用 ibus 连环境变量都不需要,也是挺神奇的。
maxco292
2022-03-29 22:38:42 +08:00
pam_environment 设置了吗
LaTero
2022-03-29 22:40:46 +08:00
@maxco292 .xprofile 里设的,能设的环境变量都设了,qbittorrent 和 Konsole 都能用,就 Tk 不行。
maxco292
2022-03-29 22:46:25 +08:00
@LaTero 我这边 pam env 设置的环境变量 idle fctix5 是可以用的。

GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
XMODIFIERS DEFAULT=\@im=fcitx
SDL_IM_MODULE DEFAULT=fcitx
Cooky
2022-03-29 22:47:23 +08:00
@LaTero 你开个终端看看 fcitx 的变量都在吗,kde 可能会清空变量吧,xprofile 不见得有效
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
kingfalse
2022-03-29 22:54:48 +08:00
我是 opensuse kde fcitx5 rime 没问题,ibus 的话是有些程序不支持,比如 jb 家的 ide
LaTero
2022-03-29 23:00:56 +08:00
@Cooky 是在的,Qt 应用也确实能用。

@maxco292 archwiki 说 pam_environment 是 depreciated 我就没试过,明天起床我再试试。我以前也是用 fcitx5-rime 的,没用桌面环境,在 displayer manager 的启动脚本里配置的环境变量可以用。上个星期重装了一下,用了 KDE ,今天才发现 fcitx 用不了了。KDE 应该是 fcitx 用的比较多吧,怎么 GNOME 带的 ibus 反而能用……
sparkrat
2022-03-29 23:32:31 +08:00
自己看一下 fcitx5-diagnose 咯,基本上“fcitx5 能工作,但是在特定环境下不工作”的情况,都可以通过这个诊断的输出来检查原因
maxco292
2022-03-29 23:36:44 +08:00
pam environment 上游确实废弃了,现在正统方案是 .config/environment.d/*.conf
LaTero
2022-03-30 19:01:16 +08:00
@maxco292 我重装了一下 fcitx5 和 rime 就能用了(除了 Tk)
@sparkrat 除了没有 gtk4 和 gtk2 的缓存外一切正常。
我又试了下了 gtk4 和 python kivy 的 hello world 都能用。看 Tk 的 mailing list 好像用的是 XIM ,就跟着 tedyin 的 a brief intro to linux input method framework 写了 XIM demo ,也是可以用。看来是 Tk 的问题了。
24owls
2022-03-30 20:37:26 +08:00
刚刚试了一下 tk 可以用 fcitx 啊,不过我还是用的 debian buster 的 fcitx 4

apt install git-gui
git gui

然后在 commit message 里面正常切换到 fcitx 输入了汉字
LaTero
2022-03-30 23:28:33 +08:00
@24owls 试了试我这 git gui 也不行,tk 8.6.12 。fcitx4 还没试过,但是 ibus 也不行。你用了桌面环境吗?
24owls
2022-03-30 23:50:32 +08:00
@LaTero 我的 Debian Buster 上面 i3wm 无 DE 和 KDE 都可以正常在 tk 的 git gui 里面用 fcitx 输入汉字
LaTero
2022-03-31 00:42:14 +08:00
@24owls 我刚才也试了 fcitx4 ,还是不行,越来越迷了。你 locale 是中文的吗?我在 kde 里 locale 设的是 en_US ,刚试着调了下中文了一下,但是看 arch wiki ,KDE 的 locale 和 keymap 好像很乱,不清楚还有没有地方没改到的。另外我 caps lock 的灯也没用,有可能是 kde 新版本的 bug ,debian 没滚动的 arch 新所以正常。明天我也搞个 i3wm 看看行不行。
24owls
2022-03-31 12:46:49 +08:00
# localectl
System Locale: LANG=en_GB.UTF-8
LANGUAGE=en_GB:en

应该跟 locale/keymap 没什么关系吧,我记得语言这部分我没做过什么特殊设置,仅有的两处改动,一个是 i3wm 启动的时候加了几个环境变量

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

一个是 emacs 启动的时候修改了 LC_CTYPE=zh_CN.UTF-8

要不你找个新环境试一下,如果新环境没碰到问题的话,再排查原因
LaTero
2022-03-31 22:25:45 +08:00
@24owls 还真和您 emacs 设的 LC_CTYPE 有关😭我下载了源码 debug 了一晚上终于搞定了。有三步是必需的:
1. 安装它硬编码的 XLFD pattern 能匹配到的字体。
2. tk 不支持 fontconfig ,还要手动 xset 。
3. LC_CTYPE 必须为中文 /日文等语言。
根源是 tk 硬编码了一个 XLFD 字体 pattern ,并且不支持 fontconfig ,创建字体失败,而 tk preferred input style 必须要有字体,所以 XCreateIC 失败。
libx11 真的看着头疼,文档里也没提到 XIMPreeditPosition 一定要字体(可能文档太老了),难怪 GTK 和 Qt 都要搞自己的输入模块。珍爱生命,远离 XIM 。
Jarvis666
2022-04-04 17:23:11 +08:00
1. 不使用中文
2. 换 win 或 mac

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/843726

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX