Author: dchapyshev Date: Sun May 18 05:37:32 2008 New Revision: 33570
URL: http://svn.reactos.org/svn/reactos?rev=33570&view=rev Log: - Add hotkeys settings to registry
Modified: trunk/reactos/base/setup/usetup/mui.c
Modified: trunk/reactos/base/setup/usetup/mui.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/mui.c?rev... ============================================================================== --- trunk/reactos/base/setup/usetup/mui.c [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/mui.c [iso-8859-1] Sun May 18 05:37:32 2008 @@ -274,6 +274,90 @@ }
static BOOLEAN +AddHotkeySettings(IN LPCWSTR Hotkey, IN LPCWSTR LangHotkey, IN LPCWSTR LayoutHotkey) +{ + OBJECT_ATTRIBUTES ObjectAttributes; + UNICODE_STRING KeyName; + UNICODE_STRING ValueName; + HANDLE KeyHandle; + ULONG Disposition; + NTSTATUS Status; + + RtlInitUnicodeString(&KeyName, + L"\Registry\User\.DEFAULT\Keyboard Layout\Toggle"); + InitializeObjectAttributes(&ObjectAttributes, + &KeyName, + OBJ_CASE_INSENSITIVE, + NULL, + NULL); + + Status = NtCreateKey(&KeyHandle, + KEY_ALL_ACCESS, + &ObjectAttributes, + 0, + NULL, + 0, + &Disposition); + + if(!NT_SUCCESS(Status)) + { + DPRINT1("NtCreateKey() failed (Status %lx)\n", Status); + return FALSE; + } + + RtlInitUnicodeString(&ValueName, + L"Hotkey"); + + Status = NtSetValueKey(KeyHandle, + &ValueName, + 0, + REG_SZ, + (PVOID)Hotkey, + (1 + 1) * sizeof(WCHAR)); + if (!NT_SUCCESS(Status)) + { + DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status); + NtClose(KeyHandle); + return FALSE; + } + + RtlInitUnicodeString(&ValueName, + L"Language Hotkey"); + + Status = NtSetValueKey(KeyHandle, + &ValueName, + 0, + REG_SZ, + (PVOID)LangHotkey, + (1 + 1) * sizeof(WCHAR)); + if (!NT_SUCCESS(Status)) + { + DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status); + NtClose(KeyHandle); + return FALSE; + } + + RtlInitUnicodeString(&ValueName, + L"Layout Hotkey"); + + Status = NtSetValueKey(KeyHandle, + &ValueName, + 0, + REG_SZ, + (PVOID)LayoutHotkey, + (1 + 1) * sizeof(WCHAR)); + if (!NT_SUCCESS(Status)) + { + DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status); + NtClose(KeyHandle); + return FALSE; + } + + NtClose(KeyHandle); + return TRUE; +} + +static BOOLEAN AddKbLayoutsToRegistry(IN LPCWSTR DefKbLayout, IN LPCWSTR SecKbLayout) { OBJECT_ATTRIBUTES ObjectAttributes; @@ -374,7 +458,14 @@ NtClose(KeyHandle); return FALSE; } - } + + /* + Switching input languages - Ctrl + Shift + Switching keyboard layouts - Left Alt + Shift + */ + AddHotkeySettings(L"2", L"2", L"1"); + } + else AddHotkeySettings(L"3", L"3", L"3"); // Off all hotkeys
NtClose(KeyHandle); return TRUE;