检测内部 Apple 硬件键盘的布局

Detecting the layout of an internal Apple hardware keyboard

是否有 API 或检测三种主要键盘布局中哪一种的方法 – ANSIISOJapanese – Mac笔记本用途?

经过相当广泛的研究,我找不到任何关于此的信息。

在尘封已久的手册中进行了无数小时的搜索和挖掘之后,我终于找到了一种方法来确定附加到 Mac 的物理键盘布局类型。

通过使用古老的 Carbon API,您可以调用 KBGetLayoutTypeLMGetKbdType 组合以 return 所需的常量。令人惊讶的是,这在 macOS Monterey 中仍然有效。

对于将来寻找解决方案的任何人,这里使用 Swift 5.5:

import Carbon

// Determine the physical keyboard layout type.
// macOS recognizes three keyboard types: ANSI, JIS (Japan), and ISO (Europe).

let physicalKeyboardLayoutType = KBGetLayoutType(Int16(LMGetKbdType()))
switch physicalKeyboardLayoutType {
case _ where physicalKeyboardLayoutType == kKeyboardJIS:
    print("JIS")
case _ where physicalKeyboardLayoutType == kKeyboardISO:
    print("ISO")
default:
    print("ANSI")
}