![如何将左移映射到右移?](https://linux22.com/image/1616193/%E5%A6%82%E4%BD%95%E5%B0%86%E5%B7%A6%E7%A7%BB%E6%98%A0%E5%B0%84%E5%88%B0%E5%8F%B3%E7%A7%BB%EF%BC%9F.png)
我的左移位器无法工作一些键(例如nzbkd8.;
)有时,而右移始终适用于所有键。重新安装了所有键盘驱动程序(卸载 -> 重新启动),问题仍然存在。尝试 AHK 解决方法,将通过 LShift 失败的每个单独键重新映射到 RShift - 但这不起作用:
<+n::>+n # LShift + n --> RShift + n
LShift::RShift # testing only one at a time
脚本重新加载成功,但无效。由于 LShift总是作品一一些键,我排除了这是按键损坏的问题 - 即操作系统应该始终接收 LShift 信号,因此 AHK 应该能够捕获它并重新映射到 RShift,但这并没有发生。有什么解决办法吗?
附加信息:
- 系统:Win-10 家庭版、华硕 ROG StrixGL702VSK
- AHK 版本:1.1.29.01
- 驱动程序:HID 键盘设备(x2),PC/AT 增强型 PS/2 键盘(101/102 键)
答案1
以下脚本将右移映射到左移:
RShift::LShift
您可以通过打开 AutoHotkey 窗口并使用菜单查看正在按下或映射的键查看 > 关键历史记录和脚本信息 并使用F5来刷新。
的映射<+n::>+n
不是必需的,并且语法错误。
答案2
这是一个 .reg 文件,它将重新映射 LeftShift 以发送 RightSHift 键码。
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,36,e0,2a,00,00,00,\
00,00
所有一对一的键重新映射都可以通过这种方式完成。这是我的 PowerShell(管理员!)脚本,它允许我在使用键盘测试实用程序确定扫描码后添加/删除映射:
##############################################################
$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
)
$ExtendedPairs = @(
0x36, 0xe0, 0x2a, 0x00 # Right-Shift(0xe036) > Left-Shift(0x002a)
# 0x5d, 0xe0, 0x1d, 0xe0 # ContextMenu(0xe05d) > R Ctrl(0xe01d)
)
$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
答案3
WIN+R并键入shell:startup
以创建(或复制粘贴现有)脚本。这应该会使您的脚本“以管理员身份运行”。
我认为您遇到的任何问题都是由这个原因造成的。我以前也遇到过这个问题。我试图发表评论,但我的用户水平太差。我的声誉不够。
以下是一些你可能会觉得有用的关键词/链接:
^ for CTRL
! for ALT
# for Windows Key
+ for Shift
Space ( ) %20
Comma (,) %2C
Question Mark (?) %3F
Period (.) %2E
Exclamation Point (!) %21
Colon (:) %3A
Semicolon (;) %3B