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