【发布时间】:2021-12-31 02:16:41
【问题描述】:
是否有 API 或方法可以检测 Mac 笔记本使用的三种主要键盘布局(ANSI、ISO 或 Japanese)中的哪一种?
经过相当广泛的研究,我找不到任何有关此的信息。
【问题讨论】:
标签: swift macos keyboard hardware macos-carbon
是否有 API 或方法可以检测 Mac 笔记本使用的三种主要键盘布局(ANSI、ISO 或 Japanese)中的哪一种?
经过相当广泛的研究,我找不到任何有关此的信息。
【问题讨论】:
标签: swift macos keyboard hardware macos-carbon
经过无数小时的搜索和翻阅满是灰尘的手册,我终于找到了一种方法来确定 Mac 上的物理键盘布局类型。
通过使用古老的Carbon API,您可以结合LMGetKbdType 调用KBGetLayoutType 以返回所需的常量。这在 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")
}
【讨论】: