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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/ui/webui/options/chromeos/keyboard_handler.h" 6 7 #include "base/command_line.h" 8 #include "base/values.h" 9 #include "chromeos/chromeos_switches.h" 10 #include "chromeos/ime/xkeyboard.h" 11 #include "content/public/browser/web_ui.h" 12 #include "grit/generated_resources.h" 13 #include "ui/base/l10n/l10n_util.h" 14 15 namespace { 16 const struct ModifierKeysSelectItem { 17 int message_id; 18 chromeos::input_method::ModifierKey value; 19 } kModifierKeysSelectItems[] = { 20 { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_SEARCH, 21 chromeos::input_method::kSearchKey }, 22 { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_CTRL, 23 chromeos::input_method::kControlKey }, 24 { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_ALT, 25 chromeos::input_method::kAltKey }, 26 { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_VOID, 27 chromeos::input_method::kVoidKey }, 28 { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_CAPS_LOCK, 29 chromeos::input_method::kCapsLockKey }, 30 }; 31 32 const char* kDataValuesNames[] = { 33 "remapSearchKeyToValue", 34 "remapControlKeyToValue", 35 "remapAltKeyToValue", 36 "remapCapsLockKeyToValue", 37 "remapDiamondKeyToValue", 38 }; 39 } // namespace 40 41 namespace chromeos { 42 namespace options { 43 44 KeyboardHandler::KeyboardHandler() { 45 } 46 47 KeyboardHandler::~KeyboardHandler() { 48 } 49 50 void KeyboardHandler::GetLocalizedValues(DictionaryValue* localized_strings) { 51 DCHECK(localized_strings); 52 53 localized_strings->SetString("keyboardOverlayTitle", 54 l10n_util::GetStringUTF16(IDS_OPTIONS_KEYBOARD_OVERLAY_TITLE)); 55 localized_strings->SetString("remapSearchKeyToContent", 56 l10n_util::GetStringUTF16( 57 IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_SEARCH_LABEL)); 58 localized_strings->SetString("remapControlKeyToContent", 59 l10n_util::GetStringUTF16( 60 IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_CTRL_LABEL)); 61 localized_strings->SetString("remapAltKeyToContent", 62 l10n_util::GetStringUTF16( 63 IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_ALT_LABEL)); 64 localized_strings->SetString("remapCapsLockKeyToContent", 65 l10n_util::GetStringUTF16( 66 IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_CAPS_LOCK_LABEL)); 67 localized_strings->SetString("remapDiamondKeyToContent", 68 l10n_util::GetStringUTF16( 69 IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_DIAMOND_KEY_LABEL)); 70 localized_strings->SetString("changeLanguageAndInputSettings", 71 l10n_util::GetStringUTF16( 72 IDS_OPTIONS_SETTINGS_CHANGE_LANGUAGE_AND_INPUT_SETTINGS)); 73 74 for (size_t i = 0; i < arraysize(kDataValuesNames); ++i) { 75 ListValue* list_value = new ListValue(); 76 for (size_t j = 0; j < arraysize(kModifierKeysSelectItems); ++j) { 77 const input_method::ModifierKey value = 78 kModifierKeysSelectItems[j].value; 79 const int message_id = kModifierKeysSelectItems[j].message_id; 80 // Only the seach key can be remapped to the caps lock key. 81 if (kDataValuesNames[i] != std::string("remapSearchKeyToValue") && 82 kDataValuesNames[i] != std::string("remapCapsLockKeyToValue") && 83 value == input_method::kCapsLockKey) { 84 continue; 85 } 86 ListValue* option = new ListValue(); 87 option->Append(new base::FundamentalValue(value)); 88 option->Append(new base::StringValue(l10n_util::GetStringUTF16( 89 message_id))); 90 list_value->Append(option); 91 } 92 localized_strings->Set(kDataValuesNames[i], list_value); 93 } 94 } 95 96 void KeyboardHandler::InitializePage() { 97 bool chromeos_keyboard = CommandLine::ForCurrentProcess()->HasSwitch( 98 chromeos::switches::kHasChromeOSKeyboard); 99 const base::FundamentalValue show_caps_lock_options(!chromeos_keyboard); 100 101 bool has_diamond_key = CommandLine::ForCurrentProcess()->HasSwitch( 102 chromeos::switches::kHasChromeOSDiamondKey); 103 const base::FundamentalValue show_diamond_key_options(has_diamond_key); 104 105 web_ui()->CallJavascriptFunction( 106 "options.KeyboardOverlay.showCapsLockOptions", 107 show_caps_lock_options); 108 web_ui()->CallJavascriptFunction( 109 "options.KeyboardOverlay.showDiamondKeyOptions", 110 show_diamond_key_options); 111 } 112 113 } // namespace options 114 } // namespace chromeos 115