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 #ifndef CHROME_BROWSER_CHROMEOS_LANGUAGE_PREFERENCES_H_ 6 #define CHROME_BROWSER_CHROMEOS_LANGUAGE_PREFERENCES_H_ 7 #pragma once 8 9 #include <stddef.h> // For size_t 10 11 // This file defines types and declare variables used in "Languages and 12 // Input" settings in Chromium OS. 13 namespace chromeos { 14 namespace language_prefs { 15 16 // The struct is used for preferences consisting of multiple choices, like 17 // punctuation types used in Japanese input method. 18 template <typename DataType> 19 struct LanguageMultipleChoicePreference { 20 const char* pref_name; // Chrome preference name. 21 DataType default_pref_value; 22 const char* ibus_config_name; 23 // Currently we have 10 combobox items at most. 24 static const size_t kMaxItems = 11; 25 struct { 26 DataType ibus_config_value; 27 int item_message_id; // Resource grd ID for the combobox item. 28 } values_and_ids[kMaxItems]; 29 int label_message_id; // Resource grd ID for the label. 30 }; 31 32 // The struct is used for preferences of boolean values, like switches to 33 // enable or disable particular features. 34 struct LanguageBooleanPrefs { 35 const char* pref_name; // Chrome preference name. 36 bool default_pref_value; 37 const char* ibus_config_name; 38 int message_id; 39 }; 40 41 // The struct is used for preferences of integer range values, like the 42 // key repeat rate. 43 struct LanguageIntegerRangePreference { 44 const char* pref_name; // Chrome preference name. 45 int default_pref_value; 46 int min_pref_value; 47 int max_pref_value; 48 const char* ibus_config_name; 49 int message_id; 50 }; 51 52 // --------------------------------------------------------------------------- 53 // For ibus-daemon 54 // --------------------------------------------------------------------------- 55 extern const char kGeneralSectionName[]; 56 extern const char kHotKeySectionName[]; 57 extern const char kPreloadEnginesConfigName[]; 58 extern const char kNextEngineInMenuConfigName[]; 59 extern const char kPreviousEngineConfigName[]; 60 extern const char kHotkeyNextEngineInMenu[]; 61 extern const char kHotkeyPreviousEngine[]; 62 63 // --------------------------------------------------------------------------- 64 // For Traditional Chinese input method (ibus-chewing) 65 // --------------------------------------------------------------------------- 66 extern const char kChewingSectionName[]; 67 68 extern const LanguageBooleanPrefs kChewingBooleanPrefs[]; 69 // This is not ideal, but we should hard-code the number here as the value 70 // is referenced in other header files as array sizes. We have a 71 // COMPILE_ASSERT in .cc to ensure that the number is correct. 72 const size_t kNumChewingBooleanPrefs = 8 - 2; // -2 is for crosbug.com/14185 73 74 extern const LanguageIntegerRangePreference kChewingIntegerPrefs[]; 75 // See comments at kNumChewingBooleanPrefs for why we hard-code this here. 76 const size_t kNumChewingIntegerPrefs = 2; 77 const int kChewingMaxChiSymbolLenIndex = 0; 78 const int kChewingCandPerPageIndex = 1; 79 80 extern const LanguageMultipleChoicePreference<const char*> 81 kChewingMultipleChoicePrefs[]; 82 // See comments at kNumChewingBooleanPrefs for why we hard-code this here. 83 const size_t kNumChewingMultipleChoicePrefs = 2; 84 85 extern const LanguageMultipleChoicePreference<int> kChewingHsuSelKeyType; 86 87 // --------------------------------------------------------------------------- 88 // For Korean input method (ibus-hangul) 89 // --------------------------------------------------------------------------- 90 extern const char kHangulSectionName[]; 91 extern const char kHangulKeyboardConfigName[]; 92 extern const char kHangulHanjaKeysConfigName[]; 93 extern const char kHangulHanjaKeys[]; 94 95 struct HangulKeyboardNameIDPair { 96 int message_id; 97 const char* keyboard_id; 98 }; 99 100 extern const HangulKeyboardNameIDPair kHangulKeyboardNameIDPairs[]; 101 // See comments at kNumChewingBooleanPrefs for why we hard-code this here. 102 const size_t kNumHangulKeyboardNameIDPairs = 4; 103 104 // --------------------------------------------------------------------------- 105 // For Simplified Chinese input method (ibus-pinyin) 106 // --------------------------------------------------------------------------- 107 extern const char kPinyinSectionName[]; 108 109 extern const LanguageBooleanPrefs kPinyinBooleanPrefs[]; 110 // See comments at kNumChewingBooleanPrefs for why we hard-code this here. 111 const size_t kNumPinyinBooleanPrefs = 11; 112 113 extern const LanguageMultipleChoicePreference<int> kPinyinDoublePinyinSchema; 114 115 struct PinyinIntegerPref { 116 const char* pref_name; // Chrome preference name. 117 int default_pref_value; 118 const char* ibus_config_name; 119 // TODO(yusukes): Add message_id if needed. 120 }; 121 122 extern const PinyinIntegerPref kPinyinIntegerPrefs[]; 123 const size_t kNumPinyinIntegerPrefs = 1; 124 125 // --------------------------------------------------------------------------- 126 // For Japanese input method (ibus-mozc) 127 // --------------------------------------------------------------------------- 128 extern const char kMozcSectionName[]; 129 130 extern const LanguageBooleanPrefs kMozcBooleanPrefs[]; 131 // See comments at kNumChewingBooleanPrefs for why we hard-code this here. 132 const size_t kNumMozcBooleanPrefs = 8; 133 134 extern const LanguageMultipleChoicePreference<const char*> 135 kMozcMultipleChoicePrefs[]; 136 // See comments at kNumChewingBooleanPrefs for why we hard-code this here. 137 const size_t kNumMozcMultipleChoicePrefs = 8; 138 139 extern const LanguageIntegerRangePreference kMozcIntegerPrefs[]; 140 // See comments at kNumChewingBooleanPrefs for why we hard-code this here. 141 const size_t kNumMozcIntegerPrefs = 1; 142 143 // --------------------------------------------------------------------------- 144 // For keyboard stuff 145 // --------------------------------------------------------------------------- 146 // TODO(yusukes): Temporary solution for View version of modifier key remapper. 147 // Remove RemapType and kXkbModifierMultipleChoicePrefs when we finish to 148 // migrate to WebUI. 149 enum RemapType { 150 kNoRemap = 0, 151 kSwapCtrlAndAlt = 1, 152 kSwapSearchAndCtrl = 2, 153 }; 154 extern const LanguageMultipleChoicePreference<int> 155 kXkbModifierMultipleChoicePrefs; 156 157 // A delay between the first and the start of the rest. 158 extern const int kXkbAutoRepeatDelayInMs; 159 // An interval between the repeated keys. 160 extern const int kXkbAutoRepeatIntervalInMs; 161 162 // A string Chrome preference (Local State) of the preferred keyboard layout in 163 // the login screen. 164 extern const char kPreferredKeyboardLayout[]; 165 166 } // language_prefs 167 } // chromeos 168 169 #endif // CHROME_BROWSER_CHROMEOS_LANGUAGE_PREFERENCES_H_ 170