在Windows上重新定义Emacs中的密钥

时间:2010-09-14 12:24:45

标签: windows emacs elisp

我在Mac OS X上使用我的命令键作为额外的控制键(我相信太空学员键盘具有这种配置)。我希望在我的Windows计算机上通过将Alt切换为Ctrl并将Windows密钥切换到Emacs中的Alt来模拟此操作。这可能吗?我发现this post表示类似

的内容
(setq w32-pass-lwindow-to-system nil 
      w32-pass-rwindow-to-system nil 
      w32-pass-apps-to-system nil 
      w32-lwindow-modifier 'super ;; Left Windows key 
      w32-rwindow-modifier 'super ;; Right Windows key 
      w32-apps-modifier 'hyper) ;; Menu key

按下Windows键获取superhyper键。当我尝试将其重新映射到'control进行测试时(但最终我希望metaAltCtrl,如上所述),{{1}仍然被Windows(XP)拦截并打开资源管理器,但似乎是一个好的起点?我将不胜感激任何建议。

1 个答案:

答案 0 :(得分:6)

来自w32-pass-lwindow-to-system的文档:

请注意,左“Windows”键与其他键的某些组合是 Windows在低级别捕获,因此在Emacs中绑定它们将没有 影响。例如,< lwindow> -r总是弹出Windows运行对话框, < lwindow> - <暂停>弹出“系统属性”对话框等。但是,请参阅 `w32-phantom-key-code'的文档字符串。

来自w32-phantom-key-code的文档:

用于生成“幻像”按键的虚拟键代码。 值是0到255之间的数字。 生成幻像按键以停止系统 当`w32-pass-lwindow-to-system'或时,对“Windows”键事件起作用 `w32-pass-rwindow-to-system'是nil。

正如它在Xah的网站上也说的那样:

除非你使用其他工具,如AutoHotkey,否则无法解决这个问题。即便如此,也可能无法禁用【Win + l】(锁定窗口)和【Win + u】(轻松访问)。

所以看来,如果它不适用于他所描述的方法(看似正确),你应该研究一下AutoHotKey