Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fcitx5-anthy 输入弹出框在dwl(wayland)下不显示 #6

Closed
guyuming76 opened this issue Nov 24, 2022 · 9 comments
Closed

fcitx5-anthy 输入弹出框在dwl(wayland)下不显示 #6

guyuming76 opened this issue Nov 24, 2022 · 9 comments

Comments

@guyuming76
Copy link

guyuming76 commented Nov 24, 2022

我装完 fcitx5-anthy 后(fcitx/fcitx5#660) 。在 dwm (xorg) 下虚拟终端窗口里, ctrl+space 切换到anthy, 键盘输入字母,会出现一个“横长条”的弹出窗口,里面显示些假名,这时如果按两下空格,还会出现一个“竖长条” ,可以上下键选择,并回车选词。

可是,在dwl(wayland) 里,anthy输入状态下,键盘输入并不会显示,也就是说那个“横长条”弹出框不会显示,直到我按两下空格键,“竖长条”会显示(如下图),我可以上下键移动回车选词。
anthy1

我看了 dwl 和 fcitx5 的日志,如下图,似乎是 ctrl+space 键切换到anthy输入状态后fcitx5 log 里立刻会有 [email protected].
下图左边显示的dwl 日志里相应地也是 IM_new_popup_surface 后立刻就有im_popup_destroy.

anthy2

我若是切换到中文拼音输入法,一切都是正常的。

@rocka
Copy link
Member

rocka commented Nov 24, 2022

djpohly/dwl#235

dwl 不支持 text-input 和 input-method 协议

@guyuming76
Copy link
Author

guyuming76 commented Nov 24, 2022

是的,dwl 主分支不支持中文日文输入,这个235 PR 支持

基于这个PR235, 我做了些小修改: https://gitee.com/guyuming76/dwl 。这里我提的问题,在PR235和我的修改上都会出现。

@guyuming76
Copy link
Author

input_popup_surface destroy 的调用栈:
anthy3

oldvisible 是 true 的,visible()是 false, 这个直接导致了popup surface destroy
anthy4

@guyuming76
Copy link
Author

inputwindow.cpp:288 里得到的 candidateList 总是空的,导致 visible_ 为 false

anthy5

@wengxt
Copy link
Member

wengxt commented Nov 24, 2022

你调试的方法大概不对。调试输入法和焦点之间关系很重要
https://fcitx-im.org/wiki/Debug_fcitx5#GDB_or_other_debuggers

首先anthy 的用法就是弹出窗口是按空格才会出现的
你说的横条应该是 preedit ,你应该关注 preedit ,有没有把 preedit 从输入法转发给 text input。

根据描述肯定不是 fcitx 的 问题,close。

@wengxt wengxt closed this as completed Nov 24, 2022
@guyuming76
Copy link
Author

djpohly/dwl#235 改动的代码里,是可以找到 wlr_text_input_v3_send_preedit_string 调用的, 位于 handle_im_commit 方法里。

我根本不知道“正确”的交互流程是如何,所以无从判断是 dwl PR的问题,还是fcitx问题,或者anthy问题。

@wengxt
Copy link
Member

wengxt commented Nov 24, 2022

我只能告诉你别的compositor,weston,kwin和sway都能正常用

@guyuming76
Copy link
Author

guyuming76 commented Nov 25, 2022

我只能告诉你别的compositor,weston,kwin和sway都能正常用

我想在weston里对比下,就装了weston, 但拼音输入没配好,我建了各新问题:fcitx/fcitx5#665

sway 下也不行 fcitx/fcitx5#667

@guyuming76
Copy link
Author

guyuming76 commented Dec 14, 2022

今天我重新测了一下,发现如下图,情况和上次发生了变化,貌似是好了,不过我不懂日文,不知道是不是真好了。

我机器环境发生了变化: 为升级dwl,升级了wlroots 从 0.15.1->0.16.0, 结果fcitx5 在 新的dwl 里报 segfault了 djpohly/dwl#358;

我于是再降级了 wlroots 回到 0.15.1, 降级dwl到原来的版本,但 dev-libs/way-landprotocols 这个包原先用的是1.26的版本,在gentoo上升级到9999版后无法再降回1.26,只能降到1.27.

然后顺便再试下 fcitx5-anthy, 没想到居然如图输入后命令行上出现了带下滑线的日文假名,比较我在问题里发的第一张图,原先键盘输入后是不会出现假名显示的,要按空格后才会出现选择弹出框。

但我真不知道啥改动造成此变化,对了,我还顺便升级了gentoo到最新, fcitx5 重新安装了,但是gentoo包上没看出版本变化,都是5.0.19-r1

dwl-anthy-1

更新:突然发觉这个问题和用哪个虚拟终端也有关系,上图我用的是foot, 下面我用alacritty 试了下,效果就和问题一开始那张图一样。关键是,当我切换到中文输入时,弹出的选词框只有一行,之前(以及在dwm里,弹出框会有两行,第一行显示输入的键盘字母,第二行显示中文字符),并且alacritty里命令行上也不显示正在输入的键盘字符,foot里会显示

dwl-anthy3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants