Index: ui/events/test/keyboard_layout_win.cc |
diff --git a/ui/events/test/keyboard_layout_win.cc b/ui/events/test/keyboard_layout_win.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0de0fdb389f25499634c03669d887b285561c3f0 |
--- /dev/null |
+++ b/ui/events/test/keyboard_layout_win.cc |
@@ -0,0 +1,50 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ui/events/test/keyboard_layout.h" |
+ |
+#include "base/logging.h" |
+ |
+namespace ui { |
+ |
+// |LoadKeyboardLayout()| ensures the locale to be loaded into the system |
+// (Similar to temporarily adding a locale in Control Panel), otherwise |
+// |ToUnicodeEx()| will fall-back to the default locale. |
+// See MSDN LoadKeyboardLayout(): |
+// https://msdn.microsoft.com/en-us/library/windows/desktop/ms646305(v=vs.85).aspx |
+// And language constants and strings: |
+// https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspx |
+PlatformKeyboardLayout GetPlatformKeyboardLayout(KeyboardLayout layout) { |
+ switch (layout) { |
+ case KEYBOARD_LAYOUT_ENGLISH_US: |
+ return LoadKeyboardLayout(L"00000409", KLF_ACTIVATE); |
+ case KEYBOARD_LAYOUT_FRENCH: |
+ return LoadKeyboardLayout(L"0000040c", KLF_ACTIVATE); |
+ case KEYBOARD_LAYOUT_GERMAN: |
+ return LoadKeyboardLayout(L"00000407", KLF_ACTIVATE); |
+ case KEYBOARD_LAYOUT_GREEK: |
+ return LoadKeyboardLayout(L"00000408", KLF_ACTIVATE); |
+ case KEYBOARD_LAYOUT_JAPANESE: |
+ return LoadKeyboardLayout(L"00000411", KLF_ACTIVATE); |
+ case KEYBOARD_LAYOUT_KOREAN: |
+ return LoadKeyboardLayout(L"00000412", KLF_ACTIVATE); |
+ case KEYBOARD_LAYOUT_RUSSIAN: |
+ return LoadKeyboardLayout(L"00000419", KLF_ACTIVATE); |
+ } |
+ |
+ NOTREACHED(); |
+ return 0; |
+} |
+ |
+PlatformKeyboardLayout ScopedKeyboardLayout::GetActiveLayout() { |
+ return GetKeyboardLayout(0); |
+} |
+ |
+void ScopedKeyboardLayout::ActivateLayout(PlatformKeyboardLayout layout) { |
+ DCHECK(layout); |
+ HKL result = ActivateKeyboardLayout(layout, 0); |
+ DCHECK(!!result); |
+} |
+ |
+} // namespace ui |