diff --git a/electron/electron.js b/electron/electron.js
index 9b1341657..7bb5a01ea 100644
--- a/electron/electron.js
+++ b/electron/electron.js
@@ -19,6 +19,9 @@ let mainWindow = null,
devloadUrl = "",
devloadCachePath = path.resolve(__dirname, ".devload");
+let screenshotObj = null,
+ screenshotKey = null;
+
if (fs.existsSync(devloadCachePath)) {
devloadUrl = fs.readFileSync(devloadCachePath, 'utf8')
}
@@ -196,13 +199,15 @@ if (!getTheLock) {
if (process.platform === 'win32') {
app.setAppUserModelId(config.name)
}
- // 截图
- const screenshots = new Screenshots({
+ // 截图对象
+ screenshotObj = new Screenshots({
singleWindow: true
})
- globalShortcut.register('ctrl+shift+a', () => {
- screenshots.startCapture().then(_ => {})
- })
+ globalShortcut.register("esc", () => {
+ if (screenshotObj.$win?.isFocused()) {
+ screenshotObj.endCapture().then(_ => {});
+ }
+ });
})
}
@@ -454,6 +459,35 @@ ipcMain.on('copyBase64Image', (event, args) => {
event.returnValue = "ok"
})
+/**
+ * 绑定截图快捷键
+ * @param args
+ */
+ipcMain.on('bindScreenshotKey', (event, args) => {
+ const { key } = args;
+ if (screenshotKey !== key) {
+ if (screenshotKey) {
+ globalShortcut.unregister(screenshotKey)
+ screenshotKey = null
+ }
+ if (key) {
+ screenshotKey = key
+ globalShortcut.register(key, () => {
+ screenshotObj.startCapture().then(_ => {})
+ })
+ }
+ }
+ event.returnValue = "ok"
+})
+
+/**
+ * 执行截图
+ */
+ipcMain.on('onScreenshot', (event) => {
+ screenshotObj.startCapture().then(_ => {})
+ event.returnValue = "ok"
+})
+
//================================================================
// Update
//================================================================
diff --git a/electron/package.json b/electron/package.json
index 874d04d16..26d88956f 100644
--- a/electron/package.json
+++ b/electron/package.json
@@ -26,13 +26,13 @@
"url": "https://github.com/kuaifan/dootask.git"
},
"devDependencies": {
- "@electron-forge/cli": "^6.0.1",
- "@electron-forge/maker-deb": "^6.0.1",
- "@electron-forge/maker-rpm": "^6.0.1",
- "@electron-forge/maker-squirrel": "^6.0.1",
- "@electron-forge/maker-zip": "^6.0.1",
+ "@electron-forge/cli": "^6.0.4",
+ "@electron-forge/maker-deb": "^6.0.4",
+ "@electron-forge/maker-rpm": "^6.0.4",
+ "@electron-forge/maker-squirrel": "^6.0.4",
+ "@electron-forge/maker-zip": "^6.0.4",
"dotenv": "^16.0.3",
- "electron": "^21.3.0",
+ "electron": "^22.0.0",
"electron-builder": "^23.6.0",
"electron-notarize": "^1.2.2",
"form-data": "^4.0.0",
diff --git a/resources/assets/js/App.vue b/resources/assets/js/App.vue
index dcdbecae4..6325d8b49 100755
--- a/resources/assets/js/App.vue
+++ b/resources/assets/js/App.vue
@@ -237,6 +237,7 @@ export default {
key: 'manifest',
url: $A.apiUrl("../manifest")
})
+ $A.bindScreenshotKey($A.jsonParse(window.localStorage['__keyboard:data__'] || {}));
},
eeuiEvents() {
diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js
index aa49d83ef..a9a2f28eb 100644
--- a/resources/assets/js/app.js
+++ b/resources/assets/js/app.js
@@ -193,3 +193,16 @@ $A.execMainCacheJudge = (key) => {
return val
};
+$A.bindScreenshotKey = (data) => {
+ let key = "";
+ if (data.screenshot_key && (data.screenshot_mate || data.screenshot_shift)) {
+ if (data.screenshot_mate) {
+ key = /macintosh|mac os x/i.test(navigator.userAgent) ? 'command' : 'ctrl'
+ }
+ if (data.screenshot_shift) {
+ key = `${key ? `${key}+` : ''}shift`
+ }
+ key = `${key}+${data.screenshot_key.toLowerCase()}`
+ }
+ $A.Electron.sendMessage('bindScreenshotKey', {key});
+};
diff --git a/resources/assets/js/pages/manage/setting/index.vue b/resources/assets/js/pages/manage/setting/index.vue
index 135abb2e6..f431bac00 100644
--- a/resources/assets/js/pages/manage/setting/index.vue
+++ b/resources/assets/js/pages/manage/setting/index.vue
@@ -76,6 +76,10 @@ export default {
{path: 'email', name: '修改邮箱'},
]
+ if (this.$Electron) {
+ menu.splice(2, 0, {path: 'keyboard', name: '快捷键'})
+ }
+
if ([
'127.0.0.1:2222',
'192.168.100.88:2222',
diff --git a/resources/assets/js/pages/manage/setting/keyboard.vue b/resources/assets/js/pages/manage/setting/keyboard.vue
new file mode 100644
index 000000000..ad19d6c1e
--- /dev/null
+++ b/resources/assets/js/pages/manage/setting/keyboard.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
diff --git a/resources/assets/js/pages/manage/setting/language.vue b/resources/assets/js/pages/manage/setting/language.vue
index fd41fbfb7..d4413b9e5 100644
--- a/resources/assets/js/pages/manage/setting/language.vue
+++ b/resources/assets/js/pages/manage/setting/language.vue
@@ -15,11 +15,9 @@