blob: 9f0470f227ae46ea84fe29fb620468282984d3c7 [file] [log] [blame]
// 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.
#ifndef UI_EVENTS_TEST_KEYBOARD_LAYOUT_H_
#define UI_EVENTS_TEST_KEYBOARD_LAYOUT_H_
#include "base/macros.h"
#include "build/build_config.h"
#if defined(OS_WIN)
#include <windows.h>
#elif defined(OS_MACOSX) && !defined(OS_IOS)
#include <Carbon/Carbon.h>
#include "base/mac/scoped_cftyperef.h"
#endif
namespace ui {
enum KeyboardLayout {
KEYBOARD_LAYOUT_ENGLISH_US,
KEYBOARD_LAYOUT_FRENCH,
KEYBOARD_LAYOUT_GERMAN,
KEYBOARD_LAYOUT_GREEK,
KEYBOARD_LAYOUT_JAPANESE,
KEYBOARD_LAYOUT_KOREAN,
KEYBOARD_LAYOUT_RUSSIAN,
};
#if defined(OS_WIN)
using PlatformKeyboardLayout = HKL;
#elif defined(OS_MACOSX) && !defined(OS_IOS)
using PlatformKeyboardLayout = base::ScopedCFTypeRef<TISInputSourceRef>;
#else
// Dummy type for unsupported platforms.
using PlatformKeyboardLayout = void*;
#endif
PlatformKeyboardLayout GetPlatformKeyboardLayout(KeyboardLayout layout);
// Changes the active keyboard layout for the scope of this object.
class ScopedKeyboardLayout {
public:
explicit ScopedKeyboardLayout(KeyboardLayout layout);
~ScopedKeyboardLayout();
private:
static PlatformKeyboardLayout GetActiveLayout();
static void ActivateLayout(PlatformKeyboardLayout layout);
PlatformKeyboardLayout original_layout_;
DISALLOW_COPY_AND_ASSIGN(ScopedKeyboardLayout);
};
} // namespace ui
#endif // UI_EVENTS_TEST_KEYBOARD_LAYOUT_H_