Commit ab6e1a1b authored by danakj@chromium.org's avatar danakj@chromium.org

Add Search-. as a shortcut for the Insert key when Search is acting as a Function key.

NOTRY=true
R=yusukes@chromium.org
BUG=162268
Depends on: https://codereview.chromium.org/11421055/
Depends on: https://codereview.chromium.org/11417144/
Depends on: https://codereview.chromium.org/11415124/


Review URL: https://chromiumcodereview.appspot.com/11280153

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170847 0039d316-1c4b-4281-b951-d872f2087c98
parent 8550f87f
......@@ -2678,6 +2678,9 @@ Battery full
<message name="IDS_KEYBOARD_OVERLAY_F12" desc="The text in the keyboard overlay to explain the shortcut.">
F12
</message>
<message name="IDS_KEYBOARD_OVERLAY_INSERT" desc="The text in the keyboard overlay to explain the shortcut.">
Insert
</message>
<!-- BEGIN GENERATED KEYBOARD OVERLAY STRINGS -->
<message name="IDS_KEYBOARD_OVERLAY_ACTIVATE_LAST_LAUNCHER_ITEM" desc="The text in the keyboard overlay to explain the shortcut (Open the last launcher item).">
Activate last launcher item
......
......@@ -159,7 +159,8 @@ function getShortcutData() {
'down<>SEARCH': 'keyboardOverlayPageDown',
'right<>SEARCH': 'keyboardOverlayEnd',
'up<>SEARCH': 'keyboardOverlayPageUp',
'left<>SEARCH': 'keyboardOverlayHome'
'left<>SEARCH': 'keyboardOverlayHome',
'.<>SEARCH': 'keyboardOverlayInsert'
};
for (var key in searchModifierRemoveShortcuts)
......
......@@ -382,7 +382,7 @@ void EventRewriter::Rewrite(ui::KeyEvent* event) {
#endif
RewriteModifiers(event);
RewriteNumPadKeys(event);
RewriteBackspaceAndArrowKeys(event);
RewriteExtendedKeys(event);
RewriteFunctionKeys(event);
}
......@@ -663,7 +663,7 @@ bool EventRewriter::RewriteNumPadKeys(ui::KeyEvent* event) {
return rewritten;
}
bool EventRewriter::RewriteBackspaceAndArrowKeys(ui::KeyEvent* event) {
bool EventRewriter::RewriteExtendedKeys(ui::KeyEvent* event) {
#if defined(OS_CHROMEOS)
// On a ChromeOS keyboard, modifier keys can be used to access extended
// keyboard shortcuts. On other keyboards, keys such as delete and page up are
......@@ -754,6 +754,11 @@ bool EventRewriter::RewriteBackspaceAndArrowKeys(ui::KeyEvent* event) {
XK_Down,
0, Mod4Mask,
XK_Next, ui::VKEY_NEXT,
},
{ // Search+Period -> Insert
XK_period,
0, Mod4Mask,
XK_Insert, ui::VKEY_INSERT,
}
};
......
......@@ -173,9 +173,10 @@ class EventRewriter : public ash::EventRewriterDelegate,
// * Search+Up -> Prior (aka PageUp)
// * Search+Down -> Next (aka PageDown)
// * Search+Left -> Home
// * Search+right -> End
// * Search+Right -> End
// * Search+. -> Insert
// Returns true when the |event| is rewritten.
bool RewriteBackspaceAndArrowKeys(ui::KeyEvent* event);
bool RewriteExtendedKeys(ui::KeyEvent* event);
// When the Search key acts as a function key, it remaps Search+1
// through Search+= to F1 through F12. Returns true when the |event| is
......
......@@ -156,6 +156,8 @@ class EventRewriterTest : public testing::Test {
keycode_0_(XKeysymToKeycode(display_, XK_0)),
keycode_minus_(XKeysymToKeycode(display_, XK_minus)),
keycode_equal_(XKeysymToKeycode(display_, XK_equal)),
keycode_period_(XKeysymToKeycode(display_, XK_period)),
keycode_insert_(XKeysymToKeycode(display_, XK_Insert)),
input_method_manager_mock_(NULL) {
}
virtual ~EventRewriterTest() {}
......@@ -257,6 +259,8 @@ class EventRewriterTest : public testing::Test {
const KeyCode keycode_0_;
const KeyCode keycode_minus_;
const KeyCode keycode_equal_;
const KeyCode keycode_period_;
const KeyCode keycode_insert_;
chromeos::ScopedMockUserManagerEnabler user_manager_mock_;
chromeos::input_method::MockInputMethodManager* input_method_manager_mock_;
};
......@@ -1754,7 +1758,7 @@ TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) {
input_method_manager_mock_->SetCurrentInputMethodId("xkb:us::eng");
}
TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) {
TEST_F(EventRewriterTest, TestRewriteExtendedKeys) {
TestingPrefService prefs;
chromeos::Preferences::RegisterUserPrefs(&prefs);
EventRewriter rewriter;
......@@ -1791,7 +1795,9 @@ TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) {
{ ui::VKEY_LEFT, keycode_left_, 0, 0,
ui::VKEY_LEFT, keycode_left_, 0, 0 },
{ ui::VKEY_RIGHT, keycode_right_, 0, 0,
ui::VKEY_RIGHT, keycode_right_, 0, 0 }
ui::VKEY_RIGHT, keycode_right_, 0, 0 },
{ ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0,
ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0 }
};
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(default_tests); ++i) {
......@@ -1903,7 +1909,10 @@ TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) {
{ ui::VKEY_DOWN, keycode_down_,
ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask,
ui::VKEY_END, keycode_end_,
0, 0, }
0, 0, },
// Period -> Period
{ ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0,
ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0 }
};
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) {
......@@ -2054,6 +2063,14 @@ TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) {
{ ui::VKEY_RIGHT, keycode_right_,
ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask,
ui::VKEY_END, keycode_end_,
ui::EF_CONTROL_DOWN, ControlMask },
// Search+Period -> Insert
{ ui::VKEY_OEM_PERIOD, keycode_period_, 0, Mod4Mask,
ui::VKEY_INSERT, keycode_insert_, 0, 0 },
// Control+Search+Period -> Control+Insert
{ ui::VKEY_OEM_PERIOD, keycode_period_,
ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask,
ui::VKEY_INSERT, keycode_insert_,
ui::EF_CONTROL_DOWN, ControlMask }
};
......@@ -2373,7 +2390,7 @@ TEST_F(EventRewriterTest, TestRewriteFunctionKeys) {
*CommandLine::ForCurrentProcess() = original_cl;
}
TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeysWithSearchRemapped) {
TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) {
const CommandLine original_cl(*CommandLine::ForCurrentProcess());
// Remap Search to Control.
......
......@@ -75,6 +75,7 @@ struct I18nContentToMessage {
{ "keyboardOverlayF10", IDS_KEYBOARD_OVERLAY_F10 },
{ "keyboardOverlayF11", IDS_KEYBOARD_OVERLAY_F11 },
{ "keyboardOverlayF12", IDS_KEYBOARD_OVERLAY_F12 },
{ "keyboardOverlayInsert", IDS_KEYBOARD_OVERLAY_INSERT },
{ "keyboardOverlayInstructions", IDS_KEYBOARD_OVERLAY_INSTRUCTIONS },
{ "keyboardOverlayInstructionsWithSearch",
IDS_KEYBOARD_OVERLAY_INSTRUCTIONS_WITH_SEARCH },
......
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