diff --git a/app/src/config/keymap.ts b/app/src/config/keymap.ts index aa22294cc..2a38054fe 100644 --- a/app/src/config/keymap.ts +++ b/app/src/config/keymap.ts @@ -48,6 +48,22 @@ export const keymap = { ${keyValue} +`; + }); + Object.keys(item.docks).forEach(key => { + const dockConfig = item.docks[key].config; + const dockKeymap = window.siyuan.config.keymap.plugin[item.name][key]; + const keyValue = updateHotkeyTip(dockKeymap.custom); + commandHTML += ``; }); if (commandHTML) { diff --git a/app/src/plugin/loader.ts b/app/src/plugin/loader.ts index b0a75f23f..7c0d3c100 100644 --- a/app/src/plugin/loader.ts +++ b/app/src/plugin/loader.ts @@ -138,6 +138,27 @@ const mergePluginHotkey = (plugin: Plugin) => { i--; } } + Object.keys(plugin.docks).forEach(dockKey => { + const dock = plugin.docks[dockKey]; + if (!window.siyuan.config.keymap.plugin[plugin.name]) { + window.siyuan.config.keymap.plugin[plugin.name] = { + [dockKey]: { + default: dock.config.hotkey, + custom: dock.config.hotkey, + } + }; + } else if (!window.siyuan.config.keymap.plugin[plugin.name][dockKey]) { + window.siyuan.config.keymap.plugin[plugin.name][dockKey] = { + default: dock.config.hotkey, + custom: dock.config.hotkey, + }; + } else if (window.siyuan.config.keymap.plugin[plugin.name][dockKey]) { + if (typeof window.siyuan.config.keymap.plugin[plugin.name][dockKey].custom !== "string") { + window.siyuan.config.keymap.plugin[plugin.name][dockKey].custom = dock.config.hotkey; + } + window.siyuan.config.keymap.plugin[plugin.name][dockKey]["default"] = dock.config.hotkey; + } + }) }; export const afterLoadPlugin = (plugin: Plugin) => { @@ -201,6 +222,7 @@ export const afterLoadPlugin = (plugin: Plugin) => { }); Object.keys(plugin.docks).forEach(key => { const dock = plugin.docks[key]; + const hotkey = window.siyuan.config.keymap.plugin[plugin.name][key].custom if (dock.config.position.startsWith("Left")) { window.siyuan.layout.leftDock.genButton([{ type: key, @@ -208,7 +230,7 @@ export const afterLoadPlugin = (plugin: Plugin) => { show: dock.config.show, icon: dock.config.icon, title: dock.config.title, - hotkey: dock.config.hotkey + hotkey }], dock.config.position === "LeftBottom" ? 1 : 0, dock.config.index); } else if (dock.config.position.startsWith("Bottom")) { window.siyuan.layout.bottomDock.genButton([{ @@ -217,7 +239,7 @@ export const afterLoadPlugin = (plugin: Plugin) => { show: dock.config.show, icon: dock.config.icon, title: dock.config.title, - hotkey: dock.config.hotkey + hotkey }], dock.config.position === "BottomRight" ? 1 : 0, dock.config.index); } else if (dock.config.position.startsWith("Right")) { window.siyuan.layout.rightDock.genButton([{ @@ -226,7 +248,7 @@ export const afterLoadPlugin = (plugin: Plugin) => { show: dock.config.show, icon: dock.config.icon, title: dock.config.title, - hotkey: dock.config.hotkey + hotkey }], dock.config.position === "RightBottom" ? 1 : 0, dock.config.index); } });