如何禁用特定程序的自动热键

如何禁用特定程序的自动热键

我的操纵杆有一些自动热键设置,可以在任何地方使用。

但是,有两个程序我不希望重新映射操纵杆。

我如何修改我的脚本以防止 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。

相关内容