| Index: ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
|
| diff --git a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
|
| index 931eae353ac6e78484de9ba15826e0c64abe62a5..ccd3866ed8bfd60391896d0ac6403d786e1a07cd 100644
|
| --- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
|
| +++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
|
| @@ -626,7 +626,8 @@ XkbKeyCodeConverter::~XkbKeyCodeConverter() {
|
|
|
| XkbKeyboardLayoutEngine::XkbKeyboardLayoutEngine(
|
| const XkbKeyCodeConverter& converter)
|
| - : key_code_converter_(converter) {
|
| + : num_lock_mod_mask_(0),
|
| + key_code_converter_(converter) {
|
| // TODO: add XKB_CONTEXT_NO_ENVIRONMENT_NAMES
|
| xkb_context_.reset(xkb_context_new(XKB_CONTEXT_NO_DEFAULT_INCLUDES));
|
| xkb_context_include_path_append(xkb_context_.get(),
|
| @@ -749,7 +750,6 @@ void XkbKeyboardLayoutEngine::SetKeymap(xkb_keymap* keymap) {
|
| {ui::EF_ALT_DOWN, XKB_MOD_NAME_ALT},
|
| {ui::EF_CAPS_LOCK_DOWN, XKB_MOD_NAME_CAPS},
|
| {ui::EF_COMMAND_DOWN, XKB_MOD_NAME_LOGO},
|
| - {ui::EF_NUMPAD_KEY, XKB_MOD_NAME_NUM},
|
| {ui::EF_MOD3_DOWN, "Mod3"},
|
| {ui::EF_ALTGR_DOWN, "Mod5"}};
|
| xkb_flag_map_.clear();
|
| @@ -764,6 +764,13 @@ void XkbKeyboardLayoutEngine::SetKeymap(xkb_keymap* keymap) {
|
| xkb_flag_map_.push_back(e);
|
| }
|
| }
|
| +
|
| + // Update num lock mask.
|
| + num_lock_mod_mask_ = 0;
|
| + xkb_mod_index_t num_mod_index =
|
| + xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_NUM);
|
| + if (num_mod_index != XKB_MOD_INVALID)
|
| + num_lock_mod_mask_ = static_cast<xkb_mod_mask_t>(1) << num_mod_index;
|
| }
|
|
|
| xkb_mod_mask_t XkbKeyboardLayoutEngine::EventFlagsToXkbFlags(
|
| @@ -773,6 +780,8 @@ xkb_mod_mask_t XkbKeyboardLayoutEngine::EventFlagsToXkbFlags(
|
| if (ui_flags & entry.ui_flag)
|
| xkb_flags |= entry.xkb_flag;
|
| }
|
| + // NumLock is always on.
|
| + xkb_flags |= num_lock_mod_mask_;
|
| return xkb_flags;
|
| }
|
|
|
|
|