检测内部 Apple 硬件键盘的布局
Detecting the layout of an internal Apple hardware keyboard
是否有 API 或检测三种主要键盘布局中哪一种的方法 – ANSI
、ISO
或 Japanese
– Mac笔记本用途?
经过相当广泛的研究,我找不到任何关于此的信息。
在尘封已久的手册中进行了无数小时的搜索和挖掘之后,我终于找到了一种方法来确定附加到 Mac 的物理键盘布局类型。
通过使用古老的 Carbon
API,您可以调用 KBGetLayoutType
与 LMGetKbdType
组合以 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")
}
是否有 API 或检测三种主要键盘布局中哪一种的方法 – ANSI
、ISO
或 Japanese
– Mac笔记本用途?
经过相当广泛的研究,我找不到任何关于此的信息。
在尘封已久的手册中进行了无数小时的搜索和挖掘之后,我终于找到了一种方法来确定附加到 Mac 的物理键盘布局类型。
通过使用古老的 Carbon
API,您可以调用 KBGetLayoutType
与 LMGetKbdType
组合以 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")
}