wiliwili icon indicating copy to clipboard operation
wiliwili copied to clipboard

windows11下全屏显示盖住虚拟键盘

Open mio-19 opened this issue 1 year ago • 10 comments

我使用了第三方程序手势拉起键盘。看不到但是按到相应位置wiliwili会识别到输入

22h2 22621.1928

wiliwili 1.0.1

mio-19 avatar Jul 22 '23 12:07 mio-19

我在win11下通过从屏幕底部向上滑动呼出任务栏,进而打开虚拟键盘,这么操作是没问题的。 会不会问题来自这个第三方唤起的程序呢?

xfangfang avatar Jul 22 '23 12:07 xfangfang

有可能 我用的是Store里的TouchMe

mio-19 avatar Jul 22 '23 13:07 mio-19

uwp版本不会挡 但是uwp似乎不支持虚拟键盘输入

mio-19 avatar Jul 22 '23 13:07 mio-19

你可以先试试我说的那个方式有没有问题


抱歉,不小心给关闭了,重新开启

xfangfang avatar Jul 22 '23 13:07 xfangfang

你可以先试试我说的那个方式有没有问题

抱歉,不小心给关闭了,重新开启

~~我的设备上不同呼出方式结果类似~~

再试了一次,用任务栏呼出可以正常使用了。

mio-19 avatar Jul 26 '23 09:07 mio-19

也许将wiliwili在windows平台的全屏方式改为窗口化全屏会更好一些

domexie avatar Sep 28 '23 15:09 domexie

也许将wiliwili在windows平台的全屏方式改为窗口化全屏会更好一些

我对windows下全屏的区别不是很了解,请问一下

  1. wiliwili目前使用的是什么方式的全屏方案
  2. 如何在windows下判断一个应用使用了什么全屏方式
  3. windows下一共有多少种全屏方式, 为什么wiliwili应该选择某一种方式

xfangfang avatar Sep 28 '23 15:09 xfangfang

  1. wiliwili目前使用的是独占全屏
  2. 如果只要窗口焦点离开全屏应用(例如按下windows徽标键),就会造成显示器重连(黑屏再恢复),即为独占全屏。反之,如果按windows徽标键不会导致黑屏,则是通过创建一个与屏幕相同大小,坐标为0,0的无边框窗口来实现的窗口化全屏。
  3. windows下粗略来说有两种全屏实现方式:不受DWM管理的独占全屏和受DWM管理的窗口化全屏。在win10之前的系统,独占全屏具有性能优势,但是在win10及之后,两者的性能差距很小,并且独占全屏会导致开启关闭全屏时或切换焦点时显示器重连,黑屏一秒钟左右,很影响体验,因此我认为wiliwili使用窗口化全屏,使用起来会更方便。以下是典型的体验优化场景: a. 开启和关闭全屏时 b. 具有多个显示器,其中一个运行wiliwili时 c. 全屏使用wiliwili,想在前台开启窗口应用时

domexie avatar Oct 06 '23 13:10 domexie

@domexie 感谢回复,我最近一段时间手头没有windows设备来测试,但是感觉好像在之前我的电脑上没有出现类似的情况。

wiliwili 同时支持GLFW和SDL2来创建窗口,默认使用的是GLFW。全屏相关的代码在:https://github.com/xfangfang/borealis/blob/6cf1fe70000d1db9ccceb50d93ef5eab20c7d9c6/library/lib/platforms/glfw/glfw_video.cpp#L506

可以对照GLFW的文档看看怎么创建需要的窗口模式。

同时也可以切用SDL2看看有没有改善,在cmake时添加 -DUSE_SDL2=ON 即可切换。SDL2 全屏相关的代码在:https://github.com/xfangfang/borealis/blob/6cf1fe70000d1db9ccceb50d93ef5eab20c7d9c6/library/lib/platforms/sdl/sdl_video.cpp#L407

因为wiliwili支持的平台比较多,我确实没有太充裕的时间去维护各个平台的这些小细节,感兴趣的话欢迎测试修改提交PR。

xfangfang avatar Oct 06 '23 13:10 xfangfang

抱歉,花了一些时间修改代码调试之后,我发现wiliwili目前的全屏方式属于GLFW文档中的“Windowed full screen”,在没有显示器开启HDR模式时确实不会黑屏。但是如果有开启HDR功能的显示器,似乎是因为色域不同的原因,video mode发生改变,实际上进入了独占全屏,因此会出现我上面提到的问题。如果想要彻底不黑屏,需要将全屏方式改为Borderless window(我上一条comment里面说的窗口化全屏实际上是这个)

domexie avatar Oct 06 '23 18:10 domexie