3030#include < MMSystem.h>
3131#include < ShlObj.h>
3232#include < string>
33+ #include < stdio.h>
3334
3435extern DWORD g_appStartupTime;
3536
36- CefString ClientApp::GetCurrentLanguage ( )
37+ CefString GetLanguageFromId (LANGID langID )
3738{
38- // Get the user's selected language
39- // Defaults to the system installed language if not using MUI.
40- LANGID langID = GetUserDefaultUILanguage ();
41-
4239 // Convert LANGID to a RFC 4646 language tag (per navigator.language)
4340 int langSize = GetLocaleInfo (langID, LOCALE_SISO639LANGNAME, NULL , 0 );
4441 int countrySize = GetLocaleInfo (langID, LOCALE_SISO3166CTRYNAME, NULL , 0 );
@@ -59,6 +56,35 @@ CefString ClientApp::GetCurrentLanguage()
5956 return CefString (locale);
6057}
6158
59+ CefString ClientApp::GetCurrentLanguage ()
60+ {
61+ // Get the user's selected language
62+ // Defaults to the system installed language if not using MUI.
63+ LANGID langID = GetUserDefaultUILanguage ();
64+ return GetLanguageFromId (langID);
65+ }
66+
67+
68+ CefString ClientApp::GetCurrentKeyboardLayout ()
69+ {
70+ // Get the user's active keyboard layout language
71+ int kbd = (int )GetKeyboardLayout (0 );
72+ LANGID langID = MAKELANGID (kbd & 0xFFFF , kbd & 0xFFFF0000 );
73+ return GetLanguageFromId (langID);
74+ }
75+
76+ CefString ClientApp::GetKeyboardType ()
77+ {
78+ // Get the user's active keyboard device type
79+ int keyboardLayout = ((int )GetKeyboardLayout (0 ) & 0xFFFF0000 ) >> 16 ;
80+ wchar_t *type = new wchar_t [10 ];
81+ int len = swprintf_s (type, 10 , L" %d" , keyboardLayout);
82+ std::wstring keyboardType (type);
83+
84+ delete [] type;
85+ return CefString (keyboardType);
86+ }
87+
6288std::string ClientApp::GetExtensionJSSource ()
6389{
6490 extern HINSTANCE hInst;
0 commit comments