in src/keyboard_mac.mm [149:175]
napi_value _GetCurrentKeyboardLayout(napi_env env, napi_callback_info info) {
napi_value result;
NAPI_CALL(env, napi_create_object(env, &result));
TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
CFStringRef sourceId = (CFStringRef) TISGetInputSourceProperty(source, kTISPropertyInputSourceID);
if(sourceId) {
NAPI_CALL(env, napi_set_named_property_string_utf8(env, result, "id", std::string([(NSString *)sourceId UTF8String]).c_str()));
}
TISInputSourceRef nameSource = TISCopyCurrentKeyboardInputSource();
CFStringRef localizedName = (CFStringRef) TISGetInputSourceProperty(nameSource, kTISPropertyLocalizedName);
if(localizedName) {
NAPI_CALL(env, napi_set_named_property_string_utf8(env, result, "localizedName", std::string([(NSString *)localizedName UTF8String]).c_str()));
}
NSArray* languages = (NSArray *) TISGetInputSourceProperty(source, kTISPropertyInputSourceLanguages);
if (languages && [languages count] > 0) {
NSString* lang = [languages objectAtIndex:0];
if (lang) {
NAPI_CALL(env, napi_set_named_property_string_utf8(env, result, "lang", std::string([lang UTF8String]).c_str()));
}
}
return result;
}