当与其他键一起使用时,是否将撇号绑定为“Control”?

当与其他键一起使用时,是否将撇号绑定为“Control”?

有没有办法使用 AHK 绑定'Control,但只能与 shift 以外的其他键一起使用(这样当单独按下'或时,它仍会分别发送和)?我尝试了以下方法,但没有用:Shift + ''"

'::Control
' Up::'

我的目标是基本上制作'一个控制键,同时保留其单独按下时的功能。

答案1

'::Control                      ; bind ' to be Control

' Up::
    Send, {Ctrl up}             ; release the Control key
    If GetKeyState("Shift","P") ; Shift + '
        Send, "
    else
    If (A_PriorKey = "'")       ; quote was pressed alone
        Send, '
return

答案2

这个脚本有点棘手,所以它的作用如下。它假设Shift在引用之前始终按下。

  • 该变量waskey标记按下了字母键,以0(false) 开头。

  • Loop 命令将所有字母键设置为导致执行标签的热键keypress,这标志着它们被按下的事实。

  • 第一条规则是'向下。如果Shift没有按下,则设置Ctrl为向下。

  • 第二条规则是'up。它设置Ctrl为 up,如果在此期间没有输入其他密钥,则发出密钥'

全局 waskey = 0
全局 ctrldown = 0

键 = “a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z”
; '|' 用作分隔符
循环解析,键
   HotKey ~*%A_LoopF​​ield%, 按键

按键:
   瓦斯基 = 1
返回

':: ; 引用下来
    如果 !GetKeyState("Shift") {
        瓦斯基 = 0
        Ctrl 向下 = 1
        发送,{Ctrl 向下}
        设置计时器,检查按下,3
    }
返回

' up:: ; 引用 up
    设置计时器,检查按下,关闭
    取消按下Ctrl键()
返回

检查按下:
    如果 !GetKeyState("'", "P") {
        设置计时器,检查按下,关闭
        取消按下Ctrl键()
    }
返回

取消按下Ctrl() {
    如果 (ctrldown = 1) {
        Ctrl 向下 = 0
        发送,{Ctrl 向上}
        如果(waskey = 0)
            发送,'
    }
}

相关内容