| 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 #include "ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h" | 5 #include "ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <xkbcommon/xkbcommon-names.h> | 8 #include <xkbcommon/xkbcommon-names.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 if (keymap) | 793 if (keymap) |
| 794 SetKeymap(keymap); | 794 SetKeymap(keymap); |
| 795 } | 795 } |
| 796 | 796 |
| 797 void XkbKeyboardLayoutEngine::SetKeymap(xkb_keymap* keymap) { | 797 void XkbKeyboardLayoutEngine::SetKeymap(xkb_keymap* keymap) { |
| 798 xkb_state_.reset(xkb_state_new(keymap)); | 798 xkb_state_.reset(xkb_state_new(keymap)); |
| 799 // Update flag map. | 799 // Update flag map. |
| 800 static const struct { | 800 static const struct { |
| 801 int ui_flag; | 801 int ui_flag; |
| 802 const char* xkb_name; | 802 const char* xkb_name; |
| 803 } flags[] = {{ui::EF_CONTROL_DOWN, XKB_MOD_NAME_CTRL}, | 803 } flags[] = {{ui::EF_SHIFT_DOWN, XKB_MOD_NAME_SHIFT}, |
| 804 {ui::EF_SHIFT_DOWN, XKB_MOD_NAME_SHIFT}, | 804 {ui::EF_CONTROL_DOWN, XKB_MOD_NAME_CTRL}, |
| 805 {ui::EF_ALT_DOWN, XKB_MOD_NAME_ALT}, | 805 {ui::EF_ALT_DOWN, XKB_MOD_NAME_ALT}, |
| 806 {ui::EF_CAPS_LOCK_DOWN, XKB_MOD_NAME_CAPS}, | |
| 807 {ui::EF_COMMAND_DOWN, XKB_MOD_NAME_LOGO}, | 806 {ui::EF_COMMAND_DOWN, XKB_MOD_NAME_LOGO}, |
| 807 {ui::EF_ALTGR_DOWN, "Mod5"}, |
| 808 {ui::EF_MOD3_DOWN, "Mod3"}, | 808 {ui::EF_MOD3_DOWN, "Mod3"}, |
| 809 {ui::EF_ALTGR_DOWN, "Mod5"}}; | 809 {ui::EF_CAPS_LOCK_ON, XKB_MOD_NAME_CAPS}}; |
| 810 xkb_flag_map_.clear(); | 810 xkb_flag_map_.clear(); |
| 811 xkb_flag_map_.resize(arraysize(flags)); | 811 xkb_flag_map_.resize(arraysize(flags)); |
| 812 for (size_t i = 0; i < arraysize(flags); ++i) { | 812 for (size_t i = 0; i < arraysize(flags); ++i) { |
| 813 xkb_mod_index_t index = xkb_keymap_mod_get_index(keymap, flags[i].xkb_name); | 813 xkb_mod_index_t index = xkb_keymap_mod_get_index(keymap, flags[i].xkb_name); |
| 814 if (index == XKB_MOD_INVALID) { | 814 if (index == XKB_MOD_INVALID) { |
| 815 DVLOG(3) << "XKB keyboard layout does not contain " << flags[i].xkb_name; | 815 DVLOG(3) << "XKB keyboard layout does not contain " << flags[i].xkb_name; |
| 816 } else { | 816 } else { |
| 817 xkb_mod_mask_t flag = static_cast<xkb_mod_mask_t>(1) << index; | 817 xkb_mod_mask_t flag = static_cast<xkb_mod_mask_t>(1) << index; |
| 818 XkbFlagMapEntry e = {flags[i].ui_flag, flag}; | 818 XkbFlagMapEntry e = {flags[i].ui_flag, flag}; |
| 819 xkb_flag_map_.push_back(e); | 819 xkb_flag_map_.push_back(e); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 close_index = layout_name.size(); | 956 close_index = layout_name.size(); |
| 957 *layout_variant = layout_name.substr(parentheses_index + 1, | 957 *layout_variant = layout_name.substr(parentheses_index + 1, |
| 958 close_index - parentheses_index - 1); | 958 close_index - parentheses_index - 1); |
| 959 } else if (dash_index != std::string::npos) { | 959 } else if (dash_index != std::string::npos) { |
| 960 *layout_id = layout_name.substr(0, dash_index); | 960 *layout_id = layout_name.substr(0, dash_index); |
| 961 *layout_variant = layout_name.substr(dash_index + 1); | 961 *layout_variant = layout_name.substr(dash_index + 1); |
| 962 } | 962 } |
| 963 } | 963 } |
| 964 | 964 |
| 965 } // namespace ui | 965 } // namespace ui |
| OLD | NEW |