【问题标题】:How to access OSX Services/Keyboard Shortcuts in Emacs如何在 Emacs 中访问 OSX 服务/键盘快捷键
【发布时间】:2014-02-20 22:28:36
【问题描述】:

Emacs 可以识别标准 OSX 快捷键,例如 Command + Q,但是当我尝试使用自定义快捷键 Command + Control + S 打开 Safari(不要评判我:-P)之类的操作时,迷你缓冲区会显示“是未定义。”

我有没有办法将 Emacs 快捷方式设置为我在 OSX 中定义的全局服务/快捷方式之一?

(OSX 10.9.1,Emacs 24.3)

【问题讨论】:

  • 答案会有所不同,具体取决于您是否使用此设置:(setq ns-auto-hide-menu-bar t) 您是否使用该设置?我不确定它是什么时候首次引入的,但是如果没有一些特别的措施,它使得执行 OSX 原生键盘快捷键是不可能的。还请确认您使用的是标准的系统偏好设置键盘快捷键,而不是第三方解决方案,如 KeyboardMaestro 或其他解决方案。
  • 据我所知,我没有使用该设置。我从来没有把它放在我的初始化文件中,现在它不存在了。此外,我正在使用自定义键盘快捷键,但它们是通过标准系统偏好选项自定义的。

标签: macos emacs keyboard-shortcuts


【解决方案1】:

此解决方案不使用系统范围的键盘快捷键,而是使用 AppleScript:

(defun safari-activate ()
(interactive)
  (let ((script (concat
      "tell application \"Safari\"\n"
      "activate\n"
      "end tell")))
    (start-process "safari-activate" nil "osascript" "-e" script)))

这里有一个稍微不同的方法,但大同小异:

(defun safari-activate-two ()
(interactive)
  (do-applescript "tell application \"Safari\" to activate"))

【讨论】:

    【解决方案2】:

    Services 组合键在运行没有自定义的 emacs 时有效。

    /Applications/Emacs.app/Contents/MacOS/Emacs.sh --no-init-file
    

    根据mac-switch-meta,经过多次试验和错误发现我的问题是由自定义 mac-option-modifier 引起的。 如果我切换回来或将其保留为默认值,那么我可以访问服务,但标准快捷方式不再起作用! :-(

    更重要的是,我无法通过在讨论 No Menu Bars 中讨论的操作菜单来运行服务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2013-02-23
      • 1970-01-01
      相关资源
      最近更新 更多