我习惯使用 Mac 工作,并且一直使用 SharpKeys 重新映射我的 Windows 机器,但不幸的是我的新雇主不允许我使用它。
我的目标是将 改为L CTRL
,L WIN
将L WIN
改为,L ALT
并将L ALT
改为L CTRL
。有没有不用 SharpKeys 的方法?
我也阅读过有关注册表更改的信息,但我对此感到非常困惑,并且不确定如何为我的解决方案编写它,而且我也在等待 IT 团队的批准。
另外,有没有第三种方法来更改按键绑定?
答案1
据我所知,你不能。但 SharpKeys 是一款非常有用的实用程序,它一劳永逸地避免了你手动更改注册表项。
而且,它在模拟 MacOS 中 Ctrl/Command 键的位置时非常有用。
您只需运行一次,进行注册表编辑,然后重新启动...然后您可以安全地从 Windows 中删除该软件(并将其存储在“工具箱”阁楼中)。
唯一剩下的问题是,在 MacOS 中,当你启动终端时按 ⌘-C 而不是 Ctrl-C :)
答案2
如果您获得 IT 批准,您可以使用此 .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,04,00,00,00,38,00,1d,00,5b,e0,1d,\
00,38,00,5b,e0,00,00,00,00
这是用这个创建的PowerShell 代码为指定的扫描码对创建 reg 值。
必须从管理 PowerShell 运行
##############################################################
$SimplePairs = @(
0x38, 0x1d # lAlt > lCtrl
)
$ExtendedPairs = @(
0x5b, 0xe0, 0x1d, 0x00 # LWinKey(0xe05b) > L Ctrl(0x1d)
0x38, 0x00, 0x5b, 0xe0 # L Alt(0x38) > LWinKey(0xe05b)
)
$ByteCount = 2 * $SimplePairs.Length + $ExtendedPairs.Length + 16
$Remap = New-Object -TypeName byte[] -ArgumentList $ByteCount
$Remap.Length
$Remap[8] = $SimplePairs.Length/2 + $ExtendedPairs.Length/4 + 1
For ($i = 0 ; $i -lt $SimplePairs.Length ; $i += 2) {
$Remap[$i * 2 + 12] = $SimplePairs[$i]
$Remap[$i * 2 + 14] = $SimplePairs[$i + 1]
}
For ($i = 0 ; $i -lt $ExtendedPairs.Length ; $i += 4) {
$Offset = $SimplePairs.Length * 2
$Remap[$i + 12 + $Offset] = $ExtendedPairs[$i]
$Remap[$i + 13 + $Offset] = $ExtendedPairs[$i + 1]
$Remap[$i + 14 + $Offset] = $ExtendedPairs[$i + 2]
$Remap[$i + 15 + $Offset] = $ExtendedPairs[$i + 3]
}
$Splat = @{
Path = 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout'
Name = 'ScanCode Map'
Value = $Remap
Force = $True
}
$Splat['Value'] | format-hex
New-ItemProperty @Splat