【问题标题】:How to avoid AHK script for special letter to interfer with Emacs' repeating command?如何避免特殊字母的 AHK 脚本干扰 Emacs 的重复命令?
【发布时间】:2015-07-29 19:14:19
【问题描述】:

我在将一些 AutoHotKey (AHK) 脚本与 Emacs 结合使用时遇到问题。给我带来问题的 AHK 脚本是用于插入挪威特殊字母 æ、ø、å、Æ、Ø、Å。这些脚本的格式在这里以字母æ的AHK脚本为例:

:c?*:,e:: ;  write the letter "æ" in text editor
send, {ALTDOWN}{Numpad1}{Numpad4}{Numpad5}{ALTUP}
return

..其中 {ALTDOWN}{ALTUP} 是 AHK 的命令,分别用于按下和释放 ALT 键。在此脚本中,AHK 实际上将 ASCII 数字 145 发送到文本编辑器以表示字母 æ。因此,当我在任何文本编辑器(Emacs 除外)中键入,e 时,结果是字母æ

但是,当在文本编辑器 Emacs 中使用时,此脚本不起作用。它似乎干扰了 Emacs 的重复命令 ALT-(n),其中 n 是您想要重复命令的次数。例如,命令ALT 50 , 将重复, 50 次。

所以,如果我在我的 Emacs 编辑器中写 ,e 什么都不会发生,但如果我输入 , e__e 之后的空格会重复 145 次!同样,如果我写, et 来组成æt 的字母组合,我得到的字母t 重复了145 次。不完全是我想要的:)

如何更改我的 AHK 以便我仍然可以写特殊字母,但不干扰 Emacs 的重复命令?

【问题讨论】:

    标签: emacs autohotkey


    【解决方案1】:

    首先,我很确定您可以在 Emac 本身中禁用重复命令。

    我在charmap.exe 中找不到æ (alt 145)。相反,我将使用 æ (alt 0230)。

    您可以尝试的方法:使用 send, {ALTDOWN}{Numpad 0}{Numpad2}{Numpad3}{Numpad0}{ALTUP} 代替

    • send, {ASC 0230}
    • send, æ(是的,这几乎适用于所有东西)
    • SendUnicodeChar(0x00E6)(00E6 也可以在charmap中找到)

    对于后者,你需要这个函数:

    ; SOURCE for the following: http://www.autohotkey.com/board/topic/16404-inserting-unicode-special-characters/
    SendUnicodeChar(charCode)
    {
        VarSetCapacity(ki, 28 * 2, 0)
        EncodeInteger(&ki + 0, 1)
        EncodeInteger(&ki + 6, charCode)
        EncodeInteger(&ki + 8, 4)
        EncodeInteger(&ki +28, 1)
        EncodeInteger(&ki +34, charCode)
        EncodeInteger(&ki +36, 4|2)
    
        DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
    }
    
    EncodeInteger(ref, val)
    {
        DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
    }
    

    另一个想法:为什么不在 Emac 中禁用 Alt

    #ifWinActive, Emacs
    Alt::return
    #ifWinActive
    

    【讨论】:

    • 非常感谢!您的第二个建议效果很好,(发送,æ)。第一个问题与我原来的问题相同,即 Emacs 重复命令以某种方式被激活。
    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多