【发布时间】:2021-06-15 04:23:05
【问题描述】:
我想把 LAlt 换成 LCtrl,这本身就很简单:
#SingleInstance Force
#UseHook
#MenuMaskKey VKFF
SetWorkingDir %A_ScriptDir%
SendMode Input
LAlt::RCtrl
RCtrl::LAlt
它只是工作。但我想这样做的主要原因是阻止 LAlt 作为菜单键的功能。我想要将物理 LAlt 按钮与 J、K、L、I 用作箭头键并且 LAlt 没有完全静音意味着我不能使用它们来导航上下文菜单 - 因为 Alt 会在按键时关闭它们。如果我将<!i::Send {Up} 添加到脚本中,就会发生这种情况。现在 LAlt 不会在按键时被阻止 - 现在按下它会在菜单选项名称下方显示下划线,以前不是这样,并且任何打开的上下文菜单都将被关闭。
所以我的主要问题是:为什么会发生这种情况?为什么(额外的)热键会破坏重新映射,有什么方法可以防止\解决\处理这个问题?
现在,我知道如何解决此问题的一种方法是使用 >^i::Send {Up},并且由于热键在其他情况下不起作用,请删除 SendMode Input。但是文档说SendInput 更好,因此我选择了另一种方式——将脚本一分为二,一个运行另一个。
; Script One: ; Script Two (two.ahk):
#SingleInstance Force #SingleInstance Force
#UseHook #UseHook
#MenuMaskKey VKFF #MenuMaskKey VKFF
SetWorkingDir %A_ScriptDir% SetWorkingDir %A_ScriptDir%
SendMode Input SendMode Input
Run two.ahk >^i::Send {RCtrl up}{Up}{RCtrl down}
>^k::Send {RCtrl up}{Down}{RCtrl down}
LAlt::RCtrl >^j::Send {RCtrl up}{Left}{RCtrl down}
RCtrl::LAlt >^l::Send {RCtrl up}{Right}{RCtrl down}
Capslock::Backspace >^o::Send +{F10}
这似乎工作正常,但有没有更好的方法可以实现我想要的?就像在一个文件中一样,保留SendMode Input 而不必用{RCtrl up} ... {RCtrl down} 中和RCtrl?
【问题讨论】:
标签: autohotkey