summaryrefslogtreecommitdiff
path: root/macos/Sources/Helpers/KeyboardLayout.swift
blob: 8e573f495324a62265ea2b963f5736ad2e596afa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import Carbon

class KeyboardLayout {
    /// Return a string ID of the current keyboard input source.
    static var id: String? {
        if let source = TISCopyCurrentKeyboardInputSource()?.takeRetainedValue(),
           let sourceIdPointer = TISGetInputSourceProperty(source, kTISPropertyInputSourceID) {
            let sourceId = unsafeBitCast(sourceIdPointer, to: CFString.self)
            return sourceId as String
        }

        return nil
    }
}