1
This commit is contained in:
@@ -100,6 +100,8 @@ static NSString *KBFormatMB(uint64_t bytes) {
|
||||
[self kb_consumePendingShopSkin];
|
||||
[self kb_applyDefaultSkinIfNeeded];
|
||||
|
||||
[self kb_startObservingAppGroupChanges];
|
||||
|
||||
// 监听 App Group 配置变化,动态切换键盘布局
|
||||
[self kb_checkAndApplyLayoutIfNeeded];
|
||||
}
|
||||
@@ -236,6 +238,7 @@ static NSString *KBFormatMB(uint64_t bytes) {
|
||||
removeObserver:self.kb_skinObserverToken];
|
||||
self.kb_skinObserverToken = nil;
|
||||
}
|
||||
[self kb_stopObservingAppGroupChanges];
|
||||
[self kb_unregisterDarwinSkinInstallObserver];
|
||||
#if DEBUG
|
||||
if (_kb_debugDidCountAlive) {
|
||||
@@ -275,10 +278,34 @@ static NSString *KBFormatMB(uint64_t bytes) {
|
||||
}
|
||||
|
||||
- (void)kb_updateSuggestionEngineType:(NSString *)engineType {
|
||||
// 根据 engineType 切换不同的联想引擎
|
||||
// 例如:latin, pinyin_traditional, pinyin_simplified, bopomofo
|
||||
NSLog(@"[KeyboardViewController] Switching suggestion engine to: %@", engineType);
|
||||
[[KBSuggestionEngine shared] setEngineTypeFromString:engineType];
|
||||
}
|
||||
|
||||
#pragma mark - App Group KVO
|
||||
|
||||
- (void)kb_startObservingAppGroupChanges {
|
||||
NSUserDefaults *appGroup = [[NSUserDefaults alloc] initWithSuiteName:AppGroup];
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
self.kb_appGroupObserverToken = [[NSNotificationCenter defaultCenter]
|
||||
addObserverForName:NSUserDefaultsDidChangeNotification
|
||||
object:appGroup
|
||||
queue:[NSOperationQueue mainQueue]
|
||||
usingBlock:^(__unused NSNotification *_Nonnull note) {
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) { return; }
|
||||
[strongSelf kb_checkAndApplyLayoutIfNeeded];
|
||||
}];
|
||||
|
||||
NSLog(@"[KeyboardViewController] Started observing App Group changes");
|
||||
}
|
||||
|
||||
- (void)kb_stopObservingAppGroupChanges {
|
||||
if (self.kb_appGroupObserverToken) {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self.kb_appGroupObserverToken];
|
||||
self.kb_appGroupObserverToken = nil;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -105,6 +105,7 @@ typedef NS_ENUM(NSInteger, KBKeyboardPanelMode) {
|
||||
@property(nonatomic, strong, nullable) id kb_fullAccessObserverToken;
|
||||
@property(nonatomic, strong, nullable) id kb_skinObserverToken;
|
||||
@property(nonatomic, assign) KBKeyboardPanelMode kb_panelMode;
|
||||
@property(nonatomic, strong, nullable) id kb_appGroupObserverToken;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
@property (nonatomic, strong) NSSet<NSString *> *priorityWords;
|
||||
@property (nonatomic, copy) NSArray<NSString *> *traditionalChineseWords;
|
||||
@property (nonatomic, copy) NSArray<NSString *> *simplifiedChineseWords;
|
||||
@property (nonatomic, strong) NSDictionary<NSString *, NSArray<NSString *> *> *pinyinToTraditionalMap;
|
||||
@property (nonatomic, strong) NSDictionary<NSString *, NSArray<NSString *> *> *bopomofoToChineseMap;
|
||||
@end
|
||||
|
||||
@implementation KBSuggestionEngine
|
||||
@@ -34,6 +36,8 @@
|
||||
_words = [self kb_loadWords];
|
||||
_traditionalChineseWords = [self kb_loadTraditionalChineseWords];
|
||||
_simplifiedChineseWords = [self kb_loadSimplifiedChineseWords];
|
||||
_pinyinToTraditionalMap = [self kb_loadPinyinToTraditionalMap];
|
||||
_bopomofoToChineseMap = [self kb_loadBopomofoToChineseMap];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -206,61 +210,204 @@
|
||||
#pragma mark - Traditional Chinese Pinyin Suggestions
|
||||
|
||||
- (NSArray<NSString *> *)kb_traditionalPinyinSuggestionsForPrefix:(NSString *)prefix limit:(NSUInteger)limit {
|
||||
// 繁体拼音联想:输入拼音,返回繁体中文候选词
|
||||
NSString *lower = prefix.lowercaseString;
|
||||
NSMutableArray<NSString *> *matches = [NSMutableArray array];
|
||||
|
||||
// 这里应该使用拼音到繁体字的映射表
|
||||
// 目前先返回一些常用繁体词作为示例
|
||||
NSArray<NSString *> *directMatches = self.pinyinToTraditionalMap[lower];
|
||||
if (directMatches.count > 0) {
|
||||
[matches addObjectsFromArray:directMatches];
|
||||
}
|
||||
|
||||
for (NSString *key in self.pinyinToTraditionalMap) {
|
||||
if ([key hasPrefix:lower] && ![key isEqualToString:lower]) {
|
||||
NSArray<NSString *> *candidates = self.pinyinToTraditionalMap[key];
|
||||
[matches addObjectsFromArray:candidates];
|
||||
if (matches.count >= limit * 2) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.count == 0) {
|
||||
return [self kb_fallbackTraditionalSuggestions:lower limit:limit];
|
||||
}
|
||||
|
||||
[matches sortUsingComparator:^NSComparisonResult(NSString *a, NSString *b) {
|
||||
NSInteger ca = self.selectionCounts[a].integerValue;
|
||||
NSInteger cb = self.selectionCounts[b].integerValue;
|
||||
if (ca != cb) {
|
||||
return (cb > ca) ? NSOrderedAscending : NSOrderedDescending;
|
||||
}
|
||||
return [a compare:b];
|
||||
}];
|
||||
|
||||
if (matches.count > limit) {
|
||||
return [matches subarrayWithRange:NSMakeRange(0, limit)];
|
||||
}
|
||||
return matches.copy;
|
||||
}
|
||||
|
||||
- (NSArray<NSString *> *)kb_fallbackTraditionalSuggestions:(NSString *)prefix limit:(NSUInteger)limit {
|
||||
NSMutableArray<NSString *> *matches = [NSMutableArray array];
|
||||
for (NSString *word in self.traditionalChineseWords) {
|
||||
// TODO: 实现拼音匹配逻辑
|
||||
// 这里需要一个拼音库来将输入的拼音转换为繁体字
|
||||
[matches addObject:word];
|
||||
if (matches.count >= limit) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return matches.copy;
|
||||
}
|
||||
|
||||
#pragma mark - Simplified Chinese Pinyin Suggestions
|
||||
|
||||
- (NSArray<NSString *> *)kb_simplifiedPinyinSuggestionsForPrefix:(NSString *)prefix limit:(NSUInteger)limit {
|
||||
// 简体拼音联想:输入拼音,返回简体中文候选词
|
||||
NSString *lower = prefix.lowercaseString;
|
||||
NSMutableArray<NSString *> *matches = [NSMutableArray array];
|
||||
|
||||
// 这里应该使用拼音到简体字的映射表
|
||||
NSArray<NSString *> *directMatches = self.pinyinToTraditionalMap[lower];
|
||||
if (directMatches.count > 0) {
|
||||
for (NSString *tradChar in directMatches) {
|
||||
NSString *simplified = [self kb_toSimplified:tradChar];
|
||||
if (simplified.length > 0) {
|
||||
[matches addObject:simplified];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (NSString *key in self.pinyinToTraditionalMap) {
|
||||
if ([key hasPrefix:lower] && ![key isEqualToString:lower]) {
|
||||
NSArray<NSString *> *candidates = self.pinyinToTraditionalMap[key];
|
||||
for (NSString *tradChar in candidates) {
|
||||
NSString *simplified = [self kb_toSimplified:tradChar];
|
||||
if (simplified.length > 0) {
|
||||
[matches addObject:simplified];
|
||||
}
|
||||
}
|
||||
if (matches.count >= limit * 2) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.count == 0) {
|
||||
return [self kb_fallbackSimplifiedSuggestions:lower limit:limit];
|
||||
}
|
||||
|
||||
[matches sortUsingComparator:^NSComparisonResult(NSString *a, NSString *b) {
|
||||
NSInteger ca = self.selectionCounts[a].integerValue;
|
||||
NSInteger cb = self.selectionCounts[b].integerValue;
|
||||
if (ca != cb) {
|
||||
return (cb > ca) ? NSOrderedAscending : NSOrderedDescending;
|
||||
}
|
||||
return [a compare:b];
|
||||
}];
|
||||
|
||||
if (matches.count > limit) {
|
||||
return [matches subarrayWithRange:NSMakeRange(0, limit)];
|
||||
}
|
||||
return matches.copy;
|
||||
}
|
||||
|
||||
- (NSArray<NSString *> *)kb_fallbackSimplifiedSuggestions:(NSString *)prefix limit:(NSUInteger)limit {
|
||||
NSMutableArray<NSString *> *matches = [NSMutableArray array];
|
||||
for (NSString *word in self.simplifiedChineseWords) {
|
||||
// TODO: 实现拼音匹配逻辑
|
||||
[matches addObject:word];
|
||||
if (matches.count >= limit) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return matches.copy;
|
||||
}
|
||||
|
||||
- (NSString *)kb_toSimplified:(NSString *)traditional {
|
||||
static NSDictionary<NSString *, NSString *> *tradToSimpMap = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
tradToSimpMap = @{
|
||||
@"臺": @"台", @"臺": @"台", @"灣": @"湾", @"語": @"语", @"體": @"体",
|
||||
@"國": @"国", @"學": @"学", @"時": @"时", @"問": @"问", @"見": @"见",
|
||||
@"經": @"经", @"動": @"动", @"長": @"长", @"開": @"开", @"關": @"关",
|
||||
@"無": @"无", @"說": @"说", @"書": @"书", @"電": @"电", @"機": @"机",
|
||||
@"氣": @"气", @"這": @"这", @"們": @"们", @"個": @"个", @"對": @"对",
|
||||
@"來": @"来", @"還": @"还", @"過": @"过", @"會": @"会", @"進": @"进",
|
||||
@"開": @"开", @"頭": @"头", @"點": @"点", @"問": @"问", @"題": @"题",
|
||||
@"變": @"变", @"條": @"条", @"東": @"东", @"車": @"车", @"錢": @"钱",
|
||||
@"門": @"门", @"聽": @"听", @"聲": @"声", @"醫": @"医", @"讓": @"让",
|
||||
@"識": @"识", @"務": @"务", @"農": @"农", @"業": @"业", @"產": @"产",
|
||||
@"黨": @"党", @"歷": @"历", @"史": @"史", @"後": @"后", @"前": @"前",
|
||||
@"強": @"强", @"當": @"当", @"應": @"应", @"從": @"从", @"優": @"优",
|
||||
@"兒": @"儿", @"兩": @"两", @"幾": @"几", @"廣": @"广", @"場": @"场",
|
||||
@"決": @"决", @"許": @"许", @"設": @"设", @"請": @"请", @"論": @"论",
|
||||
@"認": @"认", @"斷": @"断", @"離": @"离", @"須": @"须", @"導": @"导",
|
||||
@"爭": @"争", @"重": @"重", @"輕": @"轻", @"難": @"难", @"極": @"极",
|
||||
@"據": @"据", @"實": @"实", @"際": @"际", @"標": @"标", @"準": @"准",
|
||||
@"確": @"确", @"證": @"证", @"驗": @"验", @"權": @"权", @"規": @"规",
|
||||
@"則": @"则", @"劃": @"划", @"計": @"计", @"劃": @"划", @"術": @"术",
|
||||
@"藝": @"艺", @"術": @"术", @"選": @"选", @"舉": @"举", @"團": @"团",
|
||||
@"結": @"结", @"組": @"组", @"織": @"织", @"義": @"义", @"務": @"务",
|
||||
@"親": @"亲", @"愛": @"爱", @"情": @"情", @"懷": @"怀", @"家": @"家",
|
||||
@"屬": @"属", @"幫": @"帮", @"助": @"助", @"友": @"友", @"誼": @"谊",
|
||||
@"謝": @"谢", @"謝": @"谢", @"對": @"对", @"起": @"起", @"早": @"早",
|
||||
@"安": @"安", @"晚": @"晚", @"請": @"请", @"問": @"问", @"沒": @"没",
|
||||
@"關": @"关", @"係": @"系", @"加": @"加", @"油": @"油", @"台": @"台",
|
||||
@"北": @"北", @"高": @"高", @"雄": @"雄", @"中": @"中", @"南": @"南",
|
||||
@"朋": @"朋", @"友": @"友", @"人": @"人", @"工": @"工", @"作": @"作",
|
||||
@"習": @"习", @"生": @"生", @"活": @"活", @"地": @"地", @"方": @"方",
|
||||
@"法": @"法", @"答": @"答", @"喜": @"喜", @"歡": @"欢", @"想": @"想",
|
||||
@"念": @"念", @"開": @"开", @"心": @"心", @"快": @"快", @"樂": @"乐",
|
||||
@"美": @"美", @"麗": @"丽", @"漂": @"漂", @"亮": @"亮", @"帥": @"帅",
|
||||
@"氣": @"气", @"可": @"可", @"愛": @"爱", @"溫": @"温", @"柔": @"柔"
|
||||
};
|
||||
});
|
||||
|
||||
if (tradToSimpMap[traditional]) {
|
||||
return tradToSimpMap[traditional];
|
||||
}
|
||||
|
||||
NSMutableString *result = [traditional mutableCopy];
|
||||
[tradToSimpMap enumerateKeysAndObjectsUsingBlock:^(NSString *trad, NSString *simp, BOOL *stop) {
|
||||
[result replaceOccurrencesOfString:trad withString:simp options:0 range:NSMakeRange(0, result.length)];
|
||||
}];
|
||||
|
||||
return result.length > 0 ? [result copy] : traditional;
|
||||
}
|
||||
|
||||
#pragma mark - Bopomofo (Zhuyin) Suggestions
|
||||
|
||||
- (NSArray<NSString *> *)kb_bopomofoSuggestionsForPrefix:(NSString *)prefix limit:(NSUInteger)limit {
|
||||
// 注音联想:输入注音符号,返回繁体中文候选词
|
||||
NSMutableArray<NSString *> *matches = [NSMutableArray array];
|
||||
|
||||
// 这里应该使用注音到繁体字的映射表
|
||||
// 注音符号:ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ
|
||||
// 韵母:ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ
|
||||
// 声调:ˊˇˋ˙
|
||||
for (NSString *word in self.traditionalChineseWords) {
|
||||
// TODO: 实现注音匹配逻辑
|
||||
[matches addObject:word];
|
||||
if (matches.count >= limit) {
|
||||
break;
|
||||
NSArray<NSString *> *directMatches = self.bopomofoToChineseMap[prefix];
|
||||
if (directMatches.count > 0) {
|
||||
[matches addObjectsFromArray:directMatches];
|
||||
}
|
||||
|
||||
for (NSString *key in self.bopomofoToChineseMap) {
|
||||
if ([key hasPrefix:prefix] && ![key isEqualToString:prefix]) {
|
||||
NSArray<NSString *> *candidates = self.bopomofoToChineseMap[key];
|
||||
[matches addObjectsFromArray:candidates];
|
||||
if (matches.count >= limit * 2) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.count == 0) {
|
||||
return [self kb_fallbackTraditionalSuggestions:prefix limit:limit];
|
||||
}
|
||||
|
||||
[matches sortUsingComparator:^NSComparisonResult(NSString *a, NSString *b) {
|
||||
NSInteger ca = self.selectionCounts[a].integerValue;
|
||||
NSInteger cb = self.selectionCounts[b].integerValue;
|
||||
if (ca != cb) {
|
||||
return (cb > ca) ? NSOrderedAscending : NSOrderedDescending;
|
||||
}
|
||||
return [a compare:b];
|
||||
}];
|
||||
|
||||
if (matches.count > limit) {
|
||||
return [matches subarrayWithRange:NSMakeRange(0, limit)];
|
||||
}
|
||||
return matches.copy;
|
||||
}
|
||||
|
||||
@@ -281,7 +428,6 @@
|
||||
}
|
||||
|
||||
- (NSArray<NSString *> *)kb_loadSimplifiedChineseWords {
|
||||
// 加载简体中文常用词
|
||||
return @[
|
||||
@"你好", @"谢谢", @"对不起", @"再见", @"早安",
|
||||
@"晚安", @"请问", @"不好意思", @"没关系", @"加油",
|
||||
@@ -293,4 +439,96 @@
|
||||
];
|
||||
}
|
||||
|
||||
#pragma mark - Pinyin & Bopomofo Map Loading
|
||||
|
||||
- (NSDictionary<NSString *, NSArray<NSString *> *> *)kb_loadPinyinToTraditionalMap {
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:@"pinyin_to_traditional" ofType:@"json"];
|
||||
if (!path) {
|
||||
NSLog(@"[KBSuggestionEngine] pinyin_to_traditional.json not found, using empty map");
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSData *data = [NSData dataWithContentsOfFile:path];
|
||||
if (!data) {
|
||||
NSLog(@"[KBSuggestionEngine] Failed to read pinyin_to_traditional.json");
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSError *error = nil;
|
||||
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
|
||||
if (error || ![json isKindOfClass:NSDictionary.class]) {
|
||||
NSLog(@"[KBSuggestionEngine] Failed to parse pinyin_to_traditional.json: %@", error);
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSDictionary *mappings = json[@"mappings"];
|
||||
if (![mappings isKindOfClass:NSDictionary.class]) {
|
||||
NSLog(@"[KBSuggestionEngine] Invalid mappings in pinyin_to_traditional.json");
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSMutableDictionary<NSString *, NSArray<NSString *> *> *result = [NSMutableDictionary dictionary];
|
||||
[mappings enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) {
|
||||
if ([obj isKindOfClass:NSArray.class]) {
|
||||
NSMutableArray<NSString *> *chars = [NSMutableArray array];
|
||||
for (id item in (NSArray *)obj) {
|
||||
if ([item isKindOfClass:NSString.class]) {
|
||||
[chars addObject:item];
|
||||
}
|
||||
}
|
||||
if (chars.count > 0) {
|
||||
result[key] = [chars copy];
|
||||
}
|
||||
}
|
||||
}];
|
||||
|
||||
NSLog(@"[KBSuggestionEngine] Loaded %lu pinyin mappings", (unsigned long)result.count);
|
||||
return [result copy];
|
||||
}
|
||||
|
||||
- (NSDictionary<NSString *, NSArray<NSString *> *> *)kb_loadBopomofoToChineseMap {
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:@"bopomofo_to_chinese" ofType:@"json"];
|
||||
if (!path) {
|
||||
NSLog(@"[KBSuggestionEngine] bopomofo_to_chinese.json not found, using empty map");
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSData *data = [NSData dataWithContentsOfFile:path];
|
||||
if (!data) {
|
||||
NSLog(@"[KBSuggestionEngine] Failed to read bopomofo_to_chinese.json");
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSError *error = nil;
|
||||
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
|
||||
if (error || ![json isKindOfClass:NSDictionary.class]) {
|
||||
NSLog(@"[KBSuggestionEngine] Failed to parse bopomofo_to_chinese.json: %@", error);
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSDictionary *mappings = json[@"mappings"];
|
||||
if (![mappings isKindOfClass:NSDictionary.class]) {
|
||||
NSLog(@"[KBSuggestionEngine] Invalid mappings in bopomofo_to_chinese.json");
|
||||
return @{};
|
||||
}
|
||||
|
||||
NSMutableDictionary<NSString *, NSArray<NSString *> *> *result = [NSMutableDictionary dictionary];
|
||||
[mappings enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) {
|
||||
if ([obj isKindOfClass:NSArray.class]) {
|
||||
NSMutableArray<NSString *> *chars = [NSMutableArray array];
|
||||
for (id item in (NSArray *)obj) {
|
||||
if ([item isKindOfClass:NSString.class]) {
|
||||
[chars addObject:item];
|
||||
}
|
||||
}
|
||||
if (chars.count > 0) {
|
||||
result[key] = [chars copy];
|
||||
}
|
||||
}
|
||||
}];
|
||||
|
||||
NSLog(@"[KBSuggestionEngine] Loaded %lu bopomofo mappings", (unsigned long)result.count);
|
||||
return [result copy];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#import "KBConfig.h"
|
||||
|
||||
static NSString * const kKBKeyboardLayoutConfigFileName = @"kb_keyboard_layout_config";
|
||||
static NSString * const kKBKeyboardLayoutI18nFileName = @"kb_keyboard_layouts_i18n";
|
||||
|
||||
@implementation KBKeyboardLayoutMetrics
|
||||
@end
|
||||
@@ -92,13 +93,66 @@ static NSString * const kKBKeyboardLayoutConfigFileName = @"kb_keyboard_layout_c
|
||||
static KBKeyboardLayoutConfig *config = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:kKBKeyboardLayoutConfigFileName ofType:@"json"];
|
||||
NSData *data = path.length ? [NSData dataWithContentsOfFile:path] : nil;
|
||||
config = data ? [KBKeyboardLayoutConfig configFromJSONData:data] : nil;
|
||||
config = [[KBKeyboardLayoutConfig alloc] init];
|
||||
[config kb_loadMainConfig];
|
||||
[config kb_loadI18nConfig];
|
||||
});
|
||||
return config;
|
||||
}
|
||||
|
||||
- (void)kb_loadMainConfig {
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:kKBKeyboardLayoutConfigFileName ofType:@"json"];
|
||||
NSData *data = path.length ? [NSData dataWithContentsOfFile:path] : nil;
|
||||
if (data.length == 0) { return; }
|
||||
|
||||
KBKeyboardLayoutConfig *mainConfig = [KBKeyboardLayoutConfig configFromJSONData:data];
|
||||
if (mainConfig) {
|
||||
self.metrics = mainConfig.metrics;
|
||||
self.designWidth = mainConfig.designWidth;
|
||||
self.keyDefs = mainConfig.keyDefs;
|
||||
self.layouts = mainConfig.layouts;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)kb_loadI18nConfig {
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:kKBKeyboardLayoutI18nFileName ofType:@"json"];
|
||||
NSData *data = path.length ? [NSData dataWithContentsOfFile:path] : nil;
|
||||
if (data.length == 0) {
|
||||
NSLog(@"[KBKeyboardLayoutConfig] i18n layout file not found");
|
||||
return;
|
||||
}
|
||||
|
||||
NSError *error = nil;
|
||||
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
|
||||
if (error || ![json isKindOfClass:[NSDictionary class]]) {
|
||||
NSLog(@"[KBKeyboardLayoutConfig] Failed to parse i18n layout file: %@", error);
|
||||
return;
|
||||
}
|
||||
|
||||
NSDictionary *dict = (NSDictionary *)json;
|
||||
NSDictionary *layoutsRaw = dict[@"layouts"];
|
||||
if (![layoutsRaw isKindOfClass:[NSDictionary class]]) {
|
||||
NSLog(@"[KBKeyboardLayoutConfig] No layouts found in i18n file");
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableDictionary<NSString *, KBKeyboardLayout *> *mergedLayouts = [NSMutableDictionary dictionaryWithDictionary:self.layouts ?: @{}];
|
||||
|
||||
[layoutsRaw enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
|
||||
if (![key isKindOfClass:[NSString class]] || ![obj isKindOfClass:[NSDictionary class]]) {
|
||||
return;
|
||||
}
|
||||
KBKeyboardLayout *layout = [KBKeyboardLayout mj_objectWithKeyValues:obj];
|
||||
if (layout) {
|
||||
mergedLayouts[key] = layout;
|
||||
}
|
||||
}];
|
||||
|
||||
self.layouts = mergedLayouts.copy;
|
||||
NSLog(@"[KBKeyboardLayoutConfig] Loaded %lu i18n layouts, total: %lu",
|
||||
(unsigned long)layoutsRaw.count, (unsigned long)self.layouts.count);
|
||||
}
|
||||
|
||||
+ (instancetype)configFromJSONData:(NSData *)data {
|
||||
if (data.length == 0) { return nil; }
|
||||
NSError *error = nil;
|
||||
|
||||
345
CustomKeyboard/Resource/bopomofo_to_chinese.json
Normal file
345
CustomKeyboard/Resource/bopomofo_to_chinese.json
Normal file
@@ -0,0 +1,345 @@
|
||||
{
|
||||
"__comment": "注音符号映射表:注音组合 -> 繁体字候选词列表",
|
||||
"__comment_symbols": "聲母: ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ",
|
||||
"__comment_vowels": "韻母: ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ",
|
||||
"__comment_tones": "聲調: ˊ(二聲) ˇ(三聲) ˋ(四聲) ˙(輕聲), 無符號為一聲",
|
||||
"mappings": {
|
||||
"ㄅㄚ": ["八", "巴", "吧", "爸", "拔", "罷", "霸", "扒", "叭", "芭", "疤", "粑"],
|
||||
"ㄅㄞ": ["白", "百", "拜", "敗", "柏", "擺", "佰", "佰"],
|
||||
"ㄅㄢ": ["班", "般", "板", "版", "半", "伴", "扮", "拌", "瓣", "頒", "斑", "搬"],
|
||||
"ㄅㄤ": ["幫", "邦", "榜", "膀", "綁", "棒", "磅", "邦"],
|
||||
"ㄅㄠ": ["包", "保", "報", "寶", "抱", "暴", "爆", "薄", "豹", "飽", "堡", "刨", "苞", "胞", "雹"],
|
||||
"ㄅㄟ": ["北", "被", "背", "備", "悲", "杯", "碑", "輩", "倍", "貝", "臂"],
|
||||
"ㄅㄣ": ["本", "奔", "笨", "盆", "賁"],
|
||||
"ㄅㄥ": ["崩", "繃", "蹦", "泵", "甭"],
|
||||
"ㄅㄧ": ["比", "必", "筆", "畢", "避", "閉", "鼻", "彼", "碧", "壁", "弊", "臂", "秘", "辟", "逼", "幣", "庇", "痹", "匕"],
|
||||
"ㄅㄧㄝ": ["別", "憋", "癟", "鱉"],
|
||||
"ㄅㄧㄢ": ["變", "便", "邊", "編", "辯", "遍", "鞭", "辨", "扁", "貶", "匾", "蝙"],
|
||||
"ㄅㄧㄠ": ["表", "標", "彪", "錶", "鏢", "錶", "裱", "婊"],
|
||||
"ㄅㄧㄣ": ["賓", "彬", "斌", "瀕", "濱", "殯", "鬢"],
|
||||
"ㄅㄧㄥ": ["病", "並", "冰", "兵", "餅", "柄", "秉", "稟", "炳", "稟"],
|
||||
"ㄅㄛ": ["波", "博", "播", "伯", "薄", "泊", "柏", "勃", "搏", "撥", "剝", "脖", "卜", "玻", "柏"],
|
||||
"ㄅㄨ": ["不", "步", "部", "布", "補", "捕", "簿", "卜", "怖", "哺", "埠", "簿"],
|
||||
"ㄆㄚ": ["趴", "啪", "葩", "扒"],
|
||||
"ㄆㄞ": ["排", "拍", "牌", "派", "徘", "湃", "俳"],
|
||||
"ㄆㄢ": ["判", "盤", "盼", "攀", "畔", "胖", "叛", "潘", "磐", "蹣", "拚", "泮"],
|
||||
"ㄆㄤ": ["旁", "胖", "龐", "膀", "磅", "彷", "螃", "乓"],
|
||||
"ㄆㄠ": ["跑", "炮", "泡", "拋", "刨", "袍", "咆", "庖", "匏"],
|
||||
"ㄆㄟ": ["配", "陪", "培", "賠", "佩", "沛", "裴", "胚", "霈"],
|
||||
"ㄆㄣ": ["噴", "盆"],
|
||||
"ㄆㄥ": ["朋", "碰", "彭", "棚", "蓬", "鵬", "捧", "烹", "澎", "怦", "砰", "堋"],
|
||||
"ㄆㄧ": ["皮", "批", "披", "匹", "疲", "僻", "脾", "劈", "琵", "毗", "啤", "坯", "譬", "霹", "屁", "闢", "紕", "闢"],
|
||||
"ㄆㄧㄝ": ["撇", "瞥", "苤"],
|
||||
"ㄆㄧㄢ": ["片", "便", "騙", "偏", "篇", "翩", "扁", "諞", "騙"],
|
||||
"ㄆㄧㄠ": ["票", "飄", "漂", "瓢", "嫖", "縹", "驃", "飄"],
|
||||
"ㄆㄧㄣ": ["品", "貧", "頻", "聘", "拼", "拚", "嬪"],
|
||||
"ㄆㄧㄥ": ["平", "評", "憑", "瓶", "萍", "屏", "蘋", "坪", "秤", "娉", "馮", "萍"],
|
||||
"ㄆㄛ": ["破", "迫", "婆", "頗", "坡", "潑", "泊", "魄", "粕", "朴", "珀", "叵", "鄱"],
|
||||
"ㄆㄨ": ["普", "鋪", "樸", "譜", "浦", "葡", "蒲", "僕", "撲", "圃", "濮", "璞", "噗", "莆"],
|
||||
"ㄇㄚ": ["媽", "馬", "麻", "罵", "嘛", "螞", "碼", "瑪", "抹", "摩", "螞"],
|
||||
"ㄇㄞ": ["買", "賣", "麥", "埋", "邁", "脈", "霾", "賣"],
|
||||
"ㄇㄢ": ["滿", "慢", "曼", "漫", "蠻", "瞞", "饅", "蔓", "謾", "墁", "幔", "曼"],
|
||||
"ㄇㄤ": ["忙", "盲", "茫", "芒", "莽", "氓", "硭", "邙"],
|
||||
"ㄇㄠ": ["貓", "毛", "矛", "茅", "茂", "冒", "帽", "貌", "貿", "卯", "錨", "耄", "髦", "瑁", "懋", "卯"],
|
||||
"ㄇㄟ": ["沒", "美", "妹", "每", "梅", "媒", "煤", "眉", "霉", "魅", "玫", "枚", "寐", "昧", "媚", "湄", "鎂", "糜", "梅"],
|
||||
"ㄇㄣ": ["們", "門", "悶", "燜", "捫", "悶"],
|
||||
"ㄇㄥ": ["夢", "孟", "猛", "蒙", "盟", "萌", "朦", "檬", "懵", "礞", "甍", "萌"],
|
||||
"ㄇㄧ": ["米", "密", "迷", "蜜", "祕", "眯", "靡", "糜", "彌", "覓", "冪", "泌", "祕", "謎"],
|
||||
"ㄇㄧㄝ": ["滅", "蔑", "篾", "乜", "咩"],
|
||||
"ㄇㄧㄢ": ["面", "免", "棉", "眠", "綿", "勉", "緬", "冕", "娩", "湎", "眄", "冕"],
|
||||
"ㄇㄧㄠ": ["描", "秒", "妙", "廟", "苗", "瞄", "渺", "淼", "緲", "藐", "喵"],
|
||||
"ㄇㄧㄣ": ["民", "敏", "名", "皿", "閔", "抿", "泯", "憫", "閔", "愍"],
|
||||
"ㄇㄧㄥ": ["名", "明", "命", "鳴", "銘", "冥", "茗", "溟", "瞑", "螟", "銘"],
|
||||
"ㄇㄛ": ["麼", "摸", "磨", "摩", "魔", "膜", "默", "墨", "抹", "末", "莫", "漠", "寞", "陌", "謨", "茉", "驀", "歿", "麼"],
|
||||
"ㄇㄡ": ["某", "謀", "牟", "眸", "繆", "鍪", "哞"],
|
||||
"ㄇㄨ": ["目", "母", "木", "幕", "牧", "慕", "墓", "暮", "穆", "睦", "沐", "募", "姆", "拇", "牡", "畝", "慕"],
|
||||
"ㄈㄚ": ["發", "法", "罰", "乏", "伐", "閥", "筏", "佳", "髮", "法"],
|
||||
"ㄈㄢ": ["反", "飯", "煩", "繁", "範", "犯", "泛", "番", "翻", "凡", "帆", "返", "販", "礬", "釩", "蕃"],
|
||||
"ㄈㄤ": ["方", "放", "房", "防", "訪", "仿", "芳", "坊", "妨", "紡", "舫", "肪", "仿"],
|
||||
"ㄈㄟ": ["非", "飛", "費", "肥", "廢", "匪", "誹", "啡", "菲", "沸", "翡", "吠", "肺", "狒", "妃"],
|
||||
"ㄈㄣ": ["分", "份", "粉", "奮", "憤", "紛", "芬", "墳", "焚", "氛", "糞", "吩", "汾"],
|
||||
"ㄈㄥ": ["風", "封", "豐", "峰", "鋒", "蜂", "瘋", "逢", "縫", "鳳", "奉", "諷", "楓", "烽", "豐", "峰"],
|
||||
"ㄈㄛ": ["佛", "彿"],
|
||||
"ㄈㄡ": ["否", "縫", "缶"],
|
||||
"ㄈㄨ": ["父", "夫", "付", "服", "福", "府", "負", "富", "復", "副", "婦", "撫", "附", "幅", "浮", "腐", "符", "弗", "腹", "輻", "敷", "氟", "芙", "敷", "伏", "扶", "俘", "袱", "芙", "斧", "脯", "腑", "滏", "蚨", "跗", "馥"],
|
||||
"ㄉㄚ": ["大", "打", "答", "達", "搭", "塔", "瘩", "妲", "怛", "耷"],
|
||||
"ㄉㄞ": ["大", "代", "帶", "待", "袋", "戴", "呆", "貸", "逮", "怠", "殆", "黛", "岱", "迨"],
|
||||
"ㄉㄢ": ["但", "單", "擔", "膽", "丹", "淡", "蛋", "誕", "彈", "旦", "氮", "耽", "憚", "殫", "瘅", "眈"],
|
||||
"ㄉㄤ": ["當", "黨", "檔", "擋", "蕩", "宕", "檔", "璫", "璫"],
|
||||
"ㄉㄠ": ["到", "道", "導", "刀", "倒", "島", "盜", "悼", "搗", "禱", "蹈", "叨", "忉", "氘"],
|
||||
"ㄉㄜ": ["的", "得", "德", "底", "德"],
|
||||
"ㄉㄥ": ["等", "燈", "登", "鄧", "瞪", "凳", "蹬", "噔", "嶝"],
|
||||
"ㄉㄧ": ["的", "地", "第", "低", "底", "敵", "弟", "帝", "抵", "遞", "迪", "滴", "堤", "笛", "締", "嫡", "詆", "邸", "砥", "睇", "鏑"],
|
||||
"ㄉㄧㄝ": ["爹", "跌", "叠", "蝶", "碟", "諜", "迭", "帖", "耋", "牒", "瓞", "鰈"],
|
||||
"ㄉㄧㄢ": ["點", "電", "店", "典", "墊", "澱", "殿", "顛", "滇", "碘", "巔", "癲", "惦", "奠", "甸", "阽"],
|
||||
"ㄉㄧㄠ": ["調", "掉", "吊", "雕", "刁", "釣", "凋", "碉", "貂", "雕"],
|
||||
"ㄉㄧㄥ": ["定", "訂", "頂", "丁", "釘", "盯", "叮", "鼎", "叮", "丁", "町"],
|
||||
"ㄉㄨ": ["讀", "都", "度", "獨", "毒", "渡", "杜", "肚", "堵", "賭", "鍍", "督", "篤", "嘟", "睹", "妒", "芏"],
|
||||
"ㄉㄨㄢ": ["段", "斷", "短", "鍛", "緞", "端", "椴", "煅"],
|
||||
"ㄉㄨㄟ": ["對", "隊", "堆", "兌", "懟", "憝"],
|
||||
"ㄉㄨㄣ": ["頓", "噸", "盾", "蹲", "敦", "墩", "燉", "鈍", "囤", "遁", "燉"],
|
||||
"ㄉㄨㄛ": ["多", "度", "奪", "躲", "朵", "墮", "舵", "跺", "惰", "哆", "垛", "躲", "踱", "剁", "咄"],
|
||||
"ㄊㄚ": ["他", "她", "它", "塔", "踏", "拓", "榻", "獺", "撻", "闒", "遢", "遢"],
|
||||
"ㄊㄞ": ["太", "台", "臺", "態", "泰", "抬", "胎", "鮐", "薹", "駘", "炱", "邰", "苔", "颱"],
|
||||
"ㄊㄢ": ["談", "探", "彈", "壇", "攤", "貪", "嘆", "潭", "坦", "毯", "痰", "檀", "譚", "忐", "袒", "郯", "澹", "覃", "忐", "曇", "忐"],
|
||||
"ㄊㄤ": ["堂", "唐", "糖", "躺", "趟", "湯", "燙", "塘", "膛", "棠", "搪", "螳", "鏜", "鐋", "耥", "鏜"],
|
||||
"ㄊㄠ": ["套", "逃", "桃", "陶", "討", "濤", "掏", "滔", "萄", "淘", "燾", "絳", "叨", "洮", "啕", "饕"],
|
||||
"ㄊㄜ": ["特", "忒", "慝", "鋱", "忒"],
|
||||
"ㄊㄥ": ["疼", "騰", "藤", "滕", "謄", "疼", "滕"],
|
||||
"ㄊㄧ": ["提", "題", "體", "替", "踢", "梯", "剔", "蹄", "啼", "惕", "涕", "銻", "倜", "悌", "嚏", "醍", "緹"],
|
||||
"ㄊㄧㄝ": ["鐵", "貼", "帖", "萜", "帖", "餮"],
|
||||
"ㄊㄧㄢ": ["天", "田", "填", "甜", "添", "恬", "腆", "殄", "忝", "闐", "祆", "忝"],
|
||||
"ㄊㄧㄠ": ["條", "跳", "調", "挑", "眺", "佻", "祧", "銚", "髫", "鰷", "調", "眺"],
|
||||
"ㄊㄧㄥ": ["聽", "停", "庭", "挺", "廳", "廷", "亭", "婷", "艇", "汀", "蜓", "霆", "鋌", "莛", "汀"],
|
||||
"ㄊㄨ": ["圖", "土", "突", "途", "吐", "兔", "屠", "徒", "凸", "禿", "荼", "釷", "菟", "兔"],
|
||||
"ㄊㄨㄢ": ["團", "摶", "彖", "湍", "摶"],
|
||||
"ㄊㄨㄟ": ["推", "退", "腿", "蛻", "頹", "褪", "忒"],
|
||||
"ㄊㄨㄣ": ["吞", "屯", "臀", "囤", "褪", "豚", "吞"],
|
||||
"ㄊㄨㄛ": ["脫", "托", "拖", "妥", "拓", "唾", "陀", "沱", "坨", "駝", "鴕", "橐", "砣", "佗", "跎", "坨", "酡"],
|
||||
"ㄋㄚ": ["那", "拿", "哪", "納", "吶", "娜", "鈉", "衲", "鎿"],
|
||||
"ㄋㄞ": ["奶", "耐", "乃", "奈", "氖", "萘", "鼐", "氖"],
|
||||
"ㄋㄢ": ["南", "難", "男", "喃", "楠", "赧", "囝", "囡"],
|
||||
"ㄋㄤ": ["囊", "囔", "餿"],
|
||||
"ㄋㄠ": ["腦", "惱", "鬧", "撓", "淖", "鐃", "橈", "鬧", "鬧"],
|
||||
"ㄋㄜ": ["呢", "訥"],
|
||||
"ㄋㄟ": ["內", "那", "餒"],
|
||||
"ㄋㄣ": ["嫩", "恁"],
|
||||
"ㄋㄥ": ["能"],
|
||||
"ㄋㄧ": ["你", "妳", "呢", "泥", "尼", "擬", "逆", "妮", "霓", "倪", "匿", "溺", "膩", "旎", "昵", "妮"],
|
||||
"ㄋㄧㄝ": ["捏", "聶", "孽", "躡", "鎳", "囁", "臬", "涅", "孽"],
|
||||
"ㄋㄧㄢ": ["年", "念", "黏", "碾", "捻", "撚", "蔦", "念", "唸"],
|
||||
"ㄋㄧㄤ": ["娘", "釀", "釀"],
|
||||
"ㄋㄧㄠ": ["鳥", "尿", "裊", "嬲", "蔦", "鳥"],
|
||||
"ㄋㄧㄣ": ["您"],
|
||||
"ㄋㄧㄥ": ["寧", "凝", "擰", "檸", "獰", "嚀", "甯", "寧"],
|
||||
"ㄋㄧㄡ": ["牛", "紐", "扭", "鈕", "妞", "拗", "妞"],
|
||||
"ㄋㄨ": ["女", "努", "怒", "奴", "弩", "胬", "弩"],
|
||||
"ㄋㄨㄢ": ["暖"],
|
||||
"ㄋㄨㄣ": ["嫩", "恁"],
|
||||
"ㄋㄨㄛ": ["挪", "諾", "懦", "糯", "喏", "懦"],
|
||||
"ㄌㄚ": ["拉", "啦", "蠟", "辣", "臘", "喇", "落", "啦", "邋"],
|
||||
"ㄌㄞ": ["來", "賴", "萊", "徠", "賚", "賴", "睞"],
|
||||
"ㄌㄢ": ["藍", "蘭", "攔", "籃", "懶", "爛", "濫", "覽", "欄", "瀾", "嵐", "襤", "懶", "讕"],
|
||||
"ㄌㄤ": ["浪", "郎", "狼", "廊", "朗", "琅", "螂", "朗", "郎", "閬"],
|
||||
"ㄌㄠ": ["老", "勞", "落", "牢", "撈", "澇", "絡", "姥", "佬", "潦", "澇", "癆"],
|
||||
"ㄌㄜ": ["了", "樂", "勒", "肋", "勒", "肋"],
|
||||
"ㄌㄟ": ["累", "類", "淚", "雷", "勒", "壘", "蕾", "磊", "擂", "鐳", "儡", "勒", "擂"],
|
||||
"ㄌㄥ": ["冷", "愣", "楞", "冷"],
|
||||
"ㄌㄧ": ["裡", "力", "理", "利", "立", "離", "例", "歷", "李", "禮", "麗", "勵", "梨", "厘", "莉", "犁", "黎", "璃", "狸", "漓", "罹", "驪", "鱧", "吏", "栗", "俐", "荔", "痢", "裡", "裏", "裡", "吏", "戾", "蠡", "蜊", "悝", "喱"],
|
||||
"ㄌㄧㄚ": ["倆"],
|
||||
"ㄌㄧㄝ": ["列", "烈", "獵", "裂", "劣", "咧", "冽", "捩", "躐", "冽", "洌"],
|
||||
"ㄌㄧㄢ": ["連", "聯", "臉", "練", "蓮", "戀", "煉", "廉", "憐", "漣", "鐮", "斂", "璉", "斂", "斂"],
|
||||
"ㄌㄧㄤ": ["兩", "亮", "量", "良", "涼", "梁", "糧", "樑", "諒", "晾", "踉", "靚", "倆", "倆", "粱", "量"],
|
||||
"ㄌㄧㄠ": ["了", "料", "聊", "療", "遼", "撩", "僚", "燎", "繚", "潦", "寥", "嘹", "撩", "鐐", "獠"],
|
||||
"ㄌㄧㄝ": ["列", "烈", "獵", "裂", "劣", "咧", "冽", "捩", "躐", "獵", "獵"],
|
||||
"ㄌㄧㄣ": ["林", "臨", "鄰", "淋", "琳", "霖", "鱗", "麟", "遴", "藺", "吝", "躪", "琳", "淋"],
|
||||
"ㄌㄧㄥ": ["領", "零", "靈", "令", "另", "玲", "鈴", "陵", "嶺", "凌", "菱", "羚", "翎", "聆", "伶", "拎", "凌", "鈴", "鈴"],
|
||||
"ㄌㄧㄡ": ["六", "流", "留", "劉", "柳", "溜", "琉", "榴", "硫", "鎏", "鷚", "溜", "溜", "鎦"],
|
||||
"ㄌㄨ": ["路", "錄", "陸", "綠", "露", "旅", "律", "慮", "呂", "履", "侶", "屢", "濾", "氯", "廬", "爐", "蘆", "盧", "顱", "魯", "擼", "祿", "麓", "碌", "陸", "輅", "輅"],
|
||||
"ㄌㄨㄢ": ["亂", "卵", "巒", "鑾", "鸞", "欒", "鸞", "鑾"],
|
||||
"ㄌㄨㄣ": ["論", "輪", "倫", "侖", "綸", "淪", "論", "論"],
|
||||
"ㄌㄨㄛ": ["落", "羅", "洛", "絡", "邏", "鑼", "籮", "駱", "裸", "螺", "蘿", "摞", "囉", "羅", "邏"],
|
||||
"ㄍㄚ": ["嘎", "噶", "軋", "噶"],
|
||||
"ㄍㄞ": ["改", "該", "蓋", "概", "溉", "丐", "芥", "鈣", "蓋", "蓋"],
|
||||
"ㄍㄢ": ["幹", "感", "敢", "甘", "肝", "趕", "桿", "乾", "贛", "柑", "竿", "尴", "擀", "乾", "乾"],
|
||||
"ㄍㄤ": ["剛", "鋼", "港", "崗", "綱", "岡", "缸", "槓", "扛", "剛", "崗"],
|
||||
"ㄍㄠ": ["高", "告", "搞", "稿", "糕", "鎬", "膏", "篙", "稿", "稿"],
|
||||
"ㄍㄜ": ["個", "各", "歌", "格", "哥", "割", "革", "隔", "閣", "葛", "戈", "擱", "鴿", "胳", "骼", "個", "個"],
|
||||
"ㄍㄟ": ["給"],
|
||||
"ㄍㄣ": ["跟", "根", "亙", "艮", "跟"],
|
||||
"ㄍㄥ": ["更", "耕", "庚", "羹", "耿", "梗", "更", "耕"],
|
||||
"ㄍㄨ": ["古", "故", "顧", "骨", "谷", "股", "鼓", "固", "孤", "姑", "辜", "沽", "咕", "估", "谷", "谷"],
|
||||
"ㄍㄨㄚ": ["掛", "瓜", "刮", "寡", "呱", "褂", "掛", "掛"],
|
||||
"ㄍㄨㄞ": ["怪", "乖", "拐", "乖"],
|
||||
"ㄍㄨㄢ": ["關", "觀", "管", "官", "館", "慣", "灌", "冠", "罐", "貫", "棺", "倌", "觀", "關"],
|
||||
"ㄍㄨㄤ": ["光", "廣", "逛", "胱", "光", "光"],
|
||||
"ㄍㄨㄟ": ["貴", "規", "歸", "鬼", "軌", "櫃", "桂", "跪", "龜", "瑰", "詭", "閨", "圭", "桂", "歸"],
|
||||
"ㄍㄨㄣ": ["滾", "棍", "滾"],
|
||||
"ㄍㄨㄛ": ["過", "國", "果", "鍋", "郭", "裹", "渦", "過", "過"],
|
||||
"ㄎㄚ": ["卡", "咖", "喀", "咔", "卡"],
|
||||
"ㄎㄞ": ["開", "凱", "楷", "慨", "愷", "鎧", "鍇", "開", "凱"],
|
||||
"ㄎㄢ": ["看", "砍", "坎", "勘", "刊", "堪", "瞰", "龕", "看", "看"],
|
||||
"ㄎㄤ": ["康", "抗", "扛", "亢", "糠", "慷", "伉", "康", "康"],
|
||||
"ㄎㄠ": ["考", "靠", "烤", "拷", "栲", "犒", "考", "考"],
|
||||
"ㄎㄜ": ["可", "客", "科", "刻", "課", "顆", "克", "渴", "柯", "棵", "磕", "咳", "殼", "坷", "可", "可"],
|
||||
"ㄎㄣ": ["肯", "懇", "啃", "齦", "肯"],
|
||||
"ㄎㄥ": ["坑", "吭", "鏗", "坑"],
|
||||
"ㄎㄨ": ["苦", "哭", "庫", "酷", "枯", "窟", "骷", "苦", "苦"],
|
||||
"ㄎㄨㄚ": ["跨", "誇", "垮", "挎", "胯", "跨", "跨"],
|
||||
"ㄎㄨㄞ": ["快", "塊", "筷", "儈", "膾", "快", "快"],
|
||||
"ㄎㄨㄢ": ["寬", "款", "寬"],
|
||||
"ㄎㄨㄤ": ["況", "礦", "狂", "框", "曠", "眶", "筐", "匡", "誑", "況", "況"],
|
||||
"ㄎㄨㄟ": ["虧", "愧", "潰", "窺", "葵", "魁", "饋", "匱", "睽", "聵", "虧", "虧"],
|
||||
"ㄎㄨㄣ": ["困", "昆", "坤", "捆", "琨", "鯤", "困", "困"],
|
||||
"ㄎㄨㄛ": ["擴", "括", "闊", "廓", "擴", "擴"],
|
||||
"ㄏㄚ": ["哈", "蛤", "哈"],
|
||||
"ㄏㄞ": ["還", "海", "害", "孩", "嗨", "亥", "骸", "氦", "海", "海"],
|
||||
"ㄏㄢ": ["漢", "寒", "汗", "喊", "韓", "旱", "憾", "悍", "翰", "涵", "酣", "憨", "漢", "漢"],
|
||||
"ㄏㄤ": ["行", "航", "杭", "巷", "夯", "吭", "行", "行"],
|
||||
"ㄏㄠ": ["好", "號", "豪", "毫", "浩", "耗", "郝", "蒿", "嚎", "壕", "濠", "好", "好"],
|
||||
"ㄏㄜ": ["和", "合", "河", "何", "核", "賀", "喝", "赫", "褐", "鶴", "荷", "盒", "禾", "嚇", "呵", "和", "和"],
|
||||
"ㄏㄟ": ["黑", "嘿", "黑"],
|
||||
"ㄏㄣ": ["很", "狠", "恨", "痕", "很", "很"],
|
||||
"ㄏㄥ": ["橫", "恆", "衡", "亨", "哼", "橫", "橫"],
|
||||
"ㄏㄨ": ["湖", "呼", "戶", "虎", "護", "互", "忽", "胡", "壺", "狐", "糊", "弧", "蝴", "乎", "滬", "戶", "戶"],
|
||||
"ㄏㄨㄚ": ["話", "花", "化", "華", "畫", "劃", "滑", "嘩", "樺", "驊", "花", "花"],
|
||||
"ㄏㄨㄞ": ["壞", "懷", "槐", "徊", "壞", "壞"],
|
||||
"ㄏㄨㄢ": ["還", "換", "環", "歡", "緩", "患", "喚", "幻", "煥", "桓", "宦", "渙", "瘓", "歡", "歡"],
|
||||
"ㄏㄨㄤ": ["黃", "皇", "荒", "慌", "煌", "晃", "謊", "凰", "惶", "簧", "恍", "黃", "黃"],
|
||||
"ㄏㄨㄟ": ["會", "回", "灰", "輝", "惠", "慧", "繪", "匯", "毀", "悔", "晦", "賄", "穢", "會", "會"],
|
||||
"ㄏㄨㄣ": ["婚", "魂", "混", "渾", "昏", "葷", "餛", "婚", "婚"],
|
||||
"ㄏㄨㄛ": ["活", "火", "或", "夥", "獲", "貨", "禍", "惑", "霍", "豁", "鍬", "鑊", "活", "活"],
|
||||
"ㄐㄧ": ["幾", "機", "己", "記", "計", "集", "基", "際", "極", "擊", "激", "其", "及", "級", "即", "急", "季", "跡", "技", "績", "輯", "籍", "擠", "吉", "雞", "奇", "肌", "饑", "譏", "磯", "姬", "嫉", "棘", "寂", "冀", "驥", "己", "己"],
|
||||
"ㄐㄧㄚ": ["家", "加", "價", "假", "架", "佳", "甲", "駕", "嘉", "稼", "嫁", "夾", "頰", "戛", "枷", "家", "家"],
|
||||
"ㄐㄧㄢ": ["見", "間", "建", "件", "簡", "檢", "堅", "健", "漸", "劍", "鍵", "尖", "肩", "艦", "鑒", "剪", "撿", "踐", "賤", "箭", "澗", "濺", "薦", "餞", "諫", "見", "見"],
|
||||
"ㄐㄧㄤ": ["將", "江", "強", "講", "降", "獎", "疆", "匠", "蔣", "漿", "僵", "薑", "絳", "將", "將"],
|
||||
"ㄐㄧㄠ": ["叫", "教", "腳", "角", "交", "覺", "較", "焦", "膠", "驕", "澆", "攪", "椒", "嬌", "郊", "蕉", "矯", "絞", "僥", "佼", "叫", "叫"],
|
||||
"ㄐㄧㄝ": ["接", "節", "街", "結", "解", "姐", "介", "界", "借", "傑", "潔", "截", "揭", "劫", "捷", "睫", "竭", "桔", "戒", "芥", "藉", "拮", "接", "接"],
|
||||
"ㄐㄧㄣ": ["進", "金", "近", "今", "緊", "盡", "僅", "勁", "錦", "津", "筋", "巾", "斤", "禁", "襟", "瑾", "進", "進"],
|
||||
"ㄐㄧㄥ": ["經", "精", "景", "警", "靜", "境", "競", "淨", "鏡", "徑", "驚", "京", "晶", "睛", "莖", "荊", "兢", "涇", "憬", "經", "經"],
|
||||
"ㄐㄧㄡ": ["就", "九", "久", "酒", "舊", "救", "究", "糾", "舅", "揪", "韭", "灸", "玖", "臼", "就", "就"],
|
||||
"ㄐㄩ": ["句", "具", "據", "局", "舉", "巨", "聚", "居", "距", "懼", "劇", "鋸", "矩", "拒", "俱", "菊", "橘", "颶", "踞", "遽", "句", "句"],
|
||||
"ㄐㄩㄢ": ["卷", "捐", "圈", "眷", "倦", "娟", "雋", "涓", "鐫", "卷", "卷"],
|
||||
"ㄐㄩㄝ": ["決", "覺", "絕", "角", "爵", "掘", "倔", "厥", "譎", "獗", "矍", "嚼", "決", "決"],
|
||||
"ㄐㄩㄣ": ["軍", "君", "均", "俊", "菌", "竣", "鈞", "峻", "雋", "軍", "軍"],
|
||||
"ㄑㄧ": ["起", "其", "氣", "期", "七", "奇", "妻", "棋", "齊", "旗", "企", "啟", "器", "棄", "汽", "祈", "騎", "豈", "漆", "契", "砌", "琪", "淇", "岐", "祁", "崎", "祺", "臍", "訖", "磧", "起", "起"],
|
||||
"ㄑㄧㄚ": ["恰", "洽", "卡", "掐", "髂", "袷", "恰", "恰"],
|
||||
"ㄑㄧㄢ": ["前", "錢", "千", "簽", "遷", "淺", "欠", "牽", "潛", "鉛", "謙", "乾", "嵌", "譴", "倩", "槍", "嗆", "薔", "牆", "強", "搶", "腔", "羌", "嬙", "檣", "鏘", "鏹", "前", "前"],
|
||||
"ㄑㄧㄠ": ["橋", "瞧", "巧", "敲", "俏", "殼", "竅", "喬", "翹", "峭", "撬", "憔", "譙", "樵", "橋", "橋"],
|
||||
"ㄑㄧㄝ": ["切", "且", "茄", "怯", "竊", "妾", "愜", "鍥", "伽", "切", "切"],
|
||||
"ㄑㄧㄣ": ["親", "琴", "勤", "侵", "秦", "欽", "禽", "寢", "沁", "芹", "擒", "噙", "覃", "親", "親"],
|
||||
"ㄑㄧㄥ": ["情", "請", "清", "青", "輕", "慶", "傾", "頃", "晴", "擎", "卿", "氫", "罄", "磬", "蜻", "鯖", "綮", "情", "情"],
|
||||
"ㄑㄩ": ["去", "取", "曲", "區", "趣", "娶", "渠", "屈", "驅", "蛆", "軀", "祛", "瞿", "蛐", "麴", "衢", "去", "去"],
|
||||
"ㄑㄩㄢ": ["全", "權", "圈", "泉", "拳", "犬", "勸", "券", "詮", "痊", "銓", "蜷", "顴", "全", "全"],
|
||||
"ㄑㄩㄝ": ["確", "卻", "缺", "雀", "鵲", "闕", "瘸", "榷", "愨", "確", "確"],
|
||||
"ㄑㄩㄣ": ["群", "裙", "逡", "群", "群"],
|
||||
"ㄒㄧ": ["西", "系", "息", "希", "席", "習", "細", "喜", "戲", "洗", "惜", "稀", "溪", "錫", "析", "膝", "襲", "昔", "熙", "夕", "兮", "悉", "熄", "嬉", "汐", "犀", "烯", "曦", "奚", "唏", "淅", "嘻", "樨", "蠡", "璽", "徙", "隙", "餼", "覡", "西", "西"],
|
||||
"ㄒㄧㄚ": ["下", "夏", "嚇", "廈", "峽", "蝦", "瞎", "霞", "轄", "俠", "暇", "遐", "瑕", "匣", "黠", "硤", "罅", "下", "下"],
|
||||
"ㄒㄧㄢ": ["先", "現", "線", "限", "縣", "顯", "險", "鮮", "獻", "賢", "閒", "仙", "鹹", "羨", "陷", "憲", "餡", "掀", "纖", "閑", "涎", "嫻", "銜", "冼", "燹", "蜆", "筧", "薟", "躚", "先", "先"],
|
||||
"ㄒㄧㄤ": ["想", "向", "相", "鄉", "香", "響", "享", "像", "象", "項", "巷", "降", "箱", "祥", "湘", "詳", "翔", "襄", "鑲", "廂", "驤", "薌", "餉", "緗", "嚮", "想", "想"],
|
||||
"ㄒㄧㄠ": ["小", "笑", "效", "消", "校", "銷", "曉", "蕭", "肖", "削", "孝", "宵", "硝", "霄", "淆", "嘯", "驍", "梟", "瀟", "簫", "筱", "嘵", "蟰", "小", "小"],
|
||||
"ㄒㄧㄝ": ["些", "寫", "謝", "協", "鞋", "血", "歇", "斜", "脅", "諧", "攜", "洩", "卸", "懈", "蟹", "邪", "械", "屑", "偕", "褻", "榭", "廨", "瀣", "薤", "躞", "頡", "擷", "些", "些"],
|
||||
"ㄒㄧㄣ": ["新", "心", "信", "辛", "欣", "薪", "馨", "鑫", "芯", "鋅", "昕", "忻", "歆", "鐔", "囟", "新", "新"],
|
||||
"ㄒㄧㄥ": ["行", "星", "形", "性", "姓", "興", "刑", "型", "幸", "杏", "腥", "猩", "邢", "悻", "滎", "餳", "行", "行"],
|
||||
"ㄒㄩ": ["須", "需", "許", "續", "序", "徐", "虛", "緒", "蓄", "敘", "旭", "恤", "墟", "絮", "婿", "栩", "戌", "詡", "洫", "溆", "酗", "糈", "勖", "昫", "盱", "蓿", "須", "須"],
|
||||
"ㄒㄩㄢ": ["選", "宣", "懸", "旋", "玄", "軒", "喧", "炫", "渲", "萱", "漩", "璇", "癬", "煊", "諼", "鋗", "選", "選"],
|
||||
"ㄒㄩㄝ": ["學", "雪", "血", "穴", "謔", "噱", "鱈", "學", "學"],
|
||||
"ㄒㄩㄣ": ["訊", "迅", "尋", "巡", "訓", "詢", "循", "旬", "熏", "勳", "薰", "潯", "馴", "汛", "遜", "殉", "徇", "巽", "塤", "曛", "窯", "鱘", "訊", "訊"],
|
||||
"ㄓㄚ": ["炸", "紮", "查", "渣", "扎", "眨", "柵", "詐", "乍", "榨", "吒", "砟", "蚱", "齇", "鮓", "醡", "炸", "炸"],
|
||||
"ㄓㄞ": ["債", "寨", "齋", "摘", "窄", "翟", "瘵", "齋", "齋"],
|
||||
"ㄓㄢ": ["站", "展", "戰", "佔", "斬", "瞻", "沾", "詹", "盞", "嶄", "湛", "綻", "輾", "搌", "旃", "站", "站"],
|
||||
"ㄓㄤ": ["長", "張", "章", "掌", "丈", "帳", "仗", "脹", "障", "彰", "漳", "璋", "嶂", "幛", "瘴", "鄣", "張", "張"],
|
||||
"ㄓㄠ": ["找", "照", "招", "朝", "趙", "兆", "罩", "肇", "詔", "沼", "爪", "召", "昭", "嘲", "濯", "櫂", "笊", "招", "招"],
|
||||
"ㄓㄜ": ["這", "著", "者", "折", "哲", "蔗", "遮", "轍", "浙", "褶", "蟄", "鷓", "謫", "輒", "晢", "蜇", "這", "這"],
|
||||
"ㄓㄣ": ["真", "針", "鎮", "陣", "珍", "震", "振", "診", "枕", "斟", "甄", "臻", "疹", "砧", "貞", "偵", "軫", "縝", "榛", "楨", "賑", "禎", "畛", "圳", "蓁", "真", "真"],
|
||||
"ㄓㄥ": ["正", "政", "整", "爭", "證", "鄭", "征", "蒸", "掙", "睜", "錚", "崢", "箏", "怔", "拯", "鉦", "幀", "諍", "癥", "正", "正"],
|
||||
"ㄓㄨ": ["主", "住", "注", "著", "助", "築", "逐", "祝", "豬", "珠", "朱", "諸", "竹", "株", "燭", "矚", "駐", "鑄", "煮", "拄", "囑", "佇", "杼", "渚", "瀦", "躅", "櫫", "褚", "苧", "洙", "麈", "瘃", "主", "主"],
|
||||
"ㄓㄨㄚ": ["抓", "爪", "抓"],
|
||||
"ㄓㄨㄞ": ["轉", "拽", "轉"],
|
||||
"ㄓㄨㄢ": ["專", "轉", "傳", "賺", "磚", "撰", "篆", "饌", "顓", "專", "專"],
|
||||
"ㄓㄨㄤ": ["裝", "狀", "莊", "撞", "壯", "幢", "妝", "樁", "裝", "裝"],
|
||||
"ㄓㄨㄟ": ["追", "墜", "綴", "贅", "縋", "惴", "騅", "追", "追"],
|
||||
"ㄓㄨㄣ": ["準", "諄", "肫", "窀", "準", "準"],
|
||||
"ㄓㄨㄛ": ["著", "桌", "捉", "卓", "濁", "灼", "酌", "拙", "琢", "茁", "擢", "倬", "涿", "浞", "禚", "斫", "桌", "桌"],
|
||||
"ㄔㄚ": ["查", "茶", "差", "插", "察", "剎", "叉", "岔", "詫", "差", "差"],
|
||||
"ㄔㄞ": ["差", "拆", "柴", "豺", "差"],
|
||||
"ㄔㄢ": ["產", "纏", "禪", "蟬", "鏟", "闡", "顫", "摻", "潺", "產", "產"],
|
||||
"ㄔㄤ": ["長", "常", "場", "唱", "廠", "昌", "倡", "嘗", "腸", "暢", "償", "長", "長"],
|
||||
"ㄔㄠ": ["超", "朝", "潮", "吵", "炒", "抄", "鈔", "巢", "嘲", "超", "超"],
|
||||
"ㄔㄜ": ["車", "徹", "撤", "扯", "澈", "車", "車"],
|
||||
"ㄔㄣ": ["陳", "晨", "沉", "趁", "襯", "臣", "塵", "辰", "忱", "陳", "陳"],
|
||||
"ㄔㄥ": ["成", "城", "程", "稱", "承", "誠", "乘", "撐", "橙", "呈", "懲", "成", "成"],
|
||||
"ㄔㄨ": ["出", "處", "初", "除", "書", "楚", "觸", "儲", "廚", "畜", "鋤", "出", "出"],
|
||||
"ㄔㄨㄞ": ["揣", "踹", "揣"],
|
||||
"ㄔㄨㄢ": ["傳", "穿", "船", "川", "串", "喘", "釧", "傳", "傳"],
|
||||
"ㄔㄨㄤ": ["床", "窗", "創", "闖", "幢", "床", "床"],
|
||||
"ㄔㄨㄟ": ["吹", "垂", "錘", "捶", "炊", "吹", "吹"],
|
||||
"ㄔㄨㄣ": ["春", "純", "唇", "淳", "醇", "春", "春"],
|
||||
"ㄔㄨㄛ": ["戳", "綽", "輟", "齪", "戳"],
|
||||
"ㄕㄚ": ["殺", "沙", "紗", "傻", "啥", "煞", "莎", "杉", "剎", "砂", "痧", "裟", "鎩", "霎", "殺", "殺"],
|
||||
"ㄕㄞ": ["曬", "篩", "色", "曬", "曬"],
|
||||
"ㄕㄢ": ["山", "善", "閃", "衫", "扇", "杉", "刪", "珊", "柵", "膳", "擅", "贍", "汕", "潸", "姍", "煽", "跚", "訕", "疝", "鱔", "山", "山"],
|
||||
"ㄕㄤ": ["上", "商", "傷", "尚", "賞", "裳", "熵", "觴", "殤", "垧", "上", "上"],
|
||||
"ㄕㄠ": ["少", "燒", "紹", "稍", "勺", "哨", "韶", "捎", "梢", "芍", "苕", "蛸", "筲", "少", "少"],
|
||||
"ㄕㄜ": ["社", "設", "射", "蛇", "舌", "捨", "涉", "赦", "攝", "奢", "賒", "麝", "懾", "灄", "社", "社"],
|
||||
"ㄕㄣ": ["身", "深", "神", "什", "申", "伸", "審", "慎", "腎", "滲", "沈", "參", "甚", "嬸", "砷", "莘", "哂", "瀋", "糝", "身", "身"],
|
||||
"ㄕㄥ": ["生", "聲", "勝", "升", "省", "聖", "盛", "剩", "繩", "笙", "甥", "晟", "生", "生"],
|
||||
"ㄕㄨ": ["書", "數", "樹", "輸", "術", "述", "叔", "屬", "暑", "署", "鼠", "束", "疏", "舒", "淑", "梳", "抒", "殊", "蔬", "孰", "贖", "熟", "恕", "庶", "墅", "俞", "澍", "紓", "倏", "毹", "書", "書"],
|
||||
"ㄕㄨㄚ": ["刷", "耍", "唰", "刷", "刷"],
|
||||
"ㄕㄨㄞ": ["帥", "率", "摔", "甩", "蟀", "帥", "帥"],
|
||||
"ㄕㄨㄢ": ["栓", "拴", "閂", "涮", "栓", "栓"],
|
||||
"ㄕㄨㄤ": ["雙", "爽", "霜", "孀", "雙", "雙"],
|
||||
"ㄕㄨㄟ": ["水", "說", "稅", "睡", "誰", "水", "水"],
|
||||
"ㄕㄨㄣ": ["順", "瞬", "舜", "吮", "順", "順"],
|
||||
"ㄕㄨㄛ": ["說", "數", "碩", "朔", "爍", "鑠", "蒴", "搠", "說", "說"],
|
||||
"ㄖㄢ": ["然", "燃", "染", "冉", "髯", "蚺", "然", "然"],
|
||||
"ㄖㄤ": ["讓", "嚷", "壤", "攘", "穰", "瓤", "讓", "讓"],
|
||||
"ㄖㄠ": ["擾", "繞", "饒", "嬈", "橈", "蕘", "擾", "擾"],
|
||||
"ㄖㄜ": ["熱", "惹", "喏", "熱", "熱"],
|
||||
"ㄖㄣ": ["人", "認", "任", "仁", "忍", "刃", "韌", "紉", "妊", "葚", "稔", "人", "人"],
|
||||
"ㄖㄥ": ["仍", "扔", "仍", "仍"],
|
||||
"ㄖㄨ": ["如", "入", "儒", "乳", "辱", "孺", "茹", "蠕", "嚅", "濡", "縟", "洳", "如", "如"],
|
||||
"ㄖㄨㄢ": ["軟", "阮", "軟", "軟"],
|
||||
"ㄖㄨㄟ": ["瑞", "銳", "蕊", "芮", "蚋", "枘", "瑞", "瑞"],
|
||||
"ㄖㄨㄣ": ["潤", "閏", "潤", "潤"],
|
||||
"ㄖㄨㄛ": ["若", "弱", "偌", "箬", "蒻", "若", "若"],
|
||||
"ㄗㄚ": ["雜", "砸", "咂", "拶", "雜", "雜"],
|
||||
"ㄗㄞ": ["在", "再", "載", "災", "宰", "栽", "崽", "哉", "在", "在"],
|
||||
"ㄗㄢ": ["咱", "讚", "暫", "拶", "昝", "簪", "糌", "咱", "咱"],
|
||||
"ㄗㄤ": ["藏", "臟", "葬", "臧", "奘", "駔", "臟", "臟"],
|
||||
"ㄗㄠ": ["早", "造", "遭", "燥", "澡", "藻", "棗", "躁", "鑿", "蚤", "皁", "竈", "早", "早"],
|
||||
"ㄗㄜ": ["則", "責", "擇", "澤", "側", "仄", "迮", "幘", "賾", "箦", "則", "則"],
|
||||
"ㄗㄟ": ["賊", "賊", "賊"],
|
||||
"ㄗㄣ": ["怎", "譖", "怎", "怎"],
|
||||
"ㄗㄥ": ["增", "贈", "憎", "甑", "繒", "罾", "增", "增"],
|
||||
"ㄗㄨ": ["租", "族", "組", "阻", "卒", "俎", "詛", "菹", "祖", "祖"],
|
||||
"ㄗㄨㄢ": ["鑽", "纂", "攢", "繵", "躜", "鑽", "鑽"],
|
||||
"ㄗㄨㄟ": ["最", "罪", "嘴", "醉", "蕞", "最", "最"],
|
||||
"ㄗㄨㄣ": ["尊", "遵", "樽", "撙", "尊", "尊"],
|
||||
"ㄗㄨㄛ": ["做", "作", "座", "左", "昨", "佐", "琢", "撮", "唑", "嘬", "怍", "祚", "胙", "做", "做"],
|
||||
"ㄘㄚ": ["擦", "嚓", "擦", "擦"],
|
||||
"ㄘㄞ": ["才", "材", "才", "財", "采", "彩", "菜", "猜", "裁", "踩", "才", "才"],
|
||||
"ㄘㄢ": ["參", "餐", "殘", "慘", "燦", "蠶", "參", "參"],
|
||||
"ㄘㄤ": ["藏", "倉", "蒼", "艙", "藏", "藏"],
|
||||
"ㄘㄠ": ["草", "操", "曹", "糙", "槽", "草", "草"],
|
||||
"ㄘㄜ": ["策", "測", "側", "廁", "冊", "策", "策"],
|
||||
"ㄘㄥ": ["層", "曾", "蹭", "層", "層"],
|
||||
"ㄘㄨ": ["粗", "促", "醋", "簇", "猝", "粗", "粗"],
|
||||
"ㄘㄨㄢ": ["竄", "攢", "篡", "竄", "竄"],
|
||||
"ㄘㄨㄟ": ["催", "脆", "翠", "粹", "崔", "淬", "萃", "催", "催"],
|
||||
"ㄘㄨㄣ": ["村", "存", "寸", "磋", "村", "村"],
|
||||
"ㄘㄨㄛ": ["錯", "措", "搓", "磋", "挫", "錯", "錯"],
|
||||
"ㄙㄚ": ["撒", "灑", "薩", "卅", "颯", "撒", "撒"],
|
||||
"ㄙㄞ": ["賽", "塞", "腮", "鰓", "噻", "賽", "賽"],
|
||||
"ㄙㄢ": ["三", "散", "傘", "參", "霰", "三", "三"],
|
||||
"ㄙㄤ": ["喪", "桑", "嗓", "顙", "搡", "喪", "喪"],
|
||||
"ㄙㄠ": ["掃", "嫂", "騷", "搔", "瘙", "繅", "掃", "掃"],
|
||||
"ㄙㄜ": ["色", "塞", "瑟", "澀", "嗇", "穡", "色", "色"],
|
||||
"ㄙㄣ": ["森", "森", "森"],
|
||||
"ㄙㄥ": ["僧", "僧", "僧"],
|
||||
"ㄙㄨ": ["速", "素", "蘇", "訴", "俗", "塑", "溯", "宿", "粟", "夙", "簌", "愫", "嗉", "謖", "速", "速"],
|
||||
"ㄙㄨㄢ": ["算", "酸", "蒜", "狻", "算", "算"],
|
||||
"ㄙㄨㄟ": ["隨", "歲", "雖", "碎", "遂", "穗", "隧", "髓", "祟", "綏", "邃", "燧", "謁", "隨", "隨"],
|
||||
"ㄙㄨㄣ": ["損", "孫", "筍", "遜", "榫", "蓀", "猻", "損", "損"],
|
||||
"ㄙㄨㄛ": ["所", "鎖", "索", "縮", "瑣", "嗦", "唆", "梭", "嗩", "娑", "蓑", "所", "所"],
|
||||
"ㄧㄚ": ["呀", "壓", "牙", "亞", "雅", "鴨", "押", "芽", "涯", "訝", "崖", "啞", "衙", "軋", "蚜", "睚", "痖", "呀", "呀"],
|
||||
"ㄧㄞ": ["涯", "崖", "睚", "涯"],
|
||||
"ㄧㄢ": ["言", "研", "眼", "嚴", "演", "驗", "煙", "顏", "鹽", "延", "沿", "燕", "宴", "炎", "掩", "衍", "岩", "艷", "雁", "焰", "厭", "彥", "諺", "堰", "硯", "嫣", "閻", "焉", "淹", "偃", "儼", "兗", "讌", "讞", "筵", "蜓", "鼴", "罨", "剡", "鄢", "閆", "滟", "妍", "琰", "罳", "言", "言"],
|
||||
"ㄧㄤ": ["樣", "陽", "洋", "養", "央", "揚", "羊", "氧", "仰", "癢", "漾", "殃", "秧", "恙", "颺", "煬", "佯", "瘍", "鞅", "樣", "樣"],
|
||||
"ㄧㄠ": ["要", "藥", "搖", "遙", "腰", "邀", "耀", "瑤", "姚", "咬", "堯", "鑰", "謠", "夭", "妖", "窯", "杳", "舀", "徭", "珧", "軺", "銚", "鰩", "么", "瘧", "要", "要"],
|
||||
"ㄧㄝ": ["也", "業", "夜", "葉", "爺", "野", "液", "謁", "頁", "邪", "掖", "曳", "腋", "噎", "鄴", "曄", "燁", "鐺", "也", "也"],
|
||||
"ㄧㄣ": ["因", "音", "引", "銀", "印", "飲", "隱", "陰", "吟", "尹", "殷", "茵", "蔭", "垠", "夤", "齦", "湮", "氤", "胤", "鄞", "喑", "洇", "狺", "因", "因"],
|
||||
"ㄧㄥ": ["應", "英", "營", "迎", "影", "贏", "硬", "映", "盈", "穎", "瑩", "鷹", "嬰", "櫻", "瀛", "蠅", "嬴", "罌", "縈", "楹", "熒", "螢", "瀅", "瓔", "鸚", "膺", "瀠", "應", "應"],
|
||||
"ㄨㄚ": ["挖", "哇", "蛙", "瓦", "娃", "襪", "凹", "媧", "佤", "腽", "挖", "挖"],
|
||||
"ㄨㄞ": ["外", "歪", "崴", "外", "外"],
|
||||
"ㄨㄢ": ["完", "晚", "玩", "碗", "彎", "灣", "丸", "婉", "腕", "惋", "宛", "蜿", "豌", "莞", "綰", "剜", "完", "完"],
|
||||
"ㄨㄤ": ["王", "往", "忘", "亡", "望", "網", "旺", "汪", "妄", "罔", "惘", "輞", "尪", "王", "王"],
|
||||
"ㄨㄟ": ["為", "位", "未", "委", "圍", "唯", "威", "偉", "危", "尾", "微", "維", "違", "胃", "餵", "味", "慰", "魏", "衛", "畏", "萎", "偽", "娓", "惟", "巍", "緯", "煒", "韋", "薇", "帷", "渭", "猬", "闈", "洧", "沩", "為", "為"],
|
||||
"ㄨㄣ": ["問", "文", "聞", "溫", "穩", "紋", "吻", "蚊", "雯", "紊", "刎", "璺", "問", "問"],
|
||||
"ㄨㄥ": ["翁", "嗡", "甕", "蓊", "翁", "翁"],
|
||||
"ㄩㄢ": ["元", "原", "員", "圓", "院", "源", "遠", "願", "緣", "園", "怨", "冤", "援", "袁", "淵", "猿", "轅", "媛", "垣", "沅", "塬", "圜", "鴛", "鳶", "螈", "爰", "瑗", "掾", "元", "元"],
|
||||
"ㄩㄝ": ["月", "約", "越", "樂", "曰", "閱", "躍", "悅", "岳", "粵", "鑰", "櫟", "鉞", "瀹", "龠", "刖", "軏", "月", "月"],
|
||||
"ㄩㄣ": ["雲", "運", "員", "韻", "勻", "允", "孕", "蘊", "暈", "隕", "耘", "紜", "慍", "殞", "惲", "醞", "狁", "鄖", "雲", "雲"],
|
||||
"ㄦ": ["二", "兒", "耳", "而", "爾", "餌", "洱", "貳", "兒", "兒"]
|
||||
}
|
||||
}
|
||||
@@ -411,7 +411,7 @@
|
||||
]
|
||||
},
|
||||
"letters_azerty": {
|
||||
"__comment": "AZERTY 布局(法语/西班牙语)",
|
||||
"__comment": "AZERTY 布局(法语)- 下个版本启用",
|
||||
"rows": [
|
||||
{
|
||||
"__comment": "第一行 azertyuiop",
|
||||
@@ -466,7 +466,7 @@
|
||||
]
|
||||
},
|
||||
"letters_qwertz": {
|
||||
"__comment": "QWERTZ 布局(德语/西班牙语)",
|
||||
"__comment": "QWERTZ 布局(德语)- 下个版本启用",
|
||||
"rows": [
|
||||
{
|
||||
"__comment": "第一行 qwertzuiop",
|
||||
@@ -521,32 +521,33 @@
|
||||
]
|
||||
},
|
||||
"letters_bopomofo_full": {
|
||||
"__comment": "繁体注音全键盘布局",
|
||||
"__comment": "繁体注音全键盘布局(参考 iOS 系统注音键盘)",
|
||||
"__comment_symbols": "声母:ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ 韵母:ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ 声调:ˊˇˋ˙",
|
||||
"rows": [
|
||||
{
|
||||
"__comment": "第一行注音符号",
|
||||
"__comment": "第一行:声调 + 韵母",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:ㄅ", "letter:ㄉ", "letter:ˇ", "letter:ˋ", "letter:ㄓ",
|
||||
"letter:ˊ", "letter:˙", "letter:ㄚ", "letter:ㄞ", "letter:ㄢ"
|
||||
"letter:ˊ", "letter:ˇ", "letter:ˋ", "letter:˙", "letter:ㄚ",
|
||||
"letter:ㄛ", "letter:ㄜ", "letter:ㄝ", "letter:ㄞ", "letter:ㄟ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__comment": "第二行注音符号",
|
||||
"__comment": "第二行:声母 + 韵母",
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:ㄆ", "letter:ㄊ", "letter:ㄍ", "letter:ㄐ", "letter:ㄔ",
|
||||
"letter:ㄗ", "letter:ㄧ", "letter:ㄛ", "letter:ㄟ", "letter:ㄣ"
|
||||
"letter:ㄅ", "letter:ㄆ", "letter:ㄇ", "letter:ㄈ", "letter:ㄉ",
|
||||
"letter:ㄊ", "letter:ㄋ", "letter:ㄌ", "letter:ㄍ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__comment": "第三行:shift + 注音符号 + backspace",
|
||||
"__comment": "第三行:声母 + 韵母",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
@@ -556,7 +557,7 @@
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:ㄇ", "letter:ㄋ", "letter:ㄎ", "letter:ㄑ", "letter:ㄕ", "letter:ㄘ", "letter:ㄨ"
|
||||
"letter:ㄎ", "letter:ㄏ", "letter:ㄐ", "letter:ㄑ", "letter:ㄒ", "letter:ㄓ", "letter:ㄔ", "letter:ㄕ"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
@@ -564,22 +565,34 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"__comment": "第四行:123/emoji/space/send",
|
||||
"__comment": "第四行:声母 + 韵母",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
"letter:ㄖ", "letter:ㄗ", "letter:ㄘ", "letter:ㄙ", "letter:ㄧ",
|
||||
"letter:ㄨ", "letter:ㄩ", "letter:ㄠ", "letter:ㄡ", "letter:ㄢ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__comment": "第五行:韵母 + 控制键",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:ㄣ", "letter:ㄤ", "letter:ㄥ", "letter:ㄦ", "mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"letters_bopomofo_standard": {
|
||||
"__comment": "繁体注音标准布局",
|
||||
"__comment": "繁体注音标准布局(传统排列方式)",
|
||||
"__comment_symbols": "声母:ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙ 韵母:ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ 声调:ˊˇˋ˙",
|
||||
"rows": [
|
||||
{
|
||||
"__comment": "第一行注音符号",
|
||||
"__comment": "第一行:声母",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
@@ -590,18 +603,18 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"__comment": "第二行注音符号",
|
||||
"__comment": "第二行:声母",
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:ㄏ", "letter:ㄐ", "letter:ㄑ", "letter:ㄒ", "letter:ㄓ",
|
||||
"letter:ㄔ", "letter:ㄕ", "letter:ㄖ", "letter:ㄗ"
|
||||
"letter:ㄔ", "letter:ㄕ", "letter:ㄖ", "letter:ㄗ", "letter:ㄘ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__comment": "第三行:shift + 注音符号 + backspace",
|
||||
"__comment": "第三行:声母 + 韵母",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
@@ -611,7 +624,7 @@
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:ㄘ", "letter:ㄙ", "letter:ㄧ", "letter:ㄨ", "letter:ㄩ", "letter:ㄚ", "letter:ㄛ"
|
||||
"letter:ㄙ", "letter:ㄧ", "letter:ㄨ", "letter:ㄩ", "letter:ㄚ", "letter:ㄛ", "letter:ㄜ", "letter:ㄝ"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
@@ -619,13 +632,24 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"__comment": "第四行:123/emoji/space/send",
|
||||
"__comment": "第四行:韵母 + 声调",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
"letter:ㄞ", "letter:ㄟ", "letter:ㄠ", "letter:ㄡ", "letter:ㄢ",
|
||||
"letter:ㄣ", "letter:ㄤ", "letter:ㄥ", "letter:ㄦ", "letter:ˊ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__comment": "第五行:声调 + 控制键",
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:ˇ", "letter:ˋ", "letter:˙", "mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
448
CustomKeyboard/Resource/kb_keyboard_layouts_i18n.json
Normal file
448
CustomKeyboard/Resource/kb_keyboard_layouts_i18n.json
Normal file
@@ -0,0 +1,448 @@
|
||||
{
|
||||
"__comment": "国际化键盘布局配置文件:各国语言的专用键盘布局",
|
||||
"__comment_usage": "layoutJsonId 对应 kb_input_profiles.json 中的 layoutJsonId",
|
||||
|
||||
"layouts": {
|
||||
"letters_es": {
|
||||
"__comment": "西班牙语(拉丁美洲)键盘布局",
|
||||
"__comment_features": "包含 Ñ 键,支持 áéíóúü 等重音符号",
|
||||
"rows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:q", "letter:w", "letter:e", "letter:r", "letter:t",
|
||||
"letter:y", "letter:u", "letter:i", "letter:o", "letter:p"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:a", "letter:s", "letter:d", "letter:f", "letter:g",
|
||||
"letter:h", "letter:j", "letter:k", "letter:l", "letter:ñ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:z", "letter:x", "letter:c", "letter:v", "letter:b",
|
||||
"letter:n", "letter:m"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
],
|
||||
"shiftRows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:Q", "letter:W", "letter:E", "letter:R", "letter:T",
|
||||
"letter:Y", "letter:U", "letter:I", "letter:O", "letter:P"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:A", "letter:S", "letter:D", "letter:F", "letter:G",
|
||||
"letter:H", "letter:J", "letter:K", "letter:L", "letter:Ñ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:Z", "letter:X", "letter:C", "letter:V", "letter:B",
|
||||
"letter:N", "letter:M"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
],
|
||||
"longPress": {
|
||||
"a": ["á", "à", "ä", "â", "ã", "å", "æ"],
|
||||
"e": ["é", "è", "ë", "ê", "ę"],
|
||||
"i": ["í", "ì", "ï", "î", "ı"],
|
||||
"o": ["ó", "ò", "ö", "ô", "õ", "ø", "œ"],
|
||||
"u": ["ú", "ù", "ü", "û"],
|
||||
"n": ["ñ", "ń", "ņ", "ň"],
|
||||
"c": ["ç", "ć", "ĉ", "č"],
|
||||
"d": ["ð", "đ"],
|
||||
"s": ["ś", "š", "ş", "ß"],
|
||||
"z": ["ź", "ż", "ž"]
|
||||
}
|
||||
},
|
||||
|
||||
"letters_pt": {
|
||||
"__comment": "葡萄牙语键盘布局",
|
||||
"__comment_features": "支持 ã, õ, ç, á, é, í, ó, ú 等重音符号",
|
||||
"rows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:q", "letter:w", "letter:e", "letter:r", "letter:t",
|
||||
"letter:y", "letter:u", "letter:i", "letter:o", "letter:p"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:a", "letter:s", "letter:d", "letter:f", "letter:g",
|
||||
"letter:h", "letter:j", "letter:k", "letter:l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:z", "letter:x", "letter:c", "letter:v", "letter:b",
|
||||
"letter:n", "letter:m"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
],
|
||||
"shiftRows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:Q", "letter:W", "letter:E", "letter:R", "letter:T",
|
||||
"letter:Y", "letter:U", "letter:I", "letter:O", "letter:P"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:A", "letter:S", "letter:D", "letter:F", "letter:G",
|
||||
"letter:H", "letter:J", "letter:K", "letter:L"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:Z", "letter:X", "letter:C", "letter:V", "letter:B",
|
||||
"letter:N", "letter:M"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
],
|
||||
"longPress": {
|
||||
"a": ["á", "à", "ã", "â", "ä", "å", "æ"],
|
||||
"e": ["é", "ê", "è", "ë", "ę"],
|
||||
"i": ["í", "ì", "ï", "î"],
|
||||
"o": ["ó", "ò", "õ", "ô", "ö", "ø", "œ"],
|
||||
"u": ["ú", "ù", "ü", "û"],
|
||||
"c": ["ç", "ć", "ĉ", "č"],
|
||||
"n": ["ñ", "ń", "ņ", "ň"]
|
||||
}
|
||||
},
|
||||
|
||||
"letters_id": {
|
||||
"__comment": "印尼语键盘布局",
|
||||
"__comment_features": "与英文 QWERTY 相同,支持印尼语特殊字符",
|
||||
"rows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:q", "letter:w", "letter:e", "letter:r", "letter:t",
|
||||
"letter:y", "letter:u", "letter:i", "letter:o", "letter:p"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:a", "letter:s", "letter:d", "letter:f", "letter:g",
|
||||
"letter:h", "letter:j", "letter:k", "letter:l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:z", "letter:x", "letter:c", "letter:v", "letter:b",
|
||||
"letter:n", "letter:m"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
],
|
||||
"shiftRows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:Q", "letter:W", "letter:E", "letter:R", "letter:T",
|
||||
"letter:Y", "letter:U", "letter:I", "letter:O", "letter:P"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:A", "letter:S", "letter:D", "letter:F", "letter:G",
|
||||
"letter:H", "letter:J", "letter:K", "letter:L"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:Z", "letter:X", "letter:C", "letter:V", "letter:B",
|
||||
"letter:N", "letter:M"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
],
|
||||
"longPress": {
|
||||
"a": ["á", "à", "ä", "â", "ã"],
|
||||
"e": ["é", "è", "ë", "ê"],
|
||||
"i": ["í", "ì", "ï", "î"],
|
||||
"o": ["ó", "ò", "ö", "ô", "õ"],
|
||||
"u": ["ú", "ù", "ü", "û"],
|
||||
"c": ["ç", "ć", "č"],
|
||||
"n": ["ñ", "ń", "ņ"]
|
||||
}
|
||||
},
|
||||
|
||||
"letters_zh_hant_pinyin": {
|
||||
"__comment": "繁体中文拼音布局",
|
||||
"__comment_features": "与英文 QWERTY 相同,联想输出繁体字",
|
||||
"rows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:q", "letter:w", "letter:e", "letter:r", "letter:t",
|
||||
"letter:y", "letter:u", "letter:i", "letter:o", "letter:p"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:a", "letter:s", "letter:d", "letter:f", "letter:g",
|
||||
"letter:h", "letter:j", "letter:k", "letter:l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:z", "letter:x", "letter:c", "letter:v", "letter:b",
|
||||
"letter:n", "letter:m"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
],
|
||||
"shiftRows": [
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:Q", "letter:W", "letter:E", "letter:R", "letter:T",
|
||||
"letter:Y", "letter:U", "letter:I", "letter:O", "letter:P"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"insetLeft": 0,
|
||||
"insetRight": 0,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"letter:A", "letter:S", "letter:D", "letter:F", "letter:G",
|
||||
"letter:H", "letter:J", "letter:K", "letter:L"
|
||||
]
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"segments": {
|
||||
"left": [
|
||||
{ "id": "shift", "width": "controlWidth" }
|
||||
],
|
||||
"center": [
|
||||
"letter:Z", "letter:X", "letter:C", "letter:V", "letter:B",
|
||||
"letter:N", "letter:M"
|
||||
],
|
||||
"right": [
|
||||
{ "id": "backspace", "width": "controlWidth" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"align": "left",
|
||||
"insetLeft": 4,
|
||||
"insetRight": 4,
|
||||
"gap": 5,
|
||||
"items": [
|
||||
"mode_123", "emoji", "space", "send"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
405
CustomKeyboard/Resource/pinyin_to_traditional.json
Normal file
405
CustomKeyboard/Resource/pinyin_to_traditional.json
Normal file
@@ -0,0 +1,405 @@
|
||||
{
|
||||
"__comment": "繁体拼音映射表:拼音 -> 繁体字候选词列表",
|
||||
"mappings": {
|
||||
"a": ["阿", "啊", "呀"],
|
||||
"ai": ["愛", "愛", "艾", "哀", "矮", "礙", "挨", "唉"],
|
||||
"an": ["安", "按", "暗", "岸", "案", "俺", "鞍"],
|
||||
"ang": ["昂", "盎"],
|
||||
"ao": ["奧", "傲", "熬", "澳", "襖", "懊", "敖"],
|
||||
"ba": ["吧", "把", "八", "爸", "巴", "拔", "罷", "霸", "扒", "叭"],
|
||||
"bai": ["白", "百", "拜", "敗", "柏", "擺", "佰"],
|
||||
"ban": ["辦", "班", "般", "板", "版", "半", "伴", "扮", "拌", "瓣", "頒"],
|
||||
"bang": ["幫", "邦", "榜", "膀", "綁", "棒", "磅"],
|
||||
"bao": ["包", "保", "報", "寶", "抱", "暴", "爆", "薄", "爆", "豹", "飽", "堡", "刨"],
|
||||
"bei": ["北", "被", "背", "備", "悲", "杯", "碑", "輩", "倍", "貝"],
|
||||
"ben": ["本", "奔", "笨", "盆"],
|
||||
"beng": ["崩", "繃", "蹦", "泵"],
|
||||
"bi": ["比", "必", "筆", "畢", "避", "閉", "鼻", "彼", "碧", "壁", "弊", "臂", "秘", "辟", "逼"],
|
||||
"bian": ["變", "便", "邊", "編", "辯", "遍", "鞭", "辨", "扁", "貶"],
|
||||
"biao": ["表", "標", "彪", "錶", "鏢"],
|
||||
"bie": ["別", "憋", "癟"],
|
||||
"bin": ["賓", "彬", "斌", "瀕", "濱"],
|
||||
"bing": ["病", "並", "冰", "兵", "餅", "柄", "秉", "稟"],
|
||||
"bo": ["不", "波", "博", "播", "伯", "薄", "泊", "柏", "勃", "搏", "撥", "剝", "脖", "博"],
|
||||
"bu": ["不", "步", "部", "布", "補", "捕", "簿", "卜", "怖"],
|
||||
"ca": ["擦", "嚓"],
|
||||
"cai": ["才", "材", "才", "財", "采", "彩", "菜", "猜", "裁", "踩"],
|
||||
"can": ["參", "餐", "殘", "慘", "燦", "蠶"],
|
||||
"cang": ["藏", "倉", "蒼", "艙"],
|
||||
"cao": ["草", "操", "曹", "糙", "槽"],
|
||||
"ce": ["策", "測", "側", "廁", "冊"],
|
||||
"ceng": ["層", "曾", "蹭"],
|
||||
"cha": ["查", "茶", "差", "插", "察", "剎", "叉", "岔", "詫"],
|
||||
"chai": ["差", "拆", "柴", "豺"],
|
||||
"chan": ["產", "纏", "禪", "蟬", "鏟", "闡", "顫", "摻", "潺"],
|
||||
"chang": ["長", "常", "場", "唱", "廠", "昌", "倡", "嘗", "腸", "暢", "償"],
|
||||
"chao": ["超", "朝", "潮", "吵", "炒", "抄", "鈔", "巢", "嘲"],
|
||||
"che": ["車", "徹", "撤", "扯", "澈"],
|
||||
"chen": ["陳", "晨", "沉", "趁", "襯", "臣", "塵", "辰", "忱"],
|
||||
"cheng": ["成", "城", "程", "稱", "承", "誠", "乘", "撐", "橙", "呈", "懲", "撐"],
|
||||
"chi": ["吃", "持", "遲", "池", "尺", "齒", "赤", "翅", "斥", "馳", "癡", "侈"],
|
||||
"chong": ["充", "衝", "蟲", "重", "崇", "寵", "沖", "憧"],
|
||||
"chou": ["抽", "愁", "醜", "臭", "仇", "籌", "稠", "綢", "酬", "疇"],
|
||||
"chu": ["出", "處", "初", "除", "書", "楚", "觸", "儲", "廚", "畜", "鋤"],
|
||||
"chuai": ["揣", "踹"],
|
||||
"chuan": ["傳", "穿", "船", "川", "串", "喘", "釧"],
|
||||
"chuang": ["床", "窗", "創", "闖", "幢"],
|
||||
"chui": ["吹", "垂", "錘", "捶", "炊"],
|
||||
"chun": ["春", "純", "唇", "淳", "醇"],
|
||||
"ci": ["次", "此", "詞", "辭", "慈", "瓷", "磁", "賜", "刺", "茨"],
|
||||
"cong": ["從", "聰", "匆", "蔥", "叢", "淙"],
|
||||
"cou": ["湊"],
|
||||
"cu": ["粗", "促", "醋", "簇", "猝"],
|
||||
"cuan": ["竄", "攢", "篡"],
|
||||
"cui": ["催", "脆", "翠", "粹", "崔", "淬", "萃"],
|
||||
"cun": ["村", "存", "寸", "磋"],
|
||||
"cuo": ["錯", "措", "搓", "磋", "挫"],
|
||||
"da": ["大", "打", "答", "達", "搭", "塔", "瘩"],
|
||||
"dai": ["大", "代", "帶", "待", "袋", "戴", "呆", "貸", "逮", "怠", "殆", "黛"],
|
||||
"dan": ["但", "單", "擔", "膽", "丹", "淡", "蛋", "誕", "彈", "旦", "氮", "耽"],
|
||||
"dang": ["當", "黨", "檔", "擋", "蕩", "檔", "宕"],
|
||||
"dao": ["到", "道", "導", "刀", "倒", "島", "盜", "悼", "搗", "禱", "蹈"],
|
||||
"de": ["的", "得", "德", "底"],
|
||||
"dei": ["得"],
|
||||
"deng": ["等", "燈", "登", "鄧", "瞪", "凳", "蹬"],
|
||||
"di": ["的", "地", "第", "低", "底", "敵", "弟", "帝", "抵", "遞", "迪", "滴", "堤", "笛", "締"],
|
||||
"dia": ["嗲"],
|
||||
"dian": ["點", "電", "店", "典", "墊", "澱", "殿", "顛", "滇", "碘", "巔"],
|
||||
"diao": ["調", "掉", "吊", "雕", "刁", "釣", "凋", "碉"],
|
||||
"die": ["爹", "跌", "叠", "蝶", "碟", "諜", "迭", "帖", "耋"],
|
||||
"ding": ["定", "訂", "頂", "丁", "釘", "盯", "叮", "鼎", "叮"],
|
||||
"diu": ["丟"],
|
||||
"dong": ["動", "東", "冬", "懂", "洞", "凍", "棟", "董", "咚"],
|
||||
"dou": ["都", "鬥", "豆", "抖", "逗", "兜", "痘"],
|
||||
"du": ["讀", "都", "度", "獨", "毒", "渡", "杜", "肚", "堵", "賭", "鍍", "督"],
|
||||
"duan": ["段", "斷", "短", "鍛", "緞", "端"],
|
||||
"dui": ["對", "隊", "堆", "兌", "懟"],
|
||||
"dun": ["頓", "噸", "盾", "蹲", "敦", "墩", "燉", "鈍"],
|
||||
"duo": ["多", "度", "奪", "躲", "朵", "墮", "舵", "跺", "惰", "哆"],
|
||||
"e": ["餓", "惡", "額", "俄", "鵝", "娥", "訛", "峨", "扼", "遏", "鄂", "噩"],
|
||||
"ei": ["誒"],
|
||||
"en": ["恩", "摁"],
|
||||
"er": ["二", "兒", "耳", "而", "爾", "餌", "洱", "貳"],
|
||||
"fa": ["發", "法", "罰", "乏", "伐", "閥", "筏", "佳"],
|
||||
"fan": ["反", "飯", "煩", "繁", "範", "犯", "泛", "番", "翻", "凡", "帆", "返", "販", "礬"],
|
||||
"fang": ["方", "放", "房", "防", "訪", "仿", "芳", "坊", "妨", "紡", "舫"],
|
||||
"fei": ["非", "飛", "費", "肥", "廢", "匪", "誹", "啡", "菲", "沸", "翡", "吠"],
|
||||
"fen": ["分", "份", "粉", "奮", "憤", "紛", "芬", "墳", "焚", "氛", "糞"],
|
||||
"feng": ["風", "封", "豐", "峰", "鋒", "蜂", "瘋", "逢", "縫", "鳳", "奉", "諷", "楓"],
|
||||
"fo": ["佛"],
|
||||
"fou": ["否", "縫"],
|
||||
"fu": ["父", "夫", "付", "服", "福", "府", "負", "富", "復", "副", "婦", "撫", "附", "幅", "浮", "腐", "符", "弗", "腹", "輻", "敷", "氟", "芙", "敷"],
|
||||
"ga": ["嘎", "噶", "軋"],
|
||||
"gai": ["改", "該", "蓋", "概", "溉", "丐", "芥", "鈣"],
|
||||
"gan": ["幹", "感", "敢", "甘", "肝", "趕", "桿", "乾", "贛", "柑", "竿", "尴", "擀"],
|
||||
"gang": ["剛", "鋼", "港", "崗", "綱", "岡", "缸", "槓", "扛"],
|
||||
"gao": ["高", "告", "搞", "稿", "糕", "鎬", "膏", "篙"],
|
||||
"ge": ["個", "各", "歌", "格", "哥", "割", "革", "隔", "閣", "葛", "戈", "擱", "鴿", "胳", "骼"],
|
||||
"gei": ["給"],
|
||||
"gen": ["跟", "根", "亙", "艮"],
|
||||
"geng": ["更", "耕", "庚", "羹", "耿", "梗"],
|
||||
"gong": ["工", "公", "共", "供", "功", "攻", "宮", "恭", "鞏", "弓", "躬", "拱", "貢"],
|
||||
"gou": ["狗", "夠", "構", "購", "溝", "鉤", "勾", "苟", "垢", "篝"],
|
||||
"gu": ["古", "故", "顧", "骨", "谷", "股", "鼓", "固", "孤", "姑", "辜", "沽", "咕", "估"],
|
||||
"gua": ["掛", "瓜", "刮", "寡", "呱", "褂"],
|
||||
"guai": ["怪", "乖", "拐"],
|
||||
"guan": ["關", "觀", "管", "官", "館", "慣", "灌", "冠", "罐", "貫", "棺", "倌"],
|
||||
"guang": ["光", "廣", "逛", "胱"],
|
||||
"gui": ["貴", "規", "歸", "鬼", "軌", "櫃", "桂", "跪", "龜", "瑰", "詭", "閨"],
|
||||
"gun": ["滾", "棍"],
|
||||
"guo": ["過", "國", "果", "鍋", "郭", "裹", "渦"],
|
||||
"ha": ["哈", "蛤"],
|
||||
"hai": ["還", "海", "害", "孩", "嗨", "亥", "骸", "氦"],
|
||||
"han": ["漢", "寒", "汗", "喊", "韓", "旱", "憾", "悍", "翰", "涵", "酣", "憨"],
|
||||
"hang": ["行", "航", "杭", "巷", "夯", "吭"],
|
||||
"hao": ["好", "號", "豪", "毫", "浩", "耗", "郝", "蒿", "嚎", "壕", "濠"],
|
||||
"he": ["和", "合", "河", "何", "核", "賀", "喝", "赫", "褐", "鶴", "荷", "盒", "禾", "嚇", "呵"],
|
||||
"hei": ["黑", "嘿"],
|
||||
"hen": ["很", "狠", "恨", "痕"],
|
||||
"heng": ["橫", "恆", "衡", "亨", "哼"],
|
||||
"hong": ["紅", "轟", "洪", "宏", "虹", "鴻", "烘", "弘", "訌", "泓"],
|
||||
"hou": ["後", "候", "厚", "喉", "猴", "吼", "侯", "吼"],
|
||||
"hu": ["湖", "呼", "戶", "虎", "護", "互", "忽", "胡", "壺", "狐", "糊", "弧", "蝴", "乎", "滬"],
|
||||
"hua": ["話", "花", "化", "華", "畫", "劃", "滑", "嘩", "樺", "驊"],
|
||||
"huai": ["壞", "懷", "槐", "徊"],
|
||||
"huan": ["還", "換", "環", "歡", "緩", "患", "喚", "幻", "煥", "桓", "宦", "渙", "瘓"],
|
||||
"huang": ["黃", "皇", "荒", "慌", "煌", "晃", "謊", "凰", "惶", "煌", "簧", "恍"],
|
||||
"hui": ["會", "回", "灰", "輝", "輝", "惠", "慧", "繪", "匯", "輝", "毀", "悔", "晦", "賄", "穢"],
|
||||
"hun": ["婚", "魂", "混", "渾", "昏", "葷", "餛"],
|
||||
"huo": ["活", "火", "或", "夥", "獲", "貨", "禍", "惑", "霍", "豁", "鍬", "鑊"],
|
||||
"ji": ["幾", "機", "己", "記", "計", "集", "基", "際", "極", "擊", "激", "其", "及", "級", "即", "急", "季", "跡", "技", "績", "輯", "籍", "擠", "吉", "雞", "奇", "肌", "饑", "譏", "磯", "姬", "嫉", "棘", "寂", "冀", "驥"],
|
||||
"jia": ["家", "加", "價", "假", "架", "佳", "甲", "駕", "嘉", "稼", "嫁", "夾", "頰", "戛", "枷"],
|
||||
"jian": ["見", "間", "建", "件", "簡", "檢", "堅", "健", "漸", "劍", "鍵", "尖", "肩", "艦", "鑒", "剪", "撿", "踐", "賤", "箭", "澗", "濺", "薦", "餞", "漸", "諫"],
|
||||
"jiang": ["將", "江", "強", "講", "降", "獎", "疆", "匠", "蔣", "漿", "僵", "薑", "絳"],
|
||||
"jiao": ["叫", "教", "腳", "角", "交", "覺", "較", "焦", "膠", "驕", "澆", "攪", "椒", "嬌", "郊", "蕉", "矯", "絞", "僥", "佼", "僥"],
|
||||
"jie": ["接", "節", "街", "結", "解", "姐", "介", "界", "借", "傑", "潔", "截", "揭", "劫", "捷", "睫", "竭", "桔", "戒", "芥", "藉", "拮"],
|
||||
"jin": ["進", "金", "近", "今", "緊", "盡", "僅", "勁", "錦", "津", "筋", "巾", "斤", "禁", "襟", "瑾"],
|
||||
"jing": ["經", "精", "景", "警", "靜", "境", "競", "淨", "鏡", "徑", "驚", "京", "晶", "睛", "莖", "荊", "兢", "涇", "憬"],
|
||||
"jiong": ["窘", "炯", "迥"],
|
||||
"jiu": ["就", "九", "久", "酒", "舊", "救", "究", "糾", "舅", "揪", "韭", "灸", "玖", "臼"],
|
||||
"ju": ["句", "具", "據", "局", "舉", "巨", "聚", "居", "距", "懼", "劇", "鋸", "矩", "拒", "俱", "菊", "橘", "颶", "踞", "遽"],
|
||||
"juan": ["卷", "捐", "圈", "眷", "倦", "娟", "雋", "涓", "鐫"],
|
||||
"jue": ["決", "覺", "絕", "角", "爵", "掘", "倔", "厥", "譎", "獗", "矍", "嚼"],
|
||||
"jun": ["軍", "君", "均", "俊", "菌", "竣", "鈞", "峻", "雋"],
|
||||
"ka": ["卡", "咖", "喀", "咔"],
|
||||
"kai": ["開", "凱", "楷", "慨", "愷", "鎧", "鍇"],
|
||||
"kan": ["看", "砍", "坎", "勘", "刊", "堪", "瞰", "龕"],
|
||||
"kang": ["康", "抗", "扛", "亢", "糠", "慷", "伉"],
|
||||
"kao": ["考", "靠", "烤", "拷", "栲", "犒"],
|
||||
"ke": ["可", "客", "科", "刻", "課", "顆", "克", "渴", "柯", "棵", "磕", "咳", "殼", "坷"],
|
||||
"ken": ["肯", "懇", "啃", "齦"],
|
||||
"keng": ["坑", "吭", "鏗"],
|
||||
"kong": ["空", "控", "恐", "孔"],
|
||||
"kou": ["口", "扣", "叩", "寇", "摳"],
|
||||
"ku": ["苦", "哭", "庫", "酷", "枯", "窟", "骷"],
|
||||
"kua": ["跨", "誇", "垮", "挎", "胯"],
|
||||
"kuai": ["快", "塊", "筷", "儈", "膾"],
|
||||
"kuan": ["寬", "款"],
|
||||
"kuang": ["況", "礦", "狂", "框", "曠", "眶", "筐", "匡", "誑"],
|
||||
"kui": ["虧", "愧", "潰", "窺", "葵", "魁", "饋", "匱", "睽", "聵"],
|
||||
"kun": ["困", "昆", "坤", "捆", "琨", "鯤"],
|
||||
"kuo": ["擴", "括", "闊", "廓"],
|
||||
"la": ["拉", "啦", "蠟", "辣", "臘", "喇", "落"],
|
||||
"lai": ["來", "賴", "萊", "徠", "賚"],
|
||||
"lan": ["藍", "蘭", "攔", "籃", "懶", "爛", "濫", "覽", "欄", "瀾", "嵐", "襤"],
|
||||
"lang": ["浪", "郎", "狼", "廊", "朗", "琅", "螂", "朗"],
|
||||
"lao": ["老", "勞", "落", "牢", "撈", "澇", "絡", "姥", "佬", "潦"],
|
||||
"le": ["了", "樂", "勒", "肋"],
|
||||
"lei": ["累", "類", "淚", "雷", "勒", "壘", "蕾", "磊", "擂", "鐳", "儡"],
|
||||
"leng": ["冷", "愣", "楞"],
|
||||
"li": ["裡", "力", "理", "利", "立", "離", "例", "歷", "李", "禮", "麗", "勵", "梨", "厘", "莉", "犁", "黎", "璃", "狸", "漓", "罹", "驪", "鱧", "吏", "栗"],
|
||||
"lia": ["倆"],
|
||||
"lian": ["連", "聯", "臉", "練", "蓮", "戀", "煉", "廉", "憐", "漣", "鐮", "斂", "璉"],
|
||||
"liang": ["兩", "亮", "量", "良", "涼", "梁", "糧", "樑", "諒", "晾", "踉", "靚"],
|
||||
"liao": ["了", "料", "聊", "療", "遼", "撩", "僚", "燎", "繚", "潦", "寥", "嘹"],
|
||||
"lie": ["列", "烈", "獵", "裂", "劣", "咧", "冽", "捩", "躐"],
|
||||
"lin": ["林", "臨", "鄰", "淋", "琳", "霖", "鱗", "麟", "遴", "藺", "吝", "躪"],
|
||||
"ling": ["領", "零", "靈", "令", "另", "玲", "鈴", "陵", "嶺", "凌", "菱", "羚", "翎", "聆", "伶", "拎"],
|
||||
"liu": ["六", "流", "留", "劉", "柳", "溜", "琉", "榴", "硫", "溜", "鎏", "鷚"],
|
||||
"long": ["龍", "隆", "弄", "籠", "聾", "攏", "壟", "朗", "隴"],
|
||||
"lou": ["樓", "漏", "露", "婁", "摟", "簍", "嘍", "螻"],
|
||||
"lu": ["路", "錄", "陸", "綠", "露", "旅", "律", "慮", "呂", "履", "侶", "屢", "濾", "氯", "廬", "爐", "蘆", "盧", "顱", "魯", "擼", "祿", "麓"],
|
||||
"lv": ["綠", "律", "旅", "慮", "呂", "履", "侶", "屢", "濾", "氯"],
|
||||
"luan": ["亂", "卵", "巒", "鑾", "鸞", "欒"],
|
||||
"lue": ["略", "掠"],
|
||||
"lun": ["論", "輪", "倫", "侖", "綸", "淪"],
|
||||
"luo": ["落", "羅", "洛", "絡", "邏", "鑼", "籮", "駱", "裸", "螺", "蘿", "摞"],
|
||||
"ma": ["嗎", "媽", "馬", "麻", "罵", "嘛", "螞", "碼", "瑪", "抹", "摩"],
|
||||
"mai": ["買", "賣", "麥", "埋", "邁", "脈", "霾"],
|
||||
"man": ["滿", "慢", "曼", "漫", "蠻", "瞞", "饅", "蔓", "謾", "墁", "幔"],
|
||||
"mang": ["忙", "盲", "茫", "芒", "莽", "氓", "硭"],
|
||||
"mao": ["貓", "毛", "矛", "茅", "茂", "冒", "帽", "貌", "貿", "卯", "錨", "耄", "髦", "瑁", "懋"],
|
||||
"me": ["麼"],
|
||||
"mei": ["沒", "美", "妹", "每", "梅", "媒", "煤", "眉", "霉", "魅", "玫", "枚", "寐", "昧", "媚", "湄", "鎂", "糜"],
|
||||
"men": ["們", "門", "悶", "燜", "捫"],
|
||||
"meng": ["夢", "孟", "猛", "蒙", "盟", "萌", "朦", "檬", "懵", "礞", "蠐"],
|
||||
"mi": ["米", "密", "迷", "蜜", "祕", "祕", "眯", "靡", "糜", "彌", "覓", "冪", "泌"],
|
||||
"mian": ["面", "免", "棉", "眠", "綿", "勉", "緬", "冕", "娩", "湎", "眄"],
|
||||
"miao": ["描", "秒", "妙", "廟", "苗", "瞄", "渺", "淼", "緲", "藐"],
|
||||
"mie": ["滅", "蔑", "篾", "乜"],
|
||||
"min": ["民", "敏", "名", "皿", "閔", "抿", "泯", "憫", "閔"],
|
||||
"ming": ["名", "明", "命", "鳴", "銘", "冥", "茗", "溟", "瞑", "螟"],
|
||||
"miu": ["謬"],
|
||||
"mo": ["麼", "摸", "磨", "摩", "魔", "膜", "默", "墨", "抹", "末", "莫", "漠", "寞", "陌", "謨", "茉", "驀", "歿"],
|
||||
"mou": ["某", "謀", "牟", "眸", "繆", "鍪"],
|
||||
"mu": ["目", "母", "木", "幕", "牧", "慕", "墓", "暮", "穆", "睦", "沐", "募", "姆", "拇", "牡", "畝"],
|
||||
"na": ["那", "拿", "哪", "納", "吶", "娜", "鈉", "衲"],
|
||||
"nai": ["奶", "耐", "乃", "奈", "氖", "萘", "鼐"],
|
||||
"nan": ["南", "難", "男", "喃", "楠", "赧"],
|
||||
"nang": ["囊", "囔"],
|
||||
"nao": ["腦", "惱", "鬧", "撓", "淖", "鐃", "橈"],
|
||||
"ne": ["呢", "訥"],
|
||||
"nei": ["內", "那"],
|
||||
"nen": ["嫩", "恁"],
|
||||
"neng": ["能"],
|
||||
"ni": ["你", "妳", "呢", "泥", "尼", "擬", "逆", "妮", "霓", "倪", "匿", "溺", "膩", "旎"],
|
||||
"nian": ["年", "念", "黏", "碾", "捻", "撚", "蔦"],
|
||||
"niang": ["娘", "釀"],
|
||||
"niao": ["鳥", "尿", "裊", "嬲"],
|
||||
"nie": ["捏", "聶", "孽", "躡", "鎳", "囁", "臬", "涅"],
|
||||
"nin": ["您"],
|
||||
"ning": ["寧", "凝", "擰", "檸", "獰", "嚀", "甯"],
|
||||
"niu": ["牛", "紐", "扭", "鈕", "妞", "拗"],
|
||||
"nong": ["農", "濃", "弄", "膿", "儂"],
|
||||
"nu": ["女", "努", "怒", "奴", "弩", "胬"],
|
||||
"nv": ["女"],
|
||||
"nuan": ["暖"],
|
||||
"nue": ["虐", "瘧"],
|
||||
"nuo": ["挪", "諾", "懦", "糯", "喏"],
|
||||
"o": ["哦", "噢", "喔"],
|
||||
"ou": ["歐", "偶", "嘔", "藕", "鷗", "漚", "慪"],
|
||||
"pa": ["怕", "爬", "帕", "趴", "琶", "葩", "耙"],
|
||||
"pai": ["排", "拍", "牌", "派", "徘", "湃", "俳"],
|
||||
"pan": ["判", "盤", "盼", "攀", "畔", "胖", "叛", "潘", "磐", "蹣", "拚"],
|
||||
"pang": ["旁", "胖", "龐", "膀", "磅", "彷", "螃"],
|
||||
"pao": ["跑", "炮", "泡", "拋", "刨", "袍", "咆", "庖"],
|
||||
"pei": ["配", "陪", "培", "賠", "佩", "沛", "裴", "胚", "霈"],
|
||||
"pen": ["盆", "噴"],
|
||||
"peng": ["朋", "碰", "彭", "棚", "蓬", "鵬", "捧", "烹", "澎", "朋", "怦", "砰", "堋"],
|
||||
"pi": ["皮", "批", "披", "匹", "疲", "僻", "脾", "劈", "琵", "毗", "啤", "坯", "譬", "霹", "屁", "闢", "紕"],
|
||||
"pian": ["片", "便", "騙", "偏", "篇", "翩", "扁", "諞"],
|
||||
"piao": ["票", "飄", "漂", "瓢", "嫖", "縹", "驃"],
|
||||
"pie": ["撇", "瞥", "苤"],
|
||||
"pin": ["品", "貧", "頻", "聘", "拼", "拚", "嬪"],
|
||||
"ping": ["平", "評", "憑", "瓶", "萍", "屏", "蘋", "坪", "萍", "秤", "娉", "馮"],
|
||||
"po": ["破", "迫", "婆", "頗", "坡", "潑", "泊", "魄", "粕", "朴", "珀", "叵", "鄱"],
|
||||
"pou": ["剖", "掊", "裒"],
|
||||
"pu": ["普", "鋪", "樸", "譜", "浦", "葡", "蒲", "僕", "撲", "圃", "濮", "璞", "噗"],
|
||||
"qi": ["起", "其", "氣", "期", "七", "奇", "妻", "棋", "齊", "旗", "企", "啟", "器", "棄", "汽", "祈", "騎", "豈", "漆", "契", "砌", "琪", "淇", "岐", "祁", "崎", "祺", "臍", "訖", "訖", "磧"],
|
||||
"qia": ["恰", "洽", "卡", "掐", "髂", "袷"],
|
||||
"qian": ["前", "錢", "千", "簽", "遷", "淺", "欠", "牽", "潛", "鉛", "謙", "乾", "嵌", "譴", "譴", "倩", "倩", "槍", "嗆", "薔", "牆", "強", "搶", "腔", "嗆", "羌", "嬙", "檣", "鏘", "鏹"],
|
||||
"qiao": ["橋", "瞧", "巧", "敲", "俏", "殼", "竅", "喬", "翹", "峭", "俏", "撬", "憔", "譙", "樵"],
|
||||
"qie": ["切", "且", "茄", "怯", "竊", "妾", "愜", "鍥", "伽"],
|
||||
"qin": ["親", "琴", "勤", "侵", "秦", "欽", "禽", "寢", "沁", "芹", "擒", "噙", "覃"],
|
||||
"qing": ["情", "請", "清", "青", "輕", "慶", "傾", "頃", "晴", "擎", "卿", "氫", "罄", "磬", "蜻", "鯖", "綮"],
|
||||
"qiong": ["窮", "瓊", "穹", "煢", "邛", "蛩"],
|
||||
"qiu": ["求", "球", "秋", "丘", "邱", "囚", "酋", "泅", "俅", "裘", "遒", "賒"],
|
||||
"qu": ["去", "取", "曲", "區", "趣", "娶", "渠", "屈", "驅", "蛆", "軀", "祛", "瞿", "蛐", "麴", "衢"],
|
||||
"quan": ["全", "權", "圈", "泉", "拳", "犬", "勸", "券", "詮", "痊", "銓", "蜷", "顴"],
|
||||
"que": ["確", "卻", "缺", "雀", "鵲", "闕", "瘸", "榷", "愨"],
|
||||
"qun": ["群", "裙", "逡"],
|
||||
"ran": ["然", "燃", "染", "冉", "髯", "蚺"],
|
||||
"rang": ["讓", "嚷", "壤", "攘", "穰", "瓤"],
|
||||
"rao": ["擾", "繞", "饒", "嬈", "橈", "蕘"],
|
||||
"re": ["熱", "惹", "喏"],
|
||||
"ren": ["人", "認", "任", "仁", "忍", "刃", "韌", "紉", "妊", "葚", "稔"],
|
||||
"reng": ["仍", "扔"],
|
||||
"ri": ["日"],
|
||||
"rong": ["容", "榮", "融", "絨", "溶", "蓉", "榕", "戎", "茸", "冗", "嶸", "狨"],
|
||||
"rou": ["肉", "柔", "揉", "蹂", "鞣", "糅"],
|
||||
"ru": ["如", "入", "儒", "乳", "辱", "孺", "茹", "蠕", "嚅", "濡", "縟", "洳"],
|
||||
"ruan": ["軟", "阮"],
|
||||
"rui": ["瑞", "銳", "蕊", "芮", "蚋", "枘"],
|
||||
"run": ["潤", "閏"],
|
||||
"ruo": ["若", "弱", "偌", "箬", "蒻"],
|
||||
"sa": ["撒", "灑", "薩", "卅", "颯"],
|
||||
"sai": ["賽", "塞", "腮", "鰓", "噻"],
|
||||
"san": ["三", "散", "傘", "參", "霰"],
|
||||
"sang": ["喪", "桑", "嗓", "顙", "搡"],
|
||||
"sao": ["掃", "嫂", "騷", "搔", "瘙", "繅"],
|
||||
"se": ["色", "塞", "瑟", "澀", "嗇", "穡"],
|
||||
"sen": ["森"],
|
||||
"seng": ["僧"],
|
||||
"sha": ["殺", "沙", "紗", "傻", "啥", "煞", "莎", "杉", "剎", "砂", "痧", "裟", "鎩", "霎"],
|
||||
"shai": ["曬", "篩", "色"],
|
||||
"shan": ["山", "善", "閃", "衫", "扇", "杉", "刪", "珊", "柵", "膳", "擅", "贍", "汕", "潸", "姍", "煽", "跚", "訕", "疝", "鱔"],
|
||||
"shang": ["上", "商", "傷", "尚", "賞", "裳", "熵", "觴", "殤", "垧"],
|
||||
"shao": ["少", "燒", "紹", "稍", "勺", "哨", "韶", "捎", "梢", "芍", "苕", "蛸", "筲"],
|
||||
"she": ["社", "設", "射", "蛇", "舌", "捨", "涉", "赦", "攝", "奢", "賒", "麝", "懾", "灄"],
|
||||
"shei": ["誰"],
|
||||
"shen": ["身", "深", "神", "什", "申", "伸", "審", "慎", "腎", "滲", "沈", "參", "甚", "嬸", "砷", "莘", "哂", "瀋", "糝"],
|
||||
"sheng": ["生", "聲", "勝", "升", "省", "聖", "盛", "剩", "繩", "笙", "甥", "晟"],
|
||||
"shi": ["是", "時", "事", "實", "十", "使", "史", "市", "世", "師", "施", "式", "示", "石", "室", "士", "視", "試", "食", "駛", "始", "勢", "失", "適", "仕", "飾", "濕", "詩", "屍", "虱", "誓", "嗜", "噬", "柿", "拭", "逝", "螫", "諡", "鈰", "鰣"],
|
||||
"shou": ["手", "首", "受", "收", "授", "瘦", "獸", "壽", "售", "守", "狩", "綬", "艏"],
|
||||
"shu": ["書", "數", "樹", "輸", "術", "述", "叔", "屬", "暑", "署", "鼠", "束", "疏", "舒", "淑", "梳", "抒", "殊", "蔬", "孰", "贖", "熟", "恕", "庶", "墅", "俞", "澍", "紓", "倏", "毹"],
|
||||
"shua": ["刷", "耍", "唰"],
|
||||
"shuai": ["帥", "率", "摔", "甩", "蟀"],
|
||||
"shuan": ["栓", "拴", "閂", "涮"],
|
||||
"shuang": ["雙", "爽", "霜", "孀"],
|
||||
"shui": ["水", "說", "稅", "睡", "誰"],
|
||||
"shun": ["順", "瞬", "舜", "吮"],
|
||||
"shuo": ["說", "數", "碩", "朔", "爍", "鑠", "蒴", "搠"],
|
||||
"si": ["四", "死", "思", "絲", "私", "司", "斯", "撕", "似", "肆", "寺", "祀", "廝", "嘶", "俬", "巳", "廝"],
|
||||
"song": ["送", "松", "宋", "頌", "誦", "聳", "嵩", "凇", "菘", "淞"],
|
||||
"sou": ["搜", "艘", "擻", "叟", "嗖", "餿", "溲", "颼", "瞍"],
|
||||
"su": ["速", "素", "蘇", "訴", "俗", "塑", "溯", "宿", "粟", "夙", "簌", "愫", "嗉", "謖"],
|
||||
"suan": ["算", "酸", "蒜", "狻"],
|
||||
"sui": ["隨", "歲", "雖", "碎", "遂", "穗", "隧", "髓", "遂", "祟", "綏", "邃", "燧", "謁"],
|
||||
"sun": ["損", "孫", "筍", "遜", "榫", "蓀", "猻"],
|
||||
"suo": ["所", "鎖", "索", "縮", "瑣", "嗦", "唆", "梭", "嗩", "娑", "蓑"],
|
||||
"ta": ["他", "她", "它", "塔", "踏", "拓", "榻", "獺", "撻", "闒", "遢"],
|
||||
"tai": ["太", "台", "臺", "態", "泰", "抬", "胎", "臺", "鮐", "薹", "駘", "炱", "邰"],
|
||||
"tan": ["談", "探", "彈", "壇", "攤", "貪", "嘆", "潭", "坦", "毯", "痰", "檀", "譚", "忐", "袒", "郯", "澹", "覃"],
|
||||
"tang": ["堂", "唐", "糖", "躺", "趟", "湯", "燙", "塘", "膛", "棠", "搪", "螳", "鏜", "鏜", "鐋", "耥"],
|
||||
"tao": ["套", "逃", "桃", "陶", "討", "濤", "掏", "滔", "萄", "淘", "陶", "燾", "絳", "叨"],
|
||||
"te": ["特", "忒", "慝", "鋱"],
|
||||
"teng": ["疼", "騰", "藤", "滕", "謄"],
|
||||
"ti": ["提", "題", "體", "替", "踢", "梯", "剔", "蹄", "啼", "惕", "涕", "銻", "倜", "悌", "嚏"],
|
||||
"tian": ["天", "田", "填", "甜", "添", "恬", "腆", "殄", "忝", "闐", "祆"],
|
||||
"tiao": ["條", "跳", "調", "挑", "眺", "佻", "祧", "銚", "髫", "鰷"],
|
||||
"tie": ["鐵", "貼", "帖", "萜"],
|
||||
"ting": ["聽", "停", "庭", "挺", "廳", "廷", "亭", "婷", "艇", "汀", "蜓", "霆", "鋌", "莛"],
|
||||
"tong": ["通", "同", "統", "童", "痛", "銅", "桶", "筒", "桐", "彤", "瞳", "佟", "酮", "嗵", "憧"],
|
||||
"tou": ["頭", "投", "透", "偷", "骰"],
|
||||
"tu": ["圖", "土", "突", "途", "吐", "兔", "屠", "徒", "凸", "禿", "荼", "釷", "菟"],
|
||||
"tuan": ["團", "摶", "彖", "湍"],
|
||||
"tui": ["推", "退", "腿", "蛻", "頹", "褪"],
|
||||
"tun": ["吞", "屯", "臀", "囤", "褪", "豚"],
|
||||
"tuo": ["脫", "托", "拖", "妥", "拓", "唾", "陀", "沱", "坨", "駝", "鴕", "橐", "砣", "佗", "跎"],
|
||||
"wa": ["挖", "哇", "蛙", "瓦", "娃", "襪", "凹", "媧", "佤", "腽"],
|
||||
"wai": ["外", "歪", "崴"],
|
||||
"wan": ["完", "晚", "玩", "碗", "彎", "灣", "丸", "婉", "腕", "惋", "宛", "蜿", "豌", "莞", "綰", "剜"],
|
||||
"wang": ["王", "往", "忘", "亡", "望", "網", "旺", "汪", "妄", "罔", "惘", "輞", "尪"],
|
||||
"wei": ["為", "位", "未", "委", "圍", "唯", "威", "偉", "危", "尾", "微", "維", "違", "胃", "餵", "味", "慰", "魏", "衛", "畏", "萎", "偽", "娓", "惟", "巍", "緯", "煒", "韋", "薇", "帷", "渭", "猬", "闈", "洧", "沩"],
|
||||
"wen": ["問", "文", "聞", "溫", "穩", "紋", "吻", "蚊", "雯", "紊", "刎", "璺", "問"],
|
||||
"weng": ["翁", "嗡", "甕", "蓊"],
|
||||
"wo": ["我", "握", "臥", "窩", "沃", "蝸", "幄", "斡", "喔", "倭", "萵", "齷"],
|
||||
"wu": ["無", "五", "物", "務", "武", "舞", "誤", "惡", "午", "吳", "吾", "屋", "烏", "污", "悟", "霧", "捂", "巫", "嗚", "蕪", "梧", "唔", "戊", "塢", "憮", "嫵", "廡", "忤", "兀", "鵡", "鎢", "浯", "蜈", "齬"],
|
||||
"xi": ["西", "系", "息", "希", "席", "習", "細", "喜", "戲", "洗", "惜", "稀", "溪", "錫", "析", "膝", "襲", "昔", "熙", "夕", "兮", "悉", "惜", "熄", "嬉", "汐", "犀", "烯", "曦", "奚", "唏", "唶", "淅", "嘻", "樨", "熙", "蠡", "璽", "徙", "隙", "戲", "餼", "覡", "闟"],
|
||||
"xia": ["下", "夏", "嚇", "廈", "峽", "蝦", "瞎", "霞", "轄", "俠", "暇", "遐", "瑕", "匣", "黠", "硤", "罅"],
|
||||
"xian": ["先", "現", "線", "限", "縣", "顯", "險", "鮮", "獻", "賢", "閒", "仙", "鹹", "羨", "陷", "憲", "餡", "羨", "掀", "纖", "閑", "涎", "嫻", "銜", "冼", "燹", "蜆", "筧", "薟", "躚"],
|
||||
"xiang": ["想", "向", "相", "鄉", "香", "響", "享", "像", "象", "項", "巷", "降", "箱", "祥", "湘", "詳", "翔", "享", "襄", "鑲", "廂", "驤", "薌", "餉", "緗", "嚮", "嚮"],
|
||||
"xiao": ["小", "笑", "效", "消", "校", "銷", "曉", "蕭", "肖", "削", "孝", "宵", "硝", "霄", "淆", "嘯", "驍", "梟", "瀟", "簫", "筱", "驍", "嘵", "蟰"],
|
||||
"xie": ["些", "寫", "謝", "協", "鞋", "血", "歇", "斜", "脅", "諧", "攜", "洩", "卸", "懈", "蟹", "邪", "械", "屑", "偕", "褻", "榭", "廨", "瀣", "薤", "躞", "頡", "擷"],
|
||||
"xin": ["新", "心", "信", "辛", "欣", "薪", "馨", "鑫", "芯", "鋅", "昕", "忻", "歆", "鐔", "囟"],
|
||||
"xing": ["行", "星", "形", "性", "姓", "興", "刑", "型", "幸", "杏", "腥", "猩", "邢", "悻", "滎", "滎", "餳"],
|
||||
"xiong": ["兄", "胸", "兇", "雄", "熊", "匈", "洶", "夐"],
|
||||
"xiu": ["修", "休", "秀", "宿", "袖", "秀", "繡", "羞", "臭", "朽", "嗅", "鏽", "饈", "貅", "鵂", "岫"],
|
||||
"xu": ["須", "需", "許", "續", "序", "徐", "虛", "緒", "蓄", "敘", "旭", "恤", "墟", "絮", "婿", "栩", "戌", "詡", "洫", "溆", "酗", "糈", "勖", "昫", "盱", "蓿"],
|
||||
"xuan": ["選", "宣", "懸", "旋", "玄", "軒", "喧", "炫", "渲", "萱", "漩", "璇", "癬", "炫", "煊", "諼", "鋗"],
|
||||
"xue": ["學", "雪", "血", "穴", "謔", "噱", "鱈"],
|
||||
"xun": ["訊", "迅", "尋", "巡", "訓", "詢", "循", "旬", "熏", "勳", "薰", "潯", "馴", "汛", "遜", "殉", "徇", "巽", "塤", "曛", "窯", "鱘"],
|
||||
"ya": ["呀", "壓", "牙", "亞", "雅", "鴨", "押", "芽", "涯", "訝", "崖", "啞", "衙", "軋", "蚜", "崖", "睚", "痖"],
|
||||
"yan": ["言", "研", "眼", "嚴", "演", "驗", "煙", "顏", "鹽", "延", "沿", "燕", "宴", "炎", "掩", "演", "衍", "岩", "研", "艷", "雁", "焰", "厭", "彥", "諺", "堰", "硯", "嫣", "閻", "焉", "淹", "偃", "儼", "兗", "讌", "讞", "筵", "蜓", "鼴", "罨", "剡", "鄢", "閆", "滟", "妍", "琰", "罳"],
|
||||
"yang": ["樣", "陽", "洋", "養", "央", "揚", "羊", "氧", "仰", "癢", "漾", "殃", "秧", "恙", "颺", "煬", "佯", "瘍", "鞅", "樣"],
|
||||
"yao": ["要", "藥", "搖", "遙", "腰", "邀", "耀", "瑤", "姚", "咬", "堯", "鑰", "謠", "夭", "妖", "窯", "杳", "舀", "徭", "珧", "軺", "銚", "鰩", "么", "瘧"],
|
||||
"ye": ["也", "業", "夜", "葉", "爺", "野", "液", "謁", "頁", "邪", "掖", "曳", "腋", "噎", "鄴", "曄", "燁", "鐺"],
|
||||
"yi": ["一", "以", "已", "意", "義", "議", "易", "藝", "醫", "億", "憶", "移", "依", "疑", "譯", "異", "益", "亦", "役", "抑", "譯", "溢", "宜", "儀", "逸", "怡", "姨", "夷", "遺", "倚", "椅", "伊", "毅", "誼", "翌", "熠", "臆", "肄", "懿", "裔", "縊", "軼", "貽", "漪", "迤", "弋", "噫", "屹", "猗", "嶷", "揖", "壹", "挹", "佚", "詣", "懌", "懿", "曀", "繹", "驛", "羿", "釔", "鐿", "瘞", "苡", "薏", "悒", "挹", "嗌", "峄"],
|
||||
"yin": ["因", "音", "引", "銀", "印", "飲", "隱", "陰", "吟", "尹", "殷", "茵", "蔭", "垠", "夤", "齦", "湮", "氤", "胤", "鄞", "喑", "洇", "狺"],
|
||||
"ying": ["應", "英", "營", "迎", "影", "贏", "硬", "映", "盈", "穎", "瑩", "鷹", "嬰", "櫻", "瀛", "蠅", "瀛", "嬴", "罌", "縈", "楹", "熒", "螢", "瀅", "瓔", "鸚", "膺", "瀠", "瀛"],
|
||||
"yo": ["喲", "唷"],
|
||||
"yong": ["用", "永", "擁", "勇", "湧", "庸", "泳", "庸", "傭", "踴", "蛹", "恿", "鏞", "傭", "臃", "癰", "邕", "鏞", "墉", "慵", "灉"],
|
||||
"you": ["有", "又", "由", "友", "右", "優", "油", "遊", "幼", "尤", "憂", "幽", "悠", "誘", "佑", "釉", "柚", "酉", "猶", "黝", "卣", "疣", "蚰", "宥", "侑", "呦", "銪", "牖", "蝣", "蝤", "繇", "輶", "夂"],
|
||||
"yu": ["與", "於", "語", "雨", "魚", "遇", "欲", "育", "域", "預", "愈", "玉", "宇", "余", "譽", "獄", "漁", "愚", "輿", "寓", "御", "裕", "郁", "喻", "逾", "娛", "吁", "逾", "瑜", "馭", "毓", "諭", "豫", "隅", "昱", "覦", "覦", "歟", "煜", "燠", "聿", "鈺", "嶼", "傴", "圄", "圉", "禺", "芋", "飫", "閾", "嫗", "煜", "鷸", "譽", "瘐", "窳", "餘", "雩", "齬", "禺", "滪", "窳", "肀"],
|
||||
"yuan": ["元", "原", "員", "圓", "院", "源", "遠", "願", "緣", "園", "怨", "冤", "援", "袁", "淵", "猿", "轅", "媛", "垣", "沅", "塬", "圜", "鴛", "鳶", "螈", "爰", "瑗", "掾", "圜"],
|
||||
"yue": ["月", "約", "越", "樂", "曰", "閱", "躍", "悅", "岳", "粵", "淵", "曰", "鑰", "櫟", "鉞", "瀹", "龠", "刖", "軏"],
|
||||
"yun": ["雲", "運", "員", "韻", "勻", "允", "孕", "蘊", "暈", "隕", "耘", "紜", "韻", "慍", "殞", "惲", "醞", "狁", "勻", "鄖"],
|
||||
"za": ["雜", "砸", "咂", "拶"],
|
||||
"zai": ["在", "再", "載", "災", "宰", "栽", "崽", "哉"],
|
||||
"zan": ["咱", "讚", "暫", "讚", "拶", "昝", "簪", "糌"],
|
||||
"zang": ["藏", "臟", "葬", "臟", "臧", "奘", "駔"],
|
||||
"zao": ["早", "造", "遭", "燥", "澡", "藻", "棗", "躁", "鑿", "蚤", "皁", "竈"],
|
||||
"ze": ["則", "責", "擇", "澤", "側", "仄", "迮", "幘", "賾", "箦"],
|
||||
"zei": ["賊"],
|
||||
"zen": ["怎", "譖"],
|
||||
"zeng": ["增", "贈", "憎", "甑", "繒", "罾"],
|
||||
"zha": ["炸", "紮", "查", "渣", "扎", "眨", "柵", "詐", "乍", "榨", "吒", "砟", "蚱", "齇", "鮓", "醡"],
|
||||
"zhai": ["債", "寨", "齋", "摘", "窄", "翟", "瘵"],
|
||||
"zhan": ["站", "展", "戰", "佔", "斬", "瞻", "沾", "詹", "盞", "嶄", "湛", "綻", "輾", "搌", "旃"],
|
||||
"zhang": ["長", "張", "章", "掌", "丈", "帳", "仗", "脹", "障", "彰", "漳", "璋", "嶂", "幛", "瘴", "鄣"],
|
||||
"zhao": ["找", "照", "招", "朝", "趙", "兆", "罩", "肇", "詔", "沼", "爪", "召", "昭", "嘲", "濯", "櫂", "笊"],
|
||||
"zhe": ["這", "著", "者", "折", "哲", "蔗", "遮", "轍", "浙", "褶", "蟄", "鷓", "謫", "輒", "晢", "蜇"],
|
||||
"zhei": ["這"],
|
||||
"zhen": ["真", "針", "鎮", "陣", "珍", "震", "振", "診", "枕", "斟", "甄", "臻", "疹", "砧", "貞", "偵", "軫", "縝", "榛", "楨", "賑", "禎", "畛", "圳", "蓁", "斟"],
|
||||
"zheng": ["正", "政", "整", "爭", "證", "鄭", "征", "蒸", "掙", "睜", "錚", "崢", "箏", "怔", "拯", "鉦", "幀", "諍", "癥"],
|
||||
"zhi": ["之", "知", "只", "至", "指", "支", "直", "值", "制", "質", "治", "職", "紙", "誌", "置", "智", "植", "枝", "止", "址", "芝", "脂", "肢", "旨", "侄", "稚", "滯", "摯", "緻", "秩", "幟", "峙", "窒", "幟", "炙", "幟", "幟", "卮", "芷", "梔", "趾", "蜘", "躓", "雉", "膣", "騭", "躑", "豸", "幟", "輊", "贄", "鷙", "痣", "蛭", "幟"],
|
||||
"zhong": ["中", "種", "重", "眾", "終", "鐘", "忠", "腫", "仲", "衷", "鍾", "盅", "舯", "螽", "冢"],
|
||||
"zhou": ["周", "州", "洲", "舟", "皺", "軸", "宙", "粥", "肘", "帚", "胄", "紂", "咒", "晝", "縐", "碡", "僽"],
|
||||
"zhu": ["主", "住", "注", "著", "助", "築", "逐", "祝", "豬", "珠", "朱", "諸", "竹", "株", "燭", "矚", "駐", "鑄", "煮", "拄", "囑", "矚", "佇", "杼", "渚", "瀦", "躅", "櫫", "褚", "苧", "洙", "瀦", "麈", "瘃"],
|
||||
"zhua": ["抓", "爪"],
|
||||
"zhuai": ["轉", "拽"],
|
||||
"zhuan": ["專", "轉", "傳", "賺", "磚", "撰", "篆", "饌", "顓"],
|
||||
"zhuang": ["裝", "狀", "莊", "撞", "壯", "幢", "妝", "樁"],
|
||||
"zhui": ["追", "墜", "綴", "贅", "縋", "惴", "騅"],
|
||||
"zhun": ["準", "諄", "肫", "窀"],
|
||||
"zhuo": ["著", "桌", "捉", "卓", "濁", "灼", "酌", "拙", "琢", "茁", "濁", "擢", "倬", "涿", "浞", "禚", "斫"],
|
||||
"zi": ["子", "自", "字", "資", "紫", "茲", "姿", "咨", "滋", "孜", "籽", "梓", "漬", "諮", "姊", "孳", "恣", "甾", "輜", "錙", "齜", "耔", "笫"],
|
||||
"zong": ["總", "從", "縱", "綜", "宗", "棕", "蹤", "鬃", "粽", "偬", "綜", "腙"],
|
||||
"zou": ["走", "奏", "鄒", "揍", "騶", "諏", "陬", "鯫"],
|
||||
"zu": ["足", "族", "組", "租", "阻", "卒", "俎", "詛", "菹"],
|
||||
"zuan": ["鑽", "纂", "攢", "繵", "躜"],
|
||||
"zui": ["最", "罪", "嘴", "醉", "蕞"],
|
||||
"zun": ["尊", "遵", "樽", "撙"],
|
||||
"zuo": ["做", "作", "座", "左", "昨", "佐", "琢", "撮", "唑", "嘬", "怍", "祚", "胙"]
|
||||
}
|
||||
}
|
||||
@@ -17,28 +17,14 @@
|
||||
},
|
||||
{
|
||||
"code": "es",
|
||||
"name": "Español",
|
||||
"name": "Español (Latinoamérica)",
|
||||
"defaultSkinZip": "",
|
||||
"layouts": [
|
||||
{
|
||||
"variant": "qwerty",
|
||||
"title": "QWERTY",
|
||||
"profileId": "es_ES_qwerty",
|
||||
"layoutJsonId": "letters",
|
||||
"suggestionEngine": "latin"
|
||||
},
|
||||
{
|
||||
"variant": "azerty",
|
||||
"title": "AZERTY",
|
||||
"profileId": "es_ES_azerty",
|
||||
"layoutJsonId": "letters_azerty",
|
||||
"suggestionEngine": "latin"
|
||||
},
|
||||
{
|
||||
"variant": "qwertz",
|
||||
"title": "QWERTZ",
|
||||
"profileId": "es_ES_qwertz",
|
||||
"layoutJsonId": "letters_qwertz",
|
||||
"profileId": "es_419_qwerty",
|
||||
"layoutJsonId": "letters_es",
|
||||
"suggestionEngine": "latin"
|
||||
}
|
||||
]
|
||||
@@ -52,7 +38,7 @@
|
||||
"variant": "qwerty",
|
||||
"title": "QWERTY",
|
||||
"profileId": "pt_PT_qwerty",
|
||||
"layoutJsonId": "letters",
|
||||
"layoutJsonId": "letters_pt",
|
||||
"suggestionEngine": "latin"
|
||||
}
|
||||
]
|
||||
@@ -66,7 +52,7 @@
|
||||
"variant": "pinyin",
|
||||
"title": "拼音(繁體)",
|
||||
"profileId": "zh_Hant_TW_pinyin",
|
||||
"layoutJsonId": "letters",
|
||||
"layoutJsonId": "letters_zh_hant_pinyin",
|
||||
"suggestionEngine": "pinyin_traditional"
|
||||
},
|
||||
{
|
||||
@@ -94,24 +80,10 @@
|
||||
"variant": "qwerty",
|
||||
"title": "QWERTY",
|
||||
"profileId": "id_ID_qwerty",
|
||||
"layoutJsonId": "letters",
|
||||
"layoutJsonId": "letters_id",
|
||||
"suggestionEngine": "latin"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"code": "zh-Hans",
|
||||
"name": "简体中文",
|
||||
"defaultSkinZip": "",
|
||||
"layouts": [
|
||||
{
|
||||
"variant": "qwerty",
|
||||
"title": "QWERTY",
|
||||
"profileId": "zh_Hans_CN_qwerty",
|
||||
"layoutJsonId": "letters",
|
||||
"suggestionEngine": "pinyin_simplified"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -35,6 +35,11 @@
|
||||
04286A062ECC81B200CE730C /* KBSkinService.m in Sources */ = {isa = PBXBuildFile; fileRef = 04286A052ECC81B200CE730C /* KBSkinService.m */; };
|
||||
04286A0B2ECD88B400CE730C /* KeyboardAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04286A0A2ECD88B400CE730C /* KeyboardAssets.xcassets */; };
|
||||
04286A132ECDEBF900CE730C /* KBSkinIconMap.strings in Resources */ = {isa = PBXBuildFile; fileRef = 041007D12ECE012000D203BB /* KBSkinIconMap.strings */; };
|
||||
043213A32F5528140065C888 /* bopomofo_to_chinese.json in Resources */ = {isa = PBXBuildFile; fileRef = 043213A12F5528140065C888 /* bopomofo_to_chinese.json */; };
|
||||
043213A42F5528140065C888 /* pinyin_to_traditional.json in Resources */ = {isa = PBXBuildFile; fileRef = 043213A22F5528140065C888 /* pinyin_to_traditional.json */; };
|
||||
043213A62F5561FD0065C888 /* kb_keyboard_layouts_i18n.json in Resources */ = {isa = PBXBuildFile; fileRef = 043213A52F5561FD0065C888 /* kb_keyboard_layouts_i18n.json */; };
|
||||
043213A92F5566EF0065C888 /* kb_input_profiles.json in Resources */ = {isa = PBXBuildFile; fileRef = 043213A72F5566EF0065C888 /* kb_input_profiles.json */; };
|
||||
043213AA2F5566EF0065C888 /* kb_input_profiles.json in Resources */ = {isa = PBXBuildFile; fileRef = 043213A72F5566EF0065C888 /* kb_input_profiles.json */; };
|
||||
043FBCD22EAF97630036AFE1 /* KBPermissionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 04C6EAE12EAF940F0089C901 /* KBPermissionViewController.m */; };
|
||||
0450AA742EF013D000B6AF06 /* KBEmojiCollectionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0450AA732EF013D000B6AF06 /* KBEmojiCollectionCell.m */; };
|
||||
0450AAE22EF03D5100B6AF06 /* KBPerson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0450AAE12EF03D5100B6AF06 /* KBPerson.swift */; };
|
||||
@@ -383,6 +388,10 @@
|
||||
04286A042ECC81B200CE730C /* KBSkinService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinService.h; sourceTree = "<group>"; };
|
||||
04286A052ECC81B200CE730C /* KBSkinService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinService.m; sourceTree = "<group>"; };
|
||||
04286A0A2ECD88B400CE730C /* KeyboardAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = KeyboardAssets.xcassets; sourceTree = "<group>"; };
|
||||
043213A12F5528140065C888 /* bopomofo_to_chinese.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = bopomofo_to_chinese.json; sourceTree = "<group>"; };
|
||||
043213A22F5528140065C888 /* pinyin_to_traditional.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = pinyin_to_traditional.json; sourceTree = "<group>"; };
|
||||
043213A52F5561FD0065C888 /* kb_keyboard_layouts_i18n.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = kb_keyboard_layouts_i18n.json; sourceTree = "<group>"; };
|
||||
043213A72F5566EF0065C888 /* kb_input_profiles.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = kb_input_profiles.json; sourceTree = "<group>"; };
|
||||
0450AA722EF013D000B6AF06 /* KBEmojiCollectionCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBEmojiCollectionCell.h; sourceTree = "<group>"; };
|
||||
0450AA732EF013D000B6AF06 /* KBEmojiCollectionCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBEmojiCollectionCell.m; sourceTree = "<group>"; };
|
||||
0450AAE02EF03D5100B6AF06 /* keyBoard-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "keyBoard-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
@@ -917,8 +926,11 @@
|
||||
children = (
|
||||
A1B2C3EC2F20000000000001 /* kb_words.txt */,
|
||||
A1B2C3F02F20000000000002 /* kb_keyboard_layout_config.json */,
|
||||
043213A52F5561FD0065C888 /* kb_keyboard_layouts_i18n.json */,
|
||||
0498BDF42EEC50EE006CC1D5 /* emoji_categories.json */,
|
||||
041007D12ECE012000D203BB /* KBSkinIconMap.strings */,
|
||||
043213A12F5528140065C888 /* bopomofo_to_chinese.json */,
|
||||
043213A22F5528140065C888 /* pinyin_to_traditional.json */,
|
||||
);
|
||||
path = Resource;
|
||||
sourceTree = "<group>";
|
||||
@@ -1039,6 +1051,14 @@
|
||||
path = Chat;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
043213A82F5566EF0065C888 /* Resource */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
043213A72F5566EF0065C888 /* kb_input_profiles.json */,
|
||||
);
|
||||
path = Resource;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0450ABFB2EF11E4400B6AF06 /* Converts */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -2079,6 +2099,7 @@
|
||||
04FC98002EB36AAB007BD342 /* Shared */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
043213A82F5566EF0065C888 /* Resource */,
|
||||
04A9FE1F2EB893F10020DB6D /* Localization */,
|
||||
04FC98012EB36AAB007BD342 /* KBConfig.h */,
|
||||
04122F592EC5D40000EF7AB3 /* KBAPI.h */,
|
||||
@@ -2267,7 +2288,11 @@
|
||||
A1B2C3ED2F20000000000001 /* kb_words.txt in Resources */,
|
||||
A1B2C3F12F20000000000002 /* kb_keyboard_layout_config.json in Resources */,
|
||||
0498BDF52EEC50EE006CC1D5 /* emoji_categories.json in Resources */,
|
||||
043213A32F5528140065C888 /* bopomofo_to_chinese.json in Resources */,
|
||||
043213A42F5528140065C888 /* pinyin_to_traditional.json in Resources */,
|
||||
043213AA2F5566EF0065C888 /* kb_input_profiles.json in Resources */,
|
||||
04286A0B2ECD88B400CE730C /* KeyboardAssets.xcassets in Resources */,
|
||||
043213A62F5561FD0065C888 /* kb_keyboard_layouts_i18n.json in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -2291,6 +2316,7 @@
|
||||
04C6EABD2EAF86530089C901 /* Main.storyboard in Resources */,
|
||||
046086CB2F1A092500757C95 /* comments_mock.json in Resources */,
|
||||
04E038E32F20E500002CA5A0 /* deepgramAPI.md in Resources */,
|
||||
043213A92F5566EF0065C888 /* kb_input_profiles.json in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -583,12 +583,15 @@ typedef void(^KBInputProfileSelectHandler)(NSString *languageCode, NSString *lay
|
||||
return;
|
||||
}
|
||||
|
||||
// 严格策略:该语言未配置默认皮肤时,不允许切换语言。
|
||||
KBInputProfile *profile = [[KBInputProfileManager sharedManager] profileForLanguageCode:languageCode];
|
||||
NSString *zipName = profile.defaultSkinZip;
|
||||
|
||||
if (zipName.length == 0) {
|
||||
[KBHUD showInfo:KBLocalized(@"Please configure a default skin for this language before switching.")];
|
||||
if (completion) { completion(NO); }
|
||||
NSLog(@"[KBPersonInfoVC] No defaultSkinZip configured for %@, skipping skin installation", languageCode);
|
||||
[self commitInputProfileSwitchWithLanguageCode:languageCode
|
||||
layoutVariant:layoutVariant
|
||||
profileId:profileId];
|
||||
if (completion) { completion(YES); }
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user