feat:基础功能实现
feat: 重构 TodoList 架构,新增动态 API 与 MAUI 内嵌 Web 服务 feat:优化交互逻辑,优化发布流程
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
# TodoList MAUI 跨平台快捷键功能
|
||||
|
||||
## 功能概述
|
||||
|
||||
本项目实现了基于 MAUI + WebView 架构的跨平台待办事项管理应用,支持全局快捷键快速唤醒功能。
|
||||
|
||||
## 支持的平台
|
||||
|
||||
- **Windows**: 完整支持,使用 Windows API 实现全局快捷键
|
||||
- **macOS**: 完整支持,使用 AppKit API 实现全局快捷键
|
||||
- **Android**: 基础支持,通过通知快捷方式实现
|
||||
- **iOS**: 基础支持,通过通知快捷方式实现
|
||||
|
||||
## 核心功能
|
||||
|
||||
### 1. 全局快捷键
|
||||
- **Windows 默认快捷键**: `Alt + X`
|
||||
- **macOS 默认快捷键**: `Cmd + Option + X`
|
||||
- **移动端**: 通过通知快捷方式实现
|
||||
|
||||
### 2. 快捷键设置
|
||||
- 用户可以自定义快捷键组合
|
||||
- 支持多种修饰键组合(Alt、Control、Shift 等)
|
||||
- 支持禁用/启用快捷键功能
|
||||
- 设置持久化保存
|
||||
|
||||
### 3. WebView 集成
|
||||
- 主界面嵌入 WebView,显示 TodoList Web 应用
|
||||
- 快捷键按下时自动激活窗口并聚焦 WebView
|
||||
- 支持与本地 API 服务通信
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
TodoList.Maui/
|
||||
├── Models/
|
||||
│ └── HotKeyConfig.cs # 快捷键配置模型
|
||||
├── Services/
|
||||
│ ├── IGlobalHotKeyService.cs # 快捷键服务接口
|
||||
│ ├── HotKeySettingsService.cs # 设置存储服务
|
||||
│ ├── GlobalHotKeyServiceFactory.cs # 平台工厂
|
||||
│ └── Platforms/
|
||||
│ ├── WindowsGlobalHotKeyService.cs # Windows 实现
|
||||
│ ├── MacGlobalHotKeyService.cs # macOS 实现
|
||||
│ └── MobileGlobalHotKeyService.cs # 移动端实现
|
||||
├── Views/
|
||||
│ ├── MainPage.xaml # 主页面(WebView)
|
||||
│ ├── MainPage.xaml.cs
|
||||
│ ├── HotKeySettingsPage.xaml # 快捷键设置页面
|
||||
│ └── HotKeySettingsPage.xaml.cs
|
||||
├── App.xaml.cs # 应用入口
|
||||
└── MauiProgram.cs # MAUI 配置
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 1. 运行项目
|
||||
|
||||
#### Windows
|
||||
```bash
|
||||
cd TodoList.Maui
|
||||
dotnet build -f net10.0-windows10.0.19041.0
|
||||
dotnet run -f net10.0-windows10.0.19041.0
|
||||
```
|
||||
|
||||
#### macOS
|
||||
```bash
|
||||
cd TodoList.Maui
|
||||
dotnet build -f net10.0-maccatalyst
|
||||
dotnet run -f net10.0-maccatalyst
|
||||
```
|
||||
|
||||
#### Android
|
||||
```bash
|
||||
cd TodoList.Maui
|
||||
dotnet build -f net10.0-android
|
||||
dotnet run -f net10.0-android
|
||||
```
|
||||
|
||||
### 2. 使用快捷键
|
||||
|
||||
1. 启动应用后,默认快捷键为 `Alt + X`(Windows)或 `Cmd + Option + X`(macOS)
|
||||
2. 按下快捷键,应用窗口会自动激活并聚焦
|
||||
3. 在 WebView 中可以直接输入任务内容
|
||||
|
||||
### 3. 自定义快捷键
|
||||
|
||||
1. 点击主界面右上角的"设置"按钮
|
||||
2. 在设置页面中:
|
||||
- 切换"启用快捷键"开关
|
||||
- 选择想要的修饰键组合
|
||||
- 选择主键
|
||||
- 点击"保存设置"按钮
|
||||
3. 设置会立即生效
|
||||
|
||||
### 4. 恢复默认设置
|
||||
|
||||
在设置页面点击"恢复默认"按钮,快捷键将恢复为默认配置。
|
||||
|
||||
## 技术实现细节
|
||||
|
||||
### Windows 平台
|
||||
- 使用 `RegisterHotKey` 和 `UnregisterHotKey` Windows API
|
||||
- 支持全局快捷键监听
|
||||
- 通过 `WindowNative` 获取窗口句柄
|
||||
|
||||
### macOS 平台
|
||||
- 使用 `NSEvent.AddGlobalMonitorForEventsMatchingMask` 监听全局事件
|
||||
- 支持 Command、Option、Control、Shift 等修饰键
|
||||
- 需要配置 `com.apple.security.automation.apple-events` 权限
|
||||
|
||||
### 移动端
|
||||
- Android: 使用 `ShortcutManagerCompat` 创建通知快捷方式
|
||||
- iOS: 使用 `UIApplicationShortcutItem` 实现快捷操作
|
||||
|
||||
### 数据持久化
|
||||
- 使用 `Microsoft.Maui.Storage.Preferences` 存储配置
|
||||
- JSON 序列化保存快捷键配置
|
||||
- 支持重置为默认配置
|
||||
|
||||
## 依赖项
|
||||
|
||||
### NuGet 包
|
||||
- `Microsoft.Maui.Controls`
|
||||
- `Microsoft.Extensions.DependencyInjection`
|
||||
- `Microsoft.Extensions.Logging.Debug`
|
||||
|
||||
### 平台特定
|
||||
- Windows: `Microsoft.Windows.SDK.BuildTools`
|
||||
- macOS: `Microsoft.Maui.Controls.Compatibility`
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **macOS 权限**: 首次运行时需要在系统设置中授予辅助功能权限
|
||||
2. **Windows UAC**: 某些情况下可能需要管理员权限
|
||||
3. **移动端限制**: 移动端不支持真正的全局快捷键,使用通知快捷方式替代
|
||||
4. **WebView**: 确保 TodoList.Api 服务在 `http://localhost:5173` 运行
|
||||
|
||||
## 后续计划
|
||||
|
||||
- [ ] 添加 Linux 平台支持
|
||||
- [ ] 实现云同步功能
|
||||
- [ ] 添加更多快捷键功能
|
||||
- [ ] 优化性能和响应速度
|
||||
- [ ] 添加快捷键冲突检测
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
Reference in New Issue
Block a user