libpinyin / ibus-libpinyin

GNU General Public License v3.0
632 stars 90 forks source link

Wayland 环境下在 Wayland 应用中拼音输入模式下使用两次 shift 键会锁定 shift 键为按下状态(类似粘滞键效果) #436

Closed lumingzh closed 10 months ago

lumingzh commented 10 months ago

如题,在 Wayland 环境下以 Wayland 模式运行的应用中,拼音输入时使用两次 shift 键(比如输入首字母大写英文单词,两次 shift 间隔时间无关,两次 shift 间输入中文不影响触发 bug),会直接锁定 shift 键为按下状态(类似粘滞键效果),导致单击变双击、滚轮无法滚动等不确定后果,再次按下 shift 可恢复,百分百触发 bug。

Wayland 环境下以 XWayland 模式运行的应用比如 Firefox 不会触发该 bug。

epico commented 10 months ago

请详细说明是哪一个应用有问题?请提供相关的复现步骤,谢谢!

lumingzh commented 10 months ago

应该是所有以wayland模式运行的gnome应用都会触发该bug,经我确认能触发的有gtranslator、gnome-text-editor、gnome-terminal。 以 gnome-text-editor 为例:

@epico

epico commented 10 months ago

请问您是否修改了某些设置?输入大写字母的话,会直接进入英文模式的。

lumingzh commented 10 months ago

@epico I tested again after deleted all user data in home folder and reset all settings by dconf-editor and re-login. But the bug exist as well.

lumingzh commented 10 months ago

简单录了个视频: 录屏 2023-11-20 20-56-55.webm

epico commented 10 months ago

Fedora Workstation 39 uses rpm for applications, Fedora Silverblue 39 uses flatpak for applications.

Maybe the above information is related.

lumingzh commented 10 months ago

@epico But XWayland apps can't trigger this bug, like firefox from flathub.

lumingzh commented 10 months ago

@epico 已确认 ibus-rime 没有该 bug,现在不确定是 libpinyin 的问题还是 ibus-libpinyin 的问题。

epico commented 10 months ago

请问您使用的是虚拟机,还是PC,或者Laptop?

lumingzh commented 10 months ago

请问您使用的是虚拟机,还是PC,或者Laptop?

Laptop 实机,和这个有关系吗?

epico commented 10 months ago

只是排除一下是不是虚拟机的问题...

epico commented 10 months ago

其实,好像除了 Shift 键之外,其他按键也出现过类似的问题。比如有些按键会重复输入,有可能也是按键保持按下状态造成的。

这个问题,可能是和 ibus 或者 mutter 相关,我记得好像 wayland protocols 对于按键处理添加过新的 feature. 我回来再看看 ibus-libpinyin 的代码,印象中 ibus-libpinyin 并没有进行大小写转换的代码,这个问题有可能是按键保持按下状态造成的。

目前,这个问题比较难以复现,不知道在您的 Laptop 上这个问题是不是容易复现?

lumingzh commented 10 months ago

其实,好像除了 Shift 键之外,其他按键也出现过类似的问题。比如有些按键会重复输入,有可能也是按键保持按下状态造成的。

这个问题,可能是和 ibus 或者 mutter 相关,我记得好像 wayland protocols 对于按键处理添加过新的 feature. 我回来再看看 ibus-libpinyin 的代码,印象中 ibus-libpinyin 并没有进行大小写转换的代码,这个问题有可能是按键保持按下状态造成的。

目前,这个问题比较难以复现,不知道在您的 Laptop 上这个问题是不是容易复现?

百分百触发,两次输入不用一直保持shift按下,只要确保在输入过程中有两次shift按下松开的动作就行。

epico commented 10 months ago

抱歉,这个问题在我这边并不好复现。根据您的描述,尝试着写了个 patch.

可以通过以下的命令来安装: rpm-ostree override replace ibus-libpinyin-1.15.5-2.fc39.x86_64.rpm

RPM 的下载链接: https://copr.fedorainfracloud.org/coprs/pwu/ibus-libpinyin/builds/ https://download.copr.fedorainfracloud.org/results/pwu/ibus-libpinyin/fedora-39-x86_64/06721795-ibus-libpinyin/

请测试一下这个 patch 是否工作,是否有其他问题,谢谢!

lumingzh commented 10 months ago

抱歉,这个问题在我这边并不好复现。根据您的描述,尝试着写了个 patch.

可以通过以下的命令来安装: rpm-ostree override replace ibus-libpinyin-1.15.5-2.fc39.x86_64.rpm

RPM 的下载链接: https://copr.fedorainfracloud.org/coprs/pwu/ibus-libpinyin/builds/ https://download.copr.fedorainfracloud.org/results/pwu/ibus-libpinyin/fedora-39-x86_64/06721795-ibus-libpinyin/

请测试一下这个 patch 是否工作,是否有其他问题,谢谢!

已测试,问题已解决。能说下这个问题是怎么造成的吗?

epico commented 10 months ago

Fixed in https://github.com/libpinyin/ibus-libpinyin .

这个问题好像是在某些特殊情况下,按键的 Release 事件没有正确返回到应用程序中,造成了应用程序认为按键一直处于按下状态。

lumingzh commented 10 months ago

抱歉,这个问题在我这边并不好复现。根据您的描述,尝试着写了个 patch.

可以通过以下的命令来安装: rpm-ostree override replace ibus-libpinyin-1.15.5-2.fc39.x86_64.rpm

RPM 的下载链接: https://copr.fedorainfracloud.org/coprs/pwu/ibus-libpinyin/builds/ https://download.copr.fedorainfracloud.org/results/pwu/ibus-libpinyin/fedora-39-x86_64/06721795-ibus-libpinyin/

请测试一下这个 patch 是否工作,是否有其他问题,谢谢!

你好,这个patch更新没有推送到fedora官方源里吗?查了下fedora的测试源没有找到。

epico commented 8 months ago

Fedora 39 中,已经更新 ibus-libpinyin 到 1.15.6 了。