Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(580)

Unified Diff: chrome/browser/ui/views/ash/ime_controller_chromeos.cc

Issue 10452042: Fixing french keyboard handling (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Removed the settings code Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/ash/ime_controller_chromeos.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..e57d0739d4d9862b3b78982af6557d38fe80e8c9 100644
--- a/chrome/browser/ui/views/ash/ime_controller_chromeos.cc
+++ b/chrome/browser/ui/views/ash/ime_controller_chromeos.cc
@@ -4,8 +4,14 @@
#include "chrome/browser/ui/views/ash/ime_controller_chromeos.h"
+#include "base/string_util.h"
Yusuke Sato 2012/05/30 01:05:56 remove?
Mr4D (OOO till 08-26) 2012/05/30 15:46:03 Done.
#include "chrome/browser/chromeos/input_method/input_method_manager.h"
+#include "chrome/browser/browser_process.h"
Yusuke Sato 2012/05/30 01:05:56 remove line 10-12?
Mr4D (OOO till 08-26) 2012/05/30 15:46:03 Done.
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/browser/chromeos/language_preferences.h"
+#include "ui/base/accelerators/accelerator.h"
+
bool ImeController::HandleNextIme() {
chromeos::input_method::InputMethodManager* manager =
chromeos::input_method::InputMethodManager::GetInstance();
@@ -23,3 +29,29 @@ bool ImeController::HandleSwitchIme(const ui::Accelerator& accelerator) {
chromeos::input_method::InputMethodManager::GetInstance();
return manager->SwitchInputMethod(accelerator);
}
+
+bool ImeController::IsFrenchKeyboard() {
+ chromeos::input_method::InputMethodManager* manager =
+ chromeos::input_method::InputMethodManager::GetInstance();
+ const chromeos::input_method::InputMethodDescriptor& descriptor =
+ manager->GetCurrentInputMethod();
+ std::string layout = descriptor.id();
Yusuke Sato 2012/05/30 01:05:56 nit: const std::string&
Mr4D (OOO till 08-26) 2012/05/30 15:46:03 Done.
+ return (layout == "xkb:fr::fra" || layout == "xkb:be::fra");
+}
+
+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 need to dynamically
+ // check if a modification is required.
+ if (IsFrenchKeyboard())
+ // We toggle the shift key to get the correct accelerator from our table.
+ modifiers ^= ui::EF_SHIFT_DOWN;
+ }
+ return ui::Accelerator(key, modifiers);
+}
« no previous file with comments | « chrome/browser/ui/views/ash/ime_controller_chromeos.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698