summaryrefslogtreecommitdiffstats
path: root/chromeos/ime
diff options
context:
space:
mode:
Diffstat (limited to 'chromeos/ime')
-rw-r--r--chromeos/ime/component_extension_ime_manager.cc1
-rwxr-xr-xchromeos/ime/gen_input_methods.py34
-rw-r--r--chromeos/ime/input_method_descriptor.cc2
-rw-r--r--chromeos/ime/input_method_descriptor.h6
-rw-r--r--chromeos/ime/input_method_whitelist.cc1
-rw-r--r--chromeos/ime/input_methods.txt118
6 files changed, 89 insertions, 73 deletions
diff --git a/chromeos/ime/component_extension_ime_manager.cc b/chromeos/ime/component_extension_ime_manager.cc
index 954c8cc..7c13f5a 100644
--- a/chromeos/ime/component_extension_ime_manager.cc
+++ b/chromeos/ime/component_extension_ime_manager.cc
@@ -136,6 +136,7 @@ input_method::InputMethodDescriptors
component_extension_imes_[i].id,
component_extension_imes_[i].engines[j].engine_id),
component_extension_imes_[i].engines[j].display_name,
+ std::string(), // TODO(uekawa): Set short name.
component_extension_imes_[i].engines[j].layouts,
component_extension_imes_[i].engines[j].language_codes,
false, // Do not use IME on login screen.
diff --git a/chromeos/ime/gen_input_methods.py b/chromeos/ime/gen_input_methods.py
index 6f3e74c..31b1ea2 100755
--- a/chromeos/ime/gen_input_methods.py
+++ b/chromeos/ime/gen_input_methods.py
@@ -16,8 +16,8 @@ Run it like:
It will produce output that looks like:
// This file is automatically generated by gen_input_methods.py
-#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_
-#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_
+#ifndef CHROMEOS_IME_INPUT_METHODS_H_
+#define CHROMEOS_IME_INPUT_METHODS_H_
namespace chromeos {
namespace input_method {
@@ -26,20 +26,21 @@ struct InputMethodsInfo {
const char* input_method_id;
const char* language_code;
const char* xkb_keyboard_id;
+ const char* indicator;
bool is_login_keyboard;
};
const InputMethodsInfo kInputMethods[] = {
- {"xkb:us::eng", "en-US", "us", true},
- {"xkb:us:dvorak:eng", "en-US", "us(dvorak)", true},
- {"xkb:be::fra", "fr", "be", true},
- {"xkb:br::por", "pt-BR", "br", true},
- {"xkb:ru::rus", "ru", "ru", false},
+ {"xkb:us::eng", "en-US", "us", "US", true},
+ {"xkb:us:dvorak:eng", "en-US", "us(dvorak)", "DV", true},
+ {"xkb:be::fra", "fr", "be", "BE", true},
+ {"xkb:br::por", "pt-BR", "br", "BR", true},
+ {"xkb:ru::rus", "ru", "ru", "RU", false},
};
} // namespace input_method
} // namespace chromeos
-#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_
+#endif // CHROMEOS_IME_INPUT_METHODS_H_
"""
@@ -48,8 +49,8 @@ import re
import sys
OUTPUT_HEADER = """// Automatically generated by gen_input_methods.py
-#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_
-#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_
+#ifndef CHROMEOS_IME_INPUT_METHODS_H_
+#define CHROMEOS_IME_INPUT_METHODS_H_
namespace chromeos {
namespace input_method {
@@ -58,6 +59,7 @@ struct InputMethodsInfo {
const char* input_method_id;
const char* language_code;
const char* xkb_layout_id;
+ const char* indicator;
bool is_login_keyboard;
};
const InputMethodsInfo kInputMethods[] = {
@@ -65,7 +67,8 @@ const InputMethodsInfo kInputMethods[] = {
CPP_FORMAT = '#if %s\n'
ENGINE_FORMAT = (' {"%(input_method_id)s", "%(language_code)s", ' +
- '"%(xkb_layout_id)s", %(is_login_keyboard)s},\n')
+ '"%(xkb_layout_id)s", "%(indicator)s", ' +
+ '%(is_login_keyboard)s},\n')
OUTPUT_FOOTER = """
};
@@ -73,7 +76,7 @@ OUTPUT_FOOTER = """
} // namespace input_method
} // namespace chromeos
-#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_
+#endif // CHROMEOS_IME_INPUT_METHODS_H_
"""
def CreateEngineHeader(engines):
@@ -107,14 +110,15 @@ def main(argv):
if not line or re.match(r'#', line):
continue
columns = line.split()
- assert len(columns) == 3 or len(columns) == 4, "Invalid format: " + line
+ assert len(columns) == 4 or len(columns) == 5, "Invalid format: " + line
engine = {}
engine['input_method_id'] = columns[0]
engine['xkb_layout_id'] = columns[1]
engine['language_code'] = columns[2]
+ engine['indicator'] = columns[3]
is_login_keyboard = "false"
- if len(columns) == 4:
- assert columns[3] == "login", "Invalid attribute: " + columns[3]
+ if len(columns) == 5:
+ assert columns[4] == "login", "Invalid attribute: " + columns[4]
is_login_keyboard = "true"
engine['is_login_keyboard'] = is_login_keyboard
engines.append(engine)
diff --git a/chromeos/ime/input_method_descriptor.cc b/chromeos/ime/input_method_descriptor.cc
index 7e6cb15..49b0360 100644
--- a/chromeos/ime/input_method_descriptor.cc
+++ b/chromeos/ime/input_method_descriptor.cc
@@ -16,6 +16,7 @@ namespace input_method {
InputMethodDescriptor::InputMethodDescriptor(
const std::string& id,
const std::string& name,
+ const std::string& indicator,
const std::vector<std::string>& keyboard_layouts,
const std::vector<std::string>& language_codes,
bool is_login_keyboard,
@@ -25,6 +26,7 @@ InputMethodDescriptor::InputMethodDescriptor(
name_(name),
keyboard_layouts_(keyboard_layouts),
language_codes_(language_codes),
+ indicator_(indicator),
is_login_keyboard_(is_login_keyboard),
options_page_url_(options_page_url),
input_view_url_(input_view_url) {
diff --git a/chromeos/ime/input_method_descriptor.h b/chromeos/ime/input_method_descriptor.h
index b63b54f..ab7cfb4 100644
--- a/chromeos/ime/input_method_descriptor.h
+++ b/chromeos/ime/input_method_descriptor.h
@@ -21,6 +21,7 @@ class CHROMEOS_EXPORT InputMethodDescriptor {
InputMethodDescriptor();
InputMethodDescriptor(const std::string& id,
const std::string& name,
+ const std::string& indicator,
const std::vector<std::string>& keyboard_layouts,
const std::vector<std::string>& language_codes,
bool is_login_keyboard,
@@ -31,6 +32,7 @@ class CHROMEOS_EXPORT InputMethodDescriptor {
// Accessors
const std::string& id() const { return id_; }
const std::string& name() const { return name_; }
+ const std::string& indicator() const { return indicator_; }
const std::vector<std::string>& language_codes() const {
return language_codes_;
}
@@ -61,6 +63,10 @@ class CHROMEOS_EXPORT InputMethodDescriptor {
// Language code like "ko", "ja", "en-US", and "zh-CN".
std::vector<std::string> language_codes_;
+ // A short indicator string that is displayed when the input method
+ // is selected, like "US".
+ std::string indicator_;
+
// True if this input method can be used on login screen.
bool is_login_keyboard_;
diff --git a/chromeos/ime/input_method_whitelist.cc b/chromeos/ime/input_method_whitelist.cc
index c6cd097e..57704e5 100644
--- a/chromeos/ime/input_method_whitelist.cc
+++ b/chromeos/ime/input_method_whitelist.cc
@@ -44,6 +44,7 @@ InputMethodWhitelist::GetSupportedInputMethods() const {
input_methods->push_back(InputMethodDescriptor(
kInputMethods[i].input_method_id,
"",
+ kInputMethods[i].indicator,
layouts,
languages,
kInputMethods[i].is_login_keyboard,
diff --git a/chromeos/ime/input_methods.txt b/chromeos/ime/input_methods.txt
index 22650aa..a570da7 100644
--- a/chromeos/ime/input_methods.txt
+++ b/chromeos/ime/input_methods.txt
@@ -1,7 +1,7 @@
# The list of keyboard layouts that we support. The keyboard layout metadata is
# also defined here.
#
-# Each non-comment line contains the following tab-separated columns.
+# Each non-comment line contains the following tab-or-space-separated columns.
#
# 1) The input method ID used by Chrome. (ex. "xkb:ca::fra") You should *NEVER*
# change the ID since the ID might be written in user's ~/Preferences. For
@@ -16,9 +16,11 @@
# two-letter upper-case country code should be added (ex. "en-US", "zh-TW").
# See http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details.
# We can specify multiple language code with comma separator.
-# 4) The additional attibution.
-# no-login: Spcified keyboard layout will not be used on login screen or lock
-# screen.
+# 4) The indicator string (ex. INTL for xkb:us:intl:eng). This string will be
+# shown in system tray or indicator window.
+# 5) The additional attibution.
+# login: Specified keyboard layout will be used on login screen or lock
+# screen.
#
# Notes:
# When adding a line to this list, please also add a mapping from the input
@@ -39,76 +41,76 @@
#
# U.S. English
-xkb:us::eng us en-US,en-AU,id,fil,ms login
-xkb:us:intl:eng us(intl) en-US,nl,pt-BR login
-xkb:us:altgr-intl:eng us(altgr-intl) en-US login
-xkb:us:dvorak:eng us(dvorak) en-US login
-xkb:us:colemak:eng us(colemak) en-US login
+xkb:us::eng us en-US,en-AU,id,fil,ms US login
+xkb:us:intl:eng us(intl) en-US,nl,pt-BR INTL login
+xkb:us:altgr-intl:eng us(altgr-intl) en-US EXTD login
+xkb:us:dvorak:eng us(dvorak) en-US DV login
+xkb:us:colemak:eng us(colemak) en-US CO login
# U.S. English entiries have to be above the Dutch entry so that xkb:us:intl:eng
# will be selected as the default keyboard when the UI language is set to Dutch.
# Dutch
-xkb:be::nld be nl login
+xkb:be::nld be nl BE login
# We don't support xkb:nl::nld. See b/4430951.
# French
-xkb:fr::fra fr fr login
-xkb:be::fra be fr login
-xkb:ca::fra ca fr login
-xkb:ch:fr:fra ch(fr) fr login
-xkb:ca:multix:fra ca(multix) fr login
+xkb:fr::fra fr fr FR login
+xkb:be::fra be fr BE login
+xkb:ca::fra ca fr CA login
+xkb:ch:fr:fra ch(fr) fr CH login
+xkb:ca:multix:fra ca(multix) fr CA login
# German
-xkb:de::ger de de login
-xkb:de:neo:ger de(neo) de login
-xkb:be::ger be de login
-xkb:ch::ger ch de login
+xkb:de::ger de de DE login
+xkb:de:neo:ger de(neo) de NEO login
+xkb:be::ger be de BE login
+xkb:ch::ger ch de CH login
# Japanese
# |kMozcJaInputMethodIds| in ibus_ui_controller.cc should also be updated when
# a new Mozc Japanese IME for another keyboard layout is added.
-xkb:jp::jpn jp ja login
+xkb:jp::jpn jp ja JA login
# Russian
-xkb:ru::rus ru ru
-xkb:ru:phonetic:rus ru(phonetic) ru
+xkb:ru::rus ru ru RU
+xkb:ru:phonetic:rus ru(phonetic) ru RU
# Keyboard layouts.
-xkb:br::por br pt-BR login
-xkb:bg::bul bg bg
-xkb:bg:phonetic:bul bg(phonetic) bg
-xkb:ca:eng:eng ca(eng) en-CA login
-xkb:cz::cze cz cs login
-xkb:cz:qwerty:cze cz(qwerty) cs login
-xkb:ee::est ee et login
-xkb:es::spa es es login
-xkb:es:cat:cat es(cat) ca login
-xkb:dk::dan dk da login
-xkb:gr::gre gr el
-xkb:il::heb il he
-xkb:latam::spa latam es,es-419 login
-xkb:lt::lit lt lt login
-xkb:lv:apostrophe:lav lv(apostrophe) lv login
-xkb:hr::scr hr hr login
-xkb:gb:extd:eng gb(extd) en-GB login
-xkb:gb:dvorak:eng gb(dvorak) en-GB login
-xkb:fi::fin fi fi login
-xkb:hu::hun hu hu login
-xkb:it::ita it it login
-xkb:is::ice is is login
-xkb:no::nob no nb login
-xkb:pl::pol pl pl login
-xkb:pt::por pt pt-PT login
-xkb:ro::rum ro ro login
-xkb:se::swe se sv login
-xkb:sk::slo sk sk
-xkb:si::slv si sl login
-xkb:rs::srp rs sr
-xkb:tr::tur tr tr login
-xkb:ua::ukr ua uk
-xkb:by::bel by be
-xkb:am:phonetic:arm am hy
-xkb:ge::geo ge ka
-xkb:mn::mon mn mn
+xkb:br::por br pt-BR BR login
+xkb:bg::bul bg bg BG
+xkb:bg:phonetic:bul bg(phonetic) bg BG
+xkb:ca:eng:eng ca(eng) en-CA CA login
+xkb:cz::cze cz cs CZ login
+xkb:cz:qwerty:cze cz(qwerty) cs CS login
+xkb:ee::est ee et EE login
+xkb:es::spa es es ES login
+xkb:es:cat:cat es(cat) ca CAS login
+xkb:dk::dan dk da DK login
+xkb:gr::gre gr el GR
+xkb:il::heb il he IL
+xkb:latam::spa latam es,es-419 LA login
+xkb:lt::lit lt lt LT login
+xkb:lv:apostrophe:lav lv(apostrophe) lv LV login
+xkb:hr::scr hr hr HR login
+xkb:gb:extd:eng gb(extd) en-GB GB login
+xkb:gb:dvorak:eng gb(dvorak) en-GB DV login
+xkb:fi::fin fi fi FI login
+xkb:hu::hun hu hu HU login
+xkb:it::ita it it IT login
+xkb:is::ice is is IS login
+xkb:no::nob no nb NO login
+xkb:pl::pol pl pl PL login
+xkb:pt::por pt pt-PT PT login
+xkb:ro::rum ro ro RO login
+xkb:se::swe se sv SE login
+xkb:sk::slo sk sk SK
+xkb:si::slv si sl SI login
+xkb:rs::srp rs sr RS
+xkb:tr::tur tr tr TR login
+xkb:ua::ukr ua uk UA
+xkb:by::bel by be BY
+xkb:am:phonetic:arm am hy AM
+xkb:ge::geo ge ka GE
+xkb:mn::mon mn mn MN
# TODO(yusukes): Support xkb:latam:deadtilde:spa and/or xkb:latam:nodeadkeys:spa
# if necessary.