# The list of input methods that we support. The input methods metadata is
# also defined here. We use this data for the following purposes.
#
# 1. Exclude unnecessary input methods. For example, we don't need
#    "ja:anthy", and "zh:pinyin" engines in ibus-m17n since we have better
#    alternatives outside of ibus-m17n. Excluding these input methods from
#    the IBus engine XML files, such as /usr/share/ibus/component/m17n.xml,
#    makes the startup time of the IBus daemon faster. This filtering is
#    done using a python script at build time of ibus-m17n.
#    See crosbug.com/4161 for details.
#
# 2. Provide the input methods metadata to Chrome at build time. Chrome
#    needs to know about the supported input methods for the input method
#    features, such as the input method switching and the options page,
#    to work. Note that we can retrieve the same metadata from the IBus
#    daemon, but Chrome needs be able to get the metadata without talking
#    to the IBus daemon. This requirement comes from the fact that the
#    IBus daemon should not run if the user is just using keyboard layouts
#    such as US keyboard. The metadata generation is done using a python
#    script at build time of Chrome. See crosbug.com/16961 for details.
#
# The order of the list is important. In Chrome's "Languages and input" options
# page, we list input methods in this order, when more than one input methods
# are available for a language (ex. French).
#
# Each non-comment line contains the following tab-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
#    example, three-letter ISO 639-2/B codes are used for IDs start with "xkb:"
#    for histrical reason, but we should not replace them with two-letter 639-1
#    codes that are currently in use in the 3rd column.
# 2) The keyboard layout ID used by XKB. (ex. "us", "us(dvorak)", "ca",
#    "handwriting-vk,jp"). See also: /usr/share/X11/xkb/symbols.
# 3) The language code (ex. "fr"). Only one format, ISO 639-1 compliant two-
#    letter language code which can be recognized by ICU, is allowed. Do not use
#    three-letter ones (ISO 639-2/T and 639-2/B) here. For "en", "pt", and "zh",
#    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.
# 4) [optional] The #if condition for the input method.
#    (ex. "defined(A)", "!defined(A)||defined(B)")
#
# Notes:
#   When adding a line to this list, please also add a mapping from the input
#   method ID to the keyboard overlay ID to INPUT_METHOD_ID_TO_OVERLAY_ID in
#
#    * tools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py
#
#   and update the following files by running this script.
#
#    * chrome/app/generated_resources.grd
#    * chrome/browser/resources/chromeos/keyboard_overlay_data.js
#    * chrome/browser/ui/webui/chromeos/keyboard_overlay_ui.cc
#
#   If you add an XKB layout which depends on X11's Mod3Mask (e.g. Germany Neo2
#   XKB layout), you should also update IsMod3UsedByCurrentInputMethod() method
#   in chrome/browser/ui/ash/event_rewriter.cc. Otherwise, Mod3Mask might be
#   removed unexpectedly by the rewriter.

# U.S. English
xkb:us::eng	us	en-US
xkb:us:intl:eng	us(intl)	en-US	
xkb:us:altgr-intl:eng	us(altgr-intl)	en-US	
xkb:us:dvorak:eng	us(dvorak)	en-US	
xkb:us:colemak:eng	us(colemak)	en-US	
english-m	us	en-US	
# 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	
# We don't support xkb:nl::nld. See b/4430951.

# French
xkb:fr::fra	fr	fr
xkb:be::fra	be	fr	
xkb:ca::fra	ca	fr	
xkb:ch:fr:fra	ch(fr)	fr	
xkb:ca:multix:fra ca(multix) fr

# German
xkb:de::ger	de	de	
xkb:de:neo:ger	de(neo)	de	
xkb:be::ger	be	de	
xkb:ch::ger	ch	de	

# 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	

# Russian
xkb:ru::rus	ru	ru	
xkb:ru:phonetic:rus	ru(phonetic)	ru	

# Thai
m17n:th:kesmanee	us	th
m17n:th:pattachote	us	th
m17n:th:tis820	us	th

# Simplified Chinese
pinyin	us	zh-CN
pinyin-dv	us(dvorak)	zh-CN	

# Traditional Chinese
mozc-chewing	us	zh-TW
m17n:zh:cangjie	us	zh-TW
m17n:zh:quick	us	zh-TW

# Vietnamese
m17n:vi:tcvn	us	vi
m17n:vi:telex	us	vi
m17n:vi:viqr	us	vi
m17n:vi:vni	us	vi
# Note: Since Chrome does not support "get surrounding text" feature yet,
# Vietnames input methods, except 4 input methods above, in m17n-db should
# not work fine. The 4 input methods in m17n-db (>= 1.6.0) don't require the
# feature.

# Korean
mozc-hangul	kr(kr104)	ko
xkb:kr:kr104:kor	kr(kr104)	ko

# Arabic
m17n:ar:kbd	us	ar
# TODO(yusukes,jshin): Check if we can use ibux-xkb-layouts for Arabic, Hindi,
# etc.

# Hindi
m17n:hi:itrans	us	hi
# Note: the m17n-contrib package has some more Hindi IMEs.

# Farsi (Persian)
m17n:fa:isiri	us	fa

# Bengali
m17n:bn:itrans	us	bn
# TODO(yusukes): Support the following IMEs in m17n-db (unijoy) and
#   m17n-db-contrib (inscript, probhat).
# m17n:bn:unijoy	us	bn
# m17n:bn:inscript	us	bn
# m17n:bn:probhat	us	bn

# Gujarati
m17n:gu:itrans	us	gu
# TODO(yusukes): Support the following IMEs in m17n-db-contrib.
# m17n:gu:phonetic	us	gu
# m17n:gu:inscript	us	gu

# Malayalam
m17n:ml:itrans	us	ml
# TODO(yusukes): Support the following IMEs in m17n-db-contrib.
# m17n:ml:inscript	us	ml
# m17n:ml:mozhi	us	ml

# Marathi
# Note: m17n:mr:itrans is in m17n-db-contrib.
m17n:mr:itrans	us	mr
# TODO(yusukes): Support the following IMEs in m17n-db-contrib.
# m17n:mr:phonetic	us	mr
# m17n:mr:inscript	us	mr

# Tamil
m17n:ta:phonetic	us	ta
m17n:ta:inscript	us	ta
m17n:ta:tamil99	us	ta
m17n:ta:itrans	us	ta
m17n:ta:typewriter	us	ta

# Telugu
m17n:te:itrans	us	te
# Kannada
m17n:kn:itrans	us	kn

# Amharic
m17n:am:sera	us	am

# Keyboard layouts.
xkb:br::por	br	pt-BR	
xkb:bg::bul	bg	bg	
xkb:bg:phonetic:bul	bg(phonetic)	bg	
xkb:ca:eng:eng	ca(eng)	en-CA	
xkb:cz::cze	cz	cs	
xkb:cz:qwerty:cze	cz(qwerty)	cs	
xkb:ee::est	ee	et	
xkb:es::spa	es	es	
xkb:es:cat:cat	es(cat)	ca	
xkb:dk::dan	dk	da	
xkb:gr::gre	gr	el	
xkb:il::heb	il	he	
xkb:latam::spa	latam	es	
xkb:lt::lit	lt	lt	
xkb:lv:apostrophe:lav	lv(apostrophe)	lv	
xkb:hr::scr	hr	hr	
xkb:gb:extd:eng	gb(extd)	en-GB	
xkb:gb:dvorak:eng	gb(dvorak)	en-GB	
xkb:fi::fin	fi	fi	
xkb:hu::hun	hu	hu	
xkb:it::ita	it	it	
xkb:is::ice	is	is
xkb:no::nob	no	nb	
xkb:pl::pol	pl	pl	
xkb:pt::por	pt	pt-PT	
xkb:ro::rum	ro	ro	
xkb:se::swe	se	sv	
xkb:sk::slo	sk	sk	
xkb:si::slv	si	sl	
xkb:rs::srp	rs	sr	
xkb:tr::tur	tr	tr	
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
# TODO(yusukes): Support xkb:latam:deadtilde:spa and/or xkb:latam:nodeadkeys:spa
# if necessary.