diff -up chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc.old-xkb chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc --- chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc.old-xkb 2022-04-08 10:12:14.725197002 -0400 +++ chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc 2022-04-08 10:13:04.512511489 -0400 @@ -31,14 +31,6 @@ #include "ui/events/keycodes/keyboard_code_conversion.h" #include "ui/events/keycodes/keyboard_code_conversion_xkb.h" -// xkb_keymap_key_get_mods_for_level is relatively new (introduced in ver 1.0, -// Sep 6, 2020), thus it is not available on some platform, such as Ubuntu -// 18.04, which we still supports. -// Thus declare the function as weak here, so we can check the availability on -// runtime. -extern "C" __attribute__((weak)) decltype( - xkb_keymap_key_get_mods_for_level) xkb_keymap_key_get_mods_for_level; - namespace ui { namespace { @@ -925,18 +917,10 @@ void XkbKeyboardLayoutEngine::SetKeymap( const xkb_keysym_t* keysyms; int num_syms = xkb_keymap_key_get_syms_by_level(keymap, keycode, layout, level, &keysyms); - if (xkb_keymap_key_get_mods_for_level) { - xkb_mod_mask_t masks[100]; // Large enough buffer. - int num_mods = xkb_keymap_key_get_mods_for_level( - keymap, keycode, layout, level, masks, std::size(masks)); - AddEntries(base::make_span(keysyms, num_syms), - base::make_span(masks, num_mods), keycode); - } else { // If not, unfortunately, there's no convenient/efficient way // to take the possible masks. Thus, use mask 0 always. constexpr xkb_mod_mask_t kMask[] = {0}; AddEntries(base::make_span(keysyms, num_syms), kMask, keycode); - } } } } @@ -1000,10 +984,7 @@ int XkbKeyboardLayoutEngine::UpdateModif DomCode XkbKeyboardLayoutEngine::GetDomCodeByKeysym(uint32_t keysym, uint32_t modifiers) const { - // If xkb_keymap_key_get_mods_for_level is not available, all entries are - // stored with modifiers mask is 0. - if (!xkb_keymap_key_get_mods_for_level) - modifiers = 0; + modifiers = 0; auto iter = xkb_keysym_map_.find(XkbKeysymMapKey(keysym, modifiers)); if (iter == xkb_keysym_map_.end()) {