自动热键重新定义 Shift 键仅对第一次按键有效



这是一个简短的AHK脚本,它做了两件事:

  1. 在右侧 alt (AltGr) 上创建一个额外的 Shift 键
  2. 将 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

相关内容

  • 没有找到相关文章

最新更新