// Copyright 2020 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_GFX_X_KEYBOARD_STATE_H_ #define UI_GFX_X_KEYBOARD_STATE_H_ #include #include "ui/gfx/x/xproto.h" namespace x11 { class Connection; // This is an interface used by Connection to manage conversion between keycodes // (8 bit values) and keysyms (32 bit values). class KeyboardState { public: KeyboardState(); virtual ~KeyboardState(); virtual KeyCode KeysymToKeycode(uint32_t keysym) const = 0; virtual uint32_t KeycodeToKeysym(KeyCode keycode, uint32_t modifiers) const = 0; private: friend class Connection; virtual void UpdateMapping() = 0; }; std::unique_ptr CreateKeyboardState(Connection* connection); } // namespace x11 #endif // UI_GFX_X_KEYBOARD_STATE_H_