我正在寻找如何使用 Win + 数字快捷键来打开使用数字键盘而不是 qwerty 键的程序。使用 Windows 10 时,我非常习惯将我的高运行应用程序固定到任务栏并使用“win + #”快捷键打开它们,但出于某种原因,我无法将其与有线键盘(无论是否使用数字锁定)的数字键盘数字一起使用。不确定这是 Windows 的编程行为还是实际的键盘设置。我更喜欢使用小键盘而不是 qwerty 数字,只是因为手的位置。有什么想法可以启用或解决?
答案1
这应该适用于即插即用或内置键盘。将此代码复制并粘贴到行政人员PowerShell 窗口 (温基+X>Windows PowerShell(管理员))。该脚本的设计使得可以轻松添加或减去重映射对。但正如发布的那样,它重新映射了受 Numlock(0-9、./Del)影响的键以生成相应 QWERTY 键的扫描码。
编辑#2:重新编写代码 - 结果相同,只是代码更紧凑。
### *** This code must be run from an elevated (Admin) PowerShell session *** ###
### If both source and target are not extended scan codes,
### add them here and the extended bytes will be added by code.
[Byte[]]$SimplePairs = @(
0x02, 0x4f # [1 !] => [1 end]
0x03, 0x50 # [2 @] => [2 ↓]
0x04, 0x51 # [3 #] => [3 pg-dn]
0x05, 0x4b # [4 $] => [4 ←]
0x06, 0x4c # [5 %] => [5]
0x07, 0x4d # [6 ^] => [6 →]
0x08, 0x47 # [7 &] => [7 home]
0x09, 0x48 # [8 *] => [8 ↑]
0x0a, 0x49 # [9 (] => [9 pg-up]
0x0b, 0x52 # [0 )] => [0 Ins]
0x34, 0x53 # [. >] => [. Del]
# 0x00, 0x3a # [Null] => [CapsLock]
).ForEach({ $_ , 0 }) ### Add zero-valued extended byte to each scancode
### If either one or both are extended scan codes,
### add them here with the extended byte value as well.
[Byte[]]$ExtendedPairs = @(
# 0x5d, 0xe0, 0x1d, 0xe0 # [ContextMenu] > [R-Ctrl]
)
[Byte[]]$AllPairs = $SimplePairs + $ExtendedPairs
[byte[]]$Remap = [byte[]]::new(8) +
[BitConverter]::GetBytes( $AllPairs.Length/4 + 1 ) +
$AllPairs +
[byte[]]::new(4)
$Splat = @{
'Path' = 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout'
'Name' = 'ScanCode Map'
'Value' = $Remap
'Force' = $True
}
[Void]New-ItemProperty @Splat
echo @'
*** Done. Computer must be restarted ***
*** before changes will take effect. ***
'@
粘贴后,按执行,然后重新启动计算机。
编辑:撤消:
使用从注册表项中RegEdit
删除ScanCode Map
条目(类型:) :REG_BINARY
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout
或者从运行此命令行政 电源外壳安慰:
Remove-ItemProperty 'HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout' 'ScanCode Map'
额外提示:如果您需要暂时禁用重新映射或尝试不同的重新映射,请将注册表项重命名为除 之外的其他名称ScamCode Map
,然后重新启动。除 之外的值ScamCode Map
将被忽略: