在 Emacs 中使用 Autohotkey

在 Emacs 中使用 Autohotkey

我在 Cygwin 中使用 emacs,并使用 Autohotkey 将左侧“Alt”键和左侧“Windows”键分别重新映射到 (左)Ctrl 和 (左)Alt。

Ctrl-xCtrl-c这意味着,就像我用左手拇指按下标有“Alt”的键来产生emacs 序列一样Ctrl。好的。

除了我无法开始M-SPC工作之外,一切似乎都还好,所以我的问题是寻求帮助。

这是我正在使用的 Autohotkey 脚本(顺便说一下,我将左侧 Ctrl 键重新映射到左侧 Windows 按钮只是为了理论上的完整性——我在使用 emacs 时从未真正按过它):

#IfWinActive ahk_class mintty
LWin::LAlt
LAlt::LCtrl
LCtrl::LWin

要清楚的是,当我说“一切正常”时,我的意思是在 emacs 中我使用“描述按键顺序”功能(C-h然后k),然后尝试我想要的组合键。例如,所有这些都显示了我预期的顺序的 emacs 文档:

  • 标有“Alt”的键 +g报告 emacs 文档C-g好的
  • 标有“Alt”+ 的键SPACE报告的文档C-@,emacs 表示该文档也映射到C-SPC,所以这似乎没问题。好的
  • 标有‘MSWin Symbol’的键 +x报告文档M-x好的
  • 标有“MSWin Symbol”的键 + 标有“Alt”的键 +k报告文档C-M-k好的

但:

  • 标有“MSWin 符号” + 的键SPACE向我显示了 cygwin 窗口的“右键单击”菜单,而不是带我到 的文档M-SPC坏的
  • M-SPC顺便说一句,我可以通过执行ESC后跟 来获取 的文档SPACE

让我补充一下在回复该问题的评论时出现的另一点:

  • 标有“MSWin 符号”的键 + 标有“Alt”的键 +SPACE将我带到 的文档C-@,因此我怀疑它被 emacs 理解为C-SPC而不是C-M-SPC我认为我的 Autohotkey 脚本会将它映射到 。坏的

有什么想法可以解释为什么 Autohotkey 不能M-SPC按我预期的那样执行操作,或者为什么C-M-SPCemacs 将其理解为C-SPC(我怀疑)?

谢谢

答案1

以下是针对您的问题的答案:

在 Emacs 中将 ctrl 重新映射到 alt 和将 alt 重新映射到 ctrl 时出现问题

并讨论为什么会发生这种情况

除可以在第一个链接下面找到的脚本之外,您还可以添加此代码来使所有可能的键盘布局都可以工作。

#IfWinNotActive, ahk_group HaveEmacsHotkeys
#InputLevel 1
; Aditionally remaps Window keys and AppsKey
*RWin::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*RWin up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
    return

*LWin::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*LWin up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
    return

*AppsKey::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*AppsKey up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
#IfWinActive

答案2

Alt+Space 是显示窗口菜单的标准 Windows 快捷键,您也可以通过左键单击窗口图标或右键单击标题栏来获取该菜单。

您可以在 Cygwin 终端选项的“键”页面上禁用该快捷方式(以及全屏的 Alt+Enter 快捷方式,可以改用 Alt+F11)。

相关内容