| Index: chrome/browser/ui/views/ash/ime_controller_chromeos.cc
|
| diff --git a/chrome/browser/ui/views/ash/ime_controller_chromeos.cc b/chrome/browser/ui/views/ash/ime_controller_chromeos.cc
|
| index 1934357e90140bc62cc7e8ea681e6ab6cc68b498..98ac9a2cca7b1a4b8b4e3b435dead3f9cb9df439 100644
|
| --- a/chrome/browser/ui/views/ash/ime_controller_chromeos.cc
|
| +++ b/chrome/browser/ui/views/ash/ime_controller_chromeos.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/ui/views/ash/ime_controller_chromeos.h"
|
|
|
| #include "chrome/browser/chromeos/input_method/input_method_manager.h"
|
| +#include "ui/base/accelerators/accelerator.h"
|
|
|
| bool ImeController::HandleNextIme() {
|
| chromeos::input_method::InputMethodManager* manager =
|
| @@ -23,3 +24,31 @@ bool ImeController::HandleSwitchIme(const ui::Accelerator& accelerator) {
|
| chromeos::input_method::InputMethodManager::GetInstance();
|
| return manager->SwitchInputMethod(accelerator);
|
| }
|
| +
|
| +ui::Accelerator ImeController::RemapAccelerator(
|
| + const ui::Accelerator& accelerator) {
|
| + ui::KeyboardCode key = accelerator.key_code();
|
| + int modifiers = accelerator.modifiers();
|
| + // On French keyboards the user needs to press a number key in conjunction
|
| + // with the shift key. To get the right accelerator from our static table
|
| + // we modify the received accelerator to match this.
|
| + if (key >= ui::VKEY_0 && key <= ui::VKEY_9) {
|
| + // A keyboard layout can get changed by the user, so we perform quickly
|
| + // this cheap layout test.
|
| + // See http://crbug.com/129017 for more details.
|
| + if (UsingFrenchInputMethod()) {
|
| + // We toggle the shift key to get the correct accelerator from our table.
|
| + modifiers ^= ui::EF_SHIFT_DOWN;
|
| + }
|
| + }
|
| + return ui::Accelerator(key, modifiers);
|
| +}
|
| +
|
| +bool ImeController::UsingFrenchInputMethod() const {
|
| + chromeos::input_method::InputMethodManager* manager =
|
| + chromeos::input_method::InputMethodManager::GetInstance();
|
| + const chromeos::input_method::InputMethodDescriptor& descriptor =
|
| + manager->GetCurrentInputMethod();
|
| + const std::string& layout = descriptor.id();
|
| + return (layout == "xkb:fr::fra" || layout == "xkb:be::fra");
|
| +}
|
|
|