accelerator_util.cc 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ui/content_accelerators/accelerator_util.h"
  5. #include "build/build_config.h"
  6. #include "build/chromeos_buildflags.h"
  7. #include "third_party/blink/public/common/input/web_input_event.h"
  8. #include "ui/base/ui_base_features.h"
  9. #include "ui/events/blink/blink_event_util.h"
  10. #include "ui/events/event.h"
  11. #include "ui/events/event_constants.h"
  12. namespace ui {
  13. ui::Accelerator GetAcceleratorFromNativeWebKeyboardEvent(
  14. const content::NativeWebKeyboardEvent& event) {
  15. #if BUILDFLAG(IS_CHROMEOS_ASH)
  16. if (::features::IsNewShortcutMappingEnabled() ||
  17. ::features::IsImprovedKeyboardShortcutsEnabled()) {
  18. // TODO: This must be the same as below and it's simpler.
  19. // Cleanup if this change sticks.
  20. auto* os_event = static_cast<ui::KeyEvent*>(event.os_event);
  21. // If there is no |os_event| fall through to the default code path.
  22. // This can occur when keys are injected from dev tools.
  23. if (os_event)
  24. return ui::Accelerator(*os_event);
  25. }
  26. #endif
  27. Accelerator::KeyState key_state =
  28. event.GetType() == blink::WebInputEvent::Type::kKeyUp
  29. ? Accelerator::KeyState::RELEASED
  30. : Accelerator::KeyState::PRESSED;
  31. ui::KeyboardCode keyboard_code =
  32. static_cast<ui::KeyboardCode>(event.windows_key_code);
  33. int modifiers = WebEventModifiersToEventFlags(event.GetModifiers());
  34. return ui::Accelerator(keyboard_code, modifiers, key_state,
  35. event.TimeStamp());
  36. }
  37. } // namespace ui