4 * FILE: dll/win32/input/keysettings.c
6 * PROGRAMMER: Dmitry Chapyshev (dmitry@reactos.org)
14 static HWND hKeySettingsWnd
;
17 AddListColumn(HWND hDlg
)
20 HWND hList
= GetDlgItem(hDlg
, IDC_KEY_LISTVIEW
);
22 ZeroMemory(&column
, sizeof(LV_COLUMN
));
23 column
.mask
= LVCF_FMT
| LVCF_TEXT
| LVCF_WIDTH
| LVCF_SUBITEM
;
25 column
.fmt
= LVCFMT_LEFT
;
27 column
.pszText
= _T("");
29 (VOID
) ListView_InsertColumn(hList
, 0, &column
);
31 column
.fmt
= LVCFMT_RIGHT
;
34 column
.pszText
= _T("");
35 (VOID
) ListView_InsertColumn(hList
, 1, &column
);
41 DWORD dwValue
, dwType
, dwSize
;
44 if (RegOpenKeyEx(HKEY_CURRENT_USER
, _T("Keyboard Layout"), 0, KEY_QUERY_VALUE
, &hKey
) != ERROR_SUCCESS
)
48 dwSize
= sizeof(DWORD
);
50 if (RegQueryValueEx(hKey
, _T("Attributes"), NULL
, &dwType
, (LPBYTE
)&dwValue
, &dwSize
) != ERROR_SUCCESS
)
61 SaveKeySettings(HWND hDlg
)
66 if (SendDlgItemMessage(hDlg
, IDC_PRESS_CL_KEY_RB
, BM_GETCHECK
, 0, 0) == BST_CHECKED
)
71 if (RegCreateKeyEx(HKEY_CURRENT_USER
, _T("Keyboard Layout"), 0, NULL
,
72 REG_OPTION_NON_VOLATILE
, KEY_ALL_ACCESS
,
73 NULL
, &hKey
, NULL
) == ERROR_SUCCESS
)
75 RegSetValueEx(hKey
, _T("Attributes"), 0, REG_DWORD
, (LPBYTE
)&dwValue
, sizeof(DWORD
));
82 InitKeySettingsDlg(HWND hDlg
)
84 TCHAR szHotkey
[1 + 1], szLangHotkey
[1 + 1], szLayoutHotkey
[1 + 1],
85 szTitle
[MAX_PATH
], szText
[MAX_PATH
];
87 HWND hHotkeyList
= GetDlgItem(hDlg
, IDC_KEY_LISTVIEW
);
90 if (GetAttributes() != 0x0)
91 SendDlgItemMessage(hDlg
, IDC_PRESS_SHIFT_KEY_RB
, BM_SETCHECK
, 1, 1);
93 SendDlgItemMessage(hDlg
, IDC_PRESS_CL_KEY_RB
, BM_SETCHECK
, 1, 1);
95 if (!GetHotkeys(szHotkey
, szLangHotkey
, szLayoutHotkey
))
98 if (!LoadString(hApplet
, IDS_SWITCH_BET_INLANG
, szTitle
, sizeof(szTitle
) / sizeof(TCHAR
)))
101 if (_tcscmp(szLangHotkey
, _T("2")) == 0)
102 LoadString(hApplet
, IDS_CTRL_SHIFT
, szText
, sizeof(szText
) / sizeof(TCHAR
));
103 else if (_tcscmp(szLangHotkey
, _T("1")) == 0)
104 LoadString(hApplet
, IDS_LEFT_ALT_SHIFT
, szText
, sizeof(szText
) / sizeof(TCHAR
));
106 LoadString(hApplet
, IDS_NONE
, szText
, sizeof(szText
) / sizeof(TCHAR
));
108 item
.mask
= LVIF_TEXT
| LVIF_PARAM
| LVIF_STATE
;
109 item
.pszText
= szTitle
;
111 i
= ListView_InsertItem(hHotkeyList
, &item
);
113 ListView_SetItemText(hHotkeyList
, i
, 1, szText
);
115 (VOID
) ListView_SetHotItem(hHotkeyList
, i
);
116 ListView_SetItemState(hHotkeyList
, i
, LVIS_SELECTED
, LVIS_OVERLAYMASK
);
120 UpdateKeySettingsList()
122 (VOID
) ListView_DeleteAllItems(GetDlgItem(hKeySettingsWnd
, IDC_KEY_LISTVIEW
));
123 InitKeySettingsDlg(hKeySettingsWnd
);
127 KeySettingsDlgProc(HWND hDlg
,
132 UNREFERENCED_PARAMETER(lParam
);
137 hKeySettingsWnd
= hDlg
;
139 (VOID
) ListView_SetExtendedListViewStyle(GetDlgItem(hDlg
, IDC_KEY_LISTVIEW
),
140 LVS_EX_FULLROWSELECT
);
141 InitKeySettingsDlg(hDlg
);
145 switch (LOWORD(wParam
))
147 case IDC_CHANGE_KEY_SEQ_BTN
:
149 MAKEINTRESOURCE(IDD_CHANGE_KEY_SEQ
),
151 ChangeKeySeqDlgProc
);
155 SaveKeySettings(hDlg
);
156 EndDialog(hDlg
, LOWORD(wParam
));
160 EndDialog(hDlg
, LOWORD(wParam
));