我的操纵杆有一些自动热键设置,可以在任何地方使用。
但是,有两个程序我不希望重新映射操纵杆。
我如何修改我的脚本以防止 autohotkey 在这些程序中重新映射操纵杆,这样我就不必手动执行此操作?
答案1
制作一些上下文相关的例外,将您的键重新映射到这两个程序的默认设置。
右键单击任务栏中的 AutoHotkey 图标,然后选择 AutoHotkey 的 Window Spy 以查找要忽略的程序的 ahk_class。活动窗口的 ahk_class 显示在 Window Spy 顶部的窗口标题和类部分中。
如果您在系统的其余部分重新映射了 z 键(例如),请添加以下代码以仅在某个应用程序(此示例中为记事本)中将其映射回 z。
#IfWinActive ahk_class Notepad ; turns on context sensitivity
z::z ; this just maps z to itself
#IfWinActive ; turns back off context sensitivity
有关上下文相关热键的更多信息,请访问 AutoHotkey 网站:http://www.autohotkey.com/docs/commands/_IfWinActive.htm
答案2
您可以创建一个函数来检查当前程序是否是您想要忽略的程序。然后针对每个热键调用该函数并根据它是否是您想要忽略的应用程序做出决定。如果您希望热键具有其常规行为,则代码包含一个注释行,该注释行返回一个变量,该变量是热键。
; Applications you want to disable joystick keybindings
dont_joystick()
{
IfWinActive,ahk_class VirtualConsoleClass
Return 1
IfWinActive,ahk_class VIM
return 1
}
^p::
If dont_joystick()
;Do nothing
;Send %A_ThisHotkey% ; sends ^p in this case
Else
Send {Up} ;send hotkey
Return
其中 'VirtualConsoleClass' 和 'VIM' 是使用 Autohotkey 的窗口间谍确定的 ahk_classes。