我想在 MacOS 上设置全局快捷键呼出 Emacs 窗口,有什么办法吗?

我想在 MacOS 上设置全局快捷键呼出 Emacs 窗口,有什么办法吗?

将快捷键绑定到命令 open -a Emacs

2 个赞

我的半吊子做法:用 raycast,把 emacs 放到第一位 favorite app 上,然后 Cmd+Space Cmd+1 呼出 emacs

hammerspoon

2 个赞

shortcuts.app 可以做打开emacs的操作。然后这个操作可以加入macOS的系统快捷键里面。

网上一搜就有,https://scriptingosx.com/2019/05/open-apps-with-custom-shortcut-in-macos/

spotlight不是挺好的吗

可以参考这篇文章,我用的 keyboard maestro 全局启动任何常用软件Chrome, iTerm, Emacs, Preview, Xcode, Finder等等。

hammerspoon 可以实现,可以参考 https://github.com/LuciusChen/dotfiles/tree/master/.hammerspoon

1 个赞

补充一个 skhd

# in file skhdrc
# open emacs                                                                                                                                       
alt - e : open -a /Applications/Emacs.app
1 个赞

哈,raycast 也是支持对应用程序绑定 hotkey 的

1 个赞

我喜欢类似spacelauncher 按住空格+e就能直接呼出emacs

但是感觉spacelauncher用起来有些不顺手,所以自己写了一个类似的

2 个赞

同好,我是用 Karabiner 糊了一个,Karabiner Elements config to simulate SpaceLauncher (https://ke-complex-modifications.pqrs.org/?q=spacefn%20plus) · GitHub

1 个赞

keyboard maestro 就可以, macos 上能做这件事的软件太多了

1 个赞

我使用的是alfred 的按键绑定功能

可以多个软件来回切换,只需要键盘就可以,也不需要Shift-Tab 使用起来很爽

1 个赞

谢谢大家,最后选用的方式是 Raycast 绑定快捷键。 之前没装 Raycast,纠结了好久最后还是用上了,真香

分享下我的方案。两种步骤:

  1. 绑定快捷键。这个可以写个简单的osx程序,在上面注册快捷键。我不太会写osx,后来就用electron代替,也很方便。 这里就满足你要的需求了。
  2. 我用karabiner-elements把右边的command键(因为真的很少用到)映射成 ctrl + alt + shift 。然后把 ctrl + alt + shift + e 注册成全局打开/切换到emacs的快捷键。

那么要切换到emacs,我只需要右cmd + e即可,以此类推,我把非常经常用到的软件都绑上全局快捷键:

  • e 打开emacs
  • c 打开chrome
  • t 打开termianl

另外再贴下electron里的一些代码片段:

const { app, BrowserWindow, globalShortcut, ipcMain} = require('electron')

const activeApp = appName => () => {
  console.log(`active app: ${appName}`);
  const result = utils.simpleExecAppleScript(`activate application "${appName}"`);
  console.log(result);
}

const registerGlobalAppKey = (key, activeFn) => {
  globalShortcut.register(`Ctrl+Command+Shift+Alt+${key}`, activeFn)
}

app.whenReady().then(() => {
  globalShortcut.register('Ctrl+Command+Shift+Alt+l', showWindow)
  registerGlobalAppKey('e', activeApp('Emacs'))
  registerGlobalAppKey('c', activeApp('Chrome'))
  registerGlobalAppKey('s', activeApp('Safari'))
  registerGlobalAppKey('t', activeApp('Terminal'))
  registerGlobalAppKey('m', activeApp('NetEaseMusic'))
  registerGlobalAppKey('p', activeApp('PyCharm'))
  registerGlobalAppKey('k', activeApp('Slack'))
})

我直接使用 spotlight 打开 emacs,也没啥不方便的,多按两个键?

cmd + SPC, e, enter 就可以了。