// // KBKeyboardLayoutConfig.h // CustomKeyboard // // 键盘布局配置模型(由 JSON 驱动) // #import #import NS_ASSUME_NONNULL_BEGIN @interface KBKeyboardLayoutMetrics : NSObject @property (nonatomic, strong, nullable) NSNumber *rowSpacing; @property (nonatomic, strong, nullable) NSNumber *topInset; @property (nonatomic, strong, nullable) NSNumber *bottomInset; @property (nonatomic, strong, nullable) NSNumber *keyHeight; @property (nonatomic, strong, nullable) NSNumber *edgeInset; @property (nonatomic, strong, nullable) NSNumber *gap; @property (nonatomic, strong, nullable) NSNumber *letterWidth; @property (nonatomic, strong, nullable) NSNumber *controlWidth; @property (nonatomic, strong, nullable) NSNumber *sendWidth; @property (nonatomic, strong, nullable) NSNumber *symbolsWideWidth; @property (nonatomic, strong, nullable) NSNumber *symbolsSideWidth; @end @interface KBKeyboardLayoutFonts : NSObject @property (nonatomic, strong, nullable) NSNumber *letter; @property (nonatomic, strong, nullable) NSNumber *digit; @property (nonatomic, strong, nullable) NSNumber *symbol; @property (nonatomic, strong, nullable) NSNumber *mode; @property (nonatomic, strong, nullable) NSNumber *space; @property (nonatomic, strong, nullable) NSNumber *send; @end @interface KBKeyboardKeyDef : NSObject @property (nonatomic, copy, nullable) NSString *type; @property (nonatomic, copy, nullable) NSString *title; @property (nonatomic, copy, nullable) NSString *selectedTitle; @property (nonatomic, copy, nullable) NSString *symbolName; @property (nonatomic, copy, nullable) NSString *selectedSymbolName; @property (nonatomic, copy, nullable) NSString *font; @property (nonatomic, copy, nullable) NSString *width; @property (nonatomic, strong, nullable) NSNumber *widthValue; @property (nonatomic, copy, nullable) NSString *backgroundColor; @end @interface KBKeyboardRowItem : NSObject @property (nonatomic, copy, nullable) NSString *itemId; @property (nonatomic, copy, nullable) NSString *width; @property (nonatomic, strong, nullable) NSNumber *widthValue; + (NSArray *)itemsFromRawArray:(NSArray *)raw; @end @interface KBKeyboardRowSegments : NSObject @property (nonatomic, strong, nullable) NSArray *left; @property (nonatomic, strong, nullable) NSArray *center; @property (nonatomic, strong, nullable) NSArray *right; - (NSArray *)leftItems; - (NSArray *)centerItems; - (NSArray *)rightItems; @end @interface KBKeyboardRowConfig : NSObject @property (nonatomic, strong, nullable) NSNumber *height; @property (nonatomic, strong, nullable) NSNumber *insetLeft; @property (nonatomic, strong, nullable) NSNumber *insetRight; @property (nonatomic, strong, nullable) NSNumber *gap; @property (nonatomic, copy, nullable) NSString *align; @property (nonatomic, strong, nullable) NSArray *items; @property (nonatomic, strong, nullable) KBKeyboardRowSegments *segments; - (NSArray *)resolvedItems; @end @interface KBKeyboardLayout : NSObject @property (nonatomic, strong, nullable) NSArray *rows; @end @interface KBKeyboardLayoutConfig : NSObject @property (nonatomic, assign) CGFloat designWidth; @property (nonatomic, strong, nullable) KBKeyboardLayoutMetrics *metrics; @property (nonatomic, strong, nullable) KBKeyboardLayoutFonts *fonts; @property (nonatomic, copy, nullable) NSString *defaultKeyBackground; @property (nonatomic, strong, nullable) NSDictionary *keyDefs; @property (nonatomic, strong, nullable) NSDictionary *layouts; + (nullable instancetype)sharedConfig; + (nullable instancetype)configFromJSONData:(NSData *)data; - (CGFloat)scaledValue:(CGFloat)designValue; - (CGFloat)keyboardAreaDesignHeight; - (CGFloat)keyboardAreaScaledHeight; - (nullable KBKeyboardLayout *)layoutForName:(NSString *)name; - (nullable KBKeyboardKeyDef *)keyDefForIdentifier:(NSString *)identifier; @end NS_ASSUME_NONNULL_END