Files
keyboard/docs/quick-reference.md
2026-03-02 09:19:06 +08:00

172 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 键盘多语言/多布局功能 - 快速参考
## 🎯 核心功能
### 支持的语言和布局
| 语言 | 布局选项 | ProfileId 示例 |
|------|---------|---------------|
| 英语 | QWERTY | `en_US_qwerty` |
| 西班牙语 | QWERTY / AZERTY / QWERTZ | `es_ES_azerty` |
| 葡萄牙语 | QWERTY | `pt_PT_qwerty` |
| 繁体中文 | 拼音 / 注音全键盘 / 注音标准 | `zh_Hant_TW_bopomofo_full` |
| 印尼语 | QWERTY | `id_ID_qwerty` |
---
## 📁 关键文件
### 新增文件(需要添加到 Xcode
```
Shared/
├── Resource/
│ └── kb_input_profiles.json # 配置文件
├── KBInputProfileManager.h # 管理器头文件
└── KBInputProfileManager.m # 管理器实现
CustomKeyboard/
└── Manager/
├── KBKeyboardLayoutResolver.h # 解析器头文件
└── KBKeyboardLayoutResolver.m # 解析器实现
```
### 修改文件
```
CustomKeyboard/
├── Resource/
│ └── kb_keyboard_layout_config.json # 新增布局配置
├── View/
│ ├── KBKeyboardView.h/m # 布局切换逻辑
│ └── KBKeyBoardMainView.h/m # 布局重载方法
├── Manager/
│ └── KBSuggestionEngine.h/m # 联想引擎分流
└── KeyboardViewController.m # 布局检查逻辑
keyBoard/
└── Class/Me/VC/
└── KBPersonInfoVC.m # 配置管理器集成
```
---
## 🔑 关键 API
### 主 App 侧
```objc
// 获取所有语言配置
[[KBInputProfileManager sharedManager] allProfiles];
// 根据语言代码获取配置
[[KBInputProfileManager sharedManager] profileForLanguageCode:@"es"];
// 根据 profileId 获取布局 JSON ID
[[KBInputProfileManager sharedManager] layoutJsonIdForProfileId:@"es_ES_azerty"];
```
### 扩展侧
```objc
// 获取当前 profileId
[[KBKeyboardLayoutResolver sharedResolver] currentProfileId];
// 获取布局 JSON ID
[[KBKeyboardLayoutResolver sharedResolver] layoutJsonIdForProfileId:profileId];
// 获取联想引擎类型
[[KBKeyboardLayoutResolver sharedResolver] suggestionEngineForProfileId:profileId];
// 重新加载布局
[keyboardView reloadLayoutWithProfileId:profileId];
// 切换联想引擎
[[KBSuggestionEngine shared] setEngineTypeFromString:@"pinyin_traditional"];
```
---
## 🔄 数据流
### 主 App → 扩展
```
用户选择语言/布局
KBPersonInfoVC 写入 App Group
AppGroup_SelectedKeyboardProfileId = "es_ES_azerty"
AppGroup_SelectedKeyboardLanguageCode = "es"
AppGroup_SelectedKeyboardLayoutVariant = "azerty"
扩展读取 App Group
KBKeyboardLayoutResolver 解析 profileId
layoutJsonId = "letters_azerty"
suggestionEngine = "latin"
KBKeyboardView 加载布局
KBSuggestionEngine 切换引擎
```
---
## 🧪 快速测试
### 1. 验证文件完整性
```bash
cd "/Users/mac/Desktop/项目/公司/KeyBoard"
./check_files.sh
```
### 2. 验证 App Group 数据
```objc
NSUserDefaults *appGroup = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.loveKey.nyx"];
NSLog(@"ProfileId: %@", [appGroup stringForKey:@"AppGroup_SelectedKeyboardProfileId"]);
NSLog(@"LanguageCode: %@", [appGroup stringForKey:@"AppGroup_SelectedKeyboardLanguageCode"]);
NSLog(@"LayoutVariant: %@", [appGroup stringForKey:@"AppGroup_SelectedKeyboardLayoutVariant"]);
```
### 3. 验证布局切换
1. 主 App 切换到"Español · AZERTY"
2. 打开备忘录,调出键盘
3. 检查第一行是否为: `a z e r t y u i o p`
---
## 🐛 快速排查
| 问题 | 检查项 | 解决方案 |
|------|--------|---------|
| 编译错误 | 文件是否添加到 target | 重新添加文件 |
| 布局不切换 | App Group 数据是否写入 | 检查日志 |
| 联想不工作 | 引擎类型是否切换 | 检查日志 |
| 注音显示异常 | JSON 配置是否正确 | 检查配置文件 |
---
## 📊 实施进度
- [x] 代码实现
- [ ] 添加文件到 Xcode
- [ ] 编译验证
- [ ] 基础测试
- [ ] 完善联想引擎
- [ ] 完整测试
---
## 📚 文档索引
| 文档 | 用途 |
|------|------|
| `final-implementation-guide.md` | 完整实施指南 |
| `xcode-file-addition-guide.md` | Xcode 文件添加 |
| `testing-checklist.md` | 完整测试清单 |
| `keyboard-language-layout-implementation-summary.md` | 实现总结 |
---
## 💡 提示
- 优先完成 P0 任务(添加文件、编译、基础测试)
- 联想引擎可以后续完善
- 遇到问题先查看日志输出
- 使用 `check_files.sh` 验证文件完整性