if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Toggle"),
0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
- dwSize = sizeof(szHotkey);
+ dwSize = (1 + 1) * sizeof(TCHAR);
if (RegQueryValueEx(hKey, _T("Hotkey"), NULL, NULL,
(LPBYTE)szHotkey, &dwSize) != ERROR_SUCCESS)
{
return FALSE;
}
- dwSize = sizeof(szLangHotkey);
+ dwSize = (1 + 1) * sizeof(TCHAR);
if (RegQueryValueEx(hKey, _T("Language Hotkey"), NULL, NULL,
(LPBYTE)szLangHotkey, &dwSize) != ERROR_SUCCESS)
{
return FALSE;
}
- dwSize = sizeof(szLayoutHotkey);
+ dwSize = (1 + 1) * sizeof(TCHAR);
if (RegQueryValueEx(hKey, _T("Layout Hotkey"), NULL, NULL,
(LPBYTE)szLayoutHotkey, &dwSize) != ERROR_SUCCESS)
{
return TRUE;
}
+static VOID
+SaveKeySeq(HWND hDlg)
+{
+ TCHAR szLang[1 + 1], szLayout[1 + 1];
+ HKEY hKey;
+
+ if (SendDlgItemMessage(hDlg, IDC_SWITCH_INPUT_LANG_CB, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ {
+ if (SendDlgItemMessage(hDlg, IDC_CTRL_LANG, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ _tcscpy(szLang, _T("2"));
+ else
+ _tcscpy(szLang, _T("1"));
+ }
+ else
+ {
+ _tcscpy(szLang, _T("3"));
+ }
+
+ if (SendDlgItemMessage(hDlg, IDC_SWITCH_KBLAYOUTS_CB, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ {
+ if (SendDlgItemMessage(hDlg, IDC_CTRL_LAYOUT, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ _tcscpy(szLayout, _T("2"));
+ else
+ _tcscpy(szLayout, _T("1"));
+ }
+ else
+ {
+ _tcscpy(szLayout, _T("3"));
+ }
+
+ if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Toggle"), 0, NULL,
+ REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
+ NULL, &hKey, NULL) == ERROR_SUCCESS)
+ {
+ if (RegSetValueEx(hKey, _T("Hotkey"), 0, REG_SZ, (LPBYTE)szLang,
+ (DWORD)((1 + 1) * sizeof(TCHAR))) != ERROR_SUCCESS)
+ {
+ RegCloseKey(hKey);
+ return;
+ }
+
+ if (RegSetValueEx(hKey, _T("Language Hotkey"), 0, REG_SZ, (LPBYTE)szLang,
+ (DWORD)((1 + 1) * sizeof(TCHAR))) != ERROR_SUCCESS)
+ {
+ RegCloseKey(hKey);
+ return;
+ }
+
+ if (RegSetValueEx(hKey, _T("Layout Hotkey"), 0, REG_SZ, (LPBYTE)szLayout,
+ (DWORD)((1 + 1) * sizeof(TCHAR))) != ERROR_SUCCESS)
+ {
+ RegCloseKey(hKey);
+ return;
+ }
+
+ RegCloseKey(hKey);
+ UpdateKeySettingsList();
+ }
+}
+
static VOID
InitChangeKeySeqDlg(HWND hDlg)
{
break;
case IDOK:
+ SaveKeySeq(hDlg);
+ EndDialog(hDlg, LOWORD(wParam));
break;
case IDCANCEL:
#include "resource.h"
#include "input.h"
+static HWND hKeySettingsWnd;
+
static VOID
AddListColumn(HWND hDlg)
{
return dwValue;
}
+static VOID
+SaveKeySettings(HWND hDlg)
+{
+ HKEY hKey;
+ DWORD dwValue;
+
+ if (SendDlgItemMessage(hDlg, IDC_PRESS_CL_KEY_RB, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ dwValue = 0x0;
+ else
+ dwValue = 0x10000;
+
+ if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout"), 0, NULL,
+ REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
+ NULL, &hKey, NULL) == ERROR_SUCCESS)
+ {
+ RegSetValueEx(hKey, _T("Attributes"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));
+
+ RegCloseKey(hKey);
+ }
+}
+
static VOID
InitKeySettingsDlg(HWND hDlg)
{
if (_tcscmp(szLangHotkey, _T("2")) == 0)
LoadString(hApplet, IDS_CTRL_SHIFT, szText, sizeof(szText) / sizeof(TCHAR));
- else
+ else if (_tcscmp(szLangHotkey, _T("1")) == 0)
LoadString(hApplet, IDS_LEFT_ALT_SHIFT, szText, sizeof(szText) / sizeof(TCHAR));
+ else
+ LoadString(hApplet, IDS_NONE, szText, sizeof(szText) / sizeof(TCHAR));
item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
item.pszText = szTitle;
ListView_SetItemState(hHotkeyList, i, LVIS_SELECTED, LVIS_OVERLAYMASK);
}
+VOID
+UpdateKeySettingsList()
+{
+ (VOID) ListView_DeleteAllItems(GetDlgItem(hKeySettingsWnd, IDC_KEY_LISTVIEW));
+ InitKeySettingsDlg(hKeySettingsWnd);
+}
+
INT_PTR CALLBACK
KeySettingsDlgProc(HWND hDlg,
UINT message,
switch (message)
{
case WM_INITDIALOG:
+ hKeySettingsWnd = hDlg;
AddListColumn(hDlg);
(VOID) ListView_SetExtendedListViewStyle(GetDlgItem(hDlg, IDC_KEY_LISTVIEW),
LVS_EX_FULLROWSELECT);
break;
case IDOK:
+ SaveKeySettings(hDlg);
+ EndDialog(hDlg, LOWORD(wParam));
break;
case IDCANCEL: