Rama's Extra Blueprint Nodes for UE5, No C++ Required!

GetKeyboardLanguage

#if PLATFORM_WINDOWS
//#if PLATFORM_WINRT
//#endif
//#if PLATFORM_WINRT_ARM
//#endif
#include "Runtime/Core/Public/Windows/AllowWindowsPlatformTypes.h"
#endif
#if PLATFORM_LINUX
#include "XKeyboard.h"
#endif
#if PLATFORM_MAC
#include <Carbon/Carbon.h>
#endif
#if PLATFORM_PS4

#endif
#if PLATFORM_XBOXONE

#endif
#if PLATFORM_SWITCH

#endif
#if PLATFORM_ANDROID

#endif
#if PLATFORM_IOS

#endif
#if PLATFORM_TVOS

#endif
#if PLATFORM_DESKTOP

#endif
#if PLATFORM_LUMIN

#endif
#if PLATFORM_APPLE

#endif


FString UILbr::GetKeyboardLanguage(){
FString L=""; 
#if PLATFORM_WINDOWS
HKL kstate = GetKeyboardLayout(0);
TCHAR szCodePage[10];
if(GetLocaleInfo(LOWORD(kstate), LOCALE_SISO639LANGNAME, szCodePage, sizeof(szCodePage))){L=szCodePage;}
#endif
#if PLATFORM_LINUX
//L=FString(xkb.currentGroupName()); //return somethings like "USA"
L=FString(xkb.currentGroupSymbol()); //return somethings like "us"
#endif
#if PLATFORM_MAC
char layout[128];
memset(layout, '\0', sizeof(layout));
TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
// get input source id - kTISPropertyInputSourceID
// get layout name - kTISPropertyLocalizedName
CFStringRef layoutID = TISGetInputSourceProperty(source, kTISPropertyInputSourceID);
CFStringGetCString(layoutID, layout, sizeof(layout), kCFStringEncodingUTF8);
L=FString(layout);
#endif
#if PLATFORM_PS4

#endif
#if PLATFORM_XBOXONE

#endif
#if PLATFORM_SWITCH

#endif
#if PLATFORM_ANDROID

#endif
#if PLATFORM_IOS

#endif
#if PLATFORM_TVOS

#endif
#if PLATFORM_DESKTOP

#endif
#if PLATFORM_LUMIN

#endif
#if PLATFORM_APPLE

#endif
return L;
}

GetKeyboardText

Add please!