1 // Copyright (c) 2011 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 "base/basictypes.h" 6 #include "chrome/browser/chromeos/language_preferences.h" 7 #include "chrome/common/pref_names.h" 8 #include "grit/generated_resources.h" 9 10 namespace chromeos { 11 namespace language_prefs { 12 13 // --------------------------------------------------------------------------- 14 // For ibus-daemon 15 // --------------------------------------------------------------------------- 16 const char kGeneralSectionName[] = "general"; 17 const char kHotKeySectionName[] = "general/hotkey"; 18 const char kPreloadEnginesConfigName[] = "preload_engines"; 19 const char kNextEngineInMenuConfigName[] = "next_engine_in_menu"; 20 const char kPreviousEngineConfigName[] = "previous_engine"; 21 const char kHotkeyNextEngineInMenu[] = 22 "Shift+Alt+Release+Shift_L,Shift+Alt+Release+Meta_L,Control+Shift+space," 23 "Shift+Alt+Release+Shift_R,Shift+Alt+Release+Meta_R,Zenkaku_Hankaku,Hangul"; 24 const char kHotkeyPreviousEngine[] = "Control+space"; 25 26 // --------------------------------------------------------------------------- 27 // For Traditional Chinese input method (ibus-chewing) 28 // --------------------------------------------------------------------------- 29 const char kChewingSectionName[] = "engine/Chewing"; 30 31 // We have to sync the |ibus_config_name|s with those in 32 // ibus-chewing/files/src/Config.cc. 33 const LanguageBooleanPrefs kChewingBooleanPrefs[] = { 34 { prefs::kLanguageChewingAutoShiftCur, false, "autoShiftCur", 35 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_AUTO_SHIFT_CUR}, 36 { prefs::kLanguageChewingAddPhraseDirection, false, "addPhraseDirection", 37 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_ADD_PHRASE_DIRECTION}, 38 /* Temporarily disabled. (crosbug.com/14185) 39 { prefs::kLanguageChewingEasySymbolInput, true, "easySymbolInput", 40 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_EASY_SYMBOL_INPUT}, 41 */ 42 { prefs::kLanguageChewingEscCleanAllBuf, false, "escCleanAllBuf", 43 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_ESC_CLEAN_ALL_BUF}, 44 { prefs::kLanguageChewingForceLowercaseEnglish, false, 45 "forceLowercaseEnglish", 46 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_FORCE_LOWER_CASE_ENGLISH}, 47 /* Temporarily disabled. (crosbug.com/14185) 48 { prefs::kLanguageChewingPlainZhuyin, false, "plainZhuyin", 49 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_PLAIN_ZHUYIN}, 50 */ 51 { prefs::kLanguageChewingPhraseChoiceRearward, true, "phraseChoiceRearward", 52 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_PHRASE_CHOICE_REARWARD}, 53 { prefs::kLanguageChewingSpaceAsSelection, true, "spaceAsSelection", 54 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_SPACE_AS_SELECTION}, 55 }; 56 COMPILE_ASSERT(kNumChewingBooleanPrefs == arraysize(kChewingBooleanPrefs), 57 TheSizeShouldMatch); 58 59 const LanguageIntegerRangePreference kChewingIntegerPrefs[] = { 60 { prefs::kLanguageChewingMaxChiSymbolLen, 20, 8, 40, "maxChiSymbolLen", 61 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_MAX_CHI_SYMBOL_LEN}, 62 { prefs::kLanguageChewingCandPerPage, 10, 8, 10, "candPerPage", 63 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_CAND_PER_PAGE}, 64 }; 65 COMPILE_ASSERT(kNumChewingIntegerPrefs == arraysize(kChewingIntegerPrefs), 66 TheSizeShouldMatch); 67 68 const LanguageMultipleChoicePreference<const char*> 69 kChewingMultipleChoicePrefs[] = { 70 { prefs::kLanguageChewingKeyboardType, 71 "default", 72 "KBType", 73 {{ "default", 74 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DEFAULT }, 75 { "hsu", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_HSU }, 76 { "ibm", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_IBM }, 77 { "gin_yieh", 78 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_GIN_YIEH }, 79 { "eten", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_ETEN }, 80 { "eten26", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_ETEN26 }, 81 { "dvorak", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DVORAK }, 82 { "dvorak_hsu", 83 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DVORAK_HSU }, 84 { "dachen_26", 85 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_DACHEN_26 }, 86 { "hanyu", IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE_HANYU }}, 87 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_KEYBOARD_TYPE, 88 }, 89 { prefs::kLanguageChewingSelKeys, 90 "1234567890", 91 "selKeys", 92 {{ "1234567890", 93 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_1234567890 }, 94 { "asdfghjkl;", 95 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFGHJKLS }, 96 { "asdfzxcv89", 97 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFZXCV89 }, 98 { "asdfjkl789", 99 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_ASDFJKL789 }, 100 { "aoeu;qjkix", 101 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUSQJKIX }, 102 { "aoeuhtnsid", 103 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUHTNSID }, 104 { "aoeuidhtns", 105 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_AOEUIDHTNS }, 106 { "1234qweras", 107 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS_1234QWERAS }}, 108 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SEL_KEYS, 109 }, 110 }; 111 COMPILE_ASSERT(kNumChewingMultipleChoicePrefs == 112 arraysize(kChewingMultipleChoicePrefs), 113 TheSizeShouldMatch); 114 115 const LanguageMultipleChoicePreference<int> kChewingHsuSelKeyType = { 116 prefs::kLanguageChewingHsuSelKeyType, 117 1, 118 "hsuSelKeyType", 119 {{ 1, IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE_1 }, 120 { 2, IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE_2 }}, 121 IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_HSU_SEL_KEY_TYPE, 122 }; 123 124 // --------------------------------------------------------------------------- 125 // For Korean input method (ibus-hangul) 126 // --------------------------------------------------------------------------- 127 const char kHangulSectionName[] = "engine/Hangul"; 128 const char kHangulKeyboardConfigName[] = "HangulKeyboard"; 129 const char kHangulHanjaKeysConfigName[] = "HanjaKeys"; 130 // We add Control+9 since F9 key is reserved by the window manager. 131 // TODO: HanjaKeys are not configurable yet (and we're not sure if it should.) 132 const char kHangulHanjaKeys[] = "F9,Hangul_Hanja,Control+9"; 133 134 const HangulKeyboardNameIDPair kHangulKeyboardNameIDPairs[] = { 135 // We have to sync the |keyboard_id|s with those in 136 // ibus-hangul/files/setup/main.py. 137 { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_2_SET, "2" }, 138 { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_FINAL, 139 "3f" }, 140 { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_390, "39" }, 141 { IDS_OPTIONS_SETTINGS_LANGUAGES_HANGUL_SETTINGS_KEYBOARD_3_SET_NO_SHIFT, 142 "3s" }, 143 // We don't support "Sebeolsik 2 set" keyboard. 144 }; 145 COMPILE_ASSERT(kNumHangulKeyboardNameIDPairs == 146 arraysize(kHangulKeyboardNameIDPairs), 147 TheSizeShouldMatch); 148 149 // --------------------------------------------------------------------------- 150 // For Simplified Chinese input method (ibus-pinyin) 151 // --------------------------------------------------------------------------- 152 const char kPinyinSectionName[] = "engine/Pinyin"; 153 154 // We have to sync the |ibus_config_name|s with those in 155 // ibus-pinyin/files/src/Config.cc. 156 const LanguageBooleanPrefs kPinyinBooleanPrefs[] = { 157 { prefs::kLanguagePinyinCorrectPinyin, true, "CorrectPinyin", 158 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_CORRECT_PINYIN }, 159 { prefs::kLanguagePinyinFuzzyPinyin, false, "FuzzyPinyin", 160 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_FUZZY_PINYIN }, 161 { prefs::kLanguagePinyinShiftSelectCandidate, false, "ShiftSelectCandidate", 162 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_SHIFT_SELECT_PINYIN }, 163 { prefs::kLanguagePinyinMinusEqualPage, true, "MinusEqualPage", 164 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_MINUS_EQUAL_PAGE }, 165 { prefs::kLanguagePinyinCommaPeriodPage, true, "CommaPeriodPage", 166 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_COMMA_PERIOD_PAGE }, 167 { prefs::kLanguagePinyinAutoCommit, false, "AutoCommit", 168 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_AUTO_COMMIT }, 169 { prefs::kLanguagePinyinDoublePinyin, false, "DoublePinyin", 170 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_DOUBLE_PINYIN }, 171 { prefs::kLanguagePinyinInitChinese, true, "InitChinese", 172 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_CHINESE }, 173 { prefs::kLanguagePinyinInitFull, false, "InitFull", 174 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_FULL }, 175 { prefs::kLanguagePinyinInitFullPunct, true, "InitFullPunct", 176 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_FULL_PUNCT }, 177 { prefs::kLanguagePinyinInitSimplifiedChinese, true, "InitSimplifiedChinese", 178 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_SETTING_INIT_SIMPLIFIED_CHINESE }, 179 // TODO(yusukes): Support PINYIN_{INCOMPLETE,CORRECT,FUZZY}_... prefs (32 180 // additional boolean prefs.) 181 }; 182 COMPILE_ASSERT(kNumPinyinBooleanPrefs == arraysize(kPinyinBooleanPrefs), 183 TheSizeShouldMatch); 184 // TODO(yusukes): Support HalfWidthPuncts and IncompletePinyin prefs if needed. 185 186 const LanguageMultipleChoicePreference<int> kPinyinDoublePinyinSchema = { 187 prefs::kLanguagePinyinDoublePinyinSchema, 188 0, 189 "DoublePinyinSchema", 190 {{ 0, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_MSPY}, 191 { 1, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ZRM}, 192 { 2, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ABC}, 193 { 3, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_ZGPY}, 194 { 4, IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA_PYJJ}}, 195 IDS_OPTIONS_SETTINGS_LANGUAGES_PINYIN_DOUBLE_SCHEMA, 196 }; 197 198 const PinyinIntegerPref kPinyinIntegerPrefs[] = { 199 // TODO(yusukes): the type of lookup_table_page_size on ibus should be uint. 200 { prefs::kLanguagePinyinLookupTablePageSize, 5, "LookupTablePageSize" }, 201 }; 202 COMPILE_ASSERT(kNumPinyinIntegerPrefs == arraysize(kPinyinIntegerPrefs), 203 TheSizeShouldMatch); 204 205 // --------------------------------------------------------------------------- 206 // For Japanese input method (ibus-mozc) 207 // --------------------------------------------------------------------------- 208 const char kMozcSectionName[] = "engine/Mozc"; 209 210 #define IDS_MOZC(suffix) \ 211 IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_##suffix 212 213 const LanguageBooleanPrefs kMozcBooleanPrefs[] = { 214 { prefs::kLanguageMozcIncognitoMode, 215 false, 216 "incognito_mode", 217 IDS_MOZC(INCOGNITO_MODE) 218 }, 219 { prefs::kLanguageMozcUseAutoImeTurnOff, 220 true, 221 "use_auto_ime_turn_off", 222 IDS_MOZC(USE_AUTO_IME_TURN_OFF) 223 }, 224 { prefs::kLanguageMozcUseDateConversion, 225 true, 226 "use_date_conversion", 227 IDS_MOZC(USE_DATE_CONVERSION) 228 }, 229 { prefs::kLanguageMozcUseSingleKanjiConversion, 230 true, 231 "use_single_kanji_conversion", 232 IDS_MOZC(USE_SINGLE_KANJI_CONVERSION) 233 }, 234 { prefs::kLanguageMozcUseSymbolConversion, 235 true, 236 "use_symbol_conversion", 237 IDS_MOZC(USE_SYMBOL_CONVERSION) 238 }, 239 { prefs::kLanguageMozcUseNumberConversion, 240 true, 241 "use_number_conversion", 242 IDS_MOZC(USE_NUMBER_CONVERSION) 243 }, 244 { prefs::kLanguageMozcUseHistorySuggest, 245 true, 246 "use_history_suggest", 247 IDS_MOZC(USE_HISTORY_SUGGEST) 248 }, 249 { prefs::kLanguageMozcUseDictionarySuggest, 250 true, 251 "use_dictionary_suggest", 252 IDS_MOZC(USE_DICTIONARY_SUGGEST) 253 }, 254 }; 255 COMPILE_ASSERT(kNumMozcBooleanPrefs == arraysize(kMozcBooleanPrefs), 256 TheSizeShouldMatch); 257 258 extern const LanguageMultipleChoicePreference<const char*> 259 kMozcMultipleChoicePrefs[] = { 260 { prefs::kLanguageMozcPreeditMethod, 261 "ROMAN", 262 "preedit_method", 263 {{ "ROMAN", IDS_MOZC(PREEDIT_METHOD_ROMAN) }, 264 { "KANA", IDS_MOZC(PREEDIT_METHOD_KANA) }}, 265 IDS_MOZC(PREEDIT_METHOD), 266 }, 267 { prefs::kLanguageMozcSessionKeymap, 268 "MSIME", 269 "session_keymap", 270 {{ "ATOK", IDS_MOZC(SESSION_KEYMAP_ATOK) }, 271 { "MSIME", IDS_MOZC(SESSION_KEYMAP_MSIME) }, 272 { "KOTOERI", IDS_MOZC(SESSION_KEYMAP_KOTOERI) }}, 273 // TODO: Support "CUSTOM" keymap. 274 IDS_MOZC(SESSION_KEYMAP), 275 }, 276 { prefs::kLanguageMozcPunctuationMethod, 277 "KUTEN_TOUTEN", 278 "punctuation_method", 279 {{ "KUTEN_TOUTEN", 280 IDS_MOZC(PUNCTUATION_METHOD_KUTEN_TOUTEN) }, 281 { "COMMA_PERIOD", 282 IDS_MOZC(PUNCTUATION_METHOD_COMMA_PERIOD) }, 283 { "KUTEN_PERIOD", 284 IDS_MOZC(PUNCTUATION_METHOD_KUTEN_PERIOD) }, 285 { "COMMA_TOUTEN", 286 IDS_MOZC(PUNCTUATION_METHOD_COMMA_TOUTEN) }}, 287 IDS_MOZC(PUNCTUATION_METHOD), 288 }, 289 { prefs::kLanguageMozcSymbolMethod, 290 "CORNER_BRACKET_MIDDLE_DOT", 291 "symbol_method", 292 {{ "CORNER_BRACKET_MIDDLE_DOT", 293 IDS_MOZC(SYMBOL_METHOD_CORNER_BRACKET_MIDDLE_DOT) }, 294 { "SQUARE_BRACKET_SLASH", 295 IDS_MOZC(SYMBOL_METHOD_SQUARE_BRACKET_SLASH) }, 296 { "CORNER_BRACKET_SLASH", 297 IDS_MOZC(SYMBOL_METHOD_CORNER_BRACKET_SLASH) }, 298 { "SQUARE_BRACKET_MIDDLE_DOT", 299 IDS_MOZC(SYMBOL_METHOD_SQUARE_BRACKET_MIDDLE_DOT) }}, 300 IDS_MOZC(SYMBOL_METHOD), 301 }, 302 { prefs::kLanguageMozcSpaceCharacterForm, 303 "FUNDAMENTAL_INPUT_MODE", 304 "space_character_form", 305 {{ "FUNDAMENTAL_INPUT_MODE", 306 IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_INPUT_MODE) }, 307 { "FUNDAMENTAL_FULL_WIDTH", 308 IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_FULL_WIDTH) }, 309 { "FUNDAMENTAL_HALF_WIDTH", 310 IDS_MOZC(SPACE_CHARACTER_FORM_FUNDAMENTAL_HALF_WIDTH) }}, 311 IDS_MOZC(SPACE_CHARACTER_FORM), 312 }, 313 { prefs::kLanguageMozcHistoryLearningLevel, 314 "DEFAULT_HISTORY", 315 "history_learning_level", 316 {{ "DEFAULT_HISTORY", 317 IDS_MOZC(HISTORY_LEARNING_LEVEL_DEFAULT_HISTORY) }, 318 { "READ_ONLY", 319 IDS_MOZC(HISTORY_LEARNING_LEVEL_READ_ONLY) }, 320 { "NO_HISTORY", 321 IDS_MOZC(HISTORY_LEARNING_LEVEL_NO_HISTORY) }}, 322 IDS_MOZC(HISTORY_LEARNING_LEVEL), 323 }, 324 // TODO(mazda): Uncomment this block once the candidate window in Chrome OS 325 // supports changing shortcut labels. 326 // { prefs::kLanguageMozcSelectionShortcut, 327 // "SHORTCUT_123456789", 328 // "selection_shortcut", 329 // {{ "NO_SHORTCUT", 330 // IDS_MOZC(SELECTION_SHORTCUT_NO_SHORTCUT) }, 331 // { "SHORTCUT_123456789", 332 // IDS_MOZC(SELECTION_SHORTCUT_SHORTCUT_123456789) }, 333 // { "SHORTCUT_ASDFGHJKL", 334 // IDS_MOZC(SELECTION_SHORTCUT_SHORTCUT_ASDFGHJKL) }}, 335 // IDS_MOZC(SELECTION_SHORTCUT), 336 // }, 337 { prefs::kLanguageMozcShiftKeyModeSwitch, 338 "ASCII_INPUT_MODE", 339 "shift_key_mode_switch", 340 {{ "OFF", 341 IDS_MOZC(SHIFT_KEY_MODE_SWITCH_OFF) }, 342 { "ASCII_INPUT_MODE", 343 IDS_MOZC(SHIFT_KEY_MODE_SWITCH_ASCII_INPUT_MODE) }, 344 { "KATAKANA_INPUT_MODE", 345 IDS_MOZC(SHIFT_KEY_MODE_SWITCH_KATAKANA_INPUT_MODE) }}, 346 IDS_MOZC(SHIFT_KEY_MODE_SWITCH), 347 }, 348 { prefs::kLanguageMozcNumpadCharacterForm, 349 "NUMPAD_HALF_WIDTH", 350 "numpad_character_form", 351 {{ "NUMPAD_INPUT_MODE", 352 IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_INPUT_MODE) }, 353 { "NUMPAD_FULL_WIDTH", 354 IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_FULL_WIDTH) }, 355 { "NUMPAD_HALF_WIDTH", 356 IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_HALF_WIDTH) }, 357 { "NUMPAD_DIRECT_INPUT", 358 IDS_MOZC(NUMPAD_CHARACTER_FORM_NUMPAD_DIRECT_INPUT) }}, 359 IDS_MOZC(NUMPAD_CHARACTER_FORM), 360 }, 361 }; 362 COMPILE_ASSERT(kNumMozcMultipleChoicePrefs == 363 arraysize(kMozcMultipleChoicePrefs), 364 TheSizeShouldMatch); 365 366 const LanguageIntegerRangePreference kMozcIntegerPrefs[] = { 367 { prefs::kLanguageMozcSuggestionsSize, 3, 1, 9, "suggestions_size", 368 IDS_MOZC(SUGGESTIONS_SIZE)}, 369 }; 370 COMPILE_ASSERT(kNumMozcIntegerPrefs == arraysize(kMozcIntegerPrefs), 371 TheSizeShouldMatch); 372 373 #undef IDS_MOZC 374 375 // --------------------------------------------------------------------------- 376 // For keyboard stuff 377 // --------------------------------------------------------------------------- 378 const LanguageMultipleChoicePreference<int> kXkbModifierMultipleChoicePrefs = { 379 NULL, // don't use this field since the config is associated with 3 prefs. 380 kNoRemap, 381 NULL, // does not use the ibus configuration service. 382 {{ kNoRemap, IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_NO_REMAP }, 383 { kSwapCtrlAndAlt, 384 IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_REMAP_CTRL_ALT }, 385 { kSwapSearchAndCtrl, 386 IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_MODIFIER_REMAP_SEARCH_CTRL }}, 387 0, // does not use the label. 388 }; 389 390 const int kXkbAutoRepeatDelayInMs = 500; 391 const int kXkbAutoRepeatIntervalInMs = 50; 392 const char kPreferredKeyboardLayout[] = "PreferredKeyboardLayout"; 393 394 } // namespace language_prefs 395 } // namespace chromeos 396