Blinue / Magpie

An all-purpose window upscaler for Windows 10/11.
GNU General Public License v3.0
8.19k stars 459 forks source link

建议开放更大的快捷键设置范围 #954

Closed neavo closed 2 weeks ago

neavo commented 2 weeks ago

Expected behavior 预期的功能

现在的快捷键设置规则必须是 Ctrl/Alt/Shift/Win 其中一个或者若干个 + 单个字母快捷键,众所周知,Ctrl/Alt/Shift 在很多 RPGMaker 的游戏中,都被设置成了文本快进键,如果将缩放的快捷键也设置成这些组合,那么经常会在启动缩放时跳过大段的剧情对话,而 Win+单个字母 的组合在Win11上基本上都被系统会计占用了。 建议开放更大范围的快捷键设置规则,比如多个字母键 Win+A+B,或者不再强制要求必须设置 Ctrl/Alt/Shift/Win 种的一个,或者提供一个覆盖系统快捷键的功能(不知道可否实现)来规避快进的问题。

Alternative behavior (optional) 近似的功能(可选)

No response

hooke007 commented 2 weeks ago

related https://github.com/Blinue/Magpie/issues/627

Blinue commented 2 weeks ago

快捷键规则和 RegisterHotKey 一致,我认为这也是 Windows 快捷键的“标准”。实际上 Magpie 实现了两种快捷键机制来确保可靠性,分别是 RegisterHotKey 和键盘钩子。

RegisterHotKey 键盘钩子
支持任意格式快捷键
支持检测快捷键冲突
可靠性 由于未知原因在某些窗口上失效 在权限更高的窗口上失效

这两种方式相互补充,确保快捷键可以在任意窗口上使用。放开限制意味着放弃使用 RegisterHotKey,最重要的影响是不能在高权限窗口上使用了。虽然 v0.11 已经禁止缩放权限更高的窗口,但我认为快捷键依然是需要支持的,因为以后可能会实现缩放不支持的窗口时弹窗提示。

总而言之,灵活性和可靠性不能同时达成。我理解想要任意快捷键的需求,但大多数人是不介意的(因为本来就是“标准”的快捷键格式),这种情况下可靠性更加重要。

Ctrl/Alt/Shift 在很多 RPGMaker 的游戏中,都被设置成了文本快进键,如果将缩放的快捷键也设置成这些组合,那么经常会在启动缩放时跳过大段的剧情对话

如果 Ctrl/Alt/Shift 都能快进的话,不止 Magpie,大多数应用的快捷键都会有问题。

BLACKCHARGE commented 2 weeks ago

Ctrl基本没法用,基本上跳过以Ctrl为主,shift也可能会有冲突,alt基本上不会有啥问题,跳过的快捷键一般只有一个,不会都出问题的

neavo commented 2 weeks ago

Blinue

Blinue

快捷键规则和 RegisterHotKey 一致,我认为这也是 Windows 快捷键的“标准”。实际上 Magpie 实现了两种快捷键机制来确保可靠性,分别是 RegisterHotKey 和键盘钩子。

RegisterHotKey 键盘钩子 支持任意格式快捷键 否 是 支持检测快捷键冲突 是 否 可靠性 由于未知原因在某些窗口上失效 在权限更高的窗口上失效 这两种方式相互补充,确保快捷键可以在任意窗口上使用。放开限制意味着放弃使用 RegisterHotKey,最重要的影响是不能在高权限窗口上使用了。虽然 v0.11 已经禁止缩放权限更高的窗口,但我认为快捷键依然是需要支持的,因为以后可能会实现缩放不支持的窗口时弹窗提示。

总而言之,灵活性和可靠性不能同时达成。我理解想要任意快捷键的需求,但大多数人是不介意的(因为本来就是“标准”的快捷键格式),这种情况下可靠性更加重要。

Ctrl/Alt/Shift 在很多 RPGMaker 的游戏中,都被设置成了文本快进键,如果将缩放的快捷键也设置成这些组合,那么经常会在启动缩放时跳过大段的剧情对话

如果 Ctrl/Alt/Shift 都能快进的话,不止 Magpie,大多数应用的快捷键都会有问题。

看来 @Blinue 不怎么玩黄油 🤣 不过据我观察用户群 GalGame/RPGMaker 游戏的玩家应该还是挺多的

某个特定游戏当然不会 Ctrl/Alt/Shift 三个键都是快进,但是拿着三个键分别用作快进键的游戏都有,而且数量大差不差,把快捷键设置成哪个都无法规避所有的游戏

至于你提到的“这些都是常见的快捷键组合,为什么其他应用不受影响这个问题”,其实很简单 。。。因为 Magpie 的使用方式和其他应用有本质上的不同 - Magpie 快捷键缩放的逻辑是必须在激活的游戏窗口按下快捷键才能生效,而一般我们不会在一个激活的游戏窗口去按下其他应用的快捷键

或者有没有可能通过其他方法解决,比如不一定要在激活的要放大的窗口上按下快捷键,可以先按下快捷键后再激活窗口?

当然这也不是大问题,之前都可以用 Win+X 来解决,但是随着 Win11 版本的更新,系统占用了越来越多的Win+X,已经没有多少 Win+X 的按键可以给我们用了,实在是没其他优雅的解决办法那也就这么将就用着吧 。。。

neavo commented 2 weeks ago

Ctrl基本没法用,基本上跳过以Ctrl为主,shift也可能会有冲突,alt基本上不会有啥问题,跳过的快捷键一般只有一个,不会都出问题的

alt的也挺多的,我现在已经把快捷键设置成必须两个手按的 Win+F12 了,因为单手能按到的 Win+F1234 也被系统占用了 233

BLACKCHARGE commented 2 weeks ago

现在来说实在不行的话还可以使用定时缩放+自动缩放解决问题,或者直接在主界面就启动缩放+自动缩放

rampaa commented 2 weeks ago

放开限制意味着放弃使用 RegisterHotKey Relaxing restrictions means giving up the use of RegisterHotKey

I don't understand this. You can easily relax the rules so that function keys and NumPad keys can be used as global hotkeys without any modifiers while still using RegisterHotKey. Does the confusion stem from RegisterHotKey not listing MOD_NONE(0x000) as a valid value for fsModifiers? For example RegisterHotKey(windowHandle, id, 0, 112); will register F1 as a global hotkey without any modifiers. Am I missing something obvious here?

Blinue commented 2 weeks ago

当然这也不是大问题,之前都可以用 Win+X 来解决,但是随着 Win11 版本的更新,系统占用了越来越多的Win+X,已经没有多少 Win+X 的按键可以给我们用了,实在是没其他优雅的解决办法那也就这么将就用着吧 。。。

试试 Win+V/Y/`,我这里都是可用的。

BLACKCHARGE commented 2 weeks ago

当然这也不是大问题,之前都可以用 Win+X 来解决,但是随着 Win11 版本的更新,系统占用了越来越多的Win+X,已经没有多少 Win+X 的按键可以给我们用了,实在是没其他优雅的解决办法那也就这么将就用着吧 。。。

试试 Win+V/Y/`,我这里都是可用的。

win+v是剪贴板历史,这个功能有好多年了,应该是1809以后就有了

Blinue commented 2 weeks ago

I don't understand this. You can easily relax the rules so that function keys and NumPad keys can be used as global hotkeys without any modifiers while still using RegisterHotKey. Does the confusion stem from RegisterHotKey not listing MOD_NONE(0x000) as a valid value for fsModifiers? For example RegisterHotKey(windowHandle, id, 0, 112); will register F1 as a global hotkey without any modifiers. Am I missing something obvious here?

If you don't specify modifiers, the hotkey will not work on windows with higher IL, negating the primary advantage of using RegisterHotKey.

win+v是剪贴板历史,这个功能有好多年了,应该是1809以后就有了

确实如此,Win+` 可能是最不容易冲突的,而且使用起来方便。

Blinue commented 2 weeks ago

这个话题和 #627 重复,请在那里进一步讨论