有没有办法使用 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_LoopField%, 按键 按键: 瓦斯基 = 1 返回 ':: ; 引用下来 如果 !GetKeyState("Shift") { 瓦斯基 = 0 Ctrl 向下 = 1 发送,{Ctrl 向下} 设置计时器,检查按下,3 } 返回 ' up:: ; 引用 up 设置计时器,检查按下,关闭 取消按下Ctrl键() 返回 检查按下: 如果 !GetKeyState("'", "P") { 设置计时器,检查按下,关闭 取消按下Ctrl键() } 返回 取消按下Ctrl() { 如果 (ctrldown = 1) { Ctrl 向下 = 0 发送,{Ctrl 向上} 如果(waskey = 0) 发送,' } }