这是一个简短的AHK脚本,它做了两件事:
- 在右侧 alt (AltGr) 上创建一个额外的 Shift 键
- 将 CapsLock 重新定义为用于键入额外字符的功能键。
#InputLevel 1 RAlt::RShift ; define shift on right-alt SC03a::F20 ; define special function key on capslock #InputLevel 0 F20 & SC002:: ; the '1' key GetKeyState, sh, Shift if sh = D Send ¡ ; upside-down exclamation else Send ¹ ; superscript 1 return
它几乎有效:
- 按 AltGr 加 1 会产生"!",正如您对移位键所期望的那样。
- 按 CapsLock 加 1 会产生"¹",正如您在上述定义下所期望的那样。
当您同时按住 AltGr 和 CapsLock 并按"1"时,就会出现问题。这将按预期为第一个字符生成"¡",但后续按会产生"¹"。Shift 状态似乎在第一次按下后被神奇地取消了。
请注意,"真正的"Shift 键不会发生这种情况 - Caps+Shift+1 每次都会产生"¡",因此将另一个键重新定义为 Shift 似乎是个问题,其中它的 shift 状态在第一次实例后被取消。
我错过了什么吗?
while 循环可能是您要查找的。
例:
LShift::
while (GetKeyState("LShift", "P"))
{
SendInput, {¡}
Sleep, 100
}
return