我想在 MacOS 上设置全局快捷键呼出 Emacs 窗口,有什么办法吗?
将快捷键绑定到命令 open -a Emacs
2 个赞
我的半吊子做法:用 raycast,把 emacs 放到第一位 favorite app 上,然后 Cmd+Space Cmd+1 呼出 emacs
hammerspoon
2 个赞
shortcuts.app 可以做打开emacs的操作。然后这个操作可以加入macOS的系统快捷键里面。
同好,我是用 Karabiner 糊了一个,Karabiner Elements config to simulate SpaceLauncher (https://ke-complex-modifications.pqrs.org/?q=spacefn%20plus) · GitHub
1 个赞
keyboard maestro 就可以, macos 上能做这件事的软件太多了
1 个赞
谢谢大家,最后选用的方式是 Raycast 绑定快捷键。 之前没装 Raycast,纠结了好久最后还是用上了,真香
分享下我的方案。两种步骤:
- 绑定快捷键。这个可以写个简单的osx程序,在上面注册快捷键。我不太会写osx,后来就用electron代替,也很方便。 这里就满足你要的需求了。
- 我用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 就可以了。