如何找到我的笔记本电脑键盘的正确扫描码

如何找到我的笔记本电脑键盘的正确扫描码

大家好,我遇到一个问题,我的键盘上有两个键无法正常工作(LShift 和 RShift),所以我想用另一个键(RCtrl)替换其中一个。我试图通过 Windows 注册表(run-regedit-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancodes Map)重新映射这些键,但问题是我不知道我的笔记本电脑键盘布局的实际扫描码。我的笔记本电脑产品名称是“HP 15 Notebook PC”。我还使用一些第三方软件来重新映射我的按键,并查看 Microsoft 按键扫描码列表,但这些对我都没用。所以有人可以帮我解决这个问题,为我提供正确的键盘扫描码或任何类型的正确链接吗?

答案1

这是一个电源外壳我编写的脚本允许编辑重映射对 --- 添加或删除 --- 并从这些对创建一个 ScanCode Map 字节数组。

就你的情况而言:

  • 左移 = 0x2a
  • LCtrl = 0x1d
  • RShift = 0x36:扩展
  • RCtrl = 0x1d:扩展

注意,“#”表示注释电源外壳,因此这些行不会被执行。

由于需要对 HKLM 进行更改,您必须将以下代码复制并粘贴到行政的 电源外壳安慰。:

##############################################################
$SimplePairs = @(

 # 0x2a, 0x1d # LShift > LCtrl

)

$ExtendedPairs = @(

 0x2a, 0x00, 0x1d, 0xe0 # LShift > RCtrl

)
$ByteCount = 2 * $SimplePairs.Length + $ExtendedPairs.Length + 16
$Remap = New-Object -TypeName byte[] -ArgumentList $ByteCount
$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

相关内容