将 Caps Lock 映射到 Windows 7 上的转义和控制

Zam*_*nji 28 windows keyboard remapping

我希望能够将 Caps Lock 键映射到 Escape,如果它没有被任何其他键按下,如果它是 Control 键。我怎么能在 Windows 7 上做到这一点?

wiz*_*rd0 10

您可以使用SharpKeys 将其重新映射到 Escape

但是,除了编写键盘驱动程序之外,我不知道执行条件重映射的实际方法。


dra*_*788 8

这可能出现在前面提到的vim wikia 页面上,在 Rich 的解决方案之后。

; Author: fwompner gmail com
#InstallKeybdHook
SetCapsLockState, alwaysoff
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
    Send {Esc}
}
return
Run Code Online (Sandbox Code Playgroud)

这不是我的工作,但我已经开始使用它并且它完全按照描述工作,没有真正的警告,并且因为它不会尝试映射任何异常(因为它们是不必要的)它在 Chrome 中表现得非常好(我真的想要它用于 Vimium)。


Hen*_*nen 7

这不完全是你想要的,但如果你能忍受一些缺陷,那就非常接近了。这是一个AutoHotKey脚本:

$CapsLock::LControl
$CapsLock Up::Send {Escape}
return
Run Code Online (Sandbox Code Playgroud)

它将 Caps Lock 重新映射到 Ctrl 并在您释放键时发送 Escape。我花了一段时间才习惯每次松开 Caps Lock 键时都会按下 Escape 键。然而,它在网站 textareas 上几乎没有用,因为按 Escape 会失去对 textarea 的关注。

不过,我正在寻找解决方案。如果需要,我可能会在 C 中编写某种驱动程序/键盘挂钩,哈哈。

Vim 特有的烦恼:它使使用 Ctrl-K 组合无法输入有向图,并且在您习惯之前通常很烦人。不过它对我来说效果很好,因为我会尽一切努力尽可能避免使用 Esc 和 Ctrl 键。


小智 5

这是一个注册表项,用于映射大写锁定以在 Windows 7 上转义。


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,03,00,00,00,3a,00,46,00,01,00,3a,00,00,00,00,00
Run Code Online (Sandbox Code Playgroud)

将上述内容保存到扩展名为 .reg 的文件中(如 mapCapLocks.reg)并在您的机器上导入/执行。这可以通过在文件资源管理器中单击该文件,然后注销并再次登录来完成。

  • 这也会将 ScrollLock 键映射到 CapsLock。如果这不是您想要的,请使用值 `hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00 ,00`。此地图的有用编辑器是 [ScancodeMapping from PlexData](http://www.plexdata.de/download/scancodemapping.html)。 (3认同)