| 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 <xkbcommon/xkbcommon-names.h> | 7 #include <xkbcommon/xkbcommon-names.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 708 } | 708 } |
| 709 | 709 |
| 710 bool XkbKeyboardLayoutEngine::UsesAltGr() const { | 710 bool XkbKeyboardLayoutEngine::UsesAltGr() const { |
| 711 // NOTIMPLEMENTED(); | 711 // NOTIMPLEMENTED(); |
| 712 return false; | 712 return false; |
| 713 } | 713 } |
| 714 | 714 |
| 715 bool XkbKeyboardLayoutEngine::Lookup(DomCode dom_code, | 715 bool XkbKeyboardLayoutEngine::Lookup(DomCode dom_code, |
| 716 int flags, | 716 int flags, |
| 717 DomKey* dom_key, | 717 DomKey* dom_key, |
| 718 KeyboardCode* key_code, | 718 KeyboardCode* key_code) const { |
| 719 uint32_t* platform_keycode) const { | |
| 720 if (dom_code == DomCode::NONE) | 719 if (dom_code == DomCode::NONE) |
| 721 return false; | 720 return false; |
| 722 // Convert DOM physical key to XKB representation. | 721 // Convert DOM physical key to XKB representation. |
| 723 xkb_keycode_t xkb_keycode = key_code_converter_.DomCodeToXkbKeyCode(dom_code); | 722 xkb_keycode_t xkb_keycode = key_code_converter_.DomCodeToXkbKeyCode(dom_code); |
| 724 if (xkb_keycode == key_code_converter_.InvalidXkbKeyCode()) { | 723 if (xkb_keycode == key_code_converter_.InvalidXkbKeyCode()) { |
| 725 LOG(ERROR) << "No XKB keycode for DomCode 0x" << std::hex | 724 LOG(ERROR) << "No XKB keycode for DomCode 0x" << std::hex |
| 726 << static_cast<int>(dom_code) << " '" | 725 << static_cast<int>(dom_code) << " '" |
| 727 << KeycodeConverter::DomCodeToCodeString(dom_code) << "'"; | 726 << KeycodeConverter::DomCodeToCodeString(dom_code) << "'"; |
| 728 return false; | 727 return false; |
| 729 } | 728 } |
| 730 xkb_mod_mask_t xkb_flags = EventFlagsToXkbFlags(flags); | 729 xkb_mod_mask_t xkb_flags = EventFlagsToXkbFlags(flags); |
| 731 // Obtain keysym and character. | 730 // Obtain keysym and character. |
| 732 xkb_keysym_t xkb_keysym; | 731 xkb_keysym_t xkb_keysym; |
| 733 uint32_t character = 0; | 732 uint32_t character = 0; |
| 734 if (!XkbLookup(xkb_keycode, xkb_flags, &xkb_keysym, &character)) | 733 if (!XkbLookup(xkb_keycode, xkb_flags, &xkb_keysym, &character)) |
| 735 return false; | 734 return false; |
| 736 *platform_keycode = xkb_keysym; | |
| 737 // Classify the keysym and convert to DOM and VKEY representations. | 735 // Classify the keysym and convert to DOM and VKEY representations. |
| 738 *dom_key = NonPrintableXKeySymToDomKey(xkb_keysym); | 736 *dom_key = NonPrintableXKeySymToDomKey(xkb_keysym); |
| 739 if (*dom_key == DomKey::NONE) { | 737 if (*dom_key == DomKey::NONE) { |
| 740 *dom_key = DomKey::FromCharacter(character); | 738 *dom_key = DomKey::FromCharacter(character); |
| 741 *key_code = AlphanumericKeyboardCode(character); | 739 *key_code = AlphanumericKeyboardCode(character); |
| 742 if (*key_code == VKEY_UNKNOWN) { | 740 if (*key_code == VKEY_UNKNOWN) { |
| 743 *key_code = DifficultKeyboardCode(dom_code, flags, xkb_keycode, xkb_flags, | 741 *key_code = DifficultKeyboardCode(dom_code, flags, xkb_keycode, xkb_flags, |
| 744 xkb_keysym, character); | 742 xkb_keysym, character); |
| 745 if (*key_code == VKEY_UNKNOWN) | 743 if (*key_code == VKEY_UNKNOWN) |
| 746 *key_code = LocatedToNonLocatedKeyboardCode( | 744 *key_code = LocatedToNonLocatedKeyboardCode( |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 924 close_index = layout_name.size(); | 922 close_index = layout_name.size(); |
| 925 *layout_variant = layout_name.substr(parentheses_index + 1, | 923 *layout_variant = layout_name.substr(parentheses_index + 1, |
| 926 close_index - parentheses_index - 1); | 924 close_index - parentheses_index - 1); |
| 927 } else if (dash_index != std::string::npos) { | 925 } else if (dash_index != std::string::npos) { |
| 928 *layout_id = layout_name.substr(0, dash_index); | 926 *layout_id = layout_name.substr(0, dash_index); |
| 929 *layout_variant = layout_name.substr(dash_index + 1); | 927 *layout_variant = layout_name.substr(dash_index + 1); |
| 930 } | 928 } |
| 931 } | 929 } |
| 932 | 930 |
| 933 } // namespace ui | 931 } // namespace ui |
| OLD | NEW |