`alt + ctrl +` Jetbrain IDE 中使用的自动热键映射通过,但按下 Enter 后会弹出一个弹出窗口

`alt + ctrl +` Jetbrain IDE 中使用的自动热键映射通过,但按下 Enter 后会弹出一个弹出窗口

这个问题类似于是什么阻止 ctrl-alt-m 进入 Windows 10 上的 IntelliJ 。但是,ctrl + alt + <anyKey>确实进入了 jetbrain IDE,之后按任何键都只会导致意外行为。特别是我发现发出^!u::SendRaw, {映射后按 Enter 键,结果会在 Jetbrain IDE 左上角的小弹出窗口中显示。请注意,意外行为ctrl + alt + <anyKey>仅发生在 jetbrain IDE 中,在任何其他应用程序中都可以正常运行。

我的 AHK 脚本:

LControl & RAlt:: AltGr := true ; assign the boolean value "true" to the variable 'AltGr''
LControl & RAlt Up:: AltGr := false

; The #If directive creates context-sensitive hotkeys and hotstrings
#If (AltGr) ; If this variable has the value "true" 

    ; =========== AltGr should function as AltGr (a unique key)
    +s::Send, "
    j::SendRaw, [
    k::SendRaw, ]    ; These works perfectly fine in any jetbrain IDE :)
    u::SendRaw, {
    i::SendRaw, }  


#If ; turn off context sensitivity 

; (ctrl)+(alt) mappings
^!u::SendRaw, {     ; <-- these mappings doesn't work in jetbrain IDEs!!
^!i::SendRaw, }     ; A popup always opens after pressing enter after ..
^!j::SendRaw, [     ; ... issuing one of these mappings
^!k::SendRaw, ]

我发现映射的输出ctrl + alt + <anyKey>是导致问题的原因。例如,如果我改为这样做,它会工作得很好!因此,发送^!u::SendRaw a映射存在一些问题,导致了问题。ctrl + alt + <anyChar><any char thta is a bracket or curly bracket>


更新

我找到了一个解决方案,但这不是一个好的解决方案,实际上我宁愿不使用我的 AHK 映射,也不愿使用这个解决方案:

https://boringreallife.com/autohotkey-send-fix-for-intellij/

这很糟糕,因为映射仅在 keyUp 时触发,这意味着您无法按住键映射来生成大量字符,并且现在我们已经习惯了在按键时出现字符,所以感觉非常慢(部分原因是明确的 keyDelay)和笨重。

所以,如果有人有任何解决方案,请分享!

答案1

我找到了一个相当不错的解决方案(但仍然不是很好,因为如果你太快连续触发组合键它就会中断):本质上,我只是添加了另一层抽象。

假设我想映射ctrl + alt + u}任何 jetbrain IDE 中。那么我首先必须映射ctrl + alt + u到一些从未使用过的角色,例如^!u::SendRaw, ê

现在,在 IDE 中触发该映射,对我来说,结果是ê

所以现在我在 .ideavimrc 中创建一个映射,如下所示:(一个用于我想要的模式)

:inoremap ê {

(请注意,我不能从一开始就映射alt + ctrl + <anyChar>{.ideavimrc 内部,因为 .ideavimrc 无法识别 alt 键)。

...然后...就是这样。

相关内容