erqie
新手上路
新手上路
阅读:6423回复:4

关于双屏高分屏,光标跟随位置不正确的新发现。

楼主#
更多 发布于:2015-11-16 07:36
今天偶然发现个会出现光标跟随不准的情况。是软件兼容性设置里的disable display scaling on high DPI setting的问题。
说一下现场还原方法:
  1. 笔记本电脑,win10,x64。接一个外接显示器,用的是扩展模式。
  2. 由于多数软件在外接屏幕上显示发虚,所以我对部分软件勾选了disable display scaling on high DPI setting。这样在外接显示器上就不会出现字体发虚的情况。
  3. 今天无意中感觉firefox的文字也有点虚,就勾上了这个选项。结果发现,原来能准确定位的,现在的候选框位置不准了。参见截图。
  4. 发现之后,立马再用everedit测试,结果跟猜测的一样:在笔记本主屏上,都能准确定位,在副屏上,勾了disable display scaling on high DPI setting的时候候选框在左侧,但也会跟着光标位置而移动。如果不勾选,则定位正确。
不准的时候:

描述:firefox定位不准

图片:1.png

firefox定位不准


firefox里输入偶尔会有准的时候:

描述:偶尔准确

图片:2.png

偶尔准确
erqie
新手上路
新手上路
沙发#
发布于:2015-11-16 07:42
基于以上发现,我把yong.exe也勾选disable display scaling on high DPI setting。
结果发现(以everedit为例):
对没勾disable display scaling on high DPI setting的软件里输入会定位不准。
对勾选了这个选项的,则定位就会变得准确了。

目前我的方案:把要在副屏里显示的软件以及yone.exe都勾上这个选项,这样就不会出现定位不准了。
板凳#
发布于:2015-11-16 09:40
原因是小小现在会检测dpi,然后进行相关的界面绘制和窗口定位,但它只获得了默认的系统DPI,如果是多屏幕且两个屏幕DPI不一样,就会出问题。
这点很麻烦,说实话我现在没好办法。
erqie
新手上路
新手上路
地板#
发布于:2015-11-17 02:08
嗯,主要是把最近发现的问题给你反馈一下。并且通过我目前的方案各项操作基本也都正常使用。至于以后能否改进,就看有没有好的思路跟方法了。
确实现在多屏幕,不知道windows系统是如何设置的DPI的。如果屏幕分辨率不同,相差较大的话肯定会考虑分别独立的DPI的。
4楼#
发布于:2015-11-17 10:49
erqie:嗯,主要是把最近发现的问题给你反馈一下。并且通过我目前的方案各项操作基本也都正常使用。至于以后能否改进,就看有没有好的思路跟方法了。
确实现在多屏幕,不知道windows系统是如何设置的DPI的。如果屏幕分辨率不同,相差较大的话肯定会考虑分...
回到原帖
理论上肯定能实现,windows会提供一个包括所有屏幕的虚拟坐标系,提供每个屏幕在这个坐标系中的位置和DPI,定位光标的时候,根据目标显示器的DPI和在虚拟坐标系中的位置,目标窗口的DPI和位置,肯定能算出一个准确的值。
不过哪怕以后小小输入法实现了,但也只会在输入法启动的时候去检测一次,毕竟检测这些东西的值对光标定位来说太慢了。
游客

返回顶部