如何检测苹果Mac笔记本内置硬件键盘的ANSI/ISO/日式布局?
检测Mac硬件键盘布局的方法
目前可以通过macOS原生渠道实现ANSI、ISO、Japanese三类硬件键盘布局的检测,具体操作如下:
方法1:终端命令快速查询
直接在终端执行以下命令即可获取结果:
defaults read -g AppleKeyboardType
返回数值对应布局类型:
- 返回
0:ANSI布局(常见于美版、国行等多数地区发售的Mac) - 返回
1:ISO布局(常见于欧洲地区发售的Mac,特征为左Shift按键较短、Enter键为倒L形) - 返回
2:Japanese(JIS)布局(常见于日版Mac,按键印有假名标识、空格按键长度更短)
方法2:开发者API调用(适用于应用集成)
可以直接读取系统全局配置,或者调用AppKit框架的原生接口获取,结果不受软件输入法布局切换影响,仅对应物理键盘的硬件类型:
Swift 示例代码
import AppKit func getHardwareKeyboardType() -> String { // 方式1:读取全局UserDefaults配置 let keyboardType = UserDefaults.standard.integer(forKey: "AppleKeyboardType") // 方式2:调用NSEvent原生接口,结果一致 // let keyboardType = NSEvent.keyboardType.rawValue switch keyboardType { case 0: return "ANSI" case 1: return "ISO" case 2: return "Japanese" default: return "未知布局" } }
Objective-C 示例代码
#import <AppKit/AppKit.h> - (NSString *)getHardwareKeyboardType { NSInteger keyboardType = [[NSUserDefaults standardUserDefaults] integerForKey:@"AppleKeyboardType"]; switch (keyboardType) { case 0: return @"ANSI"; case 1: return @"ISO"; case 2: return @"Japanese"; default: return @"未知布局"; } }
内容的提问来源于stack exchange,提问作者Tzar
相关产品推荐
相关产品推荐

