xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
3.22k stars 147 forks source link

输入法在所有界面都会被启用 #306

Open Eitetsu0 opened 6 months ago

Eitetsu0 commented 6 months ago

平台:PC + archlinux + wayland (sway)

即使焦点不在输入框,或者没有输入框的界面,仍然可以打开输入法,输入文字时已经打开的输入法也不会自动关闭。 这会导致键盘快捷键无法触发。而会弹出输入框。 sc_20240403_13:59:48

xfangfang commented 6 months ago

@Eitetsu0 我在mac下测试是没有这个问题的,正常的逻辑应该是打开输入框时根据系统输入法语言设置自动切换到对应输入法,关闭输入框时关闭输入法(或者切换到英文输入)。

建议测试这个pr:https://github.com/glfw/glfw/pull/2130

如果发现有问题后可以尝试修复一下并联系他们。

Eitetsu0 commented 6 months ago

看了一下似乎这个对wayland的支持确实不完整。

...我之前以为输入法支持是 wiliwili 自己实现的。

xfangfang commented 6 months ago

感觉可以尝试修复一下,看起来minecraft也会依赖这个功能(我看到很多人在下面留言想要合并),glfw在下个版本就要合并这个pr了,所以要修复的话可以尽快研究看看。原作者应该只对日语做了详尽的测试,中文输入法本身就很多,有问题没测试到也是正常的(之前mac下也有一点小问题)。

另外一个临时的解决方法可以试试切换到sdl,sdl下用的是sdl的输入法实现,或许那个会没有问题。

xfangfang commented 6 months ago

看文档应该是这两个函数在wayland下没有实现: glfwSetInputMode,glfwGetInputMode


我好奇是不是本身就做不到这件事呀,需要用户自己通过快捷键来切换。

Eitetsu0 commented 6 months ago

sdl的输入法支持也是一坨,好多sdl的游戏在x11下对输入法都支持不好。可能还不如glfw😂。

其实对使用体验影响不大,多按一下shif切换就是了。

做不到不太可能吧,我也是这几天刚刚关注了一下wayland输入法,app同compositor之间通过 text-input 协议通信。gtk和qt应用都支持的很好。比如firefox 。 参考fcitx作者的这篇博客(关于qt的内容可能稍微有点过时)。

Eitetsu0 commented 5 months ago

尝试做了一丢丢的努力,暂时放弃了。

Eitetsu0 commented 5 months ago

尝试做了一丢丢的努力,暂时放弃了。

xfangfang commented 3 weeks ago

我用 steam deck 的屏幕键盘测试了一下,确实在wayland下默认打开的时候屏幕键盘就弹出来了,也没有办法关闭,微调了一下,现在steamdeck 桌面模式 wayland下的屏幕键盘只会在需要输入的时候弹出来,我猜应该对其他输入法也是同样适用的,欢迎测试反馈。

(顺带一提,最近还做了 x11 和 wayland 的原生触摸支持,如果有条件测试也欢迎反馈)