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