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

使用触摸屏时,触控区域会维持在放大前原窗口的位置 #218

Closed
RBHakureiReimu opened this issue Nov 21, 2021 · 51 comments · Fixed by #900
Closed

使用触摸屏时,触控区域会维持在放大前原窗口的位置 #218

RBHakureiReimu opened this issue Nov 21, 2021 · 51 comments · Fixed by #900
Labels
enhancement New feature or request priority: normal

Comments

@RBHakureiReimu
Copy link

Magpie version 程序版本

0.6.X-0.7.X

Windows version 系统版本

Windows 10 21H2&Windows 11

Related screenshot (optional) 相关截图(可选)

No response

Reproduction steps 复现步骤

使用平板或触摸屏的前提下,使用该工具放大画面后,放大画面的游戏UI触控区域和正常情况下游戏UI的位置对不上,游戏UI的相关交互元素均在放大前窗口的对应位置,在已经使用工具放大的前提下,使用触摸屏点击放大前窗口以外的区域时,会自动还原为窗口,使用鼠标则一切正常

Log files 日志文件

@RBHakureiReimu RBHakureiReimu added the bug Something isn't working label Nov 21, 2021
@RBHakureiReimu
Copy link
Author

如有需要起床后会提供日志截图,晚上宿舍断电不太方便

@Blinue
Copy link
Owner

Blinue commented Nov 22, 2021

从实现原理上讲很难支持触控,有一个 API 可以映射触控坐标 MagSetInputTransform,但它有个很大的限制就是只能由管理员账户使用(“以管理员身份运行”也会失败)。

Release.zip
如果你是管理员账户,可以试试这个版本

@RBHakureiReimu
Copy link
Author

意思是我必须用administrator,还是说只要账户类型是管理员就可以呢

@Blinue
Copy link
Owner

Blinue commented Nov 22, 2021

administrator

@RBHakureiReimu
Copy link
Author

我试试,多谢大佬答疑,要是后期可以解决这个问题就好了

@RBHakureiReimu
Copy link
Author

大佬,报错“从服务器返回了一个参照”是什么啊

@XZXBX
Copy link

XZXBX commented Nov 22, 2021

同问,也是报错“从服务器返回了一个参照”。另外用moonlight串流时会出现两个鼠标,和触控板情况相同,一个触控板鼠标,一个前窗口鼠标,多出来的前窗口鼠标在放大前窗口对应位置,指针和图标的交互还是以前窗口鼠标位置为准

@XZXBX
Copy link

XZXBX commented Nov 22, 2021

Uploading 1637592948745.jpg…

@Blinue
Copy link
Owner

Blinue commented Nov 23, 2021

大佬,报错“从服务器返回了一个参照”是什么啊

说明你的账户不是 administrator

@RBHakureiReimu
Copy link
Author

大佬,报错“从服务器返回了一个参照”是什么啊

说明你的账户不是 administrator

问题是我是administrator啊

@RBHakureiReimu
Copy link
Author

大佬,报错“从服务器返回了一个参照”是什么啊

说明你的账户不是 administrator

还是说,不能用终端开启administrator啊

@Blinue
Copy link
Owner

Blinue commented Nov 23, 2021

Administrator账户默认是隐藏的,你可能需要切换成本地账户然后打开它

@Blinue
Copy link
Owner

Blinue commented Nov 23, 2021

用moonlight串流时会出现两个鼠标

串流时选择不捕获光标,你也可以向他们提 issue

@XZXBX
Copy link

XZXBX commented Nov 23, 2021

我在组策略安全设置里启用了超级管理员账户,打开还是报错“从服务器返回了一个参照”,用Administrator账户右键管理员权限打开还是报错

@RBHakureiReimu
Copy link
Author

Administrator账户默认是隐藏的,你可能需要切换成本地账户然后打开它

所以我用终端命令启用的本地administrator啊,是本地账户,是administrator,不是新建的用户名字是administrator,而是我启用了系统内置的本地的administrator,但是依然报一样的错

@Blinue
Copy link
Owner

Blinue commented Nov 23, 2021

Windows 在这方面的权限管理非常严格 ಠಿ_ಠ

Magpie.zip

首先安装根目录下的 Blinue_Test.cer,然后看能不能运行,不行的话把文件夹复制到 C:\Program Files

@RBHakureiReimu
Copy link
Author

在program files下,在administrator账户下,能显示出应用的GUI界面,但是弹窗“初始化失败”,点击弹窗的任意按钮后应用退出

@RBHakureiReimu
Copy link
Author

当然证书也安装了

@Blinue
Copy link
Owner

Blinue commented Nov 24, 2021

请提供日志

@RBHakureiReimu
Copy link
Author

[看了一下,报错代码0x8007007E]
Magpie.log

@Blinue
Copy link
Owner

Blinue commented Nov 25, 2021

检查 Runtime.dll 是不是在同级目录下,然后安装/修复 .NET 6

@RBHakureiReimu
Copy link
Author

runtime.dll在程序根目录里,.NET6也修复一遍了,还是不行

@RBHakureiReimu
Copy link
Author

还是说我缺什么运行库吗?目前我板子上只有VC运行库和.NET6

@Blinue
Copy link
Owner

Blinue commented Nov 25, 2021

这的确是运行环境的问题,从这里下载开发版本,这个版本能运行吗

@RBHakureiReimu
Copy link
Author

能运行了,但是触控依然没有映射成功,是需要设置什么吗

@Blinue
Copy link
Owner

Blinue commented Nov 26, 2021

开发版没有映射的功能。找不到 Runtime.dll 的问题在 #220 中讨论

@Blinue
Copy link
Owner

Blinue commented Nov 26, 2021

测试了一下,这个 API 完全可用。现在唯一的问题是无法加载 Runtime.dll

@RBHakureiReimu
Copy link
Author

大佬加油吧,期待大佬的成果

@Blinue
Copy link
Owner

Blinue commented Nov 27, 2021

Magpie.zip

这个版本支持触控和多屏,操作步骤:

  1. 安装 Blinue_Test.cer
  2. 将程序拷贝到 %ProgramFiles% 或它的子目录

缺少任何一步都会失败

@littledgg
Copy link

搞定了,安装证书可能有点问题吧
1.如果运行返回“从服务器返回了一个参照”就代表证书安装有问题,这里应该选择“证书也注册到了当前计算机->受信任的根证书颁发机构”,而不是让它自己选择位置
2.然后直接丢/windows文件夹下就行了

@Autolenuants
Copy link

Windows 在这方面的权限管理非常严格 ಠಿ_ಠ

Magpie.zip

首先安装根目录下的 Blinue_Test.cer,然后看能不能运行,不行的话把文件夹复制到 C:\Program Files

大佬,可以提供更高版本的触控版么,这个v0.8的可以触控,但支持的缩放算法没最新版的多,导致画面略逊一筹

@luojunyuan
Copy link

我用 MagSetInputTransform 写了另一个小工具,来支持 magpie 在触摸屏上的工作。

原本是想在magpie上贡献修改,现在的代码似乎和分支 fix/touchTransform 差异比较大,对项目架构和c++也不熟悉,无从下手。。另用 MagSetInputTransform 比较简易十多行代码解决了。并且看到作者有考虑另外建一个进程来单独提升 MagSetInputTransform 的权限,我就是照着这个思路做的。

逻辑比较简单,探知前台窗口变化,来寻找magpie的 HostWindow 有没有创建。如果有就传入游戏client区和映射区RECT给 MagSetInputTransform


以下给普通用户

ErogeHelper-MagpieTouch-x64.zip

  1. 打开 Preference.exe, 勾选 最下方的 Magpie 选项以及安装 MagpieTouch。(上方的 Register 点不点都行,点了会注册到游戏的上下文菜单)

image

  1. 将游戏拖动到 ErogeHelper.exe 文件上来启动游戏;或者为ErogeHelper.exe添加快捷方式,将游戏路径作为参数启动;或在游戏上下文菜单里启动。
  • 默认会弹出权限请求,请点击允许运行

image

  1. magpie 缩放游戏查看效果。缩放状态下可以切换到其他应用,或者用三指上滑等手势退出缩放与触摸映射。

@Blinue
Copy link
Owner

Blinue commented May 4, 2023

@luojunyuan 谢谢,你的思路给了我很大启发,我决定把这个方案整合进 Magpie,即提供一个支持触控的开关,打开时自动安装证书。

Magpie 本身不适合 UIAccess 权限,一方面这会遮挡第三方程序(#515),另外还会遮挡开始菜单、Alt+Tab 窗口等,所以我会把 MagSetInputTransform 放在一个单独的可执行文件里。

只调用 MagSetInputTransform 是不够的,还应该处理用户点击黑边的情况,fix/touchTransform 分支里创建了一个全屏的、不会得到焦点的背景窗口来拦截这些点击。

@Blinue Blinue added enhancement New feature or request and removed bug Something isn't working labels May 4, 2023
@Blinue Blinue reopened this May 4, 2023
@Blinue Blinue pinned this issue May 4, 2023
@TeoZler
Copy link

TeoZler commented Jun 8, 2023

我用 MagSetInputTransform 写了另一个小工具,来支持 magpie 在触摸屏上的工作。

原本是想在magpie上贡献修改,现在的代码似乎和分支 fix/touchTransform 差异比较大,对项目架构和c++也不熟悉,无从下手。。另用 MagSetInputTransform 比较简易十多行代码解决了。并且看到作者有考虑另外建一个进程来单独提升 MagSetInputTransform 的权限,我就是照着这个思路做的。

逻辑比较简单,探知前台窗口变化,来寻找magpie的 HostWindow 有没有创建。如果有就传入游戏client区和映射区RECT给 MagSetInputTransform

以下给普通用户

ErogeHelper-MagpieTouch-x64.zip

  1. 打开 Preference.exe, 勾选 最下方的 Magpie 选项以及安装 MagpieTouch。(上方的 Register 点不点都行,点了会注册到游戏的上下文菜单)
image
  1. 将游戏拖动到 ErogeHelper.exe 文件上来启动游戏;或者为ErogeHelper.exe添加快捷方式,将游戏路径作为参数启动;或在游戏上下文菜单里启动。
  • 默认会弹出权限请求,请点击允许运行
image
  1. magpie 缩放游戏查看效果。缩放状态下可以切换到其他应用,或者用三指上滑等手势退出缩放与触摸映射。

在使用大佬提供的应用运行爱上火车Last Run国际中文版时,出现白屏的问题(窗口化时显示为白屏,全屏时显示为透明,辅助触控的按钮能正常点击)。又试了试其他几个黄油,没有出现这个问题。
尝试运行了erogehelper v1.1.0.0,没有出现该问题。但是那个版本似乎没有修复magpie的触控问题?
操作系统:Windows 10 21h2
使用的爱上火车国际中文版链接:https://chigusub-my.sharepoint.com/:u:/g/personal/serenjo_chigusub_onmicrosoft_com/EUkq3vgq1OlDmlNz6LVzKMcBIYiwcj4AntY2Uk6eZxoznw?e=bRZdZb

@luojunyuan
Copy link

luojunyuan commented Jun 8, 2023

在使用大佬提供的应用运行爱上火车国际中文版时,出现白屏的问题(窗口化时显示为白屏,全屏时显示为透明,辅助触控的按钮能正常点击)。又试了试其他几个黄油,没有出现这个问题。
尝试运行了erogehelper v1.1.0.0,没有出现该问题。但是那个版本似乎没有修复magpie的触控问题?

是的,已经没有magtouch了,即使有的话也应该是和上面的一样的,因为我没有再更新过了。看样子需要专门测试这个游戏来修复呢。这个magtouch不完善。也是当作临时的解决方法。我有空的话会再看看,不好意思🌟。

@IwakuraRein
Copy link

我找到一个权宜之计,就是把游戏全屏,然后计算一下全屏后的窗口是放大了多少倍。然后在Magpie里允许放大全屏应用,然后在策略的最顶上添加一个bilinear的下采样,比如窗口放大了4倍左右就设置bilinear 0.25。

@cqaqlxz
Copy link

cqaqlxz commented Dec 21, 2023

我找到一个权宜之计,就是把游戏全屏,然后计算一下全屏后的窗口是放大了多少倍。然后在Magpie里允许放大全屏应用,然后在策略的最顶上添加一个bilinear的下采样,比如窗口放大了4倍左右就设置bilinear 0.25。

如何这样操作,就没有必要使用放大画面的滤镜了,放大了多少就要缩小多少回去,没有意义。
这种情况下,你可以直接使用优化整个画面的滤镜,比如说Anime4K_Restore系列

@Blinue
Copy link
Owner

Blinue commented May 8, 2024

触控输入已经初步支持,请尝试一下这个版本:https:/Blinue/Magpie/actions/runs/8995674493/artifacts/1482619592

@TeoZler
Copy link

TeoZler commented May 11, 2024

不知道该发到串流问题还是触控问题(
测试了一下,目前使用sunshine+moonlight进行串流时,直接进行点击依然会出现触控区域与显示不一致的情况,使用触控笔进行点击则不会出现这种情况,可能是因为触控笔模拟了windows自带的触控,直接点击时是模拟的鼠标点击?
image

@Blinue
Copy link
Owner

Blinue commented May 11, 2024

能否提供日志?

@TeoZler
Copy link

TeoZler commented May 11, 2024

能否提供日志?

magpie.log

@Blinue
Copy link
Owner

Blinue commented May 11, 2024

这是串流的问题,请参考 #141 (comment) 配置。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request priority: normal
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.