Index: chrome/browser/ui/views/ash/key_rewriter.cc |
diff --git a/chrome/browser/ui/views/ash/key_rewriter.cc b/chrome/browser/ui/views/ash/key_rewriter.cc |
index 15a1e6d88be2d7128dedca38f02d2cdd42b8f94b..951fccaa47c1595cb647981fb2ed4714ebf37bee 100644 |
--- a/chrome/browser/ui/views/ash/key_rewriter.cc |
+++ b/chrome/browser/ui/views/ash/key_rewriter.cc |
@@ -82,12 +82,8 @@ KeyRewriter::DeviceType KeyRewriter::GetDeviceType( |
return kDeviceUnknown; |
} |
-void KeyRewriter::RewriteCommandToControlForTesting(aura::KeyEvent* event) { |
- RewriteCommandToControl(event); |
-} |
- |
-void KeyRewriter::RewriteNumPadKeysForTesting(aura::KeyEvent* event) { |
- RewriteNumPadKeys(event); |
+void KeyRewriter::RewriteForTesting(aura::KeyEvent* event) { |
+ Rewrite(event); |
} |
ash::KeyRewriterDelegate::Action KeyRewriter::RewriteOrFilterKeyEvent( |
@@ -98,15 +94,7 @@ ash::KeyRewriterDelegate::Action KeyRewriter::RewriteOrFilterKeyEvent( |
// Do not handle a fabricated event generated by tests. |
return kActionRewrite; |
} |
- |
- if (RewriteCommandToControl(event)) |
- return kActionRewrite; |
- if (RewriteNumPadKeys(event)) |
- return kActionRewrite; |
- |
- // TODO(yusukes): Implement crbug.com/115112 (Search/Ctrl/Alt remapping) and |
- // crosbug.com/27167 (allow sending function keys) here. |
- |
+ Rewrite(event); |
return kActionRewrite; // Do not drop the event. |
} |
@@ -181,6 +169,13 @@ void KeyRewriter::RefreshKeycodes() { |
} |
#endif |
+void KeyRewriter::Rewrite(aura::KeyEvent* event) { |
+ RewriteCommandToControl(event); |
+ RewriteNumPadKeys(event); |
+ // TODO(yusukes): Implement crbug.com/115112 (Search/Ctrl/Alt remapping) and |
+ // crosbug.com/27167 (allow sending function keys) here. |
+} |
+ |
bool KeyRewriter::RewriteCommandToControl(aura::KeyEvent* event) { |
bool rewritten = false; |
if (last_device_id_ == kBadDeviceId) |
@@ -208,20 +203,21 @@ bool KeyRewriter::RewriteCommandToControl(aura::KeyEvent* event) { |
xkey->state &= ~Mod4Mask; |
xkey->state |= ControlMask; |
event->set_flags(event->flags() | ui::EF_CONTROL_DOWN); |
+ rewritten = true; |
} |
const KeySym keysym = XLookupKeysym(xkey, 0); |
switch (keysym) { |
case XK_Super_L: |
// left Command -> left Control |
- Rewrite(event, control_l_xkeycode_, xkey->state, |
- ui::VKEY_LCONTROL, event->flags()); |
+ OverwriteEvent(event, control_l_xkeycode_, xkey->state, |
+ ui::VKEY_CONTROL, event->flags()); |
rewritten = true; |
break; |
case XK_Super_R: |
// right Command -> right Control |
- Rewrite(event, control_r_xkeycode_, xkey->state, |
- ui::VKEY_RCONTROL, event->flags()); |
+ OverwriteEvent(event, control_r_xkeycode_, xkey->state, |
+ ui::VKEY_CONTROL, event->flags()); |
rewritten = true; |
break; |
default: |
@@ -245,58 +241,58 @@ bool KeyRewriter::RewriteNumPadKeys(aura::KeyEvent* event) { |
const KeySym keysym = XLookupKeysym(xkey, 0); |
switch (keysym) { |
case XK_KP_Insert: |
- Rewrite(event, kp_0_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD0, event->flags()); |
+ OverwriteEvent(event, kp_0_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD0, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Delete: |
- Rewrite(event, kp_decimal_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_DECIMAL, event->flags()); |
+ OverwriteEvent(event, kp_decimal_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_DECIMAL, event->flags()); |
rewritten = true; |
break; |
case XK_KP_End: |
- Rewrite(event, kp_1_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD1, event->flags()); |
+ OverwriteEvent(event, kp_1_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD1, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Down: |
- Rewrite(event, kp_2_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD2, event->flags()); |
+ OverwriteEvent(event, kp_2_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD2, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Next: |
- Rewrite(event, kp_3_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD3, event->flags()); |
+ OverwriteEvent(event, kp_3_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD3, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Left: |
- Rewrite(event, kp_4_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD4, event->flags()); |
+ OverwriteEvent(event, kp_4_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD4, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Begin: |
- Rewrite(event, kp_5_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD5, event->flags()); |
+ OverwriteEvent(event, kp_5_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD5, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Right: |
- Rewrite(event, kp_6_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD6, event->flags()); |
+ OverwriteEvent(event, kp_6_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD6, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Home: |
- Rewrite(event, kp_7_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD7, event->flags()); |
+ OverwriteEvent(event, kp_7_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD7, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Up: |
- Rewrite(event, kp_8_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD8, event->flags()); |
+ OverwriteEvent(event, kp_8_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD8, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Prior: |
- Rewrite(event, kp_9_xkeycode_, xkey->state | Mod2Mask, |
- ui::VKEY_NUMPAD9, event->flags()); |
+ OverwriteEvent(event, kp_9_xkeycode_, xkey->state | Mod2Mask, |
+ ui::VKEY_NUMPAD9, event->flags()); |
rewritten = true; |
break; |
case XK_KP_Divide: |
@@ -305,8 +301,8 @@ bool KeyRewriter::RewriteNumPadKeys(aura::KeyEvent* event) { |
case XK_KP_Add: |
case XK_KP_Enter: |
// Add Mod2Mask for consistency. |
- Rewrite(event, xkey->keycode, xkey->state | Mod2Mask, |
- event->key_code(), event->flags()); |
+ OverwriteEvent(event, xkey->keycode, xkey->state | Mod2Mask, |
+ event->key_code(), event->flags()); |
rewritten = true; |
break; |
default: |
@@ -318,11 +314,11 @@ bool KeyRewriter::RewriteNumPadKeys(aura::KeyEvent* event) { |
return rewritten; |
} |
-void KeyRewriter::Rewrite(aura::KeyEvent* event, |
- unsigned int new_native_keycode, |
- unsigned int new_native_state, |
- ui::KeyboardCode new_keycode, |
- int new_flags) { |
+void KeyRewriter::OverwriteEvent(aura::KeyEvent* event, |
+ unsigned int new_native_keycode, |
+ unsigned int new_native_state, |
+ ui::KeyboardCode new_keycode, |
+ int new_flags) { |
#if defined(OS_CHROMEOS) |
XEvent* xev = event->native_event(); |
XKeyEvent* xkey = &(xev->xkey); |