// // KBKey.h // CustomKeyboard // // 简单的键位数据模型,用于描述键盘上的一个键。 // #import #import typedef NS_ENUM(NSInteger, KBKeyType) { KBKeyTypeCharacter = 0, // 普通字符输出 KBKeyTypeBackspace, // 删除 KBKeyTypeShift, // 大小写切换 KBKeyTypeModeChange, // 模式切换(如 123/ABC) KBKeyTypeSpace, // 空格 KBKeyTypeReturn, // 回车/发送 KBKeyTypeGlobe, // 系统地球键 KBKeyTypeCustom, // 自定义功能占位 KBKeyTypeSymbolsToggle // 数字面板内的“#+=/123”切换 }; /// 字母键的大小写变体标记(非字母键使用 KBKeyCaseVariantNone) typedef NS_ENUM(NSInteger, KBKeyCaseVariant) { KBKeyCaseVariantNone = 0, KBKeyCaseVariantLower = 1, KBKeyCaseVariantUpper = 2, }; @interface KBKey : NSObject @property (nonatomic, assign) KBKeyType type; @property (nonatomic, copy) NSString *title; // 显示标题 @property (nonatomic, copy) NSString *output; // 字符键插入的文本 /// 逻辑按键标识,用于皮肤映射(如 @"letter_q" @"space" @"backspace") @property (nonatomic, copy, nullable) NSString *identifier; /// 字母键的大小写变体(便于皮肤为大小写准备不同图) @property (nonatomic, assign) KBKeyCaseVariant caseVariant; + (instancetype)keyWithTitle:(NSString *)title output:(NSString *)output; + (instancetype)keyWithTitle:(NSString *)title type:(KBKeyType)type; /// 通用构造方法:用于指定 identifier,便于皮肤做精细控制 + (instancetype)keyWithIdentifier:(nullable NSString *)identifier title:(NSString *)title output:(NSString *)output type:(KBKeyType)type; @end