diff --git a/package.json b/package.json index 1c13ec5..40d85db 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "download": "^8.0.0", "download-git-repo": "^3.0.2", "electron-store": "^8.0.0", + "keycode": "^2.2.0", "marked": "^2.0.7", "node-fetch": "^2.6.1", "osx-mouse": "git+https://github.com/Toinane/osx-mouse.git", diff --git a/src/main/common/common.js b/src/main/common/common.js index edb72b2..610aaee 100644 --- a/src/main/common/common.js +++ b/src/main/common/common.js @@ -7,6 +7,7 @@ import { } from 'electron'; import Api from './api'; import robot from 'robotjs'; +import './config'; const browsers = require("../browsers")(); const mouseEvents = require("osx-mouse"); @@ -20,6 +21,19 @@ let closePicker = (newColor) => { } }; +function registerShortCut(mainWindow) { + const config = global.opConfig.get(); + globalShortcut.unregisterAll(); + + globalShortcut.register(config.perf.shortCut.showAndHidden, () => { + mainWindow.show(); + }); + + globalShortcut.register(config.perf.shortCut.separate, () => { + mainWindow.webContents.send('new-window'); + }); +} + export default function init(mainWindow) { const mouseTrack = mouseEvents(); let down_time = 0; @@ -31,26 +45,20 @@ export default function init(mainWindow) { new Notification({ title: 'Rubick 通知', body: '长按了' }).show(); } }); + registerShortCut(mainWindow); + + ipcMain.on('re-register', (event, arg) => { + registerShortCut(mainWindow); + }); ipcMain.on('changeWindowSize-rubick', (event, arg) => { mainWindow.setSize(arg.width || 800, arg.height); }); mainWindow.on('blur', () => { - // mainWindow.hide(); + mainWindow.hide(); }); - globalShortcut.register('Alt+R', () => { - mainWindow.show(); - }); - - ipcMain.on('init-shortcut', (event) => { - globalShortcut.register('ctrl+d', () => { - event.sender.send('new-window'); - }); - }) - - ipcMain.on('msg-trigger', async (event, arg) => { const window = arg.winId ? BrowserWindow.fromId(arg.winId) : mainWindow const operators = arg.type.split('.'); diff --git a/src/main/common/config.js b/src/main/common/config.js new file mode 100644 index 0000000..c5e8b5a --- /dev/null +++ b/src/main/common/config.js @@ -0,0 +1,46 @@ +import path from "path"; +import fs from 'fs'; +import {getlocalDataFile} from "./utils"; +import os from 'os'; + +const configPath = path.join(getlocalDataFile(), './rubick-config.json'); + +let defaultConfig = { + Darwin: { + perf: { + shortCut: { + showAndHidden: 'Option+R', + separate: 'Ctrl+D' + }, + common: { + start: true, + space: true, + }, + local: { + search: true, + } + }, + } +} + +global.opConfig = { + config: null, + get() { + const platform = os.type(); + try { + if (!opConfig.config) { + opConfig.config = JSON.parse(fs.readFileSync(configPath) || JSON.stringify(defaultConfig[platform])); + } + return opConfig.config; + } catch (e) { + opConfig.config = defaultConfig[platform] + return opConfig.config; + } + }, + set(key, value) { + console.log(opConfig.config); + opConfig.config[key] = value; + fs.writeFileSync(configPath, JSON.stringify(opConfig.config)); + } +} + diff --git a/src/renderer/assets/keycode.js b/src/renderer/assets/keycode.js new file mode 100644 index 0000000..13adf27 --- /dev/null +++ b/src/renderer/assets/keycode.js @@ -0,0 +1,183 @@ +export default { + 0: 'That key has no keycode', + 3: 'break', + 8: 'backspace / delete', + 9: 'tab', + 12: 'clear', + 13: 'enter', + 16: 'shift', + 17: 'ctrl', + 18: 'alt', + 19: 'pause/break', + 20: 'caps lock', + 21: 'hangul', + 25: 'hanja', + 27: 'escape', + 28: 'conversion', + 29: 'non-conversion', + 32: 'space', + 33: 'page up', + 34: 'page down', + 35: 'end', + 36: 'home', + 37: 'left arrow', + 38: 'up arrow', + 39: 'right arrow', + 40: 'down arrow', + 41: 'select', + 42: 'print', + 43: 'execute', + 44: 'Print Screen', + 45: 'insert', + 46: 'delete', + 47: 'help', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 58: ':', + 59: 'semicolon (firefox), equals', + 60: '<', + 61: 'equals (firefox)', + 63: 'ß', + 64: '@ (firefox)', + 65: 'a', + 66: 'b', + 67: 'c', + 68: 'd', + 69: 'e', + 70: 'f', + 71: 'g', + 72: 'h', + 73: 'i', + 74: 'j', + 75: 'k', + 76: 'l', + 77: 'm', + 78: 'n', + 79: 'o', + 80: 'p', + 81: 'q', + 82: 'r', + 83: 's', + 84: 't', + 85: 'u', + 86: 'v', + 87: 'w', + 88: 'x', + 89: 'y', + 90: 'z', + 91: 'Windows Key / Left ⌘ / Chromebook Search key', + 92: 'right window key', + 93: 'Windows Menu / Right ⌘', + 95: 'sleep', + 96: 'numpad 0', + 97: 'numpad 1', + 98: 'numpad 2', + 99: 'numpad 3', + 100: 'numpad 4', + 101: 'numpad 5', + 102: 'numpad 6', + 103: 'numpad 7', + 104: 'numpad 8', + 105: 'numpad 9', + 106: 'multiply', + 107: 'add', + 108: 'numpad period (firefox)', + 109: 'subtract', + 110: 'decimal point', + 111: 'divide', + 112: 'f1', + 113: 'f2', + 114: 'f3', + 115: 'f4', + 116: 'f5', + 117: 'f6', + 118: 'f7', + 119: 'f8', + 120: 'f9', + 121: 'f10', + 122: 'f11', + 123: 'f12', + 124: 'f13', + 125: 'f14', + 126: 'f15', + 127: 'f16', + 128: 'f17', + 129: 'f18', + 130: 'f19', + 131: 'f20', + 132: 'f21', + 133: 'f22', + 134: 'f23', + 135: 'f24', + 136: 'f25', + 137: 'f26', + 138: 'f27', + 139: 'f28', + 140: 'f29', + 141: 'f30', + 142: 'f31', + 143: 'f32', + 144: 'num lock', + 145: 'scroll lock', + 151: 'airplane mode', + 160: '^', + 161: '!', + 162: '؛ (arabic semicolon)', + 163: '#', + 164: '$', + 165: 'ù', + 166: 'page backward', + 167: 'page forward', + 168: 'refresh', + 169: 'closing paren (AZERTY)', + 170: '*', + 171: '~ + * key', + 172: 'home key', + 173: 'minus (firefox), mute/unmute', + 174: 'decrease volume level', + 175: 'increase volume level', + 176: 'next', + 177: 'previous', + 178: 'stop', + 179: 'play/pause', + 180: 'e-mail', + 181: 'mute/unmute (firefox)', + 182: 'decrease volume level (firefox)', + 183: 'increase volume level (firefox)', + 186: 'semi-colon / ñ', + 187: 'equal sign', + 188: 'comma', + 189: 'dash', + 190: 'period', + 191: 'forward slash / ç', + 192: 'grave accent / ñ / æ / ö', + 193: '?, / or °', + 194: 'numpad period (chrome)', + 219: 'open bracket', + 220: 'back slash', + 221: 'close bracket / å', + 222: 'single quote / ø / ä', + 223: '`', + 224: 'left or right ⌘ key (firefox)', + 225: 'altgr', + 226: '< /git >, left back slash', + 230: 'GNOME Compose Key', + 231: 'ç', + 233: 'XF86Forward', + 234: 'XF86Back', + 235: 'non-conversion', + 240: 'alphanumeric', + 242: 'hiragana/katakana', + 243: 'half-width/full-width', + 244: 'kanji', + 251: 'unlock trackpad (Chrome/Edge)', + 255: 'toggle touchpad', +}; diff --git a/src/renderer/pages/search/subpages/market.vue b/src/renderer/pages/search/subpages/market.vue index 2ade8fa..671d6fc 100644 --- a/src/renderer/pages/search/subpages/market.vue +++ b/src/renderer/pages/search/subpages/market.vue @@ -73,7 +73,6 @@ export default { this.$set(this.loading, index, false); }, showButton(item) { - console.log(this.devPlugins) return !this.devPlugins.filter(plugin => (plugin.name === item.name && plugin.type === 'prod')).length; }, ...mapActions('main', ['downloadPlugin']) diff --git a/src/renderer/pages/search/subpages/plugin.vue b/src/renderer/pages/search/subpages/plugin.vue index 62ae3b8..06df3be 100644 --- a/src/renderer/pages/search/subpages/plugin.vue +++ b/src/renderer/pages/search/subpages/plugin.vue @@ -3,8 +3,13 @@
-
{{ plugin.pluginName }}
-
{{ plugin.description }}
+
diff --git a/src/renderer/pages/search/subpages/settings.vue b/src/renderer/pages/search/subpages/settings.vue index a95dcbd..589bdf8 100644 --- a/src/renderer/pages/search/subpages/settings.vue +++ b/src/renderer/pages/search/subpages/settings.vue @@ -1,14 +1,150 @@ - diff --git a/src/renderer/store/modules/main.js b/src/renderer/store/modules/main.js index f6bda05..f840c1c 100644 --- a/src/renderer/store/modules/main.js +++ b/src/renderer/store/modules/main.js @@ -229,7 +229,8 @@ const actions = { ...config, id: uuidv4(), sourceFile: `${fileUrl}/${config.main}`, - type: 'prod' + type: 'prod', + icon: payload.logo }; commit('commonUpdate', { devPlugins: [pluginConfig, ...state.devPlugins],