在注册表中为单个用户重新映射按键

3

概述:

我有一个关于在注册表中为单个用户重新映射键的能力的问题:

使用资源:

使用ASCII表: http://www.csee.umbc.edu/portal/help/theory/ascii.txt

https://superuser.com/questions/694465/remapping-a-keyboard-key-in-windows-8-1

它指向了: http://www.howtogeek.com/howto/windows-vista/disable-caps-lock-key-in-windows-vista/

尝试:

那个教程讲解了如何通过以下方式在机器级别上进行重新映射键: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

所以我想我会尝试同样的方法,只是在 HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Control\Keyboard Layout 下进行。

不幸的是,这并没有奏效,这也是意料之中的事情:

reg add "HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v "Scancode Map" /t REG_BINARY /f /d 00000000000000000400000012005b005b00A200A200120000000000

^^^这本应该切换的:^^^

  • 将已识别的windows键切换为控制键

  • 将已识别的alt键切换为windows键

  • 将已识别的控制键切换为alt键

我甚至通过PowerShell终止了explorer.exe:

taskkill.exe -im explorer.exe /f | Out-Null; start explorer.exe

问题:

  • 作为单个用户,我的尝试是否可能?

  • 如果可能,我如何在不使用第三方软件的情况下实现此目标?

4个回答

2

那个注册表键由键盘驱动程序使用。键盘驱动程序在启动时读取它。所以杀死资源管理器没有效果,你必须重新启动计算机才能生效更改。使用shutdown.exe -r。不可能在不重启计算机的情况下重新启动驱动程序。

请注意,黑客攻击此键非常危险,如果犯错误,您可能失去对计算机的控制权。我推荐使用KeyTweak,它让我在过去的10年中将Ctrl键放在了正确的位置。


谢谢您的回复。不幸的是,服务器在2/15重启,我做的注册表修改仍然有效。 Key Tweak可以为单个用户工作吗?我不想搞砸其他工作用户的配置。 - Robert J
我看到你可以保存多个配置,但这只会每次修改HKEY_LOCAL_MACHINE的注册表键,目的是让机器的用户能够为不同的程序拥有不同的键配置,对吗? - Robert J
2
由于它修改了键盘驱动程序配置,因此您的更改对每个用户和每个程序都有效。 - Hans Passant
由于我尝试做的事情可能没有办法实现,所以看起来我不会得到这个问题的答案。非常感谢您花时间帮助我(我在奖励过期之前给您打赏了)。如果您有机会,请为我的问题点赞。 - Robert J

2

对于通过互联网搜索得到这篇文章的人们。

微软PowerToys包括一个工具,可以为用户重新映射键。

这样做可能比直接编辑注册表更安全。

https://github.com/microsoft/PowerToys PowerToys screen shot


1
如果它可以工作,理论上应该在注册表的HKEY_CURRENT_USER\Keyboard Layout键中。然而,在"键盘和鼠标类驱动程序"中的"键盘的扫描码映射器"部分中指出:
“存储在注册表中的映射在系统级别上工作并适用于所有用户。这些映射不能设置为根据当前用户的不同而工作。”
因此,似乎不可能以此方式针对每个用户进行映射。(读取此设置并进行转换的是键盘驱动程序,而不是会话管理器)。

0
  1. 关于注册表编辑的警告是有意义的,但有点过于热衷。

  2. 您可以将注册表编辑保存为.reg文件,并且可以轻松执行,几乎可以将快捷方式放在任何地方。您可以很容易地创建两个文件来切换特定设置。

  3. 您的注册表在登录时被读取。要显示更改,请注销并重新登录Windows。通常不需要重新启动。一些注册表是针对每个用户的,命名约定使其非常清楚哪个是哪个。

  4. 这是一个将菜单键转换为Windows键的.reg文件的内容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,5b,e0,5d,e0,00,00,00,00

  • 这是一个关于编写这个十六进制值的文档链接。我打算保存这个链接,以防这个链接失效。 https://learn.microsoft.com/en-us/windows-hardware/drivers/hid/keyboard-and-mouse-class-drivers

  • 有很多方法可以根据每个用户来映射按键,但我认为注册表在这里是行不通的。我想知道是否将按键映射到注册表中更理想的选项,然后使用AuoHotkey在启动时为每个用户设置这些选项是可行的方法。


  • 网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接