如何将左移映射到右移?

如何将左移映射到右移?

我的左移位器无法工作一些键(例如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以创建(或复制粘贴现有)脚本。这应该会使您的脚本“以管理员身份运行”。

https://i.stack.imgur.com/arrai.png

我认为您遇到的任何问题都是由这个原因造成的。我以前也遇到过这个问题。我试图发表评论,但我的用户水平太差。我的声誉不够。


以下是一些你可能会觉得有用的关键词/链接:

^ 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

相关内容