mirror of
https://github.com/reactos/reactos.git
synced 2024-07-05 04:06:22 +00:00
- Implement "Advanced Key Settings" and "Change Key Sequence" dialogs
svn path=/trunk/; revision=33567
This commit is contained in:
parent
5b23dbf12b
commit
e3a477e256
|
@ -20,7 +20,7 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
|
|||
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)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
dwSize = sizeof(szLangHotkey);
|
||||
dwSize = (1 + 1) * sizeof(TCHAR);
|
||||
if (RegQueryValueEx(hKey, _T("Language Hotkey"), NULL, NULL,
|
||||
(LPBYTE)szLangHotkey, &dwSize) != ERROR_SUCCESS)
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
dwSize = sizeof(szLayoutHotkey);
|
||||
dwSize = (1 + 1) * sizeof(TCHAR);
|
||||
if (RegQueryValueEx(hKey, _T("Layout Hotkey"), NULL, NULL,
|
||||
(LPBYTE)szLayoutHotkey, &dwSize) != ERROR_SUCCESS)
|
||||
{
|
||||
|
@ -51,6 +51,66 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
|
|||
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)
|
||||
{
|
||||
|
@ -174,6 +234,8 @@ ChangeKeySeqDlgProc(HWND hDlg,
|
|||
break;
|
||||
|
||||
case IDOK:
|
||||
SaveKeySeq(hDlg);
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
break;
|
||||
|
||||
case IDCANCEL:
|
||||
|
|
|
@ -47,6 +47,8 @@ IsLayoutExists(LPTSTR szLayoutID, LPTSTR szLangID);
|
|||
/* keysettings.c */
|
||||
INT_PTR CALLBACK
|
||||
KeySettingsDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
VOID
|
||||
UpdateKeySettingsList();
|
||||
|
||||
/* add.c */
|
||||
INT_PTR CALLBACK
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#include "resource.h"
|
||||
#include "input.h"
|
||||
|
||||
static HWND hKeySettingsWnd;
|
||||
|
||||
static VOID
|
||||
AddListColumn(HWND hDlg)
|
||||
{
|
||||
|
@ -56,6 +58,27 @@ GetAttributes()
|
|||
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)
|
||||
{
|
||||
|
@ -78,8 +101,10 @@ 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;
|
||||
|
@ -92,6 +117,13 @@ InitKeySettingsDlg(HWND hDlg)
|
|||
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,
|
||||
|
@ -103,6 +135,7 @@ KeySettingsDlgProc(HWND hDlg,
|
|||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
hKeySettingsWnd = hDlg;
|
||||
AddListColumn(hDlg);
|
||||
(VOID) ListView_SetExtendedListViewStyle(GetDlgItem(hDlg, IDC_KEY_LISTVIEW),
|
||||
LVS_EX_FULLROWSELECT);
|
||||
|
@ -120,6 +153,8 @@ KeySettingsDlgProc(HWND hDlg,
|
|||
break;
|
||||
|
||||
case IDOK:
|
||||
SaveKeySettings(hDlg);
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
break;
|
||||
|
||||
case IDCANCEL:
|
||||
|
|
Loading…
Reference in a new issue