禁用(取消绑定)默认的Win + Arrows热键,使其可在其他应用程序中使用


9

在Windows 7上,我想取消默认的Win+ Up/ Down/ Left/ 绑定,Right以便可以将它们直接绑定*在其他应用程序中。如何才能做到这一点?

这些热键可以通过以下方式轻松禁用

  1. 进入轻松访问中心
  2. 选择使键盘更易于使用,然后
  3. 选中“ 防止将窗口移到屏幕边缘时自动排列窗口”

    设置

但是,即使使用此设置并禁用了热键(它们不执行任何操作),热键仍然无法在其他应用程序中绑定


我尝试了以下方法,但这些方法均无效

  1. 轻松访问中心进行上述更改
  2. 启用政策关闭Windows + X热键,这是一样的设置:HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoWinKeys1。(仅使用此设置,所讨论的热键仍然照常工作。)
  3. 如设置KB216893中所述,禁用Windows键System\CurrentControlSet\Control\Keyboard Layout\Scancode Map。这将完全禁用Windows键,因此无法在任何地方绑定或使用它。
  4. 启用策略关闭Windows Mobility Center


一些谷歌搜索显示了这篇文章

Win + Arrow组合键是Windows 7中以某种方式“超级注册/保留”的几种键(以及Win + P,Win + U和Win + L)之一。我一直在尝试追踪何时何地他们被保留,但到目前为止却空无一人。我还尝试了各种技巧来在Windows出现之前保留它们,但到目前为止没有任何效果。无论您是否实际使用这些组合键,它们都仅在深层的内在级别上锁定到Windows。

这个家伙没找到办法,但是也许你们中的一些人知道更多。也许有一些dll / exe我们可以轻松修补。;-)

*)我想避免使用其他工具,例如AutoHotKey来挂接热键并将其重新映射到可以在普通应用程序中绑定的其他内容。


您是否尝试过修改HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer \ NoWinKeys?您的问题是您在HKCU中更改了一个。如果不存在,请创建密钥,然后重新启动,然后查看它是否有作用。
Zac B 2012年

Answers:


7

这个家伙没找到办法,但是也许你们中的一些人知道更多。

不见得。自从Windows Vista +出来以来,我一直在尝试寻找一种方法来防止它们占用它们。

事实是,与大多数可以使用该NoWinKeys设置禁用的Windows热键不同,有一些未通过Windows资源管理器注册的热键。相反,较高(较低)级别的CSRSS在引导过程的早期注册了几个热键,因此,不仅不能先注册它们,而且没有设置不使用它们。这些是特殊处理的键:

Win + P
Win + L
Win + U
Win + G
Win + X
Ctrl + Shift + Esc
Ctrl + Alt + Del

可以通过某些程序(例如AutoHotkey)覆盖它们,但不能以您正在寻找的方式覆盖(允许程序在全局范围内注册它们)。

也许有一些dll / exe我们可以轻松修补。;-)

那也不太可能。这将需要破解Windows的核心组件,即使找到并修补了热键的注册位置,这也意味着您将必须防止安全软件将修补程序视为受感染,并确保在每次运行后重新应用修补程序。 Windows更新。


您可以尝试使用Windows钩子确定全局热键源的Windows热键资源管理器。不幸的是,它仅将这些特殊组合显示为保留System,这意味着它们由Windows内核加载。WHE更加有趣的是,即使在使用它们的Windows XP中,它对于这些键也表示相同的含义。这意味着它们实际上并没有像其他方法那样被读取,而是被硬编码了,这很不幸,这意味着即使使用低级Windows钩子,WHE也无法直接访问它们。这使得特别不可能通过任何简单的补丁,驱动程序等阻止它们的绑定。


令人遗憾的是,最好,最有效的解决方案是保留Microsoft的反馈,并希望他们在以后的更新中对其进行更改,但这种方法很少奏效。

就我而言,我只是屈服并更改了XMPlay热键,改为使用数字小键盘上的箭头键。


稍微相关:我发现此线程为“ RegisterHotkey-list?” 其中包含一些有趣的信息,也许可以帮助您找到热键的设置位置。如果我在Vista(我假设是Win7)上正确理解_gphkHashTable,则可以使用一个内核函数来获取已注册热键的列表。谷歌搜索只能找到一些中国网站-我猜只有中国一些人喜欢玩这个游戏。;-)
Qtax12年

可能的,但你必须安装一个挂钩,以获得这些信息,然后编写和安装驱动程序在开机过程的早期加载修补代码在内存中,避免修补磁盘上的文件。
Synetech

0

至少有两个工具可以做到这一点。

首先是Microsoft Keyboard Layout Creator

在此处输入图片说明

第二个是KeyTweak

在此处输入图片说明

有关一个相关问题的更多信息:是否可以重新编程键盘?


1
重新映射键如何帮助一个人解除相关热键的绑定?这如何回答这个问题?
Qtax 2012年

您唯一可以使用此“解决方案”执行的操作是将键盘重新映射为没有Windows键,将其替换为其他扫描代码,然后映射该键。这不是一个好的解决方案,因为任何试图将Win键用于任何事物的事物都是不可用的。
迈克尔·科恩

只是在这里猜测,但是从理论上讲,您可以创建一个伪造的WinKey,注册您的处理程序以获取所有相关事件,然后使用真实的Windows密钥重新抛出该事件。这将为您提供一种自定义与WinKey相关的任何映射的方法...不过,如果可能的话,请选择dunno ...
Vajk Hermecz

0

AutoHotkey可以使用Windows快捷键覆盖并执行您喜欢的任何事情。
请参阅此文档:覆盖或禁用热键

AutoHotkey也可以根据当前窗口或进程来执行其操作,实际上是将键以不同的方式绑定到不同的进程。例如参见激活和操作窗口

有关AutoHotkey的更多信息,请参见:

教程和概述
AutoHotkey文档


3
他们明确表示他们不想使用AutoHotkey。除非您知道让AHK允许其他程序绑定这些键的方法,否则我看不到它如何应用于该问题。
Synetech

您可以在AutoHotkey中挂接热键,以便它们不执行任何操作或在AHK中执行某些操作,但这不能使您将这些热键绑定到任何其他应用程序中,这就是问题所在。(这就是为什么我在问题中说AHK答案没有太大意义。)
Qtax 2012年

@Qtax:AutoHotkey的每个窗口/进程键绑定在我看来就像一个解决方案。为什么对您不起作用?
harrymc

1
@harrymc,因为例如,如果他想让Winamp Win+Left倒带,则无法让AutoHotkey这样做。我想您可以通过让Winamp使用不同的键(例如Win+A倒带),然后编写一个AHK脚本来伪造它,该脚本检测Winamp窗口处于活动状态时何时按下该键,然后发送Winamp Win+A,但这毫无意义,因为整点全局热键的作用是无论处于哪个窗口中都可以使它们起作用。
Synetech

1
@Qtax:我不知道更好的解决方案。如果我认为您对AHK缺乏知识,我深表歉意。
harrymc

0

您可以添加以下注册表[WIN + R-> regedit.exe]:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System +右侧,创建一个新的32位DWORD +双击新创建的DisableLockWorkstation条目,并将其值从0(零)更改为1(一)。

参考 http://www.intowindows.com/how-to-disable-windowsl-shortcut-key-in-windows-78-1/

PS。无需重启xD


本文和设置正在谈论Win + L热键。这会解除绑定Win +箭头键吗?
Qtax

不,它实际上仅解除win + L的绑定。但是看到这是可能的,我敢打赌,有一种实现箭头功能的方法。
aemonge
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.