aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdata/ayatana-indicator-keyboard-icon-generator197
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-00.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ae.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ak.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ak.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Am.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-am.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ap.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ap.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ar.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ar.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-As.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-as.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-At.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-br.svg)2
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Av.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-av.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Az.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-az.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ba.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bb.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ch.svg)2
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Be.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-be.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bg.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-bg.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bi.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bl.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bm.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-bm.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bn.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-bn.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bo.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Bs.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-bs.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-By.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-by.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ca.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ca.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ck.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Cl.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Cm.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-cm.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Cn.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Cp.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Cs.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-cs.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Cu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Cv.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Da.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-da.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-De.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-de.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Dl.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-dl.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Dv.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-dv.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Dz.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-dz.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ed.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ee.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ee.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ek.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-En.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-en.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Eo.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-eo.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Es.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-es.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Et.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-et.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Fa.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-fa.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ff.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ff.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Fi.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-fi.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Fo.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-fo.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Fr.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-fr.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Fu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ga.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ga.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Gh.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-my.svg)2
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Gr.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-gr.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Gu.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-gu.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ha.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ha.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-He.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-he.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Hi.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-hi.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Hp.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Hr.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-hr.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Hs.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Hu.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-hu.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Hw.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Hy.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-hy.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Id.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-id.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ig.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ig.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Il.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ip.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Iq.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Is.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-is.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-It.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-it.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Iu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ix.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ie.svg)2
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ja.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ja.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ka.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ka.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Kb.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ki.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ki.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Kk.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-kk.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Km.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-km.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Kn.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-kn.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ko.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ko.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Kp.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Kt.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-cr.svg)2
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ku.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ku.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Kv.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Kx.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ky.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Lo.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-lo.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ls.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Lt.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-lt.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Lv.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-lv.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ma.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mb.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Md.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-md.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Me.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mi.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-mi.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mk.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-mk.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ml.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ml.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mn.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-mn.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mr.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-mr.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ms.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ms.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mt.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-mt.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Mx.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ne.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ne.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Nk.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-No.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-no.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ns.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Oc.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Og.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ol.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ol.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Or.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-or.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Os.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Pa.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-pa.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ph.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ph.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Pl.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-pl.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ps.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ps.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Pt.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-pt.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ro.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ro.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Rs.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ru.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ru.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sa.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sa.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sb.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sd.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sd.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sf.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-nl.svg)2
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Si.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-si.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sj.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sk.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sk.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sl.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sl.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sp.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sq.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sq.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sr.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sr.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sv.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sv.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sw.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sw.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sx.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Sy.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-sy.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ta.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ta.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Te.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-te.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Tg.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-tg.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Th.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-th.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Tk.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-tk.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Tn.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-tn.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Tr.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-tr.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Tt.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Tw.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ua.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ud.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ug.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ug.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Uk.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-uk.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ur.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-ur.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Uz.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-uz.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Vi.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-vi.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Wo.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-wo.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Ya.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Yo.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-yo.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Zg.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-zg.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-Zh.svg (renamed from data/icons/scalable/status/ayatana-indicator-keyboard-zh.svg)0
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-in.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-us.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg1
-rw-r--r--src/keyboard.c9
-rw-r--r--src/languages.h1450
165 files changed, 1678 insertions, 46 deletions
diff --git a/data/ayatana-indicator-keyboard-icon-generator b/data/ayatana-indicator-keyboard-icon-generator
index 96c4b1b7..0316d7f4 100755
--- a/data/ayatana-indicator-keyboard-icon-generator
+++ b/data/ayatana-indicator-keyboard-icon-generator
@@ -3,15 +3,174 @@
import gi
-gi.require_version('Xkl', '1.0')
gi.require_version('PangoFT2', '1.0')
-from gi.repository import Xkl, GdkX11, PangoFT2, Pango
+from gi.repository import PangoFT2, Pango
from pathlib import Path
-#from Xlib.display import Display
import sys
import getopt
+m_lLanguages = [
+'Ap', #APL
+'Fa', #Afghani
+'Ak', #Akan
+'Sq', #Albanian
+'Am', #Amharic
+'Ar', #Arabic
+'Hy', #Armenian
+'As', #Asturian
+'At', #Atsina
+'Av', #Avatime
+'Ae', #Avestan
+'Az', #Azerbaijani
+'Bm', #Bambara
+'Bn', #Bangla
+'Ba', #Bashkirian
+'Be', #Belarusian
+'Bl', #Belgian
+'Bb', #Berber
+'Bs', #Bosnian
+'Bi', #Braille
+'Bg', #Bulgarian
+'By', #Burmese
+'Zg', #Zawgyi
+'Cm', #Cameroon
+'Cn', #Canadian
+'Ca', #Catalan
+'Ck', #Cherokee
+'Zh', #Chinese
+'Cu', #Church Slavonic
+'Cv', #Chuvash
+'Cl', #CloGaelach
+'Sx', #Coeur d'Alene Salish
+'Cp', #Coptic
+'Tt', #Tatar
+'Hr', #Croatian
+'Cs', #Czech
+'Da', #Danish
+'Dv', #Dhivehi
+'Dl', #Dutch
+'Dz', #Dzongkha
+'Ed', #Elfdalian
+'En', #English
+'Eo', #Esperanto
+'Et', #Estonian
+'Ek', #EurKEY
+'Ee', #Ewe
+'Fo', #Faroese
+'Ph', #Filipino
+'Fi', #Finnish
+'Fr', #French
+'Fu', #Friulian
+'Ff', #Fula
+'Gh', #Ga
+'Ka', #Georgian
+'De', #German
+'Gr', #Greek
+'Gu', #Gujarati
+'Hp', #Hanyu Pinyin
+'Ha', #Hausa
+'Hw', #Hawaiian
+'He', #Hebrew
+'Hi', #Hindi
+'Hu', #Hungarian
+'Is', #Icelandic
+'Ig', #Igbo
+'Il', #Indian
+'Ip', #Indic
+'Id', #Indonesian
+'Ix', #International Phonetic Alphabet
+'Iu', #Inuktitut
+'Iq', #Iraqi
+'Ga', #Irish
+'It', #Italian
+'Ja', #Japanese
+'Kb', #Kabyle
+'Kx', #Kalmyk
+'Kn', #Kannada
+'Kp', #Kashubian
+'Kk', #Kazakh
+'Km', #Khmer
+'Ki', #Kikuyu
+'Kv', #Komi
+'Ko', #Korean
+'Ku', #Kurdish
+'Kt', #Kutenai
+'Ky', #Kyrgyz
+'Lo', #Lao
+'Lv', #Latvian
+'Lt', #Lithuanian
+'Sb', #Lower Sorbian
+'Mk', #Macedonian
+'Ms', #Malay
+'Ml', #Malayalam
+'Mt', #Maltese
+'Ma', #Manipuri
+'Mi', #Maori
+'Mr', #Marathi
+'Mx', #Mari
+'Mu', #Mmuock
+'Md', #Modi
+'Ro', #Moldavian
+'Mn', #Mongolian
+'Me', #Montenegrin
+'Mb', #Multilingual
+'Nk', #N'Ko
+'Ne', #Nepali
+'Ns', #Saami
+'No', #Norwegian
+'Oc', #Occitan
+'Og', #Ogham
+'Ol', #Ol Chiki
+'Or', #Oriya
+'Os', #Ossetian
+'Rs', #Rusyn
+'Ps', #Pashto
+'Fa', #Persian
+'Pl', #Polish
+'Pt', #Portuguese
+'Pa', #Punjabi
+'Ro', #Romanian
+'Ru', #Russian
+'Sy', #Saisiyat
+'Sf', #Samogitian
+'Sa', #Sanskrit
+'Sp', #Secwepemctsin
+'Sr', #Serbian
+'Hs', #Serbo-Croatian
+'Sj', #Sicilian
+'Sj', #Silesian
+'Sd', #Sindhi
+'Si', #Sinhala
+'Sk', #Slovak
+'Sl', #Slovenian
+'Es', #Spanish
+'Sw', #Swahili
+'Sv', #Swedish
+'Ls', #Syriac
+'Tw', #Taiwanese
+'Tg', #Tajik
+'Ta', #Tamil
+'Tt', #Tatar
+'Te', #Telugu
+'Th', #Thai
+'Bo', #Tibetan
+'Tn', #Tswana
+'Tr', #Turkish
+'Tk', #Turkmen
+'Ud', #Udmurt
+'Ua', #Ugaritic
+'Uk', #Ukrainian
+'Ur', #Urdu
+'Ug', #Uyghur
+'Uz', #Uzbek
+'Vi', #Vietnamese
+'Wo', #Wolof
+'Ya', #Yakut
+'Yo', #Yoruba
+'00' #Unknown
+]
+
def printHelp():
print('')
@@ -29,20 +188,6 @@ def printHelp():
print(' Defaults to the current directory')
print('')
-def onLanguage(pRegistry, pConfigItem, lParams):
-
- bCheckVariant = lParams[0]
- lLanguages = lParams[1]
- sLanguage = pConfigItem.get_short_description()[0:2]
-
- if sLanguage and sLanguage not in lLanguages:
-
- lLanguages.append(sLanguage)
-
- if bCheckVariant:
-
- pRegistry.foreach_layout_variant(pConfigItem.get_name(), onLanguage, [False, lLanguages])
-
if __name__ == '__main__':
nPadding = 0
@@ -85,13 +230,6 @@ if __name__ == '__main__':
pOutDir = Path(sArg)
pOutDir.mkdir(parents=True, exist_ok=True)
- lLanguages = []
- #pDisplay = Display()
- pDisplay = GdkX11.x11_get_default_xdisplay()
- pEngine = Xkl.Engine.get_instance(pDisplay)
- pRegistry = Xkl.ConfigRegistry.get_instance(pEngine)
- pRegistry.load(True)
- pRegistry.foreach_layout(onLanguage, [True, lLanguages])
nSize = 24 - (2 * nPadding)
fIconX = (24 - nSize) / 2
@@ -105,18 +243,21 @@ if __name__ == '__main__':
pLayout = Pango.Layout.new(pContext)
pLayout.set_font_description(pFontDescription)
- for sLanguage in lLanguages:
+ for sLanguage in m_lLanguages:
sOutPath = pOutDir.joinpath('ayatana-indicator-keyboard-' + sLanguage + '.svg')
with open(sOutPath, 'w') as pFile:
- sLayout = sLanguage[0].upper() + sLanguage[1]
- pLayout.set_text(sLayout, -1)
+ if sLanguage == '00':
+
+ sLanguage = '?'
+
+ pLayout.set_text(sLanguage, -1)
nLayoutWidth, nLayoutHeight = pLayout.get_size()
nBaseline = pLayout.get_baseline()
fLayoutX = (24.0 - (nLayoutWidth / Pango.SCALE)) / 2
fLayoutY = (24.0 - (nLayoutHeight / Pango.SCALE)) / 2 + (nBaseline / Pango.SCALE)
- pFile.write('<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="' + str(fLayoutX) + '" y="' + str(fLayoutY) + '" style="font-family:' + sFont + ';font-weight:500;font-size:' + str(nFont) + ';fill:black">' + sLayout + '</text></mask></defs><rect x="' + str(fIconX) + '" y="' + str(fIconY) + '" width="' + str(nSize) + '" height="' + str(nSize) + '" rx="3" mask="url(#m)" style="fill:' + sColour + '"/></svg>')
+ pFile.write('<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="' + str(fLayoutX) + '" y="' + str(fLayoutY) + '" style="font-family:' + sFont + ';font-weight:500;font-size:' + str(nFont) + ';fill:black">' + sLanguage + '</text></mask></defs><rect x="' + str(fIconX) + '" y="' + str(fIconY) + '" width="' + str(nSize) + '" height="' + str(nSize) + '" rx="3" mask="url(#m)" style="fill:' + sColour + '"/></svg>')
sys.exit(0)
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-00.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-00.svg
new file mode 100644
index 00000000..09066d3f
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-00.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="8.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">?</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ae.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ae.svg
new file mode 100644
index 00000000..3169ea09
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ae.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ae</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ak.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ak.svg
index 175706f7..175706f7 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ak.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ak.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-am.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Am.svg
index c04908a7..c04908a7 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-am.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Am.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ap.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ap.svg
index a1b7017e..a1b7017e 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ap.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ap.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ar.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ar.svg
index 35e6b648..35e6b648 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ar.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ar.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-as.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-As.svg
index d605e746..d605e746 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-as.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-As.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-br.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-At.svg
index 92e7ccc3..415bfe7f 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-br.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-At.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Br</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">At</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-av.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Av.svg
index 35ff04fb..35ff04fb 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-av.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Av.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-az.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Az.svg
index a51d569c..a51d569c 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-az.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Az.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ba.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ba.svg
new file mode 100644
index 00000000..81b0c528
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ba.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ba</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ch.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bb.svg
index ac87bea2..9658b1fa 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ch.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bb.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ch</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bb</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-be.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Be.svg
index dadc4d5c..dadc4d5c 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-be.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Be.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bg.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bg.svg
index 84cc83c2..84cc83c2 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-bg.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bg.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Bi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bi.svg
new file mode 100644
index 00000000..01a81d1d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bi.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bi</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Bl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bl.svg
new file mode 100644
index 00000000..d45bd18b
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bl.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bl</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bm.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bm.svg
index c094d92a..c094d92a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-bm.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bm.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bn.svg
index 24c41d64..24c41d64 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-bn.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bn.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Bo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bo.svg
new file mode 100644
index 00000000..f2569271
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bo</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Bs.svg
index ba1a9e88..ba1a9e88 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-bs.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Bs.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-by.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-By.svg
index 3118da5b..3118da5b 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-by.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-By.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ca.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ca.svg
index 23542658..23542658 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ca.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ca.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ck.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ck.svg
new file mode 100644
index 00000000..0a9daf9f
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ck.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ck</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Cl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Cl.svg
new file mode 100644
index 00000000..8bffddc7
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Cl.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cl</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-cm.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Cm.svg
index 61b89953..61b89953 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-cm.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Cm.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Cn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Cn.svg
new file mode 100644
index 00000000..98801c96
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Cn.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cn</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Cp.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Cp.svg
new file mode 100644
index 00000000..049d1f69
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Cp.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cp</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-cs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Cs.svg
index 4a37213b..4a37213b 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-cs.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Cs.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Cu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Cu.svg
new file mode 100644
index 00000000..431e874d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Cu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Cv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Cv.svg
new file mode 100644
index 00000000..bdd1b9a2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Cv.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cv</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-da.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Da.svg
index d2d5f579..d2d5f579 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-da.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Da.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-de.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-De.svg
index 040aa311..040aa311 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-de.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-De.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-dl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Dl.svg
index 37436f1a..37436f1a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-dl.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Dl.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-dv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Dv.svg
index 7c81daba..7c81daba 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-dv.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Dv.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-dz.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Dz.svg
index 7ae9aec1..7ae9aec1 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-dz.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Dz.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ed.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ed.svg
new file mode 100644
index 00000000..6ca35430
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ed.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ed</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ee.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ee.svg
index 6b9d6454..6b9d6454 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ee.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ee.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ek.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ek.svg
new file mode 100644
index 00000000..8394de7f
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ek.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ek</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-en.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-En.svg
index 0e50ff79..0e50ff79 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-en.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-En.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-eo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Eo.svg
index 927ebf11..927ebf11 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-eo.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Eo.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-es.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Es.svg
index acabf044..acabf044 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-es.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Es.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-et.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Et.svg
index 917ff2a3..917ff2a3 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-et.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Et.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fa.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Fa.svg
index 5fcf1ba2..5fcf1ba2 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-fa.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Fa.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ff.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ff.svg
index 62ec11e4..62ec11e4 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ff.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ff.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Fi.svg
index e596b990..e596b990 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-fi.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Fi.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Fo.svg
index 8d931585..8d931585 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-fo.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Fo.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Fr.svg
index c28989cb..c28989cb 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-fr.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Fr.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Fu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Fu.svg
new file mode 100644
index 00000000..1c5518f2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Fu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Fu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ga.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ga.svg
index a3a67be7..a3a67be7 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ga.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ga.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-my.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Gh.svg
index f31cfa97..74bebe92 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-my.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Gh.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">My</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Gh</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-gr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Gr.svg
index e7b705a0..e7b705a0 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-gr.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Gr.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-gu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Gu.svg
index 9fd9728c..9fd9728c 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-gu.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Gu.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ha.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ha.svg
index 0b0bfc7c..0b0bfc7c 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ha.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ha.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-he.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-He.svg
index ff361d9d..ff361d9d 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-he.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-He.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Hi.svg
index 14e0b72a..14e0b72a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-hi.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Hi.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Hp.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Hp.svg
new file mode 100644
index 00000000..0660680e
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Hp.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Hp</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Hr.svg
index 93d60ba8..93d60ba8 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-hr.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Hr.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Hs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Hs.svg
new file mode 100644
index 00000000..d581eeb3
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Hs.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Hs</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Hu.svg
index 295d5f06..295d5f06 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-hu.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Hu.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Hw.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Hw.svg
new file mode 100644
index 00000000..5a738552
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Hw.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Hw</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hy.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Hy.svg
index fd3ff223..fd3ff223 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-hy.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Hy.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-id.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Id.svg
index 74189fea..74189fea 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-id.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Id.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ig.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ig.svg
index 810bf4b3..810bf4b3 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ig.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ig.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Il.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Il.svg
new file mode 100644
index 00000000..7e0bdbe6
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Il.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="8.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Il</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ip.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ip.svg
new file mode 100644
index 00000000..ac3dce48
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ip.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ip</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Iq.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Iq.svg
new file mode 100644
index 00000000..55e6b982
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Iq.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Iq</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-is.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Is.svg
index 221b3800..221b3800 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-is.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Is.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-it.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-It.svg
index 32ae3d21..32ae3d21 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-it.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-It.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Iu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Iu.svg
new file mode 100644
index 00000000..35ad2d17
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Iu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Iu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ie.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ix.svg
index 77d899d2..097818ea 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ie.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ix.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ie</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ix</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ja.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ja.svg
index eb722bd6..eb722bd6 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ja.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ja.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ka.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ka.svg
index 5856d13a..5856d13a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ka.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ka.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Kb.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Kb.svg
new file mode 100644
index 00000000..da1cb57d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Kb.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Kb</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ki.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ki.svg
index c6b2108e..c6b2108e 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ki.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ki.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-kk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Kk.svg
index 672ed129..672ed129 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-kk.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Kk.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-km.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Km.svg
index 9980f46d..9980f46d 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-km.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Km.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-kn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Kn.svg
index 3394668b..3394668b 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-kn.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Kn.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ko.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ko.svg
index d63470aa..d63470aa 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ko.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ko.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Kp.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Kp.svg
new file mode 100644
index 00000000..38532e94
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Kp.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Kp</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-cr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Kt.svg
index 125bc583..b58f2088 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-cr.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Kt.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Kt</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ku.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ku.svg
index 78ed6d89..78ed6d89 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ku.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ku.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Kv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Kv.svg
new file mode 100644
index 00000000..34769e3a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Kv.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Kv</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Kx.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Kx.svg
new file mode 100644
index 00000000..81d80af1
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Kx.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Kx</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ky.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ky.svg
new file mode 100644
index 00000000..9c43bffe
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ky.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ky</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-lo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Lo.svg
index 8ee50efd..8ee50efd 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-lo.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Lo.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ls.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ls.svg
new file mode 100644
index 00000000..314fc14a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ls.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ls</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-lt.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Lt.svg
index 5e879462..5e879462 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-lt.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Lt.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-lv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Lv.svg
index 391e55f4..391e55f4 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-lv.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Lv.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ma.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ma.svg
new file mode 100644
index 00000000..026124dd
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ma.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ma</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Mb.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mb.svg
new file mode 100644
index 00000000..c8cdd66d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mb.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mb</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-md.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Md.svg
index 8b4d4a2a..8b4d4a2a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-md.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Md.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Me.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Me.svg
new file mode 100644
index 00000000..22ff1270
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Me.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Me</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mi.svg
index ed86b260..ed86b260 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-mi.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mi.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mk.svg
index 5a6b3b98..5a6b3b98 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-mk.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mk.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ml.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ml.svg
index 7c6d7d11..7c6d7d11 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ml.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ml.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mn.svg
index 695dced8..695dced8 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-mn.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mn.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mr.svg
index 77eeae1a..77eeae1a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-mr.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mr.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ms.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ms.svg
index 8b08d301..8b08d301 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ms.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ms.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mt.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mt.svg
index e6e7340b..e6e7340b 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-mt.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mt.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Mu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mu.svg
new file mode 100644
index 00000000..b1204b9a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Mx.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Mx.svg
new file mode 100644
index 00000000..774b301f
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Mx.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mx</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ne.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ne.svg
index 934c2d07..934c2d07 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ne.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ne.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Nk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Nk.svg
new file mode 100644
index 00000000..8e533bce
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Nk.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Nk</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-no.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-No.svg
index eb67598b..eb67598b 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-no.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-No.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ns.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ns.svg
new file mode 100644
index 00000000..45c85d16
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ns.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ns</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Oc.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Oc.svg
new file mode 100644
index 00000000..e22c9e45
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Oc.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Oc</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Og.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Og.svg
new file mode 100644
index 00000000..1dc66bb0
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Og.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Og</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ol.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ol.svg
index 53a7afb4..53a7afb4 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ol.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ol.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-or.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Or.svg
index 71c6050a..71c6050a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-or.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Or.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Os.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Os.svg
new file mode 100644
index 00000000..1aade7a6
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Os.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Os</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-pa.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Pa.svg
index 94548d50..94548d50 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-pa.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Pa.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ph.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ph.svg
index 94c63e7a..94c63e7a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ph.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ph.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-pl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Pl.svg
index 280263e0..280263e0 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-pl.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Pl.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ps.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ps.svg
index 6ef25f86..6ef25f86 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ps.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ps.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-pt.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Pt.svg
index e7de86c9..e7de86c9 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-pt.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Pt.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ro.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ro.svg
index ff94c7c2..ff94c7c2 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ro.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ro.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Rs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Rs.svg
new file mode 100644
index 00000000..76f241f6
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Rs.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Rs</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ru.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ru.svg
index 930daccf..930daccf 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ru.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ru.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sa.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sa.svg
index 332c2012..332c2012 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sa.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sa.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Sb.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sb.svg
new file mode 100644
index 00000000..2efebedc
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sb.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sb</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sd.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sd.svg
index 488efb11..488efb11 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sd.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sd.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-nl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sf.svg
index 1f49af92..9e4bbce3 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-nl.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sf.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Nl</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sf</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-si.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Si.svg
index dd9baca7..dd9baca7 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-si.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Si.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Sj.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sj.svg
new file mode 100644
index 00000000..5bde6b91
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sj.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sj</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sk.svg
index f41e6a73..f41e6a73 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sk.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sk.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sl.svg
index 494965ff..494965ff 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sl.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sl.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Sp.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sp.svg
new file mode 100644
index 00000000..060c9570
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sp.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sp</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sq.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sq.svg
index 4e88ab56..4e88ab56 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sq.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sq.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sr.svg
index 30eb3949..30eb3949 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sr.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sr.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sv.svg
index d9f3cb4d..d9f3cb4d 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sv.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sv.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sw.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sw.svg
index 998a3838..998a3838 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sw.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sw.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Sx.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sx.svg
new file mode 100644
index 00000000..42b23125
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sx.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sx</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sy.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Sy.svg
index 7e929752..7e929752 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sy.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Sy.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ta.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ta.svg
index 79fe78f4..79fe78f4 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ta.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ta.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-te.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Te.svg
index 973ffdaa..973ffdaa 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-te.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Te.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tg.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Tg.svg
index d82a955f..d82a955f 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-tg.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Tg.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-th.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Th.svg
index 309f217b..309f217b 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-th.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Th.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Tk.svg
index 462819f3..462819f3 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-tk.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Tk.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Tn.svg
index e46cf90d..e46cf90d 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-tn.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Tn.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Tr.svg
index db0bb1f6..db0bb1f6 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-tr.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Tr.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Tt.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Tt.svg
new file mode 100644
index 00000000..5ee465c4
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Tt.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Tt</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Tw.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Tw.svg
new file mode 100644
index 00000000..b6951fb7
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Tw.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Tw</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ua.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ua.svg
new file mode 100644
index 00000000..b26931d2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ua.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ua</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ud.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ud.svg
new file mode 100644
index 00000000..0e420860
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ud.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ud</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ug.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ug.svg
index d7054f37..d7054f37 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ug.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ug.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-uk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Uk.svg
index b3a81c05..b3a81c05 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-uk.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Uk.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ur.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ur.svg
index f85b6162..f85b6162 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ur.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ur.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-uz.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Uz.svg
index 66ca7443..66ca7443 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-uz.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Uz.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-vi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Vi.svg
index 91a59b4e..91a59b4e 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-vi.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Vi.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-wo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Wo.svg
index 95d4ad6e..95d4ad6e 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-wo.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Wo.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-Ya.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Ya.svg
new file mode 100644
index 00000000..26fff2b9
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Ya.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ya</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-yo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Yo.svg
index fbf64462..fbf64462 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-yo.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Yo.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-zg.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Zg.svg
index f97e1aa1..f97e1aa1 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-zg.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Zg.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-zh.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-Zh.svg
index 00366a2a..00366a2a 100644
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-zh.svg
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-Zh.svg
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg
deleted file mode 100644
index 69b19223..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Eu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg
deleted file mode 100644
index 0ac4c716..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ik</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-in.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-in.svg
deleted file mode 100644
index 35d431a5..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-in.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">In</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg
deleted file mode 100644
index 6e4e501e..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Jv</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg
deleted file mode 100644
index 164429b0..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sh</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg
deleted file mode 100644
index 227e0acd..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Uf</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-us.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-us.svg
deleted file mode 100644
index 7b622f7f..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-us.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Us</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg
deleted file mode 100644
index b16ddbd1..00000000
--- a/data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Xs</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/src/keyboard.c b/src/keyboard.c
index e88a3583..11c6d93f 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -16,6 +16,7 @@
#include <X11/XKBlib.h>
#include <libxklavier/xklavier.h>
+#include "languages.h"
#include "keyboard.h"
enum
@@ -165,13 +166,13 @@ static void onParseLayouts(XklConfigRegistry *pRegistry, const XklConfigItem * p
if (pLayoutParser->sLayout)
{
pLayout->sId = g_strjoin("+", pLayoutParser->sLayout, pItem->name, NULL);
- pLayout->sLanguage = g_strdup(pLayoutParser->sLanguage);
+ pLayout->sLanguage = g_strdup(lookupLanguage(pLayout->sId));
pLayout->sDescription = g_strdup(pItem->description);
}
else
{
pLayout->sId = g_strdup(pItem->name);
- pLayout->sLanguage = g_strdup(pItem->short_description);
+ pLayout->sLanguage = g_strdup(lookupLanguage(pLayout->sId));
pLayout->sDescription = g_strdup(pItem->description);
}
@@ -182,7 +183,7 @@ static void onParseLayouts(XklConfigRegistry *pRegistry, const XklConfigItem * p
LayoutParser cLayoutParser;
cLayoutParser.sLayout = pItem->name;
cLayoutParser.pKeyboard = pLayoutParser->pKeyboard;
- cLayoutParser.sLanguage = pItem->short_description;
+ cLayoutParser.sLanguage = lookupLanguage(cLayoutParser.sLayout);
xkl_config_registry_foreach_layout_variant(pRegistry, pItem->name, onParseLayouts, &cLayoutParser);
}
@@ -237,7 +238,7 @@ void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gc
if (pLanguage != NULL)
{
- *pLanguage = g_strndup(pLayout->sLanguage, 2);
+ *pLanguage = g_strdup(pLayout->sLanguage);
}
if (pDescription != NULL)
diff --git a/src/languages.h b/src/languages.h
new file mode 100644
index 00000000..bd121000
--- /dev/null
+++ b/src/languages.h
@@ -0,0 +1,1450 @@
+/*
+ * Copyright 2021 Robert Tari <robert@tari.in>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+gchar *LANGUAGES[] =
+{
+ "Ap", //APL
+ "Ap", //APL symbols (APLX unified)
+ "Ap", //APL symbols (Dyalog APL)
+ "Ap", //APL symbols (IBM APL2)
+ "Ap", //APL symbols (Manugistics APL*PLUS II)
+ "Ap", //APL symbols (SAX, Sharp APL for Unix)
+ "Ap", //APL symbols (unified)
+ "Fa", //Afghani
+ "Ak", //Akan
+ "Sq", //Albanian
+ "Sq", //Albanian (Plisi)
+ "Sq", //Albanian (Veqilharxhi)
+ "Am", //Amharic
+ "Ar", //Arabic
+ "Ar", //Arabic (AZERTY)
+ "Ar", //Arabic (AZERTY, Eastern Arabic numerals)
+ "Ar", //Arabic (Algeria)
+ "Ar", //Arabic (Arabic numerals, extensions in the 4th level)
+ "Ar", //Arabic (Buckwalter)
+ "Ar", //Arabic (Eastern Arabic numerals)
+ "Ar", //Arabic (Eastern Arabic numerals, extensions in the 4th level)
+ "Ar", //Arabic (Macintosh)
+ "Ar", //Arabic (Morocco)
+ "Ar", //Arabic (OLPC)
+ "Ar", //Arabic (Pakistan)
+ "Ar", //Arabic (QWERTY)
+ "Ar", //Arabic (QWERTY, Eastern Arabic numerals)
+ "Ar", //Arabic (Sun Type 6/7)
+ "Ar", //Arabic (Syria)
+ "Hy", //Armenian
+ "Hy", //Armenian (OLPC, phonetic)
+ "Hy", //Armenian (alt. eastern)
+ "Hy", //Armenian (alt. phonetic)
+ "Hy", //Armenian (eastern)
+ "Hy", //Armenian (phonetic)
+ "Hy", //Armenian (western)
+ "As", //Asturian (Spain, with bottom-dot H and L)
+ "At", //Atsina
+ "Av", //Avatime
+ "Ae", //Avestan
+ "Az", //Azerbaijani
+ "Az", //Azerbaijani (Cyrillic)
+ "Bm", //Bambara
+ "Bn", //Bangla
+ "Bn", //Bangla (India)
+ "Bn", //Bangla (India, Baishakhi Inscript)
+ "Bn", //Bangla (India, Baishakhi)
+ "Bn", //Bangla (India, Bornona)
+ "Bn", //Bangla (India, Gitanjali)
+ "Bn", //Bangla (India, Probhat)
+ "Bn", //Bangla (Probhat)
+ "Ba", //Bashkirian
+ "Be", //Belarusian
+ "Be", //Belarusian (Latin)
+ "Be", //Belarusian (intl.)
+ "Be", //Belarusian (legacy)
+ "Bl", //Belgian
+ "Bl", //Belgian (ISO, alt.)
+ "Bl", //Belgian (Latin-9 only, alt.)
+ "Bl", //Belgian (Sun Type 6/7)
+ "Bl", //Belgian (Wang 724 AZERTY)
+ "Bl", //Belgian (alt.)
+ "Bl", //Belgian (no dead keys)
+ "Bb", //Berber (Algeria, Latin)
+ "Bb", //Berber (Algeria, Tifinagh)
+ "Bb", //Berber (Morocco, Tifinagh alt.)
+ "Bb", //Berber (Morocco, Tifinagh extended phonetic)
+ "Bb", //Berber (Morocco, Tifinagh extended)
+ "Bb", //Berber (Morocco, Tifinagh phonetic)
+ "Bb", //Berber (Morocco, Tifinagh phonetic, alt.)
+ "Bb", //Berber (Morocco, Tifinagh)
+ "Bs", //Bosnian
+ "Bs", //Bosnian (US)
+ "Bs", //Bosnian (US, with Bosnian digraphs)
+ "Bs", //Bosnian (with Bosnian digraphs)
+ "Bs", //Bosnian (with guillemets)
+ "Bi", //Braille
+ "Bi", //Braille (left-handed inverted thumb)
+ "Bi", //Braille (left-handed)
+ "Bi", //Braille (right-handed inverted thumb)
+ "Bi", //Braille (right-handed)
+ "Bg", //Bulgarian
+ "Bg", //Bulgarian (enhanced)
+ "Bg", //Bulgarian (new phonetic)
+ "Bg", //Bulgarian (traditional phonetic)
+ "My", //Burmese
+ "Zg", //Burmese Zawgyi
+ "Cm", //Cameroon (AZERTY, intl.)
+ "Cm", //Cameroon (Dvorak, intl.)
+ "Cm", //Cameroon Multilingual (QWERTY, intl.)
+ "Cn", //Canadian (intl.)
+ "Cn", //Canadian (intl., 1st part)
+ "Cn", //Canadian (intl., 2nd part)
+ "Ca", //Catalan (Spain, with middle-dot L)
+ "Ck", //Cherokee
+ "Zh", //Chinese
+ "Cu", //Church Slavonic
+ "Cv", //Chuvash
+ "Cv", //Chuvash (Latin)
+ "Cl", //CloGaelach
+ "Sx", //Coeur d'Alene Salish
+ "Cp", //Coptic
+ "Tt", //Crimean Tatar (Dobruja Q)
+ "Tt", //Crimean Tatar (Turkish Alt-Q)
+ "Tt", //Crimean Tatar (Turkish F)
+ "Tt", //Crimean Tatar (Turkish Q)
+ "Hr", //Croatian
+ "Hr", //Croatian (US)
+ "Hr", //Croatian (US, with Croatian digraphs)
+ "Hr", //Croatian (with Croatian digraphs)
+ "Hr", //Croatian (with guillemets)
+ "Cs", //Czech
+ "Cs", //Czech (QWERTY)
+ "Cs", //Czech (QWERTY, Macintosh)
+ "Cs", //Czech (QWERTY, extended backslash)
+ "Cs", //Czech (Sun Type 6/7)
+ "Cs", //Czech (UCW, only accented letters)
+ "Cs", //Czech (US, Dvorak, UCW support)
+ "Cs", //Czech (coder)
+ "Cs", //Czech (programming)
+ "Cs", //Czech (programming, typographic)
+ "Cs", //Czech (typographic)
+ "Cs", //Czech (with <\\|> key)
+ "Cs", //Czech Slovak and German (US)
+ "Da", //Danish
+ "Da", //Danish (Dvorak)
+ "Da", //Danish (Macintosh)
+ "Da", //Danish (Macintosh, no dead keys)
+ "Da", //Danish (Sun Type 6/7)
+ "Da", //Danish (Windows)
+ "Da", //Danish (no dead keys)
+ "Dv", //Dhivehi
+ "Nl", //Dutch
+ "Nl", //Dutch (Macintosh)
+ "Nl", //Dutch (Sun Type 6/7)
+ "Nl", //Dutch (standard)
+ "Dz", //Dzongkha
+ "Ed", //Elfdalian (Swedish, with combining ogonek)
+ "En", //English (3l)
+ "En", //English (3l, Chromebook)
+ "En", //English (3l, emacs)
+ "En", //English (Australian)
+ "En", //English (Cameroon)
+ "En", //English (Canada)
+ "En", //English (Carpalx)
+ "En", //English (Carpalx, full optimization)
+ "En", //English (Carpalx, full optimization, Hyena Layer5)
+ "En", //English (Carpalx, full optimization, intl., with AltGr dead keys)
+ "En", //English (Carpalx, full optimization, intl., with AltGr dead keys, Hyena Layer5)
+ "En", //English (Carpalx, full optimization, intl., with dead keys)
+ "En", //English (Carpalx, full optimization, intl., with dead keys, Hyena Layer5)
+ "En", //English (Carpalx, intl., with AltGr dead keys)
+ "En", //English (Carpalx, intl., with dead keys)
+ "En", //English (Colemak)
+ "En", //English (Colemak-DH)
+ "En", //English (Drix)
+ "En", //English (Dvorak)
+ "En", //English (Dvorak, alt. intl.)
+ "En", //English (Dvorak, intl., with dead keys)
+ "En", //English (Dvorak, left-handed)
+ "En", //English (Dvorak, right-handed)
+ "En", //English (Ghana)
+ "En", //English (Ghana, GILLBT)
+ "En", //English (Ghana, multilingual)
+ "En", //English (India, with rupee)
+ "En", //English (Macintosh)
+ "En", //English (Mali, US, Macintosh)
+ "En", //English (Mali, US, intl.)
+ "En", //English (Nigeria)
+ "En", //English (Norman)
+ "En", //English (South Africa)
+ "En", //English (UK)
+ "En", //English (UK, Colemak)
+ "En", //English (UK, Colemak-DH)
+ "En", //English (UK, Dvorak)
+ "En", //English (UK, Dvorak, with UK punctuation)
+ "En", //English (UK, Hyena Layer5)
+ "En", //English (UK, Macintosh)
+ "En", //English (UK, Macintosh, intl.)
+ "En", //English (UK, MiniGuru Layer5)
+ "En", //English (UK, Sun Type 6/7)
+ "En", //English (UK, TEX Yoda Layer5)
+ "En", //English (UK, extended, Windows)
+ "En", //English (UK, intl., with dead keys)
+ "En", //English (UK, intl., with dead keys, Hyena Layer5)
+ "En", //English (UK, intl., with dead keys, MiniGuru Layer5)
+ "En", //English (UK, intl., with dead keys, TEX Yoda Layer5)
+ "En", //English (US)
+ "En", //English (US, Hyena Layer5)
+ "En", //English (US, IBM Arabic 238_L)
+ "En", //English (US, MiniGuru Layer5)
+ "En", //English (US, Sun Type 6/7)
+ "En", //English (US, Symbolic)
+ "En", //English (US, TEX Yoda Layer5)
+ "En", //English (US, alt. intl.)
+ "En", //English (US, alt. intl., with dead keys, Hyena Layer5)
+ "En", //English (US, alt. intl., with dead keys, MiniGuru Layer5)
+ "En", //English (US, alt. intl., with dead keys, TEX Yoda Layer5)
+ "En", //English (US, euro on 5)
+ "En", //English (US, intl., AltGr Unicode combining)
+ "En", //English (US, intl., AltGr Unicode combining, Hyena Layer5)
+ "En", //English (US, intl., AltGr Unicode combining, MiniGuru Layer5)
+ "En", //English (US, intl., AltGr Unicode combining, TEX Yoda Layer5)
+ "En", //English (US, intl., AltGr Unicode combining, alt.)
+ "En", //English (US, intl., with dead keys)
+ "En", //English (Workman)
+ "En", //English (Workman, intl., with dead keys)
+ "En", //English (classic Dvorak)
+ "En", //English (intl., with AltGr dead keys)
+ "En", //English (programmer Dvorak)
+ "En", //English (the divide/multiply toggle the layout)
+ "Eo", //Esperanto
+ "Eo", //Esperanto (Brazil, Nativo)
+ "Eo", //Esperanto (Portugal, Nativo)
+ "Eo", //Esperanto (legacy)
+ "Et", //Estonian
+ "Et", //Estonian (Dvorak)
+ "Et", //Estonian (Sun Type 6/7)
+ "Et", //Estonian (US)
+ "Et", //Estonian (no dead keys)
+ "Ek", //EurKEY (US)
+ "Ee", //Ewe
+ "Fo", //Faroese
+ "Fo", //Faroese (no dead keys)
+ "Ph", //Filipino
+ "Ph", //Filipino (Capewell-Dvorak, Baybayin)
+ "Ph", //Filipino (Capewell-Dvorak, Latin)
+ "Ph", //Filipino (Capewell-QWERF 2006, Baybayin)
+ "Ph", //Filipino (Capewell-QWERF 2006, Latin)
+ "Ph", //Filipino (Colemak, Baybayin)
+ "Ph", //Filipino (Colemak, Latin)
+ "Ph", //Filipino (Dvorak, Baybayin)
+ "Ph", //Filipino (Dvorak, Latin)
+ "Ph", //Filipino (QWERTY, Baybayin)
+ "Fi", //Finnish
+ "Fi", //Finnish (DAS)
+ "Fi", //Finnish (Dvorak)
+ "Fi", //Finnish (Macintosh)
+ "Fi", //Finnish (Sun Type 6/7)
+ "Fi", //Finnish (Windows)
+ "Fi", //Finnish (classic)
+ "Fi", //Finnish (classic, no dead keys)
+ "Fr", //French
+ "Fr", //French (AZERTY)
+ "Fr", //French (AZERTY, AFNOR)
+ "Fr", //French (BEPO)
+ "Fr", //French (BEPO, AFNOR)
+ "Fr", //French (BEPO, Latin-9 only)
+ "Fr", //French (Breton)
+ "Fr", //French (Cameroon)
+ "Fr", //French (Canada)
+ "Fr", //French (Canada, Dvorak)
+ "Fr", //French (Canada, legacy)
+ "Fr", //French (Democratic Republic of the Congo)
+ "Fr", //French (Dvorak)
+ "Fr", //French (Macintosh)
+ "Fr", //French (Mali, alt.)
+ "Fr", //French (Morocco)
+ "Fr", //French (Sun Type 6/7)
+ "Fr", //French (Switzerland)
+ "Fr", //French (Switzerland, Macintosh)
+ "Fr", //French (Switzerland, Sun Type 6/7)
+ "Fr", //French (Switzerland, no dead keys)
+ "Fr", //French (Togo)
+ "Fr", //French (US with dead keys, alt.)
+ "Fr", //French (US)
+ "Fr", //French (US, AZERTY)
+ "Fr", //French (alt.)
+ "Fr", //French (alt., Latin-9 only)
+ "Fr", //French (alt., no dead keys)
+ "Fr", //French (legacy, alt.)
+ "Fr", //French (legacy, alt., no dead keys)
+ "Fr", //French (no dead keys)
+ "Fu", //Friulian (Italy)
+ "Ff", //Fula
+ "Gh", //Ga
+ "Ka", //Georgian
+ "Ka", //Georgian (France, AZERTY Tskapo)
+ "Ka", //Georgian (Italy)
+ "Ka", //Georgian (MESS)
+ "Ka", //Georgian (ergonomic)
+ "De", //German
+ "De", //German (Aus der Neo-Welt)
+ "De", //German (Austria)
+ "De", //German (Austria, Macintosh)
+ "De", //German (Austria, no dead keys)
+ "De", //German (Bone)
+ "De", //German (Bone, eszett in the home row)
+ "De", //German (Dvorak)
+ "De", //German (E1)
+ "De", //German (E2)
+ "De", //German (KOY)
+ "De", //German (Ladin)
+ "De", //German (Macintosh)
+ "De", //German (Macintosh, no dead keys)
+ "De", //German (Neo 2)
+ "De", //German (Neo, QWERTY)
+ "De", //German (Neo, QWERTZ)
+ "De", //German (QWERTY)
+ "De", //German (Sun Type 6/7)
+ "De", //German (Switzerland)
+ "De", //German (Switzerland, Macintosh)
+ "De", //German (Switzerland, Sun Type 6/7)
+ "De", //German (Switzerland, legacy)
+ "De", //German (Switzerland, no dead keys)
+ "De", //German (T3)
+ "De", //German (US)
+ "De", //German (dead acute)
+ "De", //German (dead grave acute)
+ "De", //German (dead tilde)
+ "De", //German (no dead keys)
+ "De", //German (with Hungarian letters, no dead keys)
+ "De", //German, Swedish and Finnish (US)
+ "Gr", //Greek
+ "Gr", //Greek (Colemak)
+ "Gr", //Greek (Sun Type 6/7)
+ "Gr", //Greek (extended)
+ "Gr", //Greek (no dead keys)
+ "Gr", //Greek (polytonic)
+ "Gr", //Greek (simple)
+ "Gu", //Gujarati
+ "Hp", //Hanyu Pinyin (with AltGr dead keys)
+ "Ha", //Hausa (Ghana)
+ "Ha", //Hausa (Nigeria)
+ "Hw", //Hawaiian
+ "He", //Hebrew
+ "He", //Hebrew (Biblical, SIL phonetic)
+ "He", //Hebrew (Biblical, Tiro)
+ "He", //Hebrew (lyx)
+ "He", //Hebrew (phonetic)
+ "Hi", //Hindi (Bolnagri)
+ "Hi", //Hindi (KaGaPa, phonetic)
+ "Hi", //Hindi (Wx)
+ "Hu", //Hungarian
+ "Hu", //Hungarian (QWERTY)
+ "Hu", //Hungarian (QWERTY, 101-key, comma, dead keys)
+ "Hu", //Hungarian (QWERTY, 101-key, comma, no dead keys)
+ "Hu", //Hungarian (QWERTY, 101-key, dot, dead keys)
+ "Hu", //Hungarian (QWERTY, 101-key, dot, no dead keys)
+ "Hu", //Hungarian (QWERTY, 102-key, comma, dead keys)
+ "Hu", //Hungarian (QWERTY, 102-key, comma, no dead keys)
+ "Hu", //Hungarian (QWERTY, 102-key, dot, dead keys)
+ "Hu", //Hungarian (QWERTY, 102-key, dot, no dead keys)
+ "Hu", //Hungarian (QWERTZ, 101-key, comma, dead keys)
+ "Hu", //Hungarian (QWERTZ, 101-key, comma, no dead keys)
+ "Hu", //Hungarian (QWERTZ, 101-key, dot, dead keys)
+ "Hu", //Hungarian (QWERTZ, 101-key, dot, no dead keys)
+ "Hu", //Hungarian (QWERTZ, 102-key, comma, dead keys)
+ "Hu", //Hungarian (QWERTZ, 102-key, comma, no dead keys)
+ "Hu", //Hungarian (QWERTZ, 102-key, dot, dead keys)
+ "Hu", //Hungarian (QWERTZ, 102-key, dot, no dead keys)
+ "Hu", //Hungarian (no dead keys)
+ "Hu", //Hungarian (standard)
+ "Is", //Icelandic
+ "Is", //Icelandic (Dvorak)
+ "Is", //Icelandic (Macintosh)
+ "Is", //Icelandic (Macintosh, legacy)
+ "Ig", //Igbo
+ "Il", //Indian
+ "Ip", //Indic IPA
+ "Id", //Indonesian (Arab Melayu, extended phonetic)
+ "Id", //Indonesian (Arab Melayu, phonetic)
+ "Id", //Indonesian (Javanese)
+ "Ix", //International Phonetic Alphabet
+ "Iu", //Inuktitut
+ "Iq", //Iraqi
+ "Ga", //Irish
+ "Ga", //Irish (UnicodeExpert)
+ "It", //Italian
+ "It", //Italian (Dvorak)
+ "It", //Italian (IBM 142)
+ "It", //Italian (Ladin)
+ "It", //Italian (Macintosh)
+ "It", //Italian (Sun Type 6/7)
+ "It", //Italian (US)
+ "It", //Italian (Windows)
+ "It", //Italian (intl., with dead keys)
+ "It", //Italian (no dead keys)
+ "Ja", //Japanese
+ "Ja", //Japanese (Dvorak)
+ "Ja", //Japanese (Kana 86)
+ "Ja", //Japanese (Kana)
+ "Ja", //Japanese (Macintosh)
+ "Ja", //Japanese (OADG 109A)
+ "Ja", //Japanese (PC-98)
+ "Ja", //Japanese (Sun Type 6)
+ "Ja", //Japanese (Sun Type 7, PC-compatible)
+ "Ja", //Japanese (Sun Type 7, Sun-compatible)
+ "Kb", //Kabyle (azerty layout, dead keys)
+ "Kb", //Kabyle (qwerty-gb layout, dead keys)
+ "Kb", //Kabyle (qwerty-us layout, dead keys)
+ "Kx", //Kalmyk
+ "Kn", //Kannada
+ "Kn", //Kannada (KaGaPa, phonetic)
+ "Kp", //Kashubian
+ "Kk", //Kazakh
+ "Kk", //Kazakh (Latin)
+ "Kk", //Kazakh (extended)
+ "Kk", //Kazakh (with Russian)
+ "Km", //Khmer (Cambodia)
+ "Ki", //Kikuyu
+ "Kv", //Komi
+ "Ko", //Korean
+ "Ko", //Korean (101/104-key compatible)
+ "Ko", //Korean (Sun Type 6/7)
+ "Ku", //Kurdish (Iran, Arabic-Latin)
+ "Ku", //Kurdish (Iran, F)
+ "Ku", //Kurdish (Iran, Latin Alt-Q)
+ "Ku", //Kurdish (Iran, Latin Q)
+ "Ku", //Kurdish (Iraq, Arabic-Latin)
+ "Ku", //Kurdish (Iraq, F)
+ "Ku", //Kurdish (Iraq, Latin Alt-Q)
+ "Ku", //Kurdish (Iraq, Latin Q)
+ "Ku", //Kurdish (Syria, F)
+ "Ku", //Kurdish (Syria, Latin Alt-Q)
+ "Ku", //Kurdish (Syria, Latin Q)
+ "Ku", //Kurdish (Turkey, F)
+ "Ku", //Kurdish (Turkey, Latin Alt-Q)
+ "Ku", //Kurdish (Turkey, Latin Q)
+ "Kt", //Kutenai
+ "Ky", //Kyrgyz
+ "Ky", //Kyrgyz (phonetic)
+ "Lo", //Lao
+ "Lo", //Lao (STEA)
+ "Lv", //Latvian
+ "Lv", //Latvian (Colemak)
+ "Lv", //Latvian (Colemak, with apostrophe)
+ "Lv", //Latvian (Dvorak)
+ "Lv", //Latvian (Dvorak, with Y)
+ "Lv", //Latvian (Dvorak, with minus)
+ "Lv", //Latvian (F)
+ "Lv", //Latvian (Sun Type 6/7)
+ "Lv", //Latvian (adapted)
+ "Lv", //Latvian (apostrophe)
+ "Lv", //Latvian (ergonomic, ŪGJRMV)
+ "Lv", //Latvian (modern)
+ "Lv", //Latvian (programmer Dvorak)
+ "Lv", //Latvian (programmer Dvorak, with Y)
+ "Lv", //Latvian (programmer Dvorak, with minus)
+ "Lv", //Latvian (tilde)
+ "Lt", //Lithuanian
+ "Lt", //Lithuanian (Dvorak)
+ "Lt", //Lithuanian (IBM LST 1205-92)
+ "Lt", //Lithuanian (LEKP)
+ "Lt", //Lithuanian (LEKPa)
+ "Lt", //Lithuanian (Ratise)
+ "Lt", //Lithuanian (Sun Type 6/7)
+ "Lt", //Lithuanian (US)
+ "Lt", //Lithuanian (standard)
+ "Sb", //Lower Sorbian
+ "Sb", //Lower Sorbian (QWERTZ)
+ "Mk", //Macedonian
+ "Mk", //Macedonian (no dead keys)
+ "Ms", //Malay (Jawi, Arabic Keyboard)
+ "Ms", //Malay (Jawi, phonetic)
+ "Ml", //Malayalam
+ "Ml", //Malayalam (Lalitha)
+ "Ml", //Malayalam (enhanced Inscript, with rupee)
+ "Mt", //Maltese
+ "Mt", //Maltese (UK, with AltGr overrides)
+ "Mt", //Maltese (US layout with AltGr overrides)
+ "Mt", //Maltese (US)
+ "Ma", //Manipuri (Eeyek)
+ "Mi", //Maori
+ "Mr", //Marathi (KaGaPa, phonetic)
+ "Mr", //Marathi (enhanced Inscript)
+ "Mx", //Mari
+ "Mu", //Mmuock
+ "Md", //Modi (KaGaPa phonetic)
+ "Ro", //Moldavian
+ "Ro", //Moldavian (Gagauz)
+ "Mn", //Mongolian
+ "Mn", //Mongolian (Bichig)
+ "Mn", //Mongolian (Galik)
+ "Mn", //Mongolian (Manchu Galik)
+ "Mn", //Mongolian (Manchu)
+ "Mn", //Mongolian (Todo Galik)
+ "Mn", //Mongolian (Todo)
+ "Mn", //Mongolian (Xibe)
+ "Me", //Montenegrin
+ "Me", //Montenegrin (Cyrillic)
+ "Me", //Montenegrin (Cyrillic, ZE and ZHE swapped)
+ "Me", //Montenegrin (Cyrillic, with guillemets)
+ "Me", //Montenegrin (Latin, QWERTY)
+ "Me", //Montenegrin (Latin, Unicode)
+ "Me", //Montenegrin (Latin, Unicode, QWERTY)
+ "Me", //Montenegrin (Latin, with guillemets)
+ "Mb", //Multilingual (Canada, Sun Type 6/7)
+ "Nk", //N'Ko (azerty)
+ "Ne", //Nepali
+ "Ns", //Northern Saami (Finland)
+ "Ns", //Northern Saami (Norway)
+ "Ns", //Northern Saami (Norway, no dead keys)
+ "Ns", //Northern Saami (Sweden)
+ "No", //Norwegian
+ "No", //Norwegian (Colemak)
+ "No", //Norwegian (Dvorak)
+ "No", //Norwegian (Macintosh)
+ "No", //Norwegian (Macintosh, no dead keys)
+ "No", //Norwegian (Sun Type 6/7)
+ "No", //Norwegian (Windows)
+ "No", //Norwegian (no dead keys)
+ "Oc", //Occitan
+ "Og", //Ogham
+ "Og", //Ogham (IS434)
+ "Ol", //Ol Chiki
+ "Hu", //Old Hungarian
+ "Hu", //Old Hungarian (for ligatures)
+ "Tr", //Old Turkic
+ "Or", //Oriya
+ "Os", //Ossetian (Georgia)
+ "Os", //Ossetian (Windows)
+ "Os", //Ossetian (legacy)
+ "Rs", //Pannonian Rusyn
+ "Ps", //Pashto
+ "Ps", //Pashto (Afghanistan, OLPC)
+ "Fa", //Persian
+ "Fa", //Persian (Afghanistan, Dari OLPC)
+ "Fa", //Persian (with Persian keypad)
+ "Pl", //Polish
+ "Pl", //Polish (British keyboard)
+ "Pl", //Polish (Colemak)
+ "Pl", //Polish (Colemak-DH)
+ "Pl", //Polish (Dvorak)
+ "Pl", //Polish (Dvorak, with Polish quotes on key 1)
+ "Pl", //Polish (Dvorak, with Polish quotes on quotemark key)
+ "Pl", //Polish (Germany, no dead keys)
+ "Pl", //Polish (Glagolica)
+ "Pl", //Polish (QWERTZ)
+ "Pl", //Polish (Sun Type 6/7)
+ "Pl", //Polish (intl., with dead keys)
+ "Pl", //Polish (legacy)
+ "Pl", //Polish (programmer Dvorak)
+ "Pt", //Portuguese
+ "Pt", //Portuguese (Brazil)
+ "Pt", //Portuguese (Brazil, Dvorak)
+ "Pt", //Portuguese (Brazil, IBM/Lenovo ThinkPad)
+ "Pt", //Portuguese (Brazil, Nativo for US keyboards)
+ "Pt", //Portuguese (Brazil, Nativo)
+ "Pt", //Portuguese (Brazil, Sun Type 6/7)
+ "Pt", //Portuguese (Brazil, no dead keys)
+ "Pt", //Portuguese (Colemak)
+ "Pt", //Portuguese (Macintosh)
+ "Pt", //Portuguese (Macintosh, no dead keys)
+ "Pt", //Portuguese (Nativo for US keyboards)
+ "Pt", //Portuguese (Nativo)
+ "Pt", //Portuguese (Sun Type 6/7)
+ "Pt", //Portuguese (no dead keys)
+ "Pa", //Punjabi (Gurmukhi Jhelum)
+ "Pa", //Punjabi (Gurmukhi)
+ "Ro", //Romanian
+ "Ro", //Romanian (Germany)
+ "Ro", //Romanian (Germany, no dead keys)
+ "Ro", //Romanian (Sun Type 6/7)
+ "Ro", //Romanian (Windows)
+ "Ro", //Romanian (ergonomic Touchtype)
+ "Ro", //Romanian (standard)
+ "Ru", //Russian
+ "Ru", //Russian (Belarus)
+ "Ru", //Russian (Czech, phonetic)
+ "Ru", //Russian (DOS)
+ "Ru", //Russian (Georgia)
+ "Ru", //Russian (Germany, phonetic)
+ "Ru", //Russian (Germany, recommended)
+ "Ru", //Russian (Germany, transliteration)
+ "Ru", //Russian (Kazakhstan, with Kazakh)
+ "Ru", //Russian (Macintosh)
+ "Ru", //Russian (Poland, phonetic Dvorak)
+ "Ru", //Russian (Polyglot and Reactionary)
+ "Ru", //Russian (Rulemak, phonetic Colemak)
+ "Ru", //Russian (Sun Type 6/7)
+ "Ru", //Russian (Sweden, phonetic)
+ "Ru", //Russian (Sweden, phonetic, no dead keys)
+ "Ru", //Russian (US, phonetic)
+ "Ru", //Russian (Ukraine, standard RSTU)
+ "Ru", //Russian (legacy)
+ "Ru", //Russian (phonetic Macintosh)
+ "Ru", //Russian (phonetic)
+ "Ru", //Russian (phonetic, AZERTY)
+ "Ru", //Russian (phonetic, Dvorak)
+ "Ru", //Russian (phonetic, French)
+ "Ru", //Russian (phonetic, Windows)
+ "Ru", //Russian (phonetic, YAZHERTY)
+ "Ru", //Russian (typewriter)
+ "Ru", //Russian (typewriter, legacy)
+ "Ru", //Russian (with US punctuation)
+ "Ru", //Russian (with Ukrainian-Belorussian layout)
+ "Sy", //Saisiyat (Taiwan)
+ "Sf", //Samogitian
+ "Sa", //Sanskrit (KaGaPa, phonetic)
+ "Sa", //Sanskrit symbols
+ "Sp", //Secwepemctsin
+ "Sr", //Serbian
+ "Sr", //Serbian (Cyrillic, ZE and ZHE swapped)
+ "Sr", //Serbian (Cyrillic, with guillemets)
+ "Sr", //Serbian (Latin)
+ "Sr", //Serbian (Latin, QWERTY)
+ "Sr", //Serbian (Latin, Unicode)
+ "Sr", //Serbian (Latin, Unicode, QWERTY)
+ "Sr", //Serbian (Latin, with guillemets)
+ "Sr", //Serbian (Russia)
+ "Sr", //Serbian (combining accents instead of dead keys)
+ "Hs", //Serbo-Croatian (US)
+ "Sj", //Sicilian
+ "Sj", //Sicilian (US keyboard)
+ "Sj", //Silesian
+ "Sd", //Sindhi
+ "Si", //Sinhala (US)
+ "Si", //Sinhala (phonetic)
+ "Sk", //Slovak
+ "Sk", //Slovak (ACC layout, only accented letters)
+ "Sk", //Slovak (QWERTY)
+ "Sk", //Slovak (QWERTY, extended backslash)
+ "Sk", //Slovak (Sun Type 6/7)
+ "Sk", //Slovak (extended backslash)
+ "Sl", //Slovenian
+ "Sl", //Slovenian (US)
+ "Sl", //Slovenian (with guillemets)
+ "Es", //Spanish
+ "Es", //Spanish (Dvorak)
+ "Es", //Spanish (Latin American)
+ "Es", //Spanish (Latin American, Colemak for gaming)
+ "Es", //Spanish (Latin American, Colemak)
+ "Es", //Spanish (Latin American, Dvorak)
+ "Es", //Spanish (Latin American, dead tilde)
+ "Es", //Spanish (Latin American, no dead keys)
+ "Es", //Spanish (Macintosh)
+ "Es", //Spanish (Sun Type 6/7)
+ "Es", //Spanish (Windows)
+ "Es", //Spanish (dead tilde)
+ "Es", //Spanish (no dead keys)
+ "Sw", //Swahili (Kenya)
+ "Sw", //Swahili (Tanzania)
+ "Sv", //Swedish
+ "Sv", //Swedish (Dvorak A5)
+ "Sv", //Swedish (Dvorak)
+ "Sv", //Swedish (Dvorak, intl.)
+ "Sv", //Swedish (Macintosh)
+ "Sv", //Swedish (Sun Type 6/7)
+ "Sv", //Swedish (Svdvorak)
+ "Sv", //Swedish (US)
+ "Sv", //Swedish (no dead keys)
+ "Sv", //Swedish Sign Language
+ "Ls", //Syriac
+ "Ls", //Syriac (phonetic)
+ "Tw", //Taiwanese
+ "Tw", //Taiwanese (indigenous)
+ "Tg", //Tajik
+ "Tg", //Tajik (legacy)
+ "Ta", //Tamil (Inscript)
+ "Ta", //Tamil (Sri Lanka, TamilNet '99)
+ "Ta", //Tamil (Sri Lanka, TamilNet '99, TAB encoding)
+ "Ta", //Tamil (TamilNet '99 with Tamil numerals)
+ "Ta", //Tamil (TamilNet '99)
+ "Ta", //Tamil (TamilNet '99, TAB encoding)
+ "Ta", //Tamil (TamilNet '99, TSCII encoding)
+ "Tt", //Tatar
+ "Te", //Telugu
+ "Te", //Telugu (KaGaPa, phonetic)
+ "Te", //Telugu (Sarala)
+ "Th", //Thai
+ "Th", //Thai (Pattachote)
+ "Th", //Thai (TIS-820.2538)
+ "Bo", //Tibetan
+ "Bo", //Tibetan (with ASCII numerals)
+ "Tn", //Tswana
+ "Tr", //Turkish
+ "Tr", //Turkish (Alt-Q)
+ "Tr", //Turkish (F)
+ "Tr", //Turkish (Germany)
+ "Tr", //Turkish (Sun Type 6/7)
+ "Tr", //Turkish (intl., with dead keys)
+ "Tk", //Turkmen
+ "Tk", //Turkmen (Alt-Q)
+ "Ud", //Udmurt
+ "Ua", //Ugaritic instead of Arabic
+ "Uk", //Ukrainian
+ "Uk", //Ukrainian (Sun Type 6/7)
+ "Uk", //Ukrainian (Windows)
+ "Uk", //Ukrainian (homophonic)
+ "Uk", //Ukrainian (legacy)
+ "Uk", //Ukrainian (phonetic)
+ "Uk", //Ukrainian (standard RSTU)
+ "Uk", //Ukrainian (typewriter)
+ "Ur", //Urdu (Pakistan)
+ "Ur", //Urdu (Pakistan, CRULP)
+ "Ur", //Urdu (Pakistan, NLA)
+ "Ur", //Urdu (Windows)
+ "Ur", //Urdu (alt. phonetic)
+ "Ur", //Urdu (phonetic)
+ "Ug", //Uyghur
+ "Uz", //Uzbek
+ "Uz", //Uzbek (Afghanistan)
+ "Uz", //Uzbek (Afghanistan, OLPC)
+ "Uz", //Uzbek (Latin)
+ "Vi", //Vietnamese
+ "Vi", //Vietnamese (AÐERTY)
+ "Vi", //Vietnamese (French)
+ "Vi", //Vietnamese (QĐERTY)
+ "Vi", //Vietnamese (US)
+ "Wo", //Wolof
+ "Ya", //Yakut
+ "Yo", //Yoruba
+ NULL
+};
+
+gchar *IDS[] =
+{
+ "apl", //APL
+ "apl+aplx", //APL symbols (APLX unified)
+ "apl+dyalog", //APL symbols (Dyalog APL)
+ "apl+apl2", //APL symbols (IBM APL2)
+ "apl+aplplusII", //APL symbols (Manugistics APL*PLUS II)
+ "apl+sax", //APL symbols (SAX, Sharp APL for Unix)
+ "apl+unified", //APL symbols (unified)
+ "af", //Afghani
+ "gh+akan", //Akan
+ "al", //Albanian
+ "al+plisi", //Albanian (Plisi)
+ "al+veqilharxhi", //Albanian (Veqilharxhi)
+ "et", //Amharic
+ "ara", //Arabic
+ "ara+azerty", //Arabic (AZERTY)
+ "ara+azerty_digits", //Arabic (AZERTY, Eastern Arabic numerals)
+ "dz+ar", //Arabic (Algeria)
+ "ara+basic_ext", //Arabic (Arabic numerals, extensions in the 4th level)
+ "ara+buckwalter", //Arabic (Buckwalter)
+ "ara+digits", //Arabic (Eastern Arabic numerals)
+ "ara+basic_ext_digits", //Arabic (Eastern Arabic numerals, extensions in the 4th level)
+ "ara+mac", //Arabic (Macintosh)
+ "ma", //Arabic (Morocco)
+ "ara+olpc", //Arabic (OLPC)
+ "pk+ara", //Arabic (Pakistan)
+ "ara+qwerty", //Arabic (QWERTY)
+ "ara+qwerty_digits", //Arabic (QWERTY, Eastern Arabic numerals)
+ "ara+sun_type6", //Arabic (Sun Type 6/7)
+ "sy", //Arabic (Syria)
+ "am", //Armenian
+ "am+olpc-phonetic", //Armenian (OLPC, phonetic)
+ "am+eastern-alt", //Armenian (alt. eastern)
+ "am+phonetic-alt", //Armenian (alt. phonetic)
+ "am+eastern", //Armenian (eastern)
+ "am+phonetic", //Armenian (phonetic)
+ "am+western", //Armenian (western)
+ "es+ast", //Asturian (Spain, with bottom-dot H and L)
+ "us+ats", //Atsina
+ "gh+avn", //Avatime
+ "ir+ave", //Avestan
+ "az", //Azerbaijani
+ "az+cyrillic", //Azerbaijani (Cyrillic)
+ "ml", //Bambara
+ "bd", //Bangla
+ "in+ben", //Bangla (India)
+ "in+ben_inscript", //Bangla (India, Baishakhi Inscript)
+ "in+ben_baishakhi", //Bangla (India, Baishakhi)
+ "in+ben_bornona", //Bangla (India, Bornona)
+ "in+ben_gitanjali", //Bangla (India, Gitanjali)
+ "in+ben_probhat", //Bangla (India, Probhat)
+ "bd+probhat", //Bangla (Probhat)
+ "ru+bak", //Bashkirian
+ "by", //Belarusian
+ "by+latin", //Belarusian (Latin)
+ "by+intl", //Belarusian (intl.)
+ "by+legacy", //Belarusian (legacy)
+ "be", //Belgian
+ "be+iso-alternate", //Belgian (ISO, alt.)
+ "be+oss_latin9", //Belgian (Latin-9 only, alt.)
+ "be+sun_type6", //Belgian (Sun Type 6/7)
+ "be+wang", //Belgian (Wang 724 AZERTY)
+ "be+oss", //Belgian (alt.)
+ "be+nodeadkeys", //Belgian (no dead keys)
+ "dz", //Berber (Algeria, Latin)
+ "dz+ber", //Berber (Algeria, Tifinagh)
+ "ma+tifinagh-alt", //Berber (Morocco, Tifinagh alt.)
+ "ma+tifinagh-extended-phonetic", //Berber (Morocco, Tifinagh extended phonetic)
+ "ma+tifinagh-extended", //Berber (Morocco, Tifinagh extended)
+ "ma+tifinagh-phonetic", //Berber (Morocco, Tifinagh phonetic)
+ "ma+tifinagh-alt-phonetic", //Berber (Morocco, Tifinagh phonetic, alt.)
+ "ma+tifinagh", //Berber (Morocco, Tifinagh)
+ "ba", //Bosnian
+ "ba+us", //Bosnian (US)
+ "ba+unicodeus", //Bosnian (US, with Bosnian digraphs)
+ "ba+unicode", //Bosnian (with Bosnian digraphs)
+ "ba+alternatequotes", //Bosnian (with guillemets)
+ "brai", //Braille
+ "brai+left_hand_invert", //Braille (left-handed inverted thumb)
+ "brai+left_hand", //Braille (left-handed)
+ "brai+right_hand_invert", //Braille (right-handed inverted thumb)
+ "brai+right_hand", //Braille (right-handed)
+ "bg", //Bulgarian
+ "bg+bekl", //Bulgarian (enhanced)
+ "bg+bas_phonetic", //Bulgarian (new phonetic)
+ "bg+phonetic", //Bulgarian (traditional phonetic)
+ "mm", //Burmese
+ "mm+zawgyi", //Burmese Zawgyi
+ "cm+azerty", //Cameroon (AZERTY, intl.)
+ "cm+dvorak", //Cameroon (Dvorak, intl.)
+ "cm+qwerty", //Cameroon Multilingual (QWERTY, intl.)
+ "ca+multix", //Canadian (intl.)
+ "ca+multi", //Canadian (intl., 1st part)
+ "ca+multi-2gr", //Canadian (intl., 2nd part)
+ "es+cat", //Catalan (Spain, with middle-dot L)
+ "us+chr", //Cherokee
+ "cn", //Chinese
+ "ru+chu", //Church Slavonic
+ "ru+cv", //Chuvash
+ "ru+cv_latin", //Chuvash (Latin)
+ "ie+CloGaelach", //CloGaelach
+ "us+crd", //Coeur d'Alene Salish
+ "eg", //Coptic
+ "ro+crh_dobruja", //Crimean Tatar (Dobruja Q)
+ "tr+crh_alt", //Crimean Tatar (Turkish Alt-Q)
+ "tr+crh_f", //Crimean Tatar (Turkish F)
+ "tr+crh", //Crimean Tatar (Turkish Q)
+ "hr", //Croatian
+ "hr+us", //Croatian (US)
+ "hr+unicodeus", //Croatian (US, with Croatian digraphs)
+ "hr+unicode", //Croatian (with Croatian digraphs)
+ "hr+alternatequotes", //Croatian (with guillemets)
+ "cz", //Czech
+ "cz+qwerty", //Czech (QWERTY)
+ "cz+qwerty-mac", //Czech (QWERTY, Macintosh)
+ "cz+qwerty_bksl", //Czech (QWERTY, extended backslash)
+ "cz+sun_type6", //Czech (Sun Type 6/7)
+ "cz+ucw", //Czech (UCW, only accented letters)
+ "cz+dvorak-ucw", //Czech (US, Dvorak, UCW support)
+ "cz+coder", //Czech (coder)
+ "cz+prog", //Czech (programming)
+ "cz+prog_typo", //Czech (programming, typographic)
+ "cz+typo", //Czech (typographic)
+ "cz+bksl", //Czech (with <\\|> key)
+ "us+cz_sk_de", //Czech Slovak and German (US)
+ "dk", //Danish
+ "dk+dvorak", //Danish (Dvorak)
+ "dk+mac", //Danish (Macintosh)
+ "dk+mac_nodeadkeys", //Danish (Macintosh, no dead keys)
+ "dk+sun_type6", //Danish (Sun Type 6/7)
+ "dk+winkeys", //Danish (Windows)
+ "dk+nodeadkeys", //Danish (no dead keys)
+ "mv", //Dhivehi
+ "nl", //Dutch
+ "nl+mac", //Dutch (Macintosh)
+ "nl+sun_type6", //Dutch (Sun Type 6/7)
+ "nl+std", //Dutch (standard)
+ "bt", //Dzongkha
+ "se+ovd", //Elfdalian (Swedish, with combining ogonek)
+ "us+3l", //English (3l)
+ "us+3l-cros", //English (3l, Chromebook)
+ "us+3l-emacs", //English (3l, emacs)
+ "au", //English (Australian)
+ "cm", //English (Cameroon)
+ "ca+eng", //English (Canada)
+ "us+carpalx", //English (Carpalx)
+ "us+carpalx-full", //English (Carpalx, full optimization)
+ "us+hyena-carpalx", //English (Carpalx, full optimization, Hyena Layer5)
+ "us+carpalx-full-altgr-intl", //English (Carpalx, full optimization, intl., with AltGr dead keys)
+ "us+hyena-carpalx-altgr-intl", //English (Carpalx, full optimization, intl., with AltGr dead keys, Hyena Layer5)
+ "us+carpalx-full-intl", //English (Carpalx, full optimization, intl., with dead keys)
+ "us+hyena-carpalx-intl", //English (Carpalx, full optimization, intl., with dead keys, Hyena Layer5)
+ "us+carpalx-altgr-intl", //English (Carpalx, intl., with AltGr dead keys)
+ "us+carpalx-intl", //English (Carpalx, intl., with dead keys)
+ "us+colemak", //English (Colemak)
+ "us+colemak_dh", //English (Colemak-DH)
+ "us+drix", //English (Drix)
+ "us+dvorak", //English (Dvorak)
+ "us+dvorak-alt-intl", //English (Dvorak, alt. intl.)
+ "us+dvorak-intl", //English (Dvorak, intl., with dead keys)
+ "us+dvorak-l", //English (Dvorak, left-handed)
+ "us+dvorak-r", //English (Dvorak, right-handed)
+ "gh", //English (Ghana)
+ "gh+gillbt", //English (Ghana, GILLBT)
+ "gh+generic", //English (Ghana, multilingual)
+ "in+eng", //English (India, with rupee)
+ "us+mac", //English (Macintosh)
+ "ml+us-mac", //English (Mali, US, Macintosh)
+ "ml+us-intl", //English (Mali, US, intl.)
+ "ng", //English (Nigeria)
+ "us+norman", //English (Norman)
+ "za", //English (South Africa)
+ "gb", //English (UK)
+ "gb+colemak", //English (UK, Colemak)
+ "gb+colemak_dh", //English (UK, Colemak-DH)
+ "gb+dvorak", //English (UK, Dvorak)
+ "gb+dvorakukp", //English (UK, Dvorak, with UK punctuation)
+ "gb+hyena", //English (UK, Hyena Layer5)
+ "gb+mac", //English (UK, Macintosh)
+ "gb+mac_intl", //English (UK, Macintosh, intl.)
+ "gb+miniguru", //English (UK, MiniGuru Layer5)
+ "gb+sun_type6", //English (UK, Sun Type 6/7)
+ "gb+yoda", //English (UK, TEX Yoda Layer5)
+ "gb+extd", //English (UK, extended, Windows)
+ "gb+intl", //English (UK, intl., with dead keys)
+ "gb+hyena-intl", //English (UK, intl., with dead keys, Hyena Layer5)
+ "gb+miniguru-intl", //English (UK, intl., with dead keys, MiniGuru Layer5)
+ "gb+yoda-intl", //English (UK, intl., with dead keys, TEX Yoda Layer5)
+ "us", //English (US)
+ "us+hyena", //English (US, Hyena Layer5)
+ "us+ibm238l", //English (US, IBM Arabic 238_L)
+ "us+miniguru", //English (US, MiniGuru Layer5)
+ "us+sun_type6", //English (US, Sun Type 6/7)
+ "us+symbolic", //English (US, Symbolic)
+ "us+yoda", //English (US, TEX Yoda Layer5)
+ "us+alt-intl", //English (US, alt. intl.)
+ "us+hyena-alt-intl", //English (US, alt. intl., with dead keys, Hyena Layer5)
+ "us+miniguru-alt-intl", //English (US, alt. intl., with dead keys, MiniGuru Layer5)
+ "us+yoda-alt-intl", //English (US, alt. intl., with dead keys, TEX Yoda Layer5)
+ "us+euro", //English (US, euro on 5)
+ "us+intl-unicode", //English (US, intl., AltGr Unicode combining)
+ "us+hyena-intl-unicode", //English (US, intl., AltGr Unicode combining, Hyena Layer5)
+ "us+miniguru-intl-unicode", //English (US, intl., AltGr Unicode combining, MiniGuru Layer5)
+ "us+yoda-intl-unicode", //English (US, intl., AltGr Unicode combining, TEX Yoda Layer5)
+ "us+alt-intl-unicode", //English (US, intl., AltGr Unicode combining, alt.)
+ "us+intl", //English (US, intl., with dead keys)
+ "us+workman", //English (Workman)
+ "us+workman-intl", //English (Workman, intl., with dead keys)
+ "us+dvorak-classic", //English (classic Dvorak)
+ "us+altgr-intl", //English (intl., with AltGr dead keys)
+ "us+dvp", //English (programmer Dvorak)
+ "us+olpc2", //English (the divide/multiply toggle the layout)
+ "epo", //Esperanto
+ "br+nativo-epo", //Esperanto (Brazil, Nativo)
+ "pt+nativo-epo", //Esperanto (Portugal, Nativo)
+ "epo+legacy", //Esperanto (legacy)
+ "ee", //Estonian
+ "ee+dvorak", //Estonian (Dvorak)
+ "ee+sun_type6", //Estonian (Sun Type 6/7)
+ "ee+us", //Estonian (US)
+ "ee+nodeadkeys", //Estonian (no dead keys)
+ "eu", //EurKEY (US)
+ "gh+ewe", //Ewe
+ "fo", //Faroese
+ "fo+nodeadkeys", //Faroese (no dead keys)
+ "ph", //Filipino
+ "ph+capewell-dvorak-bay", //Filipino (Capewell-Dvorak, Baybayin)
+ "ph+capewell-dvorak", //Filipino (Capewell-Dvorak, Latin)
+ "ph+capewell-qwerf2k6-bay", //Filipino (Capewell-QWERF 2006, Baybayin)
+ "ph+capewell-qwerf2k6", //Filipino (Capewell-QWERF 2006, Latin)
+ "ph+colemak-bay", //Filipino (Colemak, Baybayin)
+ "ph+colemak", //Filipino (Colemak, Latin)
+ "ph+dvorak-bay", //Filipino (Dvorak, Baybayin)
+ "ph+dvorak", //Filipino (Dvorak, Latin)
+ "ph+qwerty-bay", //Filipino (QWERTY, Baybayin)
+ "fi", //Finnish
+ "fi+das", //Finnish (DAS)
+ "fi+fidvorak", //Finnish (Dvorak)
+ "fi+mac", //Finnish (Macintosh)
+ "fi+sun_type6", //Finnish (Sun Type 6/7)
+ "fi+winkeys", //Finnish (Windows)
+ "fi+classic", //Finnish (classic)
+ "fi+nodeadkeys", //Finnish (classic, no dead keys)
+ "fr", //French
+ "fr+azerty", //French (AZERTY)
+ "fr+afnor", //French (AZERTY, AFNOR)
+ "fr+bepo", //French (BEPO)
+ "fr+bepo_afnor", //French (BEPO, AFNOR)
+ "fr+bepo_latin9", //French (BEPO, Latin-9 only)
+ "fr+bre", //French (Breton)
+ "cm+french", //French (Cameroon)
+ "ca", //French (Canada)
+ "ca+fr-dvorak", //French (Canada, Dvorak)
+ "ca+fr-legacy", //French (Canada, legacy)
+ "cd", //French (Democratic Republic of the Congo)
+ "fr+dvorak", //French (Dvorak)
+ "fr+mac", //French (Macintosh)
+ "ml+fr-oss", //French (Mali, alt.)
+ "ma+french", //French (Morocco)
+ "fr+sun_type6", //French (Sun Type 6/7)
+ "ch+fr", //French (Switzerland)
+ "ch+fr_mac", //French (Switzerland, Macintosh)
+ "ch+sun_type6_fr", //French (Switzerland, Sun Type 6/7)
+ "ch+fr_nodeadkeys", //French (Switzerland, no dead keys)
+ "tg", //French (Togo)
+ "fr+us-alt", //French (US with dead keys, alt.)
+ "fr+us", //French (US)
+ "fr+us-azerty", //French (US, AZERTY)
+ "fr+oss", //French (alt.)
+ "fr+oss_latin9", //French (alt., Latin-9 only)
+ "fr+oss_nodeadkeys", //French (alt., no dead keys)
+ "fr+latin9", //French (legacy, alt.)
+ "fr+latin9_nodeadkeys", //French (legacy, alt., no dead keys)
+ "fr+nodeadkeys", //French (no dead keys)
+ "it+fur", //Friulian (Italy)
+ "gh+fula", //Fula
+ "gh+ga", //Ga
+ "ge", //Georgian
+ "fr+geo", //Georgian (France, AZERTY Tskapo)
+ "it+geo", //Georgian (Italy)
+ "ge+mess", //Georgian (MESS)
+ "ge+ergonomic", //Georgian (ergonomic)
+ "de", //German
+ "de+adnw", //German (Aus der Neo-Welt)
+ "at", //German (Austria)
+ "at+mac", //German (Austria, Macintosh)
+ "at+nodeadkeys", //German (Austria, no dead keys)
+ "de+bone", //German (Bone)
+ "de+bone_eszett_home", //German (Bone, eszett in the home row)
+ "de+dvorak", //German (Dvorak)
+ "de+e1", //German (E1)
+ "de+e2", //German (E2)
+ "de+koy", //German (KOY)
+ "de+lld", //German (Ladin)
+ "de+mac", //German (Macintosh)
+ "de+mac_nodeadkeys", //German (Macintosh, no dead keys)
+ "de+neo", //German (Neo 2)
+ "de+neo_qwerty", //German (Neo, QWERTY)
+ "de+neo_qwertz", //German (Neo, QWERTZ)
+ "de+qwerty", //German (QWERTY)
+ "de+sun_type6", //German (Sun Type 6/7)
+ "ch", //German (Switzerland)
+ "ch+de_mac", //German (Switzerland, Macintosh)
+ "ch+sun_type6_de", //German (Switzerland, Sun Type 6/7)
+ "ch+legacy", //German (Switzerland, legacy)
+ "ch+de_nodeadkeys", //German (Switzerland, no dead keys)
+ "de+T3", //German (T3)
+ "de+us", //German (US)
+ "de+deadacute", //German (dead acute)
+ "de+deadgraveacute", //German (dead grave acute)
+ "de+deadtilde", //German (dead tilde)
+ "de+nodeadkeys", //German (no dead keys)
+ "de+hu", //German (with Hungarian letters, no dead keys)
+ "us+de_se_fi", //German, Swedish and Finnish (US)
+ "gr", //Greek
+ "gr+colemak", //Greek (Colemak)
+ "gr+sun_type6", //Greek (Sun Type 6/7)
+ "gr+extended", //Greek (extended)
+ "gr+nodeadkeys", //Greek (no dead keys)
+ "gr+polytonic", //Greek (polytonic)
+ "gr+simple", //Greek (simple)
+ "in+guj", //Gujarati
+ "cn+altgr-pinyin", //Hanyu Pinyin (with AltGr dead keys)
+ "gh+hausa", //Hausa (Ghana)
+ "ng+hausa", //Hausa (Nigeria)
+ "us+haw", //Hawaiian
+ "il", //Hebrew
+ "il+biblicalSIL", //Hebrew (Biblical, SIL phonetic)
+ "il+biblical", //Hebrew (Biblical, Tiro)
+ "il+lyx", //Hebrew (lyx)
+ "il+phonetic", //Hebrew (phonetic)
+ "in+bolnagri", //Hindi (Bolnagri)
+ "in+hin-kagapa", //Hindi (KaGaPa, phonetic)
+ "in+hin-wx", //Hindi (Wx)
+ "hu", //Hungarian
+ "hu+qwerty", //Hungarian (QWERTY)
+ "hu+101_qwerty_comma_dead", //Hungarian (QWERTY, 101-key, comma, dead keys)
+ "hu+101_qwerty_comma_nodead", //Hungarian (QWERTY, 101-key, comma, no dead keys)
+ "hu+101_qwerty_dot_dead", //Hungarian (QWERTY, 101-key, dot, dead keys)
+ "hu+101_qwerty_dot_nodead", //Hungarian (QWERTY, 101-key, dot, no dead keys)
+ "hu+102_qwerty_comma_dead", //Hungarian (QWERTY, 102-key, comma, dead keys)
+ "hu+102_qwerty_comma_nodead", //Hungarian (QWERTY, 102-key, comma, no dead keys)
+ "hu+102_qwerty_dot_dead", //Hungarian (QWERTY, 102-key, dot, dead keys)
+ "hu+102_qwerty_dot_nodead", //Hungarian (QWERTY, 102-key, dot, no dead keys)
+ "hu+101_qwertz_comma_dead", //Hungarian (QWERTZ, 101-key, comma, dead keys)
+ "hu+101_qwertz_comma_nodead", //Hungarian (QWERTZ, 101-key, comma, no dead keys)
+ "hu+101_qwertz_dot_dead", //Hungarian (QWERTZ, 101-key, dot, dead keys)
+ "hu+101_qwertz_dot_nodead", //Hungarian (QWERTZ, 101-key, dot, no dead keys)
+ "hu+102_qwertz_comma_dead", //Hungarian (QWERTZ, 102-key, comma, dead keys)
+ "hu+102_qwertz_comma_nodead", //Hungarian (QWERTZ, 102-key, comma, no dead keys)
+ "hu+102_qwertz_dot_dead", //Hungarian (QWERTZ, 102-key, dot, dead keys)
+ "hu+102_qwertz_dot_nodead", //Hungarian (QWERTZ, 102-key, dot, no dead keys)
+ "hu+nodeadkeys", //Hungarian (no dead keys)
+ "hu+standard", //Hungarian (standard)
+ "is", //Icelandic
+ "is+dvorak", //Icelandic (Dvorak)
+ "is+mac", //Icelandic (Macintosh)
+ "is+mac_legacy", //Icelandic (Macintosh, legacy)
+ "ng+igbo", //Igbo
+ "in", //Indian
+ "in+iipa", //Indic IPA
+ "id+phoneticx", //Indonesian (Arab Melayu, extended phonetic)
+ "id", //Indonesian (Arab Melayu, phonetic)
+ "jv", //Indonesian (Javanese)
+ "trans", //International Phonetic Alphabet
+ "ca+ike", //Inuktitut
+ "iq", //Iraqi
+ "ie", //Irish
+ "ie+UnicodeExpert", //Irish (UnicodeExpert)
+ "it", //Italian
+ "it+dvorak", //Italian (Dvorak)
+ "it+ibm", //Italian (IBM 142)
+ "it+lld", //Italian (Ladin)
+ "it+mac", //Italian (Macintosh)
+ "it+sun_type6", //Italian (Sun Type 6/7)
+ "it+us", //Italian (US)
+ "it+winkeys", //Italian (Windows)
+ "it+intl", //Italian (intl., with dead keys)
+ "it+nodeadkeys", //Italian (no dead keys)
+ "jp", //Japanese
+ "jp+dvorak", //Japanese (Dvorak)
+ "jp+kana86", //Japanese (Kana 86)
+ "jp+kana", //Japanese (Kana)
+ "jp+mac", //Japanese (Macintosh)
+ "jp+OADG109A", //Japanese (OADG 109A)
+ "nec_vndr/jp", //Japanese (PC-98)
+ "jp+sun_type6", //Japanese (Sun Type 6)
+ "jp+sun_type7", //Japanese (Sun Type 7, PC-compatible)
+ "jp+sun_type7_suncompat", //Japanese (Sun Type 7, Sun-compatible)
+ "dz+azerty-deadkeys", //Kabyle (azerty layout, dead keys)
+ "dz+qwerty-gb-deadkeys", //Kabyle (qwerty-gb layout, dead keys)
+ "dz+qwerty-us-deadkeys", //Kabyle (qwerty-us layout, dead keys)
+ "ru+xal", //Kalmyk
+ "in+kan", //Kannada
+ "in+kan-kagapa", //Kannada (KaGaPa, phonetic)
+ "pl+csb", //Kashubian
+ "kz", //Kazakh
+ "kz+latin", //Kazakh (Latin)
+ "kz+ext", //Kazakh (extended)
+ "kz+kazrus", //Kazakh (with Russian)
+ "kh", //Khmer (Cambodia)
+ "ke+kik", //Kikuyu
+ "ru+kom", //Komi
+ "kr", //Korean
+ "kr+kr104", //Korean (101/104-key compatible)
+ "kr+sun_type6", //Korean (Sun Type 6/7)
+ "ir+ku_ara", //Kurdish (Iran, Arabic-Latin)
+ "ir+ku_f", //Kurdish (Iran, F)
+ "ir+ku_alt", //Kurdish (Iran, Latin Alt-Q)
+ "ir+ku", //Kurdish (Iran, Latin Q)
+ "iq+ku_ara", //Kurdish (Iraq, Arabic-Latin)
+ "iq+ku_f", //Kurdish (Iraq, F)
+ "iq+ku_alt", //Kurdish (Iraq, Latin Alt-Q)
+ "iq+ku", //Kurdish (Iraq, Latin Q)
+ "sy+ku_f", //Kurdish (Syria, F)
+ "sy+ku_alt", //Kurdish (Syria, Latin Alt-Q)
+ "sy+ku", //Kurdish (Syria, Latin Q)
+ "tr+ku_f", //Kurdish (Turkey, F)
+ "tr+ku_alt", //Kurdish (Turkey, Latin Alt-Q)
+ "tr+ku", //Kurdish (Turkey, Latin Q)
+ "ca+kut", //Kutenai
+ "kg", //Kyrgyz
+ "kg+phonetic", //Kyrgyz (phonetic)
+ "la", //Lao
+ "la+stea", //Lao (STEA)
+ "lv", //Latvian
+ "lv+colemak", //Latvian (Colemak)
+ "lv+apostrophecolemak", //Latvian (Colemak, with apostrophe)
+ "lv+dvorak", //Latvian (Dvorak)
+ "lv+ykeydvorak", //Latvian (Dvorak, with Y)
+ "lv+minuskeydvorak", //Latvian (Dvorak, with minus)
+ "lv+fkey", //Latvian (F)
+ "lv+sun_type6", //Latvian (Sun Type 6/7)
+ "lv+adapted", //Latvian (adapted)
+ "lv+apostrophe", //Latvian (apostrophe)
+ "lv+ergonomic", //Latvian (ergonomic, ŪGJRMV)
+ "lv+modern", //Latvian (modern)
+ "lv+dvorakprogr", //Latvian (programmer Dvorak)
+ "lv+ykeydvorakprogr", //Latvian (programmer Dvorak, with Y)
+ "lv+minuskeydvorakprogr", //Latvian (programmer Dvorak, with minus)
+ "lv+tilde", //Latvian (tilde)
+ "lt", //Lithuanian
+ "lt+us_dvorak", //Lithuanian (Dvorak)
+ "lt+ibm", //Lithuanian (IBM LST 1205-92)
+ "lt+lekp", //Lithuanian (LEKP)
+ "lt+lekpa", //Lithuanian (LEKPa)
+ "lt+ratise", //Lithuanian (Ratise)
+ "lt+sun_type6", //Lithuanian (Sun Type 6/7)
+ "lt+us", //Lithuanian (US)
+ "lt+std", //Lithuanian (standard)
+ "de+dsb", //Lower Sorbian
+ "de+dsb_qwertz", //Lower Sorbian (QWERTZ)
+ "mk", //Macedonian
+ "mk+nodeadkeys", //Macedonian (no dead keys)
+ "my", //Malay (Jawi, Arabic Keyboard)
+ "my+phonetic", //Malay (Jawi, phonetic)
+ "in+mal", //Malayalam
+ "in+mal_lalitha", //Malayalam (Lalitha)
+ "in+mal_enhanced", //Malayalam (enhanced Inscript, with rupee)
+ "mt", //Maltese
+ "mt+alt-gb", //Maltese (UK, with AltGr overrides)
+ "mt+alt-us", //Maltese (US layout with AltGr overrides)
+ "mt+us", //Maltese (US)
+ "in+eeyek", //Manipuri (Eeyek)
+ "mao", //Maori
+ "in+mar-kagapa", //Marathi (KaGaPa, phonetic)
+ "in+marathi", //Marathi (enhanced Inscript)
+ "ru+chm", //Mari
+ "cm+mmuock", //Mmuock
+ "in+modi-kagapa", //Modi (KaGaPa phonetic)
+ "md", //Moldavian
+ "md+gag", //Moldavian (Gagauz)
+ "mn", //Mongolian
+ "cn+mon_trad", //Mongolian (Bichig)
+ "cn+mon_trad_galik", //Mongolian (Galik)
+ "cn+mon_manchu_galik", //Mongolian (Manchu Galik)
+ "cn+mon_trad_manchu", //Mongolian (Manchu)
+ "cn+mon_todo_galik", //Mongolian (Todo Galik)
+ "cn+mon_trad_todo", //Mongolian (Todo)
+ "cn+mon_trad_xibe", //Mongolian (Xibe)
+ "me", //Montenegrin
+ "me+cyrillic", //Montenegrin (Cyrillic)
+ "me+cyrillicyz", //Montenegrin (Cyrillic, ZE and ZHE swapped)
+ "me+cyrillicalternatequotes", //Montenegrin (Cyrillic, with guillemets)
+ "me+latinyz", //Montenegrin (Latin, QWERTY)
+ "me+latinunicode", //Montenegrin (Latin, Unicode)
+ "me+latinunicodeyz", //Montenegrin (Latin, Unicode, QWERTY)
+ "me+latinalternatequotes", //Montenegrin (Latin, with guillemets)
+ "ca+sun_type6", //Multilingual (Canada, Sun Type 6/7)
+ "gn", //N'Ko (azerty)
+ "np", //Nepali
+ "fi+smi", //Northern Saami (Finland)
+ "no+smi", //Northern Saami (Norway)
+ "no+smi_nodeadkeys", //Northern Saami (Norway, no dead keys)
+ "se+smi", //Northern Saami (Sweden)
+ "no", //Norwegian
+ "no+colemak", //Norwegian (Colemak)
+ "no+dvorak", //Norwegian (Dvorak)
+ "no+mac", //Norwegian (Macintosh)
+ "no+mac_nodeadkeys", //Norwegian (Macintosh, no dead keys)
+ "no+sun_type6", //Norwegian (Sun Type 6/7)
+ "no+winkeys", //Norwegian (Windows)
+ "no+nodeadkeys", //Norwegian (no dead keys)
+ "fr+oci", //Occitan
+ "ie+ogam", //Ogham
+ "ie+ogam_is434", //Ogham (IS434)
+ "in+olck", //Ol Chiki
+ "hu+oldhun", //Old Hungarian
+ "hu+oldhunlig", //Old Hungarian (for ligatures)
+ "tr+otk", //Old Turkic
+ "in+ori", //Oriya
+ "ge+os", //Ossetian (Georgia)
+ "ru+os_winkeys", //Ossetian (Windows)
+ "ru+os_legacy", //Ossetian (legacy)
+ "rs+rue", //Pannonian Rusyn
+ "af+ps", //Pashto
+ "af+olpc-ps", //Pashto (Afghanistan, OLPC)
+ "ir", //Persian
+ "af+fa-olpc", //Persian (Afghanistan, Dari OLPC)
+ "ir+pes_keypad", //Persian (with Persian keypad)
+ "pl", //Polish
+ "gb+pl", //Polish (British keyboard)
+ "pl+colemak", //Polish (Colemak)
+ "pl+colemak_dh", //Polish (Colemak-DH)
+ "pl+dvorak", //Polish (Dvorak)
+ "pl+dvorak_altquotes", //Polish (Dvorak, with Polish quotes on key 1)
+ "pl+dvorak_quotes", //Polish (Dvorak, with Polish quotes on quotemark key)
+ "de+pl", //Polish (Germany, no dead keys)
+ "pl+glagolica", //Polish (Glagolica)
+ "pl+qwertz", //Polish (QWERTZ)
+ "pl+sun_type6", //Polish (Sun Type 6/7)
+ "pl+intl", //Polish (intl., with dead keys)
+ "pl+legacy", //Polish (legacy)
+ "pl+dvp", //Polish (programmer Dvorak)
+ "pt", //Portuguese
+ "br", //Portuguese (Brazil)
+ "br+dvorak", //Portuguese (Brazil, Dvorak)
+ "br+thinkpad", //Portuguese (Brazil, IBM/Lenovo ThinkPad)
+ "br+nativo-us", //Portuguese (Brazil, Nativo for US keyboards)
+ "br+nativo", //Portuguese (Brazil, Nativo)
+ "br+sun_type6", //Portuguese (Brazil, Sun Type 6/7)
+ "br+nodeadkeys", //Portuguese (Brazil, no dead keys)
+ "pt+colemak", //Portuguese (Colemak)
+ "pt+mac", //Portuguese (Macintosh)
+ "pt+mac_nodeadkeys", //Portuguese (Macintosh, no dead keys)
+ "pt+nativo-us", //Portuguese (Nativo for US keyboards)
+ "pt+nativo", //Portuguese (Nativo)
+ "pt+sun_type6", //Portuguese (Sun Type 6/7)
+ "pt+nodeadkeys", //Portuguese (no dead keys)
+ "in+jhelum", //Punjabi (Gurmukhi Jhelum)
+ "in+guru", //Punjabi (Gurmukhi)
+ "ro", //Romanian
+ "de+ro", //Romanian (Germany)
+ "de+ro_nodeadkeys", //Romanian (Germany, no dead keys)
+ "ro+sun_type6", //Romanian (Sun Type 6/7)
+ "ro+winkeys", //Romanian (Windows)
+ "ro+ergonomic", //Romanian (ergonomic Touchtype)
+ "ro+std", //Romanian (standard)
+ "ru", //Russian
+ "by+ru", //Russian (Belarus)
+ "cz+rus", //Russian (Czech, phonetic)
+ "ru+dos", //Russian (DOS)
+ "ge+ru", //Russian (Georgia)
+ "de+ru", //Russian (Germany, phonetic)
+ "de+ru-recom", //Russian (Germany, recommended)
+ "de+ru-translit", //Russian (Germany, transliteration)
+ "kz+ruskaz", //Russian (Kazakhstan, with Kazakh)
+ "ru+mac", //Russian (Macintosh)
+ "pl+ru_phonetic_dvorak", //Russian (Poland, phonetic Dvorak)
+ "ru+prxn", //Russian (Polyglot and Reactionary)
+ "ru+rulemak", //Russian (Rulemak, phonetic Colemak)
+ "ru+sun_type6", //Russian (Sun Type 6/7)
+ "se+rus", //Russian (Sweden, phonetic)
+ "se+rus_nodeadkeys", //Russian (Sweden, phonetic, no dead keys)
+ "us+rus", //Russian (US, phonetic)
+ "ua+rstu_ru", //Russian (Ukraine, standard RSTU)
+ "ru+legacy", //Russian (legacy)
+ "ru+phonetic_mac", //Russian (phonetic Macintosh)
+ "ru+phonetic", //Russian (phonetic)
+ "ru+phonetic_azerty", //Russian (phonetic, AZERTY)
+ "ru+phonetic_dvorak", //Russian (phonetic, Dvorak)
+ "ru+phonetic_fr", //Russian (phonetic, French)
+ "ru+phonetic_winkeys", //Russian (phonetic, Windows)
+ "ru+phonetic_YAZHERTY", //Russian (phonetic, YAZHERTY)
+ "ru+typewriter", //Russian (typewriter)
+ "ru+typewriter-legacy", //Russian (typewriter, legacy)
+ "ru+unipunct", //Russian (with US punctuation)
+ "ru+ruu", //Russian (with Ukrainian-Belorussian layout)
+ "tw+saisiyat", //Saisiyat (Taiwan)
+ "lt+sgs", //Samogitian
+ "in+san-kagapa", //Sanskrit (KaGaPa, phonetic)
+ "in+san-misc", //Sanskrit symbols
+ "ca+shs", //Secwepemctsin
+ "rs", //Serbian
+ "rs+yz", //Serbian (Cyrillic, ZE and ZHE swapped)
+ "rs+alternatequotes", //Serbian (Cyrillic, with guillemets)
+ "rs+latin", //Serbian (Latin)
+ "rs+latinyz", //Serbian (Latin, QWERTY)
+ "rs+latinunicode", //Serbian (Latin, Unicode)
+ "rs+latinunicodeyz", //Serbian (Latin, Unicode, QWERTY)
+ "rs+latinalternatequotes", //Serbian (Latin, with guillemets)
+ "ru+srp", //Serbian (Russia)
+ "rs+combiningkeys", //Serbian (combining accents instead of dead keys)
+ "us+hbs", //Serbo-Croatian (US)
+ "it+scn", //Sicilian
+ "us+scn", //Sicilian (US keyboard)
+ "pl+szl", //Silesian
+ "pk+snd", //Sindhi
+ "lk+us", //Sinhala (US)
+ "lk", //Sinhala (phonetic)
+ "sk", //Slovak
+ "sk+acc", //Slovak (ACC layout, only accented letters)
+ "sk+qwerty", //Slovak (QWERTY)
+ "sk+qwerty_bksl", //Slovak (QWERTY, extended backslash)
+ "sk+sun_type6", //Slovak (Sun Type 6/7)
+ "sk+bksl", //Slovak (extended backslash)
+ "si", //Slovenian
+ "si+us", //Slovenian (US)
+ "si+alternatequotes", //Slovenian (with guillemets)
+ "es", //Spanish
+ "es+dvorak", //Spanish (Dvorak)
+ "latam", //Spanish (Latin American)
+ "latam+colemak-gaming", //Spanish (Latin American, Colemak for gaming)
+ "latam+colemak", //Spanish (Latin American, Colemak)
+ "latam+dvorak", //Spanish (Latin American, Dvorak)
+ "latam+deadtilde", //Spanish (Latin American, dead tilde)
+ "latam+nodeadkeys", //Spanish (Latin American, no dead keys)
+ "es+mac", //Spanish (Macintosh)
+ "es+sun_type6", //Spanish (Sun Type 6/7)
+ "es+winkeys", //Spanish (Windows)
+ "es+deadtilde", //Spanish (dead tilde)
+ "es+nodeadkeys", //Spanish (no dead keys)
+ "ke", //Swahili (Kenya)
+ "tz", //Swahili (Tanzania)
+ "se", //Swedish
+ "se+dvorak_a5", //Swedish (Dvorak A5)
+ "se+dvorak", //Swedish (Dvorak)
+ "se+us_dvorak", //Swedish (Dvorak, intl.)
+ "se+mac", //Swedish (Macintosh)
+ "se+sun_type6", //Swedish (Sun Type 6/7)
+ "se+svdvorak", //Swedish (Svdvorak)
+ "se+us", //Swedish (US)
+ "se+nodeadkeys", //Swedish (no dead keys)
+ "se+swl", //Swedish Sign Language
+ "sy+syc", //Syriac
+ "sy+syc_phonetic", //Syriac (phonetic)
+ "tw", //Taiwanese
+ "tw+indigenous", //Taiwanese (indigenous)
+ "tj", //Tajik
+ "tj+legacy", //Tajik (legacy)
+ "in+tam", //Tamil (Inscript)
+ "lk+tam_unicode", //Tamil (Sri Lanka, TamilNet '99)
+ "lk+tam_TAB", //Tamil (Sri Lanka, TamilNet '99, TAB encoding)
+ "in+tam_tamilnet_with_tam_nums", //Tamil (TamilNet '99 with Tamil numerals)
+ "in+tam_tamilnet", //Tamil (TamilNet '99)
+ "in+tam_tamilnet_TAB", //Tamil (TamilNet '99, TAB encoding)
+ "in+tam_tamilnet_TSCII", //Tamil (TamilNet '99, TSCII encoding)
+ "ru+tt", //Tatar
+ "in+tel", //Telugu
+ "in+tel-kagapa", //Telugu (KaGaPa, phonetic)
+ "in+tel-sarala", //Telugu (Sarala)
+ "th", //Thai
+ "th+pat", //Thai (Pattachote)
+ "th+tis", //Thai (TIS-820.2538)
+ "cn+tib", //Tibetan
+ "cn+tib_asciinum", //Tibetan (with ASCII numerals)
+ "bw", //Tswana
+ "tr", //Turkish
+ "tr+alt", //Turkish (Alt-Q)
+ "tr+f", //Turkish (F)
+ "de+tr", //Turkish (Germany)
+ "tr+sun_type6", //Turkish (Sun Type 6/7)
+ "tr+intl", //Turkish (intl., with dead keys)
+ "tm", //Turkmen
+ "tm+alt", //Turkmen (Alt-Q)
+ "ru+udm", //Udmurt
+ "ara+uga", //Ugaritic instead of Arabic
+ "ua", //Ukrainian
+ "ua+sun_type6", //Ukrainian (Sun Type 6/7)
+ "ua+winkeys", //Ukrainian (Windows)
+ "ua+homophonic", //Ukrainian (homophonic)
+ "ua+legacy", //Ukrainian (legacy)
+ "ua+phonetic", //Ukrainian (phonetic)
+ "ua+rstu", //Ukrainian (standard RSTU)
+ "ua+typewriter", //Ukrainian (typewriter)
+ "pk", //Urdu (Pakistan)
+ "pk+urd-crulp", //Urdu (Pakistan, CRULP)
+ "pk+urd-nla", //Urdu (Pakistan, NLA)
+ "in+urd-winkeys", //Urdu (Windows)
+ "in+urd-phonetic3", //Urdu (alt. phonetic)
+ "in+urd-phonetic", //Urdu (phonetic)
+ "cn+ug", //Uyghur
+ "uz", //Uzbek
+ "af+uz", //Uzbek (Afghanistan)
+ "af+uz-olpc", //Uzbek (Afghanistan, OLPC)
+ "uz+latin", //Uzbek (Latin)
+ "vn", //Vietnamese
+ "vn+aderty", //Vietnamese (AÐERTY)
+ "vn+fr", //Vietnamese (French)
+ "vn+qderty", //Vietnamese (QĐERTY)
+ "vn+us", //Vietnamese (US)
+ "sn", //Wolof
+ "ru+sah", //Yakut
+ "ng+yoruba", //Yoruba
+ NULL
+};
+
+gchar* lookupLanguage(const gchar* sId)
+{
+ guint nId = 0;
+
+ while (IDS[nId] != NULL)
+ {
+ if (g_str_equal(IDS[nId], sId))
+ {
+ return LANGUAGES[nId];
+ }
+
+ nId++;
+ }
+
+ g_warning("No language found for Id %s", sId);
+
+ return "00";
+}