Sauce

CI Release version License: MIT Carthage compatible Version Platform SPM supported

映射 macOS 中各种键盘布局源和键码。(例如:QWERTY, Dvorak)

动机

Carbon.framework 中定义的键码仅针对 ANSI 标准的 US 键盘。 因此,我们只能获得 QWERTY 键盘布局的键码。(例如:kVK_ANSI_V
在 QWERTY 以外的布局中(例如 Dvorak),虚拟键码是不同的。

键盘布局 按键 键码
QWERTY v 9
Dvorak v 47

创建此库的目的是映射输入源的键码,使其能够在各种键盘布局中获取正确的键码。

用法

CocoaPods

pod 'Sauce'

Carthage

github "Clipy/Sauce"

示例

键码

获取当前输入源的键码。

let keyCode = Sauce.shared.keyCode(for: .v)

按键

获取当前输入源的 Key

let key = Sauce.shared.key(for: keyCode)

字符

获取当前输入源的字符。

let character = Sauce.shared.character(for: keyCode, carbonModifiers: shiftKey)
let character = Sauce.shared.character(for: keyCode, cocoaModifiers: [.shift])

通知

NSNotification.Name.SauceEnabledKeyboardInputSourcesChanged

SauceEnabledKeyboardInputSourcesChanged 与 Carbon.framework 中的 kTISNotifyEnabledKeyboardInputSourcesChanged 相同

NSNotification.Name.SauceSelectedKeyboardInputSourceChanged

SauceSelectedKeyboardInputSourceChanged 不同于 kTISNotifySelectedKeyboardInputSourceChanged,并且仅在输入源 ID 更改时通知。
由于它经过过滤和通知,请不要将其用于与普通 kTISNotifySelectedKeyboardInputSourceChanged 相同的目的。

NSNotification.Name.SauceSelectedKeyboardKeyCodesChanged

通过使用此通知,可以检测到设置更改(使用相同的键盘布局时),输入源从 QWERTY 更改为 Dvorak 时等等。