Home | Info | Community | Development | myReactOS | Contact Us
[static]
Definition at line 122 of file kblayouts.c.
Referenced by AddNewKbLayoutsByLcid().
{ TCHAR NewLayout[CCH_ULONG_DEC + 1], Lang[MAX_PATH], LangID[CCH_LAYOUT_ID + 1], SubPath[CCH_LAYOUT_ID + 1]; HKEY hKey, hSubKey; DWORD cValues; LCID lcid; if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { if (RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &cValues, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { _ultot(cValues + 1, NewLayout, 10); lcid = _tcstoul(szLangID, NULL, 16); GetLocaleInfo(MAKELCID(lcid, SORT_DEFAULT), LOCALE_ILANGUAGE, Lang, sizeof(Lang) / sizeof(TCHAR)); wsprintf(LangID, _T("0000%s"), Lang); if (IsLayoutExists(szLayoutID, LangID)) { RegCloseKey(hKey); return FALSE; } if (GetLayoutCount(Lang) >= 1) { wsprintf(SubPath, _T("d%03d%s"), GetLayoutCount(Lang), Lang); } else if ((_tcscmp(LangID, szLayoutID) != 0) && (GetLayoutCount(Lang) == 0)) { wsprintf(SubPath, _T("d%03d%s"), 0, Lang); } else SubPath[0] = '\0'; if (_tcslen(SubPath) != 0) { if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS) { if (RegSetValueEx(hSubKey, SubPath, 0, REG_SZ, (LPBYTE)szLayoutID, (DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR))) != ERROR_SUCCESS) { RegCloseKey(hSubKey); RegCloseKey(hKey); return FALSE; } RegCloseKey(hSubKey); } lstrcpy(szLayoutID, SubPath); } RegSetValueEx(hKey, NewLayout, 0, REG_SZ, (LPBYTE)szLayoutID, (DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR))); } RegCloseKey(hKey); } return TRUE; }