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

Side by Side Diff: chrome/browser/chromeos/preferences.cc

Issue 10383301: Move modifier remapping code from X to Ash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: style fix 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/preferences.h" 5 #include "chrome/browser/chromeos/preferences.h"
6 6
7 #include "base/chromeos/chromeos_version.h" 7 #include "base/chromeos/chromeos_version.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/i18n/time_formatting.h" 9 #include "base/i18n/time_formatting.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 language_prefs::kMozcBooleanPrefs[i].pref_name, prefs, this); 324 language_prefs::kMozcBooleanPrefs[i].pref_name, prefs, this);
325 } 325 }
326 for (size_t i = 0; i < language_prefs::kNumMozcMultipleChoicePrefs; ++i) { 326 for (size_t i = 0; i < language_prefs::kNumMozcMultipleChoicePrefs; ++i) {
327 mozc_multiple_choice_prefs_[i].Init( 327 mozc_multiple_choice_prefs_[i].Init(
328 language_prefs::kMozcMultipleChoicePrefs[i].pref_name, prefs, this); 328 language_prefs::kMozcMultipleChoicePrefs[i].pref_name, prefs, this);
329 } 329 }
330 for (size_t i = 0; i < language_prefs::kNumMozcIntegerPrefs; ++i) { 330 for (size_t i = 0; i < language_prefs::kNumMozcIntegerPrefs; ++i) {
331 mozc_integer_prefs_[i].Init( 331 mozc_integer_prefs_[i].Init(
332 language_prefs::kMozcIntegerPrefs[i].pref_name, prefs, this); 332 language_prefs::kMozcIntegerPrefs[i].pref_name, prefs, this);
333 } 333 }
334 xkb_remap_search_key_to_.Init(
335 prefs::kLanguageXkbRemapSearchKeyTo, prefs, this);
336 xkb_remap_control_key_to_.Init(
337 prefs::kLanguageXkbRemapControlKeyTo, prefs, this);
338 xkb_remap_alt_key_to_.Init(
339 prefs::kLanguageXkbRemapAltKeyTo, prefs, this);
340 xkb_auto_repeat_enabled_.Init( 334 xkb_auto_repeat_enabled_.Init(
341 prefs::kLanguageXkbAutoRepeatEnabled, prefs, this); 335 prefs::kLanguageXkbAutoRepeatEnabled, prefs, this);
342 xkb_auto_repeat_delay_pref_.Init( 336 xkb_auto_repeat_delay_pref_.Init(
343 prefs::kLanguageXkbAutoRepeatDelay, prefs, this); 337 prefs::kLanguageXkbAutoRepeatDelay, prefs, this);
344 xkb_auto_repeat_interval_pref_.Init( 338 xkb_auto_repeat_interval_pref_.Init(
345 prefs::kLanguageXkbAutoRepeatInterval, prefs, this); 339 prefs::kLanguageXkbAutoRepeatInterval, prefs, this);
346 340
347 enable_screen_lock_.Init(prefs::kEnableScreenLock, prefs, this); 341 enable_screen_lock_.Init(prefs::kEnableScreenLock, prefs, this);
348 342
349 enable_drm_.Init(prefs::kEnableCrosDRM, prefs, this); 343 enable_drm_.Init(prefs::kEnableCrosDRM, prefs, this);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Changed", right); 425 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Changed", right);
432 else 426 else
433 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Started", right); 427 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Started", right);
434 } 428 }
435 429
436 if (!pref_name || *pref_name == prefs::kLanguagePreferredLanguages) { 430 if (!pref_name || *pref_name == prefs::kLanguagePreferredLanguages) {
437 // Unlike kLanguagePreloadEngines and some other input method 431 // Unlike kLanguagePreloadEngines and some other input method
438 // preferencs, we don't need to send this to ibus-daemon. 432 // preferencs, we don't need to send this to ibus-daemon.
439 } 433 }
440 434
441 // Here, we set up the the modifier key mapping. This has to be done
442 // before changing the current keyboard layout, so that the modifier key
443 // preference is properly preserved. For this reason, we should do this
444 // before setting preload engines, that could change the current
445 // keyboard layout as needed.
446 if (!pref_name || (*pref_name == prefs::kLanguageXkbRemapSearchKeyTo ||
447 *pref_name == prefs::kLanguageXkbRemapControlKeyTo ||
448 *pref_name == prefs::kLanguageXkbRemapAltKeyTo)) {
449 UpdateModifierKeyMapping();
450 }
451 if (!pref_name || *pref_name == prefs::kLanguageXkbAutoRepeatEnabled) { 435 if (!pref_name || *pref_name == prefs::kLanguageXkbAutoRepeatEnabled) {
452 const bool enabled = xkb_auto_repeat_enabled_.GetValue(); 436 const bool enabled = xkb_auto_repeat_enabled_.GetValue();
453 input_method::XKeyboard::SetAutoRepeatEnabled(enabled); 437 input_method::XKeyboard::SetAutoRepeatEnabled(enabled);
454 } 438 }
455 if (!pref_name || ((*pref_name == prefs::kLanguageXkbAutoRepeatDelay) || 439 if (!pref_name || ((*pref_name == prefs::kLanguageXkbAutoRepeatDelay) ||
456 (*pref_name == prefs::kLanguageXkbAutoRepeatInterval))) { 440 (*pref_name == prefs::kLanguageXkbAutoRepeatInterval))) {
457 UpdateAutoRepeatRate(); 441 UpdateAutoRepeatRate();
458 } 442 }
459 443
460 if (!pref_name) { 444 if (!pref_name) {
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 // might be ignored as an invalid input method ID. The ChangeInputMethod() 640 // might be ignored as an invalid input method ID. The ChangeInputMethod()
657 // calls are also necessary to restore the previous/current input method prefs 641 // calls are also necessary to restore the previous/current input method prefs
658 // which could have been modified by the SetLanguageConfigStringListAsCSV call 642 // which could have been modified by the SetLanguageConfigStringListAsCSV call
659 // above to the original state. 643 // above to the original state.
660 if (!previous_input_method_id.empty()) 644 if (!previous_input_method_id.empty())
661 input_method_manager_->ChangeInputMethod(previous_input_method_id); 645 input_method_manager_->ChangeInputMethod(previous_input_method_id);
662 if (!current_input_method_id.empty()) 646 if (!current_input_method_id.empty())
663 input_method_manager_->ChangeInputMethod(current_input_method_id); 647 input_method_manager_->ChangeInputMethod(current_input_method_id);
664 } 648 }
665 649
666 void Preferences::UpdateModifierKeyMapping() {
667 const int search_remap = xkb_remap_search_key_to_.GetValue();
668 const int control_remap = xkb_remap_control_key_to_.GetValue();
669 const int alt_remap = xkb_remap_alt_key_to_.GetValue();
670 if ((search_remap < input_method::kNumModifierKeys) && (search_remap >= 0) &&
671 (control_remap < input_method::kNumModifierKeys) &&
672 (control_remap >= 0) &&
673 (alt_remap < input_method::kNumModifierKeys) && (alt_remap >= 0)) {
674 input_method::ModifierMap modifier_map;
675 modifier_map.push_back(
676 input_method::ModifierKeyPair(
677 input_method::kSearchKey,
678 input_method::ModifierKey(search_remap)));
679 modifier_map.push_back(
680 input_method::ModifierKeyPair(
681 input_method::kControlKey,
682 input_method::ModifierKey(control_remap)));
683 modifier_map.push_back(
684 input_method::ModifierKeyPair(
685 input_method::kAltKey,
686 input_method::ModifierKey(alt_remap)));
687 input_method_manager_->GetXKeyboard()->RemapModifierKeys(modifier_map);
688 } else {
689 LOG(ERROR) << "Failed to remap modifier keys. Unexpected value(s): "
690 << search_remap << ", " << control_remap << ", " << alt_remap;
691 }
692 }
693
694 void Preferences::UpdateAutoRepeatRate() { 650 void Preferences::UpdateAutoRepeatRate() {
695 // Avoid setting repeat rate on desktop dev environment. 651 // Avoid setting repeat rate on desktop dev environment.
696 if (!base::chromeos::IsRunningOnChromeOS()) 652 if (!base::chromeos::IsRunningOnChromeOS())
697 return; 653 return;
698 654
699 input_method::AutoRepeatRate rate; 655 input_method::AutoRepeatRate rate;
700 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); 656 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue();
701 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); 657 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue();
702 DCHECK(rate.initial_delay_in_ms > 0); 658 DCHECK(rate.initial_delay_in_ms > 0);
703 DCHECK(rate.repeat_interval_in_ms > 0); 659 DCHECK(rate.repeat_interval_in_ms > 0);
704 input_method::XKeyboard::SetAutoRepeatRate(rate); 660 input_method::XKeyboard::SetAutoRepeatRate(rate);
705 } 661 }
706 662
707 } // namespace chromeos 663 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698