OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef UI_EVENTS_OZONE_LAYOUT_XKB_XKB_KEYBOARD_LAYOUT_ENGINE_H_ | 5 #ifndef UI_EVENTS_OZONE_LAYOUT_XKB_XKB_KEYBOARD_LAYOUT_ENGINE_H_ |
6 #define UI_EVENTS_OZONE_LAYOUT_XKB_XKB_KEYBOARD_LAYOUT_ENGINE_H_ | 6 #define UI_EVENTS_OZONE_LAYOUT_XKB_XKB_KEYBOARD_LAYOUT_ENGINE_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <xkbcommon/xkbcommon.h> | 9 #include <xkbcommon/xkbcommon.h> |
10 | 10 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 bool Lookup(DomCode dom_code, | 44 bool Lookup(DomCode dom_code, |
45 int flags, | 45 int flags, |
46 DomKey* dom_key, | 46 DomKey* dom_key, |
47 KeyboardCode* key_code) const override; | 47 KeyboardCode* key_code) const override; |
48 | 48 |
49 static void ParseLayoutName(const std::string& layout_name, | 49 static void ParseLayoutName(const std::string& layout_name, |
50 std::string* layout_id, | 50 std::string* layout_id, |
51 std::string* layout_variant); | 51 std::string* layout_variant); |
52 | 52 |
| 53 // Used to sync up client side 'xkb_state' instance with modifiers status |
| 54 // update |
| 55 // from the server. |
| 56 int UpdateModifiers(uint32_t depressed_mods, |
| 57 uint32_t latched_mods, |
| 58 uint32_t locked_mods, |
| 59 uint32_t group); |
| 60 |
53 protected: | 61 protected: |
54 // Table for EventFlagsToXkbFlags(). | 62 // Table for EventFlagsToXkbFlags(). |
55 struct XkbFlagMapEntry { | 63 struct XkbFlagMapEntry { |
56 int ui_flag; | 64 int ui_flag; |
57 xkb_mod_mask_t xkb_flag; | 65 xkb_mod_mask_t xkb_flag; |
58 }; | 66 }; |
59 std::vector<XkbFlagMapEntry> xkb_flag_map_; | 67 std::vector<XkbFlagMapEntry> xkb_flag_map_; |
60 | 68 |
61 // Flag mask for num lock, which is always considered enabled. | 69 // Flag mask for num lock, which is always considered enabled. |
62 xkb_mod_mask_t num_lock_mod_mask_ = 0; | 70 xkb_mod_mask_t num_lock_mod_mask_ = 0; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 void OnKeymapLoaded(const std::string& layout_name, | 115 void OnKeymapLoaded(const std::string& layout_name, |
108 std::unique_ptr<char, base::FreeDeleter> keymap_str); | 116 std::unique_ptr<char, base::FreeDeleter> keymap_str); |
109 | 117 |
110 // libxkbcommon uses explicit reference counting for its structures, | 118 // libxkbcommon uses explicit reference counting for its structures, |
111 // so we need to trigger its cleanup. | 119 // so we need to trigger its cleanup. |
112 std::unique_ptr<xkb_context, XkbContextDeleter> xkb_context_; | 120 std::unique_ptr<xkb_context, XkbContextDeleter> xkb_context_; |
113 std::unique_ptr<xkb_state, XkbStateDeleter> xkb_state_; | 121 std::unique_ptr<xkb_state, XkbStateDeleter> xkb_state_; |
114 | 122 |
115 std::string current_layout_name_; | 123 std::string current_layout_name_; |
116 | 124 |
| 125 struct { |
| 126 xkb_mod_index_t control = 0; |
| 127 xkb_mod_index_t alt = 0; |
| 128 xkb_mod_index_t shift = 0; |
| 129 } xkb_mod_indexes_; |
| 130 |
117 // Support weak pointers for attach & detach callbacks. | 131 // Support weak pointers for attach & detach callbacks. |
118 base::WeakPtrFactory<XkbKeyboardLayoutEngine> weak_ptr_factory_; | 132 base::WeakPtrFactory<XkbKeyboardLayoutEngine> weak_ptr_factory_; |
119 }; | 133 }; |
120 | 134 |
121 } // namespace ui | 135 } // namespace ui |
122 | 136 |
123 #endif // UI_EVENTS_OZONE_LAYOUT_XKB_XKB_KEYBOARD_LAYOUT_ENGINE_H_ | 137 #endif // UI_EVENTS_OZONE_LAYOUT_XKB_XKB_KEYBOARD_LAYOUT_ENGINE_H_ |
OLD | NEW |