Commit fe2fccdd authored by Wei Li's avatar Wei Li Committed by Commit Bot

Allow AltGr+Arrows keys used for navigation

Add shortcut keys AltGr+Left/Right for nagivating back and forth among
pages. This allows users of some European keyboards to navigate with one
hand key operations.

BUG=613201

Change-Id: I5eceeaacf0df8029f2b1d6f7dd6a2d85e1100682
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1993845Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Commit-Queue: Wei Li <weili@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732678}
parent 1dfa4882
...@@ -29,14 +29,14 @@ constexpr char kAshAcceleratorsHash[] = "1287cacd678f63ab151fbf25383ac19c"; ...@@ -29,14 +29,14 @@ constexpr char kAshAcceleratorsHash[] = "1287cacd678f63ab151fbf25383ac19c";
#if BUILDFLAG(GOOGLE_CHROME_BRANDING) #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
// Internal builds add an extra accelerator for the Feedback app. // Internal builds add an extra accelerator for the Feedback app.
// The total number of Chrome accelerators (available on Chrome OS). // The total number of Chrome accelerators (available on Chrome OS).
constexpr int kChromeAcceleratorsTotalNum = 93; constexpr int kChromeAcceleratorsTotalNum = 95;
// The hash of Chrome accelerators (available on Chrome OS). // The hash of Chrome accelerators (available on Chrome OS).
constexpr char kChromeAcceleratorsHash[] = "73c842a72d77e7b9e69e92a6ee7900d3"; constexpr char kChromeAcceleratorsHash[] = "ef0b7eb1a1dabd26e964c6593e4698a4";
#else #else
// The total number of Chrome accelerators (available on Chrome OS). // The total number of Chrome accelerators (available on Chrome OS).
constexpr int kChromeAcceleratorsTotalNum = 92; constexpr int kChromeAcceleratorsTotalNum = 94;
// The hash of Chrome accelerators (available on Chrome OS). // The hash of Chrome accelerators (available on Chrome OS).
constexpr char kChromeAcceleratorsHash[] = "7c45362e298cf77aae142dec7154adcf"; constexpr char kChromeAcceleratorsHash[] = "f22167989af00d94f8de75cbc89b977e";
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
const char* BooleanToString(bool value) { const char* BooleanToString(bool value) {
......
...@@ -170,6 +170,7 @@ const AcceleratorMapping kAcceleratorMap[] = { ...@@ -170,6 +170,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
// bindings as well. Mapping with just Alt appear here, and should have an // bindings as well. Mapping with just Alt appear here, and should have an
// alternative mapping in the block above. // alternative mapping in the block above.
{ui::VKEY_LEFT, ui::EF_ALT_DOWN, IDC_BACK}, {ui::VKEY_LEFT, ui::EF_ALT_DOWN, IDC_BACK},
{ui::VKEY_LEFT, ui::EF_ALTGR_DOWN, IDC_BACK},
#if BUILDFLAG(ENABLE_PRINTING) #if BUILDFLAG(ENABLE_PRINTING)
{ui::VKEY_P, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_BASIC_PRINT}, {ui::VKEY_P, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_BASIC_PRINT},
#endif // ENABLE_PRINTING #endif // ENABLE_PRINTING
...@@ -190,6 +191,7 @@ const AcceleratorMapping kAcceleratorMap[] = { ...@@ -190,6 +191,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
{ui::VKEY_K, ui::EF_CONTROL_DOWN, IDC_FOCUS_SEARCH}, {ui::VKEY_K, ui::EF_CONTROL_DOWN, IDC_FOCUS_SEARCH},
{ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FOCUS_TOOLBAR}, {ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FOCUS_TOOLBAR},
{ui::VKEY_RIGHT, ui::EF_ALT_DOWN, IDC_FORWARD}, {ui::VKEY_RIGHT, ui::EF_ALT_DOWN, IDC_FORWARD},
{ui::VKEY_RIGHT, ui::EF_ALTGR_DOWN, IDC_FORWARD},
{ui::VKEY_HOME, ui::EF_ALT_DOWN, IDC_HOME}, {ui::VKEY_HOME, ui::EF_ALT_DOWN, IDC_HOME},
{ui::VKEY_E, ui::EF_ALT_DOWN, IDC_SHOW_APP_MENU}, {ui::VKEY_E, ui::EF_ALT_DOWN, IDC_SHOW_APP_MENU},
{ui::VKEY_F, ui::EF_ALT_DOWN, IDC_SHOW_APP_MENU}, {ui::VKEY_F, ui::EF_ALT_DOWN, IDC_SHOW_APP_MENU},
......
...@@ -42,7 +42,8 @@ TEST(AcceleratorTableTest, CheckDuplicatedAccelerators) { ...@@ -42,7 +42,8 @@ TEST(AcceleratorTableTest, CheckDuplicatedAccelerators) {
<< "Duplicated accelerator: " << entry.keycode << ", " << "Duplicated accelerator: " << entry.keycode << ", "
<< (entry.modifiers & ui::EF_SHIFT_DOWN) << ", " << (entry.modifiers & ui::EF_SHIFT_DOWN) << ", "
<< (entry.modifiers & ui::EF_CONTROL_DOWN) << ", " << (entry.modifiers & ui::EF_CONTROL_DOWN) << ", "
<< (entry.modifiers & ui::EF_ALT_DOWN); << (entry.modifiers & ui::EF_ALT_DOWN) << ", "
<< (entry.modifiers & ui::EF_ALTGR_DOWN);
} }
} }
...@@ -98,7 +99,8 @@ TEST(AcceleratorTableTest, CheckDuplicatedAcceleratorsAsh) { ...@@ -98,7 +99,8 @@ TEST(AcceleratorTableTest, CheckDuplicatedAcceleratorsAsh) {
<< "Duplicated accelerator: " << entry.keycode << ", " << "Duplicated accelerator: " << entry.keycode << ", "
<< (entry.modifiers & ui::EF_SHIFT_DOWN) << ", " << (entry.modifiers & ui::EF_SHIFT_DOWN) << ", "
<< (entry.modifiers & ui::EF_CONTROL_DOWN) << ", " << (entry.modifiers & ui::EF_CONTROL_DOWN) << ", "
<< (entry.modifiers & ui::EF_ALT_DOWN) << ", action " << (entry.modifiers & ui::EF_ALT_DOWN) << ", "
<< (entry.modifiers & ui::EF_ALTGR_DOWN) << ", action "
<< (ash_entry.action); << (ash_entry.action);
} }
} }
......
...@@ -133,6 +133,10 @@ bool Accelerator::IsAltDown() const { ...@@ -133,6 +133,10 @@ bool Accelerator::IsAltDown() const {
return (modifiers_ & EF_ALT_DOWN) != 0; return (modifiers_ & EF_ALT_DOWN) != 0;
} }
bool Accelerator::IsAltGrDown() const {
return (modifiers_ & EF_ALTGR_DOWN) != 0;
}
bool Accelerator::IsCmdDown() const { bool Accelerator::IsCmdDown() const {
return (modifiers_ & EF_COMMAND_DOWN) != 0; return (modifiers_ & EF_COMMAND_DOWN) != 0;
} }
......
...@@ -83,6 +83,7 @@ class UI_BASE_EXPORT Accelerator { ...@@ -83,6 +83,7 @@ class UI_BASE_EXPORT Accelerator {
bool IsShiftDown() const; bool IsShiftDown() const;
bool IsCtrlDown() const; bool IsCtrlDown() const;
bool IsAltDown() const; bool IsAltDown() const;
bool IsAltGrDown() const;
bool IsCmdDown() const; bool IsCmdDown() const;
bool IsRepeat() const; bool IsRepeat() const;
......
...@@ -357,8 +357,8 @@ void Combobox::OnBoundsChanged(const gfx::Rect& previous_bounds) { ...@@ -357,8 +357,8 @@ void Combobox::OnBoundsChanged(const gfx::Rect& previous_bounds) {
bool Combobox::SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) { bool Combobox::SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) {
// Escape should close the drop down list when it is active, not host UI. // Escape should close the drop down list when it is active, not host UI.
if (e.key_code() != ui::VKEY_ESCAPE || if (e.key_code() != ui::VKEY_ESCAPE || e.IsShiftDown() || e.IsControlDown() ||
e.IsShiftDown() || e.IsControlDown() || e.IsAltDown()) { e.IsAltDown() || e.IsAltGrDown()) {
return false; return false;
} }
return !!menu_runner_; return !!menu_runner_;
......
...@@ -553,7 +553,8 @@ void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { ...@@ -553,7 +553,8 @@ void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) {
} }
bool FocusManager::ProcessArrowKeyTraversal(const ui::KeyEvent& event) { bool FocusManager::ProcessArrowKeyTraversal(const ui::KeyEvent& event) {
if (event.IsShiftDown() || event.IsControlDown() || event.IsAltDown()) if (event.IsShiftDown() || event.IsControlDown() || event.IsAltDown() ||
event.IsAltGrDown())
return false; return false;
const ui::KeyboardCode key = event.key_code(); const ui::KeyboardCode key = event.key_code();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment