首页 / 资讯中心 / 文章详情

DooTask 键盘 / 快捷键设置完全指南:桌面端、移动端与网页端的行为差异与实现原理

DooTask 键盘 / 快捷键设置完全指南:桌面端、移动端与网页端的行为差异与实现原理 ★ FEATURED ARTICLE
后端前端协同办公即时通讯企业应用【免费下载链接】dootaskDooTask是一款开源在线项目任务管理工具提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM文件管理等工具同时消息功能使用非对称加密技术让你的沟通更安全。项目地址https://gitcode.com/gh_mirrors/do/dootask点击查看免费下载「键盘 / 快捷键设置」简称「键盘设置」是 DooTask 个人设置user-settings体系中的一个子页面用于在桌面端与移动端查看 / 调整系统级快捷键以及消息发送按钮行为。本文以该设置页为核心完整覆盖其入口、可调项、固定快捷键、默认值与底层实现并给出桌面端Electron、网页端Web、移动端EEUI三端的行为差异与源码佐证帮助用户与开发者准确理解「哪些键可改、哪些键固定、改动何时生效」。一、功能定位与入口「键盘设置」解决的核心问题是如何在不打扰浏览器默认行为的前提下为桌面端与移动端提供「全局可触发」的快捷操作并允许用户微调少数高频按键截图键、消息发送行为。根据知识库文档shortcut.md该子页的入口分为三端桌面端 Electron右上角头像 →「设置」→「键盘设置」移动端 EEUI「我的」→「设置」→「键盘设置」Web 浏览器无此入口前端路由定义可验证该子页的存在routes.js 中注册了manage-setting-keyboard路由其 path 为keyboard对应组件 keyboard.vue。这也与 AI 助手深链映射一致deep-links.js 中的setting_keyboard。注意Web 浏览器端之所以没有该入口是因为浏览器无法注册操作系统级全局快捷键详见下文「各端能力对比」。二、可调项用户可自定义的部分「键盘设置」页面只开放两类可调项其余组合键全部固定。对应 UI 组件位于 keyboard.vue项说明取值范围 / 默认值截图快捷键Electron 全局快捷键的最后一位字母可改实际组合键为Cmd/Ctrl Shift key单个字母或数字自动转大写留空表示不绑定默认A→ 实际触发Cmd/Ctrl Shift A桌面端发送按钮影响消息输入框的「回车行为」Enter 发送enter或Cmd/Ctrl Enter 发送button默认enter移动端发送按钮影响键盘上发送键的行为button开启键盘发送键变换行用 App 内浮动发送按钮发消息或enter关闭默认button2.1 截图快捷键的表单校验键盘设置组件 对截图键输入做了前端校验输入框maxlength2只允许最后一个字符参与校验校验规则为/^[A-Za-z0-9]?$/即只能输入字母或数字否则提示「只能输入字母或数字」输入内容会在$nextTick中自动转为大写显示。因此用户无法输入CtrlShiftEnter之类组合键也无法录制任意组合键——这是产品刻意限制详见「不支持」章节。2.2 发送按钮的两个模式从 keyboard.vue 可见发送按钮按端分别渲染桌面端$Electron分支单选组send_button_desktop两个选项enter「Enter 发送」button「Cmd/Ctrl Enter 发送」移动端$isEEUIApp分支单选组send_button_appbutton开启键盘上的发送键被替换成换行需点 App 内浮动发送按钮发消息enter关闭键盘发送键直接发送该行为的实际生效逻辑位于聊天输入框组件 ChatInput/index.vue 的isEnterSend计算属性EEUI 端取send_button_app enter桌面端取send_button_desktop enter。随后 Quill 编辑器的键盘绑定index.vue据此决定行为enter-short绑定shortKey: true即 Cmd/Ctrl Enter当不是Enter 发送模式时触发onSend()并阻止默认换行enter绑定无 Shift当是Enter 发送模式时触发onSend()。一句话总结isEnterSend为真 → 裸 Enter 发送、Cmd/CtrlEnter 换行为假 → 反过来。ShiftEnter 始终作为「软换行」保留见网页端章节。三、固定快捷键不可改桌面端 Electron 注册了一组系统级全局快捷键在 App 处于后台 / 最小化 / 托盘时也能触发。下表与 keyboard.vue 中展示的只读提示一致Mod在 macOS 为CommandWindows / Linux 为CtrlAlt对应 macOS 的Option操作快捷键备注下载内容Cmd/Ctrl Alt/Option L打开下载管理器AI 助手Cmd/Ctrl I需安装 AI 插件aiVisible时才显示该项新建任务Cmd/Ctrl N弹出快速创建新建项目Cmd/Ctrl B新会议Cmd/Ctrl J打开设置Cmd/Ctrl ,与全局快捷键速查表global.md横向对照桌面端还包含操作Windows / LinuxmacOS打开搜索Ctrl F或Ctrl /Cmd F或Cmd /创建群组Ctrl UCmd U这些组合键均为固定绑定、不支持改键设置页只做展示FormItem无输入控件。从源码看桌面端注册原理为 Electron 的globalShortcutAPI应用will-quit时调用globalShortcut.unregisterAll()electron.js截图键通过 IPC 通道bindScreenshotKey动态注册 / 注销见下文「实现原理」若快捷键被其他软件抢先占用注册会静默失败且无错误提示知识库 桌面端全局快捷键 明确记录。四、字段默认值与持久化store/actions.js 中的handleKeyboardaction 定义了默认值与存储位置data.screenshot_key (data.screenshot_key || ).trim().toLowerCase() data.send_button_app data.send_button_app || button // 移动端发送按钮默认 button显示发送按钮 data.send_button_desktop data.send_button_desktop || enter // 桌面端发送按钮默认 enter键盘回车发送 window.localStorage.setItem(__system:keyboardConf__, $A.jsonStringify(data)) state.cacheKeyboard data由此可确认三个默认值截图键默认A→ 实际触发Cmd/Ctrl Shift A值在存储时被toLowerCase归一Electron 端注册时再拼回完整组合键桌面端发送默认 Enter 发送send_button_desktop enter移动端发送默认按浮动按钮send_button_app button。配置持久化在浏览器localStorage的__system:keyboardConf__键下同时缓存到 Vuexstate.cacheKeyboardstate.js。桌面端渲染层在初始化时读取该缓存并调用$A.bindScreenshotKeyApp.vue确保应用重启后截图快捷键依然生效。五、实现原理从「改键」到「全局生效」的完整链路「快捷键改动只影响当前用户当前终端不上云修改后立刻生效无需重启 Electron」——这两个特性可以从源码链路得到印证。5.1 保存即生效键盘设置组件 的submitFormthis.$store.dispatch(handleKeyboard, this.formData).then((data) { if (this.$Electron) { $A.bindScreenshotKey(data); } $A.messageSuccess(保存成功); });保存成功后立即调用$A.bindScreenshotKey(data)将新截图键推送给 Electron 主进程——无需重启客户端。5.2 渲染层拼键$A.bindScreenshotKey 负责把「单个字母」拼成完整组合键key /macintosh|mac os x/i.test(navigator.userAgent) ? command : ctrl key ${key}shift${screenshot_key.toLowerCase()} $A.Electron.sendMessage(bindScreenshotKey, {key});这里根据 UA 判断 macOS 用command、其余平台用ctrl与知识库中「Mac 用 Cmd、Windows/Linux 用 Ctrl」的约定完全一致。5.3 主进程注册 / 注销electron.js 中的 IPC 处理器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 })要点键值变更时才操作避免重复注册注册的回调调用screenshotObj.startCapture()启动截图截图对象由electron-screenshots-tool创建electron.js依赖声明见 package.json留空key为空字符串表示不绑定此时仅注销旧键、不注册新键对应知识库「留空表示不绑定」的说明。5.4 为什么「不上云」配置存放在浏览器 / Electron 本地存储localStorage后端接口不参与读写因此更换终端或账号换设备后需重新设置——这正是「只影响当前用户当前终端不上云」的由来。六、各端能力对比桌面端 / 网页端 / 移动端为帮助判断「我在哪个端、能改什么」汇总知识库三个相关 chunk 的边界能力桌面端 Electron网页端浏览器移动端 EEUI「键盘设置」入口✅ 有❌ 无✅ 有系统级全局快捷键后台 / 托盘可触发✅ 有❌ 无仅页面聚焦时生效❌ 无用手势截图快捷键可自定义✅ 有❌ 无❌ 无发送按钮模式Enter / ModEnter✅ 有✅ 有同一定义见下✅ 有自定义全部快捷键❌ 不支持❌ 不支持❌ 不支持6.1 网页端应用内键盘与浏览器优先权网页端不能注册全局快捷键只在 DooTask 标签页处于焦点时生效web-client/shortcut.md。其应用内快捷键包括富文本Cmd/Ctrl B加粗、Cmd/Ctrl I斜体、Cmd/Ctrl Z撤销、Cmd/Ctrl Shift ZmacOS/Ctrl YWindows重做表单 / 弹窗Enter提交、Esc取消消息默认Enter发送、Shift Enter换行可在「个人设置 → 键盘」切换为Cmd/Ctrl Enter发送、Enter换行。关键边界浏览器自身快捷键如CmdT新建标签、CmdW关闭标签优先生效DooTask 不接管CmdS/CmdP等同样会被浏览器吞掉。知识库负面清单中明确记载「Web 浏览器 CmdS / CmdP 等会被浏览器吞掉DooTask 不接管」。6.2 桌面端独占项以下快捷键需要操作系统级注册仅 Electron 桌面端提供见 web-client/shortcut.md「不在网页端的快捷键」Cmd/Ctrl I唤起 AI 助手Cmd/Ctrl N新建任务Cmd/Ctrl B新建项目Cmd/Ctrl J新建会议Cmd/Ctrl ,打开设置截图快捷键用户自定义同时桌面端还有一组应用内导航快捷键electron-client/shortcut.md后退Cmd ←Windows 为Alt ←、前进Cmd →Alt →、刷新Cmd RCtrl R/F5、强制刷新Cmd/Ctrl Shift R、关闭窗口Cmd WCtrl W、退出 AppCmd QAlt F4。6.3 移动端无键盘快捷键只有手势移动端不提供键盘快捷键global.md 明确标注移动端为「无」交互能力由 移动端手势操作 承担长按、左滑、下拉刷新、双指捏合等。「键盘设置」在移动端仅承担发送按钮行为的调整。七、与其他模块的关系与生效边界仅影响本机快捷键配置存储于本地不与云端同步换终端需重新配置立即生效截图键保存后即时注册无需重启 Electron依赖 AI 插件Cmd/Ctrl I仅在 AI 微应用已安装aiVisible时生效未安装时设置页不展示该项且快捷键无效注册冲突无提示截图键或固定快捷键若被其他软件占用ElectronglobalShortcut.register会静默失败用户无法察觉退出即失效App 完全退出后全局快捷键不再可用will-quit时unregisterAll仅在进程运行含后台 / 托盘时生效。八、不支持的能力清单综合设置页与知识库负面清单以下能力明确不支持全面自定义快捷键仅截图键与发送行为可调其余组合键固定Cmd/CtrlN、Cmd/CtrlB等不可改按键组合录制截图键输入框只接受单个字母 / 数字不能录制CtrlShiftAltX这类多组合键网页端全局快捷键浏览器无法注册系统级热键且浏览器自身快捷键优先移动端键盘快捷键移动端无全局热键交互依赖手势gesture.md冲突检测提示快捷键被占用时静默失败无错误弹窗。九、相关文档速查快捷键 / 键盘设置本文主题桌面端全局快捷键注册原理、应用内导航网页端快捷键应用内键盘与浏览器边界全局快捷键速查表搜索、建群等更多全局键移动端手势操作移动端替代交互方式源码参考keyboard.vue设置页 UI 与校验、actions.js默认值与持久化、app.js组合键拼接、electron.jsElectron 注册 / 注销、ChatInput/index.vue发送行为逻辑赞分享后端前端协同办公即时通讯企业应用【免费下载链接】dootaskDooTask是一款开源在线项目任务管理工具提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM文件管理等工具同时消息功能使用非对称加密技术让你的沟通更安全。项目地址https://gitcode.com/gh_mirrors/do/dootask点击查看免费下载相关推荐DooTask 网页端快捷键完全指南应用内键盘操作、消息发送模式与桌面端全局快捷键边界DooTask 网页端快捷键完全指南应用内键盘操作、消息发送模式与桌面端全局快捷键边界 DooTask 网页端Web 浏览器提供了一套基于浏览器焦点事件的后端前端协同办公即时通讯企业应用DooTask 桌面端全局快捷键完全指南注册原理、快捷键总览与截图热键自定义DooTask 桌面端全局快捷键完全指南注册原理、快捷键总览与截图热键自定义 DooTask 桌面客户端基于 Electron 38 打包在网页端之外注册后端前端协同办公即时通讯企业应用DooTask 新建任务入口全指南桌面端、移动端路径与快捷键详解DooTask 新建任务入口全指南桌面端、移动端路径与快捷键详解 DooTask 是一款开源在线项目任务管理工具其新建任务入口贯穿桌面端、移动端与快捷键后端前端协同办公即时通讯企业应用上一篇ViewBindingKTX 项目常见问题解决方案下一篇终极指南GRUB2主题多分辨率完美适配从1080p到4K创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站