我的AHK脚本有以下部分:
#If GetKeyState("RAlt", "P") ; When Right Alt is pressed
i::Up
j::Left
k::Down
l::Right
#If ; Ends the block
但是,每当我按住右侧 Alt 并按任何这些作用域键时,什么也没有发生。您可能已经注意到,我才刚刚开始使用 AHK,现在想对这个问题有一个实际的了解。
为了确保我没有任何冲突的代码,这是我的完整(简单)脚本:
; Colemak Mod-DH mapping for ANSI boards
;SC010::q
;SC011::w
SC012::f
SC013::p
SC014::b
SC015::j
SC016::l
SC017::u
SC018::y
;SC01E::a
SC01F::r
SC020::s
SC021::t
;SC022::g
SC023::m
SC024::n
SC025::e
SC026::i
SC027::o
SC02c::x
SC02d::c
SC02e::d
;SC02f::v
SC030::z
SC031::k
SC032::h
#If GetKeyState("RAlt", "P") ; When Right Alt is pressed
i::Up
j::Left
k::Down
l::Right
#If ; Ends the block
您在使用 AutoHotkey (AHK) 脚本时遇到的问题可能是由于上下文相关热键的定义方式造成的。具体来说,在 #If 语句中使用 GetKeyState 有时会导致结果不符合预期,特别是对于 Alt 等修饰键。
<^ and ! Modifiers: In the AHK script, the <^> 修饰符表示 AltGr 或右 Alt (RAlt),并且 !用于指定 Alt 键。通过组合它们,您可以创建一个热键,该热键在按下两个键时专门触发。
直接热键映射:不使用 #If 和 GetKeyState,而是使用修饰符直接映射组合。这可确保脚本侦听您感兴趣的确切组合。
避免 #If 与 GetKeyState 用于修饰符:将 #If 与 GetKeyState 一起使用有时无法可靠地检测修饰键的即时状态,这就是为什么直接定义组合是更可靠的解决方案。
请从这里阅读更多相关信息:https://impetusorgansseparation.com/avnneqwn?key=670ae0c3b093d8e8ac42c57aa7da8c14