summaryrefslogtreecommitdiffstats
path: root/input-methods
diff options
context:
space:
mode:
authorSanthosh Thottingal <santhosh.thottingal@gmail.com>2009-05-03 21:31:17 +0530
committerSanthosh Thottingal <santhosh.thottingal@gmail.com>2009-05-03 21:31:17 +0530
commit6d33918b6b8e90f80b3ea78b659fea155b2cb1e0 (patch)
treeeab2fef7f698715a15f78bf416d35624f58c2375 /input-methods
parent7a81f78656d6a386231c0497819ace63a0079798 (diff)
downloadRachana.git-6d33918b6b8e90f80b3ea78b659fea155b2cb1e0.tar.gz
Rachana.git-6d33918b6b8e90f80b3ea78b659fea155b2cb1e0.tar.xz
Rachana.git-6d33918b6b8e90f80b3ea78b659fea155b2cb1e0.zip
initial version of ibus-sulekha
Diffstat (limited to 'input-methods')
m---------input-methods/ibus-sulekha0
-rw-r--r--input-methods/ibus-sulekha/.gitignore36
-rw-r--r--input-methods/ibus-sulekha/AUTHORS2
-rw-r--r--input-methods/ibus-sulekha/COPYING339
-rw-r--r--input-methods/ibus-sulekha/ChangeLog0
-rw-r--r--input-methods/ibus-sulekha/Makefile.am63
-rw-r--r--input-methods/ibus-sulekha/NEWS0
-rw-r--r--input-methods/ibus-sulekha/README1
-rwxr-xr-xinput-methods/ibus-sulekha/autogen.sh11
-rw-r--r--input-methods/ibus-sulekha/configure.ac77
-rw-r--r--input-methods/ibus-sulekha/engine/Makefile.am63
-rw-r--r--input-methods/ibus-sulekha/engine/autocomplete.py53
-rw-r--r--input-methods/ibus-sulekha/engine/factory.py60
-rw-r--r--input-methods/ibus-sulekha/engine/ibus-engine-sulekha29
-rw-r--r--input-methods/ibus-sulekha/engine/ibus-engine-sulekha.in29
-rw-r--r--input-methods/ibus-sulekha/engine/keymap.py65
-rw-r--r--input-methods/ibus-sulekha/engine/keymaps/inscript_ml_IN95
-rw-r--r--input-methods/ibus-sulekha/engine/keymaps/swanalekha_ml_IN1578
-rw-r--r--input-methods/ibus-sulekha/engine/main.py96
-rw-r--r--input-methods/ibus-sulekha/engine/sulekha.py223
-rw-r--r--input-methods/ibus-sulekha/engine/sulekha.xml27
-rw-r--r--input-methods/ibus-sulekha/engine/sulekha.xml.in27
-rw-r--r--input-methods/ibus-sulekha/engine/sulekha.xml.in.in27
-rw-r--r--input-methods/ibus-sulekha/engine/trainer.py133
-rw-r--r--input-methods/ibus-sulekha/icons/Makefile.am29
-rw-r--r--input-methods/ibus-sulekha/icons/ibus-sulekha.svg81
-rw-r--r--input-methods/ibus-sulekha/icons/sulekha.pngbin0 -> 1794 bytes
27 files changed, 3144 insertions, 0 deletions
diff --git a/input-methods/ibus-sulekha b/input-methods/ibus-sulekha
deleted file mode 160000
-Subproject 1d7c4cc697322fc8cbd21f3fe0b49cd41c563dd
diff --git a/input-methods/ibus-sulekha/.gitignore b/input-methods/ibus-sulekha/.gitignore
new file mode 100644
index 0000000..64ff685
--- /dev/null
+++ b/input-methods/ibus-sulekha/.gitignore
@@ -0,0 +1,36 @@
+*.pyc
+*.la
+*.lo
+*.loT
+*.o
+*.so
+*~
+tags
+Makefile.qmake
+Makefile
+Makefile.in
+.deps
+.libs
+ABOUT-NLS
+INSTALL
+aclocal.m4
+autom4te.cache
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config.rpath
+config.status
+config.sub
+configure
+depcomp
+gtk-doc.make
+install-sh
+libtool
+ltmain.sh
+missing
+stamp-h1
+py-compile
+ibus-pinyin*.tar.*
+ibus-pinyin.spec
diff --git a/input-methods/ibus-sulekha/AUTHORS b/input-methods/ibus-sulekha/AUTHORS
new file mode 100644
index 0000000..91c9b57
--- /dev/null
+++ b/input-methods/ibus-sulekha/AUTHORS
@@ -0,0 +1,2 @@
+
+Santhosh Thottingal <santhosh.thottingal@gmail.com>
diff --git a/input-methods/ibus-sulekha/COPYING b/input-methods/ibus-sulekha/COPYING
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/input-methods/ibus-sulekha/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY 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, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/input-methods/ibus-sulekha/ChangeLog b/input-methods/ibus-sulekha/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/input-methods/ibus-sulekha/ChangeLog
diff --git a/input-methods/ibus-sulekha/Makefile.am b/input-methods/ibus-sulekha/Makefile.am
new file mode 100644
index 0000000..a372e96
--- /dev/null
+++ b/input-methods/ibus-sulekha/Makefile.am
@@ -0,0 +1,63 @@
+# vim:set noet ts=4:
+#
+# ibus-sulekha - The Sulekha engine for IBus
+#
+# Copyright(c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+SUBDIRS = \
+ engine \
+ icons \
+ m4 \
+ $(NULL)
+
+ACLOCAL_AMFLAGS = -I m4
+
+EXTRA_DIST = \
+ autogen.sh \
+ @PACKAGE_NAME@.spec.in \
+ $(NULL)
+
+noinst_DIST = \
+ $(NULL)
+
+
+DISTCLEANFILES = \
+ po/stamp-it \
+ $(NULL)
+
+rpm: dist @PACKAGE_NAME@.spec
+ rpmbuild -bb \
+ --define "_sourcedir `pwd`" \
+ --define "_builddir `pwd`" \
+ --define "_specdir `pwd`" \
+ --define "_rpmdir `pwd`" \
+ --define "_srcrpmdir `pwd`" \
+ @PACKAGE_NAME@.spec
+
+srpm: dist @PACKAGE_NAME@.spec
+ rpmbuild -bs \
+ --define "_sourcedir `pwd`" \
+ --define "_builddir `pwd`" \
+ --define "_srcrpmdir `pwd`" \
+ --define "_rpmdir `pwd`" \
+ --define "_specdir `pwd`" \
+ @PACKAGE_NAME@.spec
+
+clean-rpm:
+ $(RM) -r "`uname -i`"
+
+clean-local: clean-rpm
diff --git a/input-methods/ibus-sulekha/NEWS b/input-methods/ibus-sulekha/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/input-methods/ibus-sulekha/NEWS
diff --git a/input-methods/ibus-sulekha/README b/input-methods/ibus-sulekha/README
new file mode 100644
index 0000000..bd24daf
--- /dev/null
+++ b/input-methods/ibus-sulekha/README
@@ -0,0 +1 @@
+ibus-sulekha- Predictive text entry system
diff --git a/input-methods/ibus-sulekha/autogen.sh b/input-methods/ibus-sulekha/autogen.sh
new file mode 100755
index 0000000..94f8fd3
--- /dev/null
+++ b/input-methods/ibus-sulekha/autogen.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+set -x
+
+autopoint
+libtoolize --automake --copy
+aclocal -I m4
+# autoheader
+automake --add-missing --copy
+autoconf
+./configure --enable-maintainer-mode $*
diff --git a/input-methods/ibus-sulekha/configure.ac b/input-methods/ibus-sulekha/configure.ac
new file mode 100644
index 0000000..46a5381
--- /dev/null
+++ b/input-methods/ibus-sulekha/configure.ac
@@ -0,0 +1,77 @@
+# vim:set et ts=4:
+#
+# ibus-pinyin - The PinYin engine for IBus
+#
+# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# if not 1, append datestamp to the version number.
+m4_define([package_name], [ibus-sulekha])
+m4_define([ibus_released], [0])
+m4_define([ibus_major_version], [1])
+m4_define([ibus_minor_version], [1])
+m4_define([ibus_micro_version], [0])
+m4_define(ibus_maybe_datestamp,
+ m4_esyscmd([if test x]ibus_released[ != x1; then date +.%Y%m%d | tr -d '\n\r'; fi]))
+
+m4_define([ibus_version],
+ ibus_major_version.ibus_minor_version.ibus_micro_version[]ibus_maybe_datestamp)
+
+AC_INIT([package_name], [ibus_version], [http://code.google.com/p/ibus/issues/entry], [package_name])
+AM_INIT_AUTOMAKE([1.10])
+# AC_GNU_SOURCE
+
+# AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([m4])
+
+# define PACKAGE_VERSION_* variables
+# AS_VERSION
+# AS_NANO
+# AM_SANITY_CHECK
+AM_MAINTAINER_MODE
+# AM_DISABLE_STATIC
+# AC_PROG_CC
+# AM_PROG_CC_C_O
+# AC_PROG_CXX
+# AC_ISC_POSIX
+# AC_HEADER_STDC
+# AM_PROG_LIBTOOL
+
+#check python
+AM_PATH_PYTHON([2.5])
+
+# define GETTEXT_* variables
+GETTEXT_PACKAGE="$PACKAGE_NAME"
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define to the read-only architecture-independent data directory.])
+
+#AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION(0.16.1)
+
+
+# OUTPUT files
+AC_CONFIG_FILES(po/Makefile.in
+Makefile
+ibus-pinyin.spec
+engine/Makefile
+engine/ibus-engine-sulekha
+engine/sulekha.xml.in
+setup/Makefile
+icons/Makefile
+m4/Makefile
+)
+
+AC_OUTPUT
diff --git a/input-methods/ibus-sulekha/engine/Makefile.am b/input-methods/ibus-sulekha/engine/Makefile.am
new file mode 100644
index 0000000..5da4982
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/Makefile.am
@@ -0,0 +1,63 @@
+# vim:set noet ts=4:
+#
+# ibus-sulekha - The Sulekha engine for IBus
+#
+# Copyright(c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+engine_sulekha_PYTHON = \
+ factory.py \
+ main.py \
+ sulekha.py \
+ keymap.py \
+ autocomplete.py \
+ sulekha.db \
+ $(NULL)
+engine_sulekha_DATA = \
+ $(NULL)
+engine_sulekhadir = $(datadir)/ibus-sulekha/engine
+
+libexec_SCRIPTS = ibus-engine-sulekha
+
+engine_DATA = sulekha.xml
+enginedir = $(datadir)/ibus/component
+
+EXTRA_DIST = \
+ ibus-engine-sulekha.in \
+ sulekha.xml.in \
+ $(NULL)
+
+CLEANFILES = \
+ sulekha.xml \
+ *.pyc \
+ $(NULL)
+
+sulekha.xml: sulekha.xml.in
+ ( \
+ libexecdir=${libexecdir}; \
+ pkgdatadir=${pkgdatadir}; \
+ s=`cat $<`; \
+ eval "echo \"$${s}\""; \
+ ) > $@
+
+test:
+ $(ENV) \
+ IBUS_SULEKHA_LOCATION=$(abs_top_srcdir) \
+ DBUS_DEBUG=true \
+ LANG=en_US \
+ PYTHONPATH=$(abs_top_srcdir):$(pyexecdir) \
+ $(PYTHON) $(srcdir)/main.py
+
diff --git a/input-methods/ibus-sulekha/engine/autocomplete.py b/input-methods/ibus-sulekha/engine/autocomplete.py
new file mode 100644
index 0000000..fbc1694
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/autocomplete.py
@@ -0,0 +1,53 @@
+# vim:set et sts=4 sw=4:
+#
+# ibus-sulekha - The Sulekha engine for IBus
+#
+# Copyright(c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import sqlite3
+import re
+import os
+import sys
+tz = re.compile('-[0-2]\d:00$')
+class Autocomplete():
+ def __init__(self, language="en_US"):
+ database=os.path.dirname(__file__) +'/sulekha.db'
+ self.__connection = sqlite3.connect(database)
+ # Create a cursor object to do the interacting.
+ self.__cursor = self.__connection.cursor()
+ self.__language=language
+ def get_autocompletion_suggestions(self, string):
+ wordlist=[]
+ records =self.__cursor.execute("select word from words_"+ self.__language + \
+ " where language = '"+ self.__language +"' \
+ and word like '"+ string + "%' \
+ order by frequency desc limit 5 " )
+ for record in records:
+ word = tz.sub('', record[0])
+ wordlist.append(word)
+ return wordlist
+
+ def set_langauge(self, language) :
+ self.language=language
+
+
+if __name__ == '__main__':
+ autocomplete= Autocomplete()
+ candidate_list= autocomplete.get_autocompletion_suggestions(sys.argv[1])
+ for candidate in candidate_list:
+ print candidate
+
diff --git a/input-methods/ibus-sulekha/engine/factory.py b/input-methods/ibus-sulekha/engine/factory.py
new file mode 100644
index 0000000..06a557e
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/factory.py
@@ -0,0 +1,60 @@
+# vim:set et sts=4 sw=4:
+#
+# ibus-tmpl - The Input Bus template project
+#
+# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import ibus
+import os
+import sulekha
+from gettext import dgettext
+_ = lambda a : dgettext("ibus-sulekha", a)
+N_ = lambda a : a
+
+
+class EngineFactory(ibus.EngineFactoryBase):
+ FACTORY_PATH = "/org/smc/IBus/engines/Sulekha/Factory"
+ ENGINE_PATH = "/org/smc/IBus/engines/Sulekha/Engine"
+ NAME = _("Sulekha")
+ LANG = "ml_IN"
+ ICON = os.getenv("IBUS_SULEKHA_LOCATION") + "/icons/ibus-sulekha.svg"
+ AUTHORS = "Santhosh Thottingal <santhosh.thottingal@gmail.com>"
+ CREDITS = "GPLv2+"
+ def __init__(self, bus):
+ self.__bus = bus
+ #pinyin.PinYinEngine.CONFIG_RELOADED(bus)
+ super(EngineFactory, self).__init__(bus)
+
+ self.__id = 0
+ self.__config = self.__bus.get_config()
+
+ self.__config.connect("reloaded", self.__config_reloaded_cb)
+ self.__config.connect("value-changed", self.__config_value_changed_cb)
+ def create_engine(self, engine_name):
+ if engine_name == "sulekha":
+ self.__id += 1
+ return sulekha.SulekhaEngine(self.__bus, "%s/%d" % (self.ENGINE_PATH, self.__id))
+ return super(EngineFactory, self).create_engine(engine_name)
+
+ def __config_reloaded_cb(self, config):
+ #pinyin.PinYinEngine.CONFIG_RELOADED(self.__bus)
+ print "Configuration reloaded"
+
+ def __config_value_changed_cb(self, config, section, name, value):
+ #pinyin.PinYinEngine.CONFIG_VALUE_CHANGED(self.__bus, section, name, value)
+ print "Configuration changed"
+
diff --git a/input-methods/ibus-sulekha/engine/ibus-engine-sulekha b/input-methods/ibus-sulekha/engine/ibus-engine-sulekha
new file mode 100644
index 0000000..8637e17
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/ibus-engine-sulekha
@@ -0,0 +1,29 @@
+#!/bin/sh
+# vim:set noet ts=4:
+#
+# ibus-tmpl - The Input Bus template project
+#
+# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+prefix=/usr
+exec_prefix=${prefix}
+libexecdir=${exec_prefix}/libexec
+pyexecdir=${exec_prefix}/lib/python2.5/site-packages
+export PYTHONPATH=${exec_prefix}/lib/python2.5/site-packages:$PYTHONPATH
+export IBUS_SULEKHA_LOCATION=/usr/share/ibus-sulekha
+export LIBEXECDIR=$libexecdir
+exec python /usr/share/ibus-sulekha/engine/main.py $@
+
diff --git a/input-methods/ibus-sulekha/engine/ibus-engine-sulekha.in b/input-methods/ibus-sulekha/engine/ibus-engine-sulekha.in
new file mode 100644
index 0000000..ad5253b
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/ibus-engine-sulekha.in
@@ -0,0 +1,29 @@
+#!/bin/sh
+# vim:set noet ts=4:
+#
+# ibus-tmpl - The Input Bus template project
+#
+# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libexecdir=@libexecdir@
+pyexecdir=@pyexecdir@
+export PYTHONPATH=@pyexecdir@:$PYTHONPATH
+export IBUS_SULEKHA_LOCATION=@prefix@/share/ibus-sulekha
+export LIBEXECDIR=$libexecdir
+exec python @prefix@/share/ibus-sulekha/engine/main.py $@
+
diff --git a/input-methods/ibus-sulekha/engine/keymap.py b/input-methods/ibus-sulekha/engine/keymap.py
new file mode 100644
index 0000000..8f049ca
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/keymap.py
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+#
+# Sulekha
+#
+# Copyright (c) 2009 Santhosh Thottingal <santhosh.thiotttingal@gmail.com>
+#
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+# Boston, MA 02111-1307 USA
+import os
+class Keymap:
+ def __init__(self, map="inscript_ml_IN"):
+ self. keymap_dict = self.load_key_map(map)
+
+ def get_candidates(self,key):
+ if self. keymap_dict == None :
+ return None
+ if self. keymap_dict.has_key(key) :
+ value = self.keymap_dict[key]
+ candidate_list=value.split(":")
+ for candidate in candidate_list:
+ candidate = candidate.replace("\"","");
+ candidate_list[candidate_list.index(candidate)] = candidate
+ return candidate_list
+ else :
+ return None
+ def load_key_map(self, map):
+ keymap_dict=dict()
+ try:
+ keymap_file = open("/usr/share/ibus-sulekha/engine/keymaps/"+map, 'r')
+ except:
+ print "Could not find keymaps/"+map + " file."
+ return None
+ while True:
+ line = keymap_file .readline()
+ if line == "":
+ break
+ line=line.strip()
+ try:
+ key = line.split("=")[0].strip()
+ value = line.split("=")[1].strip()
+ key = key.replace("\"","")
+ value = value.replace("\"","")
+ keymap_dict[key]=value
+ except:
+ continue
+ return keymap_dict
+if __name__ == '__main__':
+ keymap= Keymap("swanalekha_ml_IN")
+ candidate_list= keymap.get_candidates("k")
+ for candidate in candidate_list:
+ print candidate
+
diff --git a/input-methods/ibus-sulekha/engine/keymaps/inscript_ml_IN b/input-methods/ibus-sulekha/engine/keymaps/inscript_ml_IN
new file mode 100644
index 0000000..bbbd0d4
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/keymaps/inscript_ml_IN
@@ -0,0 +1,95 @@
+ "0" = "เตฆ"
+ "1" = "เตง"
+ "@" = "@"
+ "2" = "เตจ"
+ "3" = "เตฉ"
+ "$" = "$"
+ "4" = "เตช"
+ "%" = "%"
+ "5" = "เตซ"
+ "^" = "^"
+ "6" = "เตฌ"
+ "7" = "เตญ"
+ "*" = "*"
+ "8" = "เตฎ"
+ "(" = "("
+ "9" = "เตฏ"
+ "" = ""
+ "0" = "เตฆ"
+ "_" "เดƒ"
+ "-" = "-"
+ "+" = "เด‹"
+ "=" "เตƒ"
+ "Q" = "เด”"
+ "q" "เตŒ"
+ "W" = "เด"
+ "w" "เตˆ"
+ "E" = "เด†"
+ "e" "เดพ"
+ "R" = "เดˆ"
+ "r" "เต€"
+ "T" = "เดŠ"
+ "t" "เต‚"
+ "Y" = "เดญ"
+ "y" = "เดฌ"
+ "U" = "เด™"
+ "u" = "เดน"
+ "I" = "เด˜"
+ "i" = "เด—"
+ "O" = "เดง"
+ "o" = "เดฆ"
+ "P" = "เด"
+ "p" = "เดœ"
+ "{" = "เดข"
+ "[" = "เดก"
+ "}" = "เดž"
+ "]" = "โ€"
+ "A" = "เด“"
+ "a" "เต‹"
+ "S" = "เด"
+ "s" "เต‡"
+ "D" = "เด…"
+ "d" "เต"
+ "F" = "เด‡"
+ "f" "เดฟ"
+ "G" = "เด‰"
+ "g" "เต"
+ "H" = "เดซ"
+ "h" = "เดช"
+ "J" = "เดฑ"
+ "j" = "เดฐ"
+ "K" = "เด–"
+ "k" = "เด•"
+ "L" = "เดฅ"
+ "l" = "เดค"
+ "=" = "เด›"
+ ";" = "เดš"
+ "\"" = "เด "
+ "'" = "เดŸ"
+ "|" = "|"
+ "\" = "โ€Œ"
+ "~" = "เด’"
+ "`" "เตŠ"
+ "Z" = "เดŽ"
+ "z" "เต†"
+ "X" = "X"
+ "x" "เด‚"
+ "C" = "เดฃ"
+ "c" = "เดฎ"
+ "V" = "V"
+ "v" = "เดจ"
+ "B" = "เดด"
+ "b" = "เดต"
+ "N" = "เดณ"
+ "n" = "เดฒ"
+ "M" = "เดถ"
+ "m" = "เดธ"
+ "<" = "เดท"
+ "," = ","
+ ">" = ">"
+ "." = "."
+ "/" = "เดฏ"
+ "#" "เตเดฐ"
+ "&" = "เด•เตเดท"
+
+
diff --git a/input-methods/ibus-sulekha/engine/keymaps/swanalekha_ml_IN b/input-methods/ibus-sulekha/engine/keymaps/swanalekha_ml_IN
new file mode 100644
index 0000000..adf43de
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/keymaps/swanalekha_ml_IN
@@ -0,0 +1,1578 @@
+# ml-swanalekha.mim -- m17n version of Swanalekha Malayalam input method
+# Copyright 2008, Santhosh Thottingal <santhosh.thottingal@gmail.com>, Swathanthra Malayalam Computing
+
+# This file is part of the m17n contrib; a sub-part of the m17n
+# library.
+
+# The m17n library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# as published by the Free Software Foundation; either version 2.1 of
+# the License, or at your option any later version.
+
+# The m17n library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the m17n library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+ "^" = "เต"
+ "~" = "โ€Œ"
+ "_" = "โ€Œ"
+ "@A" = "เดพ"
+ "a" = "เด…":"เด†":"เดŽ"
+ "A" = "เด†":"เดŽ"
+ "@aa" = "เดพ"
+ "aa" = "เด†"
+ "@ae" = "เต‡"
+ "ae" = "เด"
+ "@aH" = "เดƒ"
+ "@ah" = ""เดƒ"
+ "aH" = "เด…เดƒ"
+ "@ai" = "เตˆ"
+ "ai" = "เด"
+ "@am" = "เด‚"
+ "@aM" = "เด‚"
+ "aM" = "เด…เด‚"
+ "@au" = "เต—"
+ "au" = "เด”"
+ "B" = "เดญเต":"เดฌเต":"เดฌเดฟ"
+ "b" = "เดฌเต":"เดฌเตเดฌเต":"เดฌเดฟ"
+ "Ba" = "เดญ":"เดฌ":"เดฌเดพ"
+ "ba" = "เดฌ"
+ "BA" = "เดญเดพ":"เดฌเดฟ.เดŽ."
+ "bA" = "เดฌเดพ"
+ "Baa" = "เดญเดพ":"เดฌเดพ"
+ "baa" = "เดฌเดพ"
+ "bae" = "เดฌเต‡"
+ "baH" = "เดฌเดƒ"
+ "BaH" = "เดญเดƒ"
+ "bai" = "เดฌเตˆ":"เดฌเดพเดฏเต"
+ "Bai" = "เดญเตˆ"
+ "BaM" = "เดญเด‚"
+ "baM" = "เดฌเด‚"
+ "bau" = "เดฌเต—":"เดฌเตŒ":"เดญเต—"
+ "Bau" = "เดญเต—":"เดญเตŒ"
+ "be" = "เดฌเต†"
+ "Be" = "เดญเต†"
+ "bE" = "เดฌเต‡"
+ "BE" = "เดญเต‡"
+ "bee" = "เดฌเต€"
+ "Bee" = "เดญเต€"
+ "bei" = "เดฌเตˆ"
+ "Bei" = "เดญเตˆ"
+"bh^" = "เดญเต"
+ "bh" = "เดญเต"
+ "bha" = "เดญ"
+ "bhA" = "เดญเดพ"
+ "bhaa" = "เดญเดพ"
+ "bhae" = "เดญเต‡"
+ "bhaH" = "เดญเดƒ"
+ "bhai" = "เดญเตˆ":"เดญเดพเดฏเต"
+ "bhaM" = "เดญเด‚"
+ "bhau" = "เดญเต—":"เดญเตŒ"
+ "bhE" = "เดญเต‡"
+ "bhe" = "เดญเต†"
+ "bhee" = "เดญเต€"
+ "bhei" = "เดญเตˆ"
+ "bhi" = "เดญเดฟ"
+ "bhI" = "เดญเต€"
+ "bhii" = "เดญเต€"
+ "bho" = "เดญเตŠ"
+ "bhO" = "เดญเต‹"
+ "bhoo" = "เดญเต‚"
+ "bhou" = "เดญเตŒ"
+ "bhR" = "เดญเตƒ"
+ "bhU" = "เดญเต‚"
+ "bhu" = "เดญเต"
+ "bhuu" = "เดญเต‚"
+ "Bi" = "เดญเดฟ":"เดฌเตˆ"
+ "bi" = "เดฌเดฟ":"เดฌเตˆ"
+ "BI" = "เดญเต€"
+ "bI" = "เดฌเต€"
+ "Bii" = "เดญเต€"
+ "bii" = "เดฌเต€"
+ "Bo" = "เดญเตŠ":"เดฌเต‹"
+ "bo" = "เดฌเตŠ"
+ "bO" = "เดฌเต‹"
+ "BO" = "เดญเต‹"
+ "boo" = "เดฌเต‚":"เดฌเต‹"
+ "Boo" = "เดญเต‚"
+ "bou" = "เดฌเตŒ"
+ "Bou" = "เดญเตŒ"
+ "bR" = "เดฌเตƒ"
+ "BR" = "เดญเตƒ"
+ "Bu" = "เดญเต":"เดฌเต"
+ "BU" = "เดญเต‚"
+ "bU" = "เดฌเต‚"
+ "bu" = "เดฌเต"
+ "buu" = "เดฌเต‚"
+ "Buu" = "เดญเต‚"
+ "c" = "เด•เต":"เด•เตเต":"เด•เตโ€":"เดธเดฟ"
+ "C" = "เดธเดฟ"
+ "ca" = "เด•":"เด•เดพ":"เด•เต‡"
+ "cA" = "เด•เดพ"
+ "caa" = "เด•เดพ"
+ "cae" = "เด•เต‡"
+ "cai" = "เด•เตˆ"
+ "cau" = "เด•เต—"
+ "ce" = "เด•เต†":"เดธเต"
+ "cE" = "เด•เต‡"
+ "cee" = "เด•เต€"
+ "cei" = "เด•เตˆ"
+ "ch^" = "เดšเต"
+ "Ch^" = "เด›เต"
+ "ch" = "เดšเต":"เดšเตเต":"เดšเตเดšเต":"เดšเตเดšเตเต":"เด•เตเด•เต":"เด•เตเด•เตเต"
+ "Ch" = "เด›เต"
+ "Cha" = "เด›":"เดš":"เดšเตเดš":"เด›เดƒ"
+ "cha" = "เดš":"เดšเตเดš":"เดšเตเด›":"เดšเดƒ"
+ "ChA" = "เด›เดพ"
+ "chA" = "เดšเดพ"
+ "chaa" = "เดšเดพ"
+ "Chaa" = "เด›เดพ"
+ "chae" = "เดšเต‡"
+ "Chae" = "เด›เต‡"
+ "chaH" = "เดšเดƒ"
+ "ChaH" = "เด›เดƒ"
+ "chai" = "เดšเตˆ":"เดšเดพเดฏเต"
+ "Chai" = "เด›เตˆ"
+ "chaM" = "เดšเด‚"
+ "ChaM" = "เด›เด‚"
+ "Chau" = "เด›เต—":"เด›เตŒ"
+ "chau" = "เดšเต—"
+ "che" = "เดšเต†":"เดšเตเดšเต†"
+ "chE" = "เดšเต‡"
+ "ChE" = "เด›เต‡"
+ "Che" = "เด›เต†"
+ "chee" = "เดšเต€":"เดšเตเดšเต€"
+ "Chee" = "เด›เต€"
+ "Chei" = "เด›เตˆ"
+ "chei" = "เดšเตˆ"
+ "chh^" = "เด›เต"
+ "chh" = "เด›เต"
+ "chha" = "เด›":"เดšเตเดš"
+ "chhA" = "เด›เดพ"
+ "chhaa" = "เด›เดพ"
+ "chhae" = "เด›เต‡"
+ "chhaH" = "เด›เดƒ"
+ "chhai" = "เด›เตˆ"
+ "chhaM" = "เด›เด‚"
+ "chhau" = "เด›เต—":"เด›เตŒ"
+ "chhE" = "เด›เต‡"
+ "chhe" = "เด›เต†"
+ "chhee" = "เด›เต€"
+ "chhei" = "เด›เตˆ"
+ "chhi" = "เด›เดฟ"
+ "chhI" = "เด›เต€"
+ "chhii" = "เด›เต€"
+ "chho" = "เด›เตŠ"
+ "chhO" = "เด›เต‹"
+ "chhoo" = "เด›เต‚"
+ "chhou" = "เด›เตŒ"
+ "chhR" = "เด›เตƒ"
+ "chhu" = "เด›เต"
+ "chhU" = "เด›เต‚"
+ "chhuu" = "เด›เต‚"
+ "Chi" = "เด›เดฟ":"เดšเดฟ"
+ "chi" = "เดšเดฟ":"เดšเตเดšเดฟ":"เดšเตˆ"
+ "chI" = "เดšเต€"
+ "ChI" = "เด›เต€"
+ "chii" = "เดšเต€"
+ "Chii" = "เด›เต€"
+ "cho" = "เดšเตŠ":"เดšเต‹"
+ "Cho" = "เด›เตŠ"
+ "ChO" = "เด›เต‹"
+ "chO" = "เดšเต‹"
+ "choo" = "เดšเต‚":"เดšเตเดšเต‚":"เดšเต‹"
+ "Choo" = "เด›เต‚"
+ "chou" = "เดšเตŒ"
+ "Chou" = "เด›เตŒ"
+ "ChR" = "เด›เตƒ"
+ "chR" = "เดšเตƒ"
+ "Chu" = "เด›เต":"เดšเต"
+ "chu" = "เดšเต":"เดšเตเดฏเต"
+ "chU" = "เดšเต‚"
+ "ChU" = "เด›เต‚"
+ "chuu" = "เดšเต‚":"เดšเตเดšเต‚"
+ "Chuu" = "เด›เต‚"
+ "ci" = "เด•เดฟ":"เดธเดฟ":"เดธเตˆ"
+ "cI" = "เด•เต€"
+ "ck" = "เด•เตเด•เต"
+ "cO" = "เด•เต‹"
+ "co" = "เด•เตŠ"
+ "coo" = "เด•เต‚"
+ "cou" = "เด•เตŒ"
+ "cR" = "เด•เตƒ"
+ "cu" = "เด•เต"
+ "cU" = "เด•เต‚"
+ "cuu" = "เด•เต‚"
+ "d^" = "เดฆเต"
+ "D^" = "เดกเต"
+ "D" = "เดกเต":"เดกเตเต":"เดฆเต":"เดกเดฟ"
+ "d" = "เดฆเต":"เดฆเตเต":"เดŸเต":"เดŸเตเต":"เดกเดฟ":"เดฆเตเดฆเต"
+ "da" = "เดฆ":"เดŸ":"เดก":"เดฆเดƒ"
+ "Da" = "เดก":"เดฆ":"เด "
+ "dA" = "เดฆเดพ":"เดŸเดพ"
+ "DA" = "เดกเดพ":"เดฆเดพ"
+ "daa" = "เดฆเดพ":"เดŸเดพ"
+ "Daa" = "เดกเดพ":"เดฆเดพ"
+ "dae" = "เดฆเต‡"
+ "Dae" = "เดกเต‡"
+ "DaH" = "เดกเดƒ"
+ "daH" = "เดฆเดƒ"
+ "dai" = "เดฆเตˆ":"เดกเดพเดฏเต"
+ "Dai" = "เดกเตˆ"
+ "DaM" = "เดกเด‚"
+ "daM" = "เดฆเด‚"
+ "Dau" = "เดกเต—":"เดกเตŒ"
+ "dau" = "เดฆเต—":"เดฆเตŒ"
+ "de" = "เดฆเต†":"เดŸเต†":"เดคเต†"
+ "dE" = "เดฆเต‡":"เดคเต‡"
+ "De" = "เดกเต†":"เดŸเต†"
+ "DE" = "เดกเต‡"
+ "dee" = "เดฆเต€":"เดŸเต€"
+ "Dee" = "เดกเต€"
+ "dei" = "เดฆเตˆ":"เดกเต‡เดฏเต"
+ "Dei" = "เดกเตˆ"
+ "dh^" = "เดงเต"
+ "Dh^" = "เดขเต"
+ "dh" = "เดงเต":"เดงเตเต"
+ "Dh" = "เดขเต"
+ "Dha" = "เดข"
+ "dha" = "เดง"
+ "DhA" = "เดขเดพ"
+ "dhA" = "เดงเดพ"
+ "Dhaa" = "เดขเดพ"
+ "dhaa" = "เดงเดพ"
+ "dhae" = "เดงเต‡"
+ "Dhae" = "เดขเต‡"
+ "dhaH" = "เดงเดƒ"
+ "DhaH" = "เดขเดƒ"
+ "Dhai" = "เดขเตˆ"
+ "dhai" = "เดงเตˆ"
+ "dhaM" = "เดงเด‚"
+ "DhaM" = "เดขเด‚"
+ "dhau" = "เดงเต—":"เดงเตŒ"
+ "Dhau" = "เดขเต—":"เดขเตŒ"
+ "Dhe" = "เดขเต†"
+ "dhE" = "เดงเต‡"
+ "dhe" = "เดงเต†"
+ "DhE" = "เดขเต‡"
+ "dhee" = "เดงเต€"
+ "Dhee" = "เดขเต€"
+ "Dhei" = "เดขเตˆ"
+ "dhei" = "เดงเตˆ"
+ "dhI" = "เดงเต€"
+ "Dhi" = "เดขเดฟ"
+ "DhI" = "เดขเต€"
+ "dhi" = "เดงเดฟ"
+ "Dhii" = "เดขเต€"
+ "dhii" = "เดงเต€"
+ "Dho" = "เดขเตŠ"
+ "DhO" = "เดขเต‹"
+ "dhO" = "เดงเต‹"
+ "dho" = "เดงเตŠ"
+ "Dhoo" = "เดขเต‚"
+ "dhoo" = "เดงเต‚"
+ "Dhou" = "เดขเตŒ"
+ "dhou" = "เดงเตŒ"
+ "dhR" = "เดงเตƒ"
+ "DhR" = "เดขเตƒ"
+ "dhu" = "เดงเต"
+ "DhU" = "เดขเต‚"
+ "Dhu" = "เดขเต"
+ "dhU" = "เดงเต‚"
+ "dhuu" = "เดงเต‚"
+ "Dhuu" = "เดขเต‚"
+ "di" = "เดฆเดฟ":"เดŸเดฟ":"เดงเดฟ":"เดฅเดฟ":"เดกเตˆ"
+ "dI" = "เดฆเต€":"เดŸเต€"
+ "DI" = "เดกเต€"
+ "Di" = "เดกเดฟ"
+ "dii" = "เดฆเต€":"เดŸเต€"
+ "Dii" = "เดกเต€"
+ "Do" = "เดกเตŠ":"เดฆเตŠ"
+ "do" = "เดฆเตŠ"
+ "dO" = "เดฆเต‹"
+ "DO" = "เดกเต‹"
+ "doo" = "เดฆเต‚"
+ "Doo" = "เดกเต‚"
+ "Dou" = "เดกเตŒ"
+ "dou" = "เดฆเตŒ"
+ "dR" = "เดฆเตƒ"
+ "DR" = "เดกเตƒ"
+ "du" = "เดฆเต":"เดŸเต":"เดฆเตเดƒ":"เดคเต"
+ "Du" = "เดกเต":"เดฆเต":"เดฆเตเดƒ"
+ "dU" = "เดฆเต‚"
+ "DU" = "เดกเต‚"
+ "Duu" = "เดกเต‚"
+ "duu" = "เดฆเต‚"
+ "@e" = ""เต†"
+ "@E" = ""เต‡"
+ "E" = "เด":"เด‡"
+ "e" = "เดŽ":"เด‡"
+ "@ee" = ""เต€"
+ "ee" = "เดˆ"
+ "@ei" = ""เตˆ"
+ "ei" = "เด"
+ "F^" = "เดซเต"
+ "f^" = "เดซเต"
+ "F" = "เดซเต":"เดŽเดซเต"
+ "f" = "เดซเต":"เดŽเดซเต"
+ "Fa" = "เดซ"
+ "fa" = "เดซ"
+ "fA" = "เดซเดพ"
+ "FA" = "เดซเดพ"
+ "faa" = "เดซเดพ"
+ "Faa" = "เดซเดพ"
+ "faH" = "เดซเดƒ"
+ "FaH" = "เดซเดƒ"
+ "fai" = "เดซเตˆ"
+ "Fai" = "เดซเตˆ"
+ "FaM" = "เดซเด‚"
+ "faM" = "เดซเด‚"
+ "fau" = "เดซเต—":"เดซเตŒ"
+ "Fau" = "เดซเต—":"เดซเตŒ"
+ "fe" = "เดซเต†"
+ "Fe" = "เดซเต†"
+ "fE" = "เดซเต‡"
+ "FE" = "เดซเต‡"
+ "Fee" = "เดซเต€"
+ "fee" = "เดซเต€"
+ "fei" = "เดซเตˆ"
+ "Fei" = "เดซเตˆ"
+ "Fi" = "เดซเดฟ"
+ "fI" = "เดซเต€"
+ "FI" = "เดซเต€"
+ "fi" = "เดซเดฟ"
+ "Fii" = "เดซเต€"
+ "fii" = "เดซเต€"
+ "fo" = "เดซเตŠ"
+ "FO" = "เดซเต‹"
+ "Fo" = "เดซเตŠ"
+ "fO" = "เดซเต‹"
+ "Foo" = "เดซเต‚"
+ "foo" = "เดซเต‚"
+ "Fou" = "เดซเตŒ"
+ "fou" = "เดซเตŒ"
+ "FR" = "เดซเตƒ"
+ "fR" = "เดซเตƒ"
+ "FU" = "เดซเต‚"
+ "Fu" = "เดซเต"
+ "fu" = "เดซเต"
+ "fU" = "เดซเต‚"
+ "Fuu" = "เดซเต‚"
+ "fuu" = "เดซเต‚"
+ "g^" = "เด—เต"
+ "G^" = "เด˜เต"
+ "G" = "เด˜เต":"เด˜เตเต":"เดœเดฟ":"เด—เตเด—เดฟ"
+ "g" = "เด—เต":"เด—เตเต":"เดœเดฟ"
+ "ga" = "เด—":"เดœ":"เด•":"เด–"
+ "Ga" = "เด˜":"เด—":"เด—เตเด—":"เดœ"
+ "GA" = "เด˜เดพ":"เด—เตเด—เดพ"
+ "gA" = "เด—เดพ"
+ "Gaa" = "เด˜เดพ":"เด—เตเด—เดพ"
+ "gaa" = "เด—เดพ"
+ "Gae" = "เด˜เต‡":"เด—เตเด—เต‡"
+ "gae" = "เด—เต‡"
+ "GaH" = "เด˜เดƒ"
+ "gaH" = "เด—เดƒ"
+ "Gai" = "เด˜เตˆ":"เด—เดฏเต":"เด—เต†เดฏเต":"เด—เตเด—เตˆ"
+ "gai" = "เด—เตˆ"
+ "gaM" = "เด—เด‚"
+ "GaM" = "เด˜เด‚"
+ "Gau" = "เด˜เต—":"เด—เต—":"เด˜เตŒ"
+ "gau" = "เด—เต—":"เด—เตŒ"
+ "Ge" = "เด˜เต†":"เด—เต†":"เด—เตเด—เต†":"เดœเต†"
+ "GE" = "เด˜เต‡":"เด—เตเด—เต‡"
+ "ge" = "เด—เต†"
+ "gE" = "เด—เต‡"
+ "Gee" = "เด˜เต€":"เด—เตเด—เต€"
+ "gee" = "เด—เต€"
+ "Gei" = "เด˜เตˆ":"เด—เตเด—เตˆ"
+ "gei" = "เด—เตˆ"
+ "gh^" = "เด˜เต"
+ "gh" = "เด˜เต":"เด˜เตเต"
+ "gha" = "เด˜":"เด–"
+ "ghA" = "เด˜เดพ"
+ "ghaa" = "เด˜เดพ"
+ "ghae" = "เด˜เต‡"
+ "ghaH" = "เด˜เดƒ"
+ "ghai" = "เด˜เตˆ"
+ "ghaM" = "เด˜เด‚"
+ "ghau" = "เด˜เต—"
+ "ghE" = "เด˜เต‡"
+ "ghe" = "เด˜เต†"
+ "ghee" = "เด˜เต€"
+ "ghei" = "เด˜เตˆ"
+ "ghi" = "เด˜เดฟ"
+ "ghI" = "เด˜เต€"
+ "ghii" = "เด˜เต€"
+ "ghO" = "เด˜เต‹"
+ "gho" = "เด˜เตŠ"
+ "ghoo" = "เด˜เต‚"
+ "ghou" = "เด˜เตŒ"
+ "ghR" = "เด˜เตƒ"
+ "ghu" = "เด˜เต"
+ "ghU" = "เด˜เต‚"
+ "ghuu" = "เด˜เต‚"
+ "gi" = "เด—เดฟ":"เด•เดฟ":"เดœเดฟ"
+ "GI" = "เด˜เต€":"เด—เตเด—เต€":"เด—เตเด—เดฟ"
+ "Gi" = "เด˜เดฟ":"เด—เตเด—เดฟ"
+ "gI" = "เด—เต€"
+ "Gii" = "เด˜เต€":"เด—เตเด—เต€"
+ "gii" = "เด—เต€"
+ "Go" = "เด˜เตŠ":"เด—เต‹":"เด—เตŠ":"เด—เตเด—เตŠ"
+ "go" = "เด—เตŠ":"เด—เต‹"
+ "GO" = "เด˜เต‹"
+ "gO" = "เด—เต‹"
+ "goo" = "เด—เต‚":"เด—เต‹"
+ "Goo" = "เด˜เต‚":"เด—เตเด—เต‚":"เด˜เต‹":"เด—เตเด—เต‹"
+ "gou" = "เด—เตŒ"
+ "Gou" = "เด˜เตŒ"
+ "GR" = "เด˜เตƒ":"เด—เตเด—เตƒ"
+ "gR" = "เด—เตƒ"
+ "Gu" = "เด˜เต":"เด—เต":"เด—เตเด—เต"
+ "GU" = "เด˜เต‚":"เด—เตเด—เต‚"
+ "gU" = "เด—เต‚"
+ "gu" = "เด—เต"
+ "Guu" = "เด˜เต‚":"เด—เตเด—เต‚"
+ "guu" = "เด—เต‚"
+ "h^" = "เดนเต"
+ "h" = "เดนเต":"เดŽเดšเต":"เดŽเดšเตเดšเต"
+ "H" = "เดŽเดšเตเดšเต"
+ "ha" = "เดน":"เดนเดพ":"เดนเดƒ"
+ "hA" = "เดนเดพ"
+ "haa" = "เดนเดพ"
+ "haH" = "เดนเดƒ"
+ "hai" = "เดนเตˆ":"เดนเดพเดฏเต"
+ "haM" = "เดนเด‚"
+ "hau" = "เดนเต—"
+ "he" = "เดนเต†":"เดนเดฟ"
+ "hE" = "เดนเต‡"
+ "hee" = "เดนเต€"
+ "hei" = "เดนเตˆ":"เดนเต‡เดฏเต"
+ "hi" = "เดนเดฟ":"เดนเดพเดฏเต"
+ "hI" = "เดนเต€"
+ "hii" = "เดนเต€"
+ "ho" = "เดนเตŠ":"เดนเต‹"
+ "hO" = "เดนเต‹"
+ "hoo" = "เดนเต‚"
+ "hou" = "เดนเตŒ"
+ "hR" = "เดนเตƒ"
+ "hU" = "เดนเต‚"
+ "hu" = "เดนเต"
+ "huu" = "เดนเต‚"
+ "@i" = ""เดฟ"
+ "@I" = ""เต€"
+ "i" = "เด‡":"เดˆ":"เด"
+ "I" = "เดˆ":"เด"
+ "@ii" = ""เต€"
+ "ii" = "เดˆ"
+ "j^" = "เดœเต"
+ "J^" = "เดเต"
+ "J" = "เดเต":"เดœเต†"
+ "j" = "เดœเต":"เดœเตเต":"เดœเต†"
+ "Ja" = "เด":"เดœ":"เดœเต†"
+ "ja" = "เดœ":"เดœเต†"
+ "jA" = "เดœเดพ"
+ "JA" = "เดเดพ"
+ "Jaa" = "เดเดพ"
+ "jaa" = "เดœเดพ"
+ "jae" = "เดœเต‡"
+ "Jae" = "เดเต‡"
+ "jaH" = "เดœเดƒ"
+ "JaH" = "เดเดƒ"
+ "Jai" = "เดเตˆ":"เดœเดฏเต"
+ "jai" = "เดœเตˆ":"เดœเดฏเต"
+ "JaM" = "เดเด‚"
+ "jaM" = "เดœเด‚"
+ "jau" = "เดœเต—":"เดœเตŒ"
+ "Jau" = "เดเต—":"เดเตŒ"
+ "je" = "เดœเต†":"เดœเต€"
+ "JE" = "เดเต‡"
+ "jE" = "เดœเต‡"
+ "Je" = "เดเต†"
+ "Jee" = "เดเต€":"เดœเต€"
+ "jee" = "เดœเต€"
+ "Jei" = "เดเตˆ"
+ "jei" = "เดœเตˆ"
+ "jh^" = "เดเต":"เดเต"
+ "jh" = "เดเต"
+ "jha" = "เด"
+ "jhA" = "เดเดพ"
+ "jhaa" = "เดเดพ"
+ "jhae" = "เดเต‡"
+ "jhaH" = "เดเดƒ"
+ "jhai" = "เดเตˆ"
+ "jhaM" = "เดเด‚"
+ "jhau" = "เดเต—":"เดเตŒ"
+ "jhe" = "เดเต†"
+ "jhE" = "เดเต‡"
+ "jhee" = "เดเต€"
+ "jhei" = "เดเตˆ"
+ "jhi" = "เดเดฟ"
+ "jhI" = "เดเต€"
+ "jhii" = "เดเต€"
+ "jhO" = "เดเต‹"
+ "jho" = "เดเตŠ"
+ "jhoo" = "เดเต‚":"เดเต‹"
+ "jhou" = "เดเตŒ"
+ "jhR" = "เดเตƒ"
+ "jhu" = "เดเต"
+ "jhU" = "เดเต‚"
+ "jhuu" = "เดเต‚"
+ "Ji" = "เดเดฟ":"เดœเดฟ":"เดœเตˆ"
+ "ji" = "เดœเดฟ":"เดœเตˆ"
+ "jI" = "เดœเต€"
+ "JI" = "เดเต€"
+ "jii" = "เดœเต€"
+ "Jii" = "เดเต€"
+ "Jo" = "เดเตŠ":"เดœเต‹":"เดœเตŠ"
+ "jO" = "เดœเต‹"
+ "JO" = "เดเต‹"
+ "jo" = "เดœเตŠ"
+ "Joo" = "เดเต‚":"เดœเต‚":"เดเต‹"
+ "joo" = "เดœเต‚"
+ "jou" = "เดœเตŒ"
+ "Jou" = "เดเตŒ"
+ "JR" = "เดเตƒ":"เดœเต†.เด†เดฐเตโ€"
+ "jR" = "เดœเตƒ"
+ "JU" = "เดเต‚":"เดœเต†.เดฏเต."
+ "Ju" = "เดเต":"เดœเต"
+ "ju" = "เดœเต"
+ "jU" = "เดœเต‚"
+ "Juu" = "เดเต‚":"เดœเต‚"
+ "juu" = "เดœเต‚"
+ "K^" = "เด–เต":"เด–เตเต"
+ "k^" = "เด•เต"
+ "k~" = "เด•เตโ€"
+ "k_" = "เด•เตโ€"
+ "K" = "เด–เต":"เด–เตเต":"เด•เต†"
+ "k" = "เด•เต":"เด•เตเต":"เด•เตโ€":"เด•เตเด•เต":"เด•เตเด•เตเต":"เด•เต†"
+ "ka" = "เด•":"เด—":"เด–":"เด˜":"เด•เดƒ"
+ "Ka" = "เด–":"เด•":"เด•เตเด•"
+ "KA" = "เด–เดพ"
+ "kA" = "เด•เดพ"
+ "kaa" = "เด•เดพ":"เด—เดพ"
+ "Kaa" = "เด–เดพ"
+ "kae" = "เด•เต‡"
+ "Kae" = "เด–เต‡"
+ "KaH" = "เด–เดƒ"
+ "kaH" = "เด•เดƒ"
+ "kai" = "เด•เตˆ":"เด•เดฏเต"
+ "Kai" = "เด–เตˆ"
+ "kaM" = "เด•เด‚"
+ "KaM" = "เด–เด‚"
+ "kau" = "เด•เต—":"เด•เตŒ"
+ "Kau" = "เด–เต—"
+ "Ke" = "เด–เต†":"เด•เต†"
+ "kE" = "เด•เต‡"
+ "ke" = "เด•เต†"
+ "KE" = "เด–เต‡"
+ "Kee" = "เด–เต€":"เด•เต€"
+ "kee" = "เด•เต€"
+ "kei" = "เด•เตˆ":"เด•เต†เดฏเต"
+ "Kei" = "เด–เตˆ"
+ "kh^" = "เด–เต"
+ "kh" = "เด–เต":"เด–เตเต":"เด˜เต":"เด˜เตเต"
+ "kha" = "เด–":"เด•เตเด•":"เด˜"
+ "khA" = "เด–เดพ"
+ "khaa" = "เด–เดพ"
+ "khae" = "เด–เต‡"
+ "khaH" = "เด–เดƒ"
+ "khai" = "เด–เตˆ"
+ "khaM" = "เด–เด‚"
+ "khau" = "เด–เต—":"เด–เตŒ"
+ "khe" = "เด–เต†"
+ "khE" = "เด–เต‡"
+ "khee" = "เด–เต€"
+ "khei" = "เด–เตˆ"
+ "khi" = "เด–เดฟ":"เด•เตเด•เดฟ"
+ "khI" = "เด–เต€"
+ "khii" = "เด–เต€"
+ "khO" = "เด–เต‹"
+ "kho" = "เด–เตŠ"
+ "khoo" = "เด–เต‚"
+ "khou" = "เด–เตŒ"
+ "khR" = "เด–เตƒ"
+ "khu" = "เด–เต":"เด˜เต"
+ "khU" = "เด–เต‚"
+ "khuu" = "เด–เต‚"
+ "KI" = "เด–"
+ "ki" = "เด•เดฟ":"เด—เดฟ":"เด˜เดฟ":"เด–เดฟ":"เด•เตˆ"
+ "Ki" = "เด–เดฟ":"เด•เดฟ"
+ "kI" = "เด•เต€"
+ "Kii" = "เด–เต€"
+ "kii" = "เด•เต€"
+ "Ko" = "เด–เตŠ":"เด•เตŠ":"เด•เต‹"
+ "ko" = "เด•เตŠ"
+ "KO" = "เด–เต‹"
+ "kO" = "เด•เต‹"
+ "Koo" = "เด–เต‚":"เด•เต‚":"เด•เต‹"
+ "koo" = "เด•เต‚":"เด•เต‹"
+ "Kou" = "เด–เตŒ"
+ "kou" = "เด•เตŒ"
+ "KR" = "เด–เตƒ"
+ "kR" = "เด•เตƒ"
+ "Ku" = "เด–เต":"เด•เต"
+ "ku" = "เด•เต":"เด•เต‚"
+ "KU" = "เด–เต‚"
+ "kU" = "เด•เต‚"
+ "Kuu" = "เด–เต‚":"เด•เต‚"
+ "kuu" = "เด•เต‚"
+ "l^^^" = "เตก"
+ "L^^^" = "เตก"
+ "L^^" = "เดŒ"
+ "l^^" = "เดŒ"
+ "l^" = "เดฒเต"
+ "L^" = "เดณเต"
+ "L~" = "เดณเตโ€"
+ "l~" = "เดฒเตโ€"
+ "l_" = "เดฒเตโ€"
+ "L_" = "เดณเตโ€"
+ "l" = "เดฒเต":"เดฒเตโ€":"เดณเตโ€":"เดฒเตเต":"เดŽเดฒเตโ€"
+ "L" = "เดณเต":"เดณเตโ€":"เดณเตเต":"เดŽเดฒเตโ€":"เดณเตเดณเต"
+ "La" = "เดณ":"เดฒ"
+ "la" = "เดฒ":"เดณ"
+ "LA" = "เดณเดพ"
+ "lA" = "เดฒเดพ"
+ "Laa" = "เดณเดพ":"เดฒเดพ"
+ "laa" = "เดฒเดพ":"เดณเดพ"
+ "Lae" = "เดณเต‡":"เดฒเต‡"
+ "lae" = "เดฒเต‡"
+ "LaH" = "เดณเดƒ"
+ "laH" = "เดฒเดƒ"
+ "lai" = "เดฒเตˆ"
+ "Lai" = "เดณเตˆ"
+ "laM" = "เดฒเด‚"
+ "LaM" = "เดณเด‚"
+ "Lau" = "เดณเต—":"เดฒเต—":"เดณเตŒ"
+ "lau" = "เดฒเต—"
+ "Le" = "เดณเต†":"เดฒเต†"
+ "le" = "เดฒเต†":"เดณเต†"
+ "LE" = "เดณเต‡":"เดฒเต‡"
+ "lE" = "เดฒเต‡"
+ "Lee" = "เดณเต€":"เดฒเต€"
+ "lee" = "เดฒเต€":"เดณเต€"
+ "lei" = "เดฒเตˆ"
+ "Lei" = "เดณเตˆ"
+ "li" = "เดฒเดฟ":"เดณเดฟ":"เดฒเตˆ":"เดณเตˆ"
+ "Li" = "เดณเดฟ":"เดฒเดฟ"
+ "lI" = "เดฒเต€"
+ "LI" = "เดณเต€"
+ "lii" = "เดฒเต€"
+ "Lii" = "เดณเต€"
+ "Lo" = "เดณเตŠ":"เดฒเต‹":"เดฒเตŠ"
+ "lo" = "เดฒเตŠ":"เดฒเต‹"
+ "LO" = "เดณเต‹"
+ "lO" = "เดฒเต‹"
+ "loo" = "เดฒเต‚":"เดฒเต‹"
+ "Loo" = "เดณเต‚":"เดฒเต‚"
+ "Lou" = "เดณเตŒ"
+ "lou" = "เดฒเตŒ"
+ "LR" = "เดณเตƒ"
+ "lR" = "เดฒเตƒ"
+ "Lu" = "เดณเต":"เดฒเต"
+ "lu" = "เดฒเต":"เดณเต"
+ "LU" = "เดณเต‚"
+ "lU" = "เดฒเต‚"
+ "Luu" = "เดณเต‚":"เดณเต‚"
+ "luu" = "เดฒเต‚"
+ "M^" = "เดฎเต"
+ "m^" = "เดฎเต"
+ "m~" = ""เด‚"
+ "M~" = ""เด‚"
+ "m_" = ""เด‚"
+ "M_" = ""เด‚"
+ "M" = "เดฎเต":"เด‚":"เดŽเด‚"
+ "m" = "เดฎเต":"เด‚":"เดŽเด‚"
+ "Ma" = "เดฎ":"เดฎเตเดฎ"
+ "ma" = "เดฎ":"เดฎเตเดฎ":"เดฎเดƒ"
+ "MA" = "เดฎเดพ"
+ "mA" = "เดฎเดพ"
+ "maa" = "เดฎเดพ"
+ "Maa" = "เดฎเดพ"
+ "mae" = "เดฎเต‡"
+ "Mae" = "เดฎเต‡"
+ "maH" = "เดฎเดƒ"
+ "MaH" = "เดฎเดƒ"
+ "Mai" = "เดฎเตˆ":"เดฎเดฏเต"
+ "mai" = "เดฎเตˆ":"เดฎเดฏเต"
+ "MaM" = "เดฎเด‚"
+ "maM" = "เดฎเด‚"
+ "mau" = "เดฎเต—":"เดฎเตŒ"
+ "Mau" = "เดฎเต—":"เดฎเตŒ"
+ "ME" = "เดฎเต‡"
+ "mE" = "เดฎเต‡"
+ "me" = "เดฎเต†"
+ "Me" = "เดฎเต†"
+ "mee" = "เดฎเต€"
+ "Mee" = "เดฎเต€"
+ "Mei" = "เดฎเต†เดฏเต":"เดฎเตˆ"
+ "mei" = "เดฎเต†เดฏเต":"เดฎเตˆ"
+ "mi" = "เดฎเดฟ"
+ "Mi" = "เดฎเดฟ"
+ "mI" = "เดฎเต€"
+ "MI" = "เดฎเต€"
+ "Mii" = "เดฎเต€"
+ "mii" = "เดฎเต€"
+ "mo" = "เดฎเตŠ":"เดฎเต‹"
+ "Mo" = "เดฎเตŠ":"เดฎเต‹"
+ "mO" = "เดฎเต‹"
+ "MO" = "เดฎเต‹"
+ "moo" = "เดฎเต‚":"เดฎเต‹"
+ "Moo" = "เดฎเต‚":"เดฎเต‹"
+ "mou" = "เดฎเตŒ"
+ "Mou" = "เดฎเตŒ"
+ "mR" = "เดฎเตƒ"
+ "MR" = "เดฎเตƒ"
+ "MU" = "เดฎเต‚"
+ "Mu" = "เดฎเต"
+ "mU" = "เดฎเต‚"
+ "mu" = "เดฎเต"
+ "Muu" = "เดฎเต‚"
+ "muu" = "เดฎเต‚"
+ "n^" = "เดจเต"
+ "N^" = "เดฃเต"
+ "N~" = "เดฃเตโ€"
+ "n~" = "เดจเตโ€"
+ "n_" = "เดจเตโ€"
+ "N_" = "เดฃเตโ€"
+ "n" = "เดจเต":"เดจเตโ€":"เดจเตเต":"เดฃเตโ€":"เดฃเต":"เดจเตเดจเต":"เดŽเดจเตโ€"
+ "N" = "เดฃเต":"เดฃเตโ€":"เดฃเตเต":"เดจเตโ€":"เดฃเตเดฃเต":"เดฃเตเดฃเตเต":"เดŽเดจเตโ€"
+ "Na" = "เดฃ":"เดจ":"เดจเดพ":"เดฃเตเดฃ"
+ "na" = "เดจ":"เดฃ":"เดจเดƒ"
+ "NA" = "เดฃเดพ"
+ "nA" = "เดจเดพ"
+ "naa" = "เดจเดพ":"เดฃเดพ"
+ "Naa" = "เดฃเดพ":"เดจเดพ"
+ "Nae" = "เดฃเต‡"
+ "nae" = "เดจเต‡"
+ "naH" = "เดจเดƒ"
+ "NaH" = "เดฃเดƒ"
+ "nai" = "เดจเตˆ":"เดจเดพเดฏเต"
+ "Nai" = "เดฃเตˆ"
+ "naM" = "เดจเด‚"
+ "NaM" = "เดฃเด‚"
+ "nau" = "เดจเต—":"เดจเตŒ"
+ "Nau" = "เดฃเต—":"เดฃเตŒ"
+ "nc" = "เด™เตเด•เต"
+ "nch^" = "เดžเตเดšเต"
+ "nch" = "เดžเตเดšเต":"เดžเตเดšเตเต"
+ "ncha" = "เดžเตเดš":"เดžเตเดšเดพ"
+ "nchA" = "เดžเตเดšเดพ"
+ "nchaa" = "เดžเตเดšเดพ"
+ "nchaH" = "เดžเตเดšเดƒ"
+ "nchai" = "เดžเตเดšเตˆ"
+ "nchaM" = "เดžเตเดšเด‚"
+ "nchau" = "เดžเตเดšเตŒ":"เดžเตเดšเตŒ"
+ "nche" = "เดžเตเดšเต†":"เดžเตเดšเดฟ"
+ "nchE" = "เดžเตเดšเต‡"
+ "nchee" = "เดžเตเดšเต€"
+ "nchei" = "เดžเตเดšเตˆ"
+ "nchi" = "เดžเตเดšเดฟ"
+ "nchI" = "เดžเตเดšเต€"
+ "nchii" = "เดžเตเดšเต€"
+ "ncho" = "เดžเตเดšเตŠ"
+ "nchO" = "เดžเตเดšเต‹"
+ "nchoo" = "เดžเตเดšเต‚"
+ "nchou" = "เดžเตเดšเตŒ"
+ "nchR" = "เดžเตเดšเตƒ"
+ "nchu" = "เดžเตเดšเต"
+ "nchU" = "เดžเตเดšเต‚"
+ "nchuu" = "เดžเตเดšเต‚"
+ "ne" = "เดจเต†":"เดฃเต†":"เดจเตโ€":"เดฃเตโ€"
+ "Ne" = "เดฃเต†"
+ "NE" = "เดฃเต‡"
+ "nE" = "เดจเต‡"
+ "Nee" = "เดฃเต€":"เดจเต€":"เดฃเต‡":"เดจเต€"
+ "nee" = "เดจเต€":"เดจเต‡"
+ "Nei" = "เดฃเตˆ"
+ "nei" = "เดจเต†เดฏเต":"เดจเตˆ"
+ "ng^" = "เด™เต"
+ "ng" = "เด™เตเด™เต":"เด™เตเด™เตเต":"เด™เต":"เด™เตเต"
+ "Nga" = "เด™":"เด™เตเด™"
+ "NgA" = "เด™เดพ"
+ "nga" = "เด™เตเด™":"เด™"
+ "ngA" = "เด™เตเด™เดพ":"เด™เดพ"
+ "Ngaa" = "เด™เดพ"
+ "ngaa" = "เด™เตเด™เดพ":"เด™เดพ"
+ "ngae" = "เด™เตเด™เต‡":"เด™เต‡"
+ "NgaH" = "เด™เดƒ"
+ "Ngai" = "เด™เตˆ"
+ "ngai" = "เด™เตเด™เตˆ":"เด™เตˆ"
+ "ngaM" = "เด™เตเด™เด‚":"เด™เด‚"
+ "Ngau" = "เด™เต—"
+ "ngau" = "เด™เตเด™เต—":"เด™เต—"
+ "Nge" = "เด™เต†"
+ "NgE" = "เด™เต‡"
+ "nge" = "เด™เตเด™เต†":"เด™เต†":"เด™เตเด™เตˆ"
+ "ngE" = "เด™เตเด™เต‡":"เด™เต‡"
+ "Ngee" = "เด™เต€"
+ "ngee" = "เด™เตเด™เต€":"เด™เต€"
+ "ngei" = "เด™เตˆ"
+ "Ngei" = "เด™เตˆ"
+ "Ngi" = "เด™เดฟ"
+ "ngI" = "เด™เตเด™เต€":"เด™เต€"
+ "ngi" = "เด™เตเด™เดฟ":"เด™เดฟ"
+ "Ngii" = "เด™เต€"
+ "ngii" = "เด™เตเด™เต€":"เด™เต€"
+ "Ngo" = "เด™เตŠ"
+ "NgO" = "เด™เต‹"
+ "ngO" = "เด™เตเด™เต‹":"เด™เต‹"
+ "ngo" = "เด™เตเด™เตŠ":"เด™เตŠ"
+ "Ngoo" = "เด™เต‚"
+ "ngoo" = "เด™เตเด™เต‚":"เด™เต‚"
+ "ngou" = "เด™เตŒ":"เด™เตŒ"
+ "Ngou" = "เด™เตŒ"
+ "NgR" = "เด™เตƒ"
+ "ngR" = "เด™เตเด™เตƒ":"เด™เตƒ"
+ "ngU" = "เด™เต‚":"เด™เตเด™เต‚"
+ "Ngu" = "เด™เต"
+ "ngu" = "เด™เตเด™เต":"เด™เต"
+ "Nguu" = "เด™เต‚"
+ "nguu" = "เด™เตเด™เต‚":"เด™เต‚"
+ "ni" = "เดจเดฟ":"เดฃเดฟ":"เดจเตˆ"
+ "nI" = "เดจเต€":"เดฃเต€"
+ "Ni" = "เดฃเดฟ":"เดฃเตเดฃเดฟ"
+ "NI" = "เดฃเต€"
+ "nii" = "เดจเต€":"เดฃเต€"
+ "Nii" = "เดฃเต€"
+ "nj^" = "เดžเต"
+ "nj" = "เดžเต":"เดžเตเดžเต":"เดžเตเดžเตเต"
+ "nja" = "เดž":"เดžเตเดš":"เดžเตเดž"
+ "njA" = "เดžเดพ"
+ "njaa" = "เดžเดพ":"เดžเตเดšเดพ"
+ "njae" = "เดžเต‡":"เดžเตเดžเต‡"
+ "njaH" = "เดžเดƒ"
+ "njai" = "เดžเตˆ":"เดžเตเดžเตˆ"
+ "njaM" = "เดžเด‚"
+ "njau" = "เดžเต—":"เดžเตŒ":"เดžเตเดžเต—"
+ "nje" = "เดžเต†":"เดžเตเดžเต†":"เดžเตเดšเต†"
+ "njE" = "เดžเต‡":"เดžเตเดžเต‡"
+ "njee" = "เดžเต€":"เดžเตเดšเต€"
+ "njei" = "เดžเตเดšเตˆ":"เดžเตˆ":"เดžเตเดžเตˆ"
+ "nji" = "เดžเดฟ":"เดžเตเดžเดฟ":"เดžเตเดšเดฟ"
+ "njI" = "เดžเต€"
+ "njii" = "เดžเต€"
+ "njo" = "เดžเตŠ":"เดžเตเดžเต‹":"เดžเตเดšเตŠ"
+ "njO" = "เดžเต‹":"เดžเตเดžเต‹":"เดžเตเดšเต‹"
+ "njoo" = "เดžเต‚":"เดžเตเดžเต‚"
+ "njou" = "เดžเตŒ"
+ "njR" = "เดžเตƒ"
+ "nju" = "เดžเต":"เดžเตเดžเต":"เดžเตเดšเต"
+ "njU" = "เดžเต‚"
+ "njuu" = "เดžเต‚":"เดžเตเดžเต‚":"เดžเตเดšเต‚"
+ "nk^" = "เด™เตเด•เต"
+ "nk" = "เด™เตเด•เต":"เด™เตเด•เตเต"
+ "nka" = "เด™เตเด•"
+ "nkA" = "เด™เตเด•เดพ"
+ "nkaa" = "เด™เตเด•เดพ"
+ "nkaH" = "เด™เตเด•เดƒ"
+ "nkai" = "เด™เตเด•เตˆ":"เด™เตเด•เดพเดฏเต"
+ "nkaM" = "เด™เตเด•เด‚"
+ "nkau" = "เด™เตเด•เต—":"เด™เตเด•เตŒ"
+ "nkE" = "เด™เตเด•เต‡"
+ "nke" = "เด™เตเด•เต†"
+ "nkee" = "เด™เตเด•เต€"
+ "nkei" = "เด™เตเด•เตˆ"
+ "nki" = "เด™เตเด•เดฟ"
+ "nkI" = "เด™เตเด•เต€"
+ "nkii" = "เด™เตเด•เต€"
+ "nko" = "เด™เตเด•เตŠ":"เด™เตเด•เต‹"
+ "nkO" = "เด™เตเด•เต‹"
+ "nkoo" = "เด™เตเด•เต‚"
+ "nkou" = "เด™เตเด•เตŒ"
+ "nkR" = "เด™เตเด•เตƒ"
+ "nku" = "เด™เตเด•เต"
+ "nkU" = "เด™เตเด•เต‚"
+ "nkuu" = "เด™เตเด•เต‚"
+ "no" = "เดจเตŠ":"เดฃเตŠ":"เดจเต‹"
+ "No" = "เดฃเตŠ":"เดจเต‹"
+ "NO" = "เดฃเต‹":"เดจเต‹"
+ "nO" = "เดจเต‹"
+ "Noo" = "เดฃเต‚":"เดจเต‚"
+ "noo" = "เดจเต‚":"เดฃเต‚"
+ "nou" = "เดจเตŒ"
+ "Nou" = "เดฃเตŒ"
+ "nR" = "เดจเตƒ"
+ "NR" = "เดฃเตƒ"
+ "nt^" = "เดจเตเดฑเต"
+ "nt" = "เดจเตเดฑเต":"เดจเตเดฑเตเต"
+ "nta" = "เดจเตเดฑ":"เดฃเตเดŸ"
+ "ntA" = "เดจเตเดฑเดพ"
+ "ntaa" = "เดจเตเดฑเดพ"
+ "ntae" = "เดจเตเดฑเต‡"
+ "ntaH" = "เดจเตเดฑเดƒ"
+ "ntai" = "เดจเตเดฑเตˆ"
+ "ntaM" = "เดจเตเดฑเด‚"
+ "ntau" = "เดจเตเดฑเต—"
+ "ntE" = "เดจเตเดฑเต‡"
+ "nte" = "เดจเตเดฑเต†"
+ "ntee" = "เดจเตเดฑเต€"
+ "ntei" = "เดจเตเดฑเตˆ"
+ "nth^" = "เดจเตเดคเต"
+ "nth" = "เดจเตเดคเต":"เดจเตเดคเตเต"
+ "ntha" = "เดจเตเดค":"เดจเตเดฆ"
+ "nthA" = "เดจเตเดคเดพ"
+ "nthaa" = "เดจเตเดคเดพ"
+ "nthaH" = "เดจเตเดคเดƒ"
+ "nthai" = "เดจเตเดคเตˆ"
+ "nthaM" = "เดจเตเดคเด‚"
+ "nthau" = "เดจเตเดคเต—":"เดจเตเดคเตŒ"
+ "nthE" = "เดจเตเดคเต‡":"เดจเตเดฆเต‡"
+ "nthe" = "เดจเตเดคเต†"
+ "nthee" = "เดจเตเดคเต€":"เดจเตเดฆเต€"
+ "nthei" = "เดจเตเดคเตˆ"
+ "nthi" = "เดจเตเดคเดฟ":"เดจเตเดฆเดฟ"
+ "nthI" = "เดจเตเดคเต€"
+ "nthii" = "เดจเตเดคเต€"
+ "ntho" = "เดจเตเดคเตŠ"
+ "nthO" = "เดจเตเดคเต‹"
+ "nthoo" = "เดจเตเดคเต‚"
+ "nthou" = "เดจเตเดคเตŒ"
+ "nthR" = "เดจเตเดคเตƒ"
+ "nthu" = "เดจเตเดคเต"
+ "nthU" = "เดจเตเดคเต‚"
+ "nthuu" = "เดจเตเดคเต‚"
+ "nti" = "เดจเตเดฑเดฟ":"เดฃเตเดŸเดฟ"
+ "ntI" = "เดจเตเดฑเต€"
+ "ntii" = "เดจเตเดฑเต€"
+ "nto" = "เดจเตเดฑเตŠ"
+ "ntO" = "เดจเตเดฑเต‹"
+ "ntoo" = "เดจเตเดฑเต‚"
+ "ntou" = "เดจเตเดฑเตŒ"
+ "ntR" = "เดจเตเดฑเตƒ"
+ "ntU" = "เดจเตเดฑเต‚"
+ "ntu" = "เดจเตเดฑเต"
+ "ntuu" = "เดจเตเดฑเต‚"
+ "nu" = "เดจเต":"เดฃเต":"เดฃเต"
+ "nU" = "เดจเต‚":"เดฃเต‚"
+ "Nu" = "เดฃเต"
+ "NU" = "เดฃเต‚"
+ "nuu" = "เดจเต‚":"เดฃเต‚"
+ "Nuu" = "เดฃเต‚":"เดจเต‚"
+ "@o" = ""เตŠ"
+ "@O" = ""เต‹"
+ "o" = "เด’"
+ "O" = "เด“"
+ "@oo" = ""เต‚"
+ "oo" = "เดŠ":"เด“"
+ "@ou" = ""เตŒ"
+ "ou" = "เด”"
+ "p^" = "เดชเต"
+ "P^" = "เดชเต"
+ "p" = "เดชเต":"เดชเตเต":"เดชเตเดชเต":"เดชเตเดชเตเต":"เดชเดฟ"
+ "P" = "เดชเต":"เดชเตเดชเต":"เดชเตเดชเตเต":"เดชเดฟ"
+ "Pa" = "เดช":"เดช":"เดช"
+ "pa" = "เดช"
+ "PA" = "เดชเดพ"
+ "pA" = "เดชเดพ"
+ "paa" = "เดชเดพ"
+ "Paa" = "เดชเดพ"
+ "Pae" = "เดชเต‡"
+ "pae" = "เดชเต‡"
+ "paH" = "เดชเดƒ"
+ "PaH" = "เดชเดƒ"
+ "pai" = "เดชเตˆ":"เดชเดฏเต":"เดชเดพเดฏเต"
+ "Pai" = "เดชเตˆ":"เดชเดฏเต":"เดชเดพเดฏเต"
+ "paM" = "เดชเด‚"
+ "PaM" = "เดชเด‚"
+ "Pau" = "เดชเต—":"เดชเตŒ"
+ "pau" = "เดชเต—":"เดชเตŒ"
+ "Pe" = "เดชเต†":"เดชเดฟ"
+ "pe" = "เดชเต†":"เดชเดฟ"
+ "PE" = "เดชเต‡"
+ "pE" = "เดชเต‡"
+ "Pee" = "เดชเต€":"เดชเต€":"เดชเต€":"เดชเต‡"
+ "pee" = "เดชเต€":"เดชเต‡"
+ "pei" = "เดชเต†เดฏเต":"เดชเตˆ"
+ "Pei" = "เดชเต†เดฏเต":"เดชเตˆ"
+ "ph^" = "เดซเต"
+ "ph" = "เดซเต":"เดชเดฟ.เดŽเดšเต."
+ "pha" = "เดซ"
+ "phA" = "เดซเดพ"
+ "phaa" = "เดซเดพ"
+ "phaH" = "เดซเดƒ"
+ "phai" = "เดซเตˆ"
+ "phaM" = "เดซเด‚"
+ "phau" = "เดซเต—":"เดซเตŒ"
+ "phe" = "เดซเต†"
+ "phE" = "เดซเต‡"
+ "phee" = "เดซเต€"
+ "phei" = "เดซเตˆ"
+ "phi" = "เดซเดฟ"
+ "phI" = "เดซเต€"
+ "phii" = "เดซเต€"
+ "pho" = "เดซเตŠ":"เดซเต‹"
+ "phO" = "เดซเต‹"
+ "phoo" = "เดซเต‚"
+ "phou" = "เดซเตŒ"
+ "phR" = "เดซเตƒ"
+ "phu" = "เดซเต"
+ "phU" = "เดซเต‚"
+ "phuu" = "เดซเต‚"
+ "Pi" = "เดชเดฟ":"เดชเตˆ":"เดชเดฟ":"เดชเตˆ":"เดชเตเดชเดฟ":"เดชเดฟ":"เดชเตˆ"
+ "pi" = "เดชเดฟ":"เดชเตˆ":"เดชเตเดชเดฟ"
+ "pI" = "เดชเต€"
+ "PI" = "เดชเต€"
+ "Pii" = "เดชเต€"
+ "pii" = "เดชเต€"
+ "pO" = "เดชเต‹"
+ "Po" = "เดชเตŠ"
+ "PO" = "เดชเต‹"
+ "po" = "เดชเตŠ"
+ "Poo" = "เดชเต‚":"เดชเต‚":"เดชเต‹":"เดชเต‚"
+ "poo" = "เดชเต‚":"เดชเต‹"
+ "pou" = "เดชเตŒ"
+ "Pou" = "เดชเตŒ"
+ "pR" = "เดชเตƒ"
+ "PR" = "เดชเตƒ"
+ "Pu" = "เดชเต":"เดชเต":"เดชเต"
+ "pu" = "เดชเต"
+ "PU" = "เดชเต‚"
+ "pU" = "เดชเต‚"
+ "Puu" = "เดชเต‚"
+ "puu" = "เดชเต‚"
+ "Q" = "เด•เตเดฏเต‚"
+ "q" = "เด•เตเดฏเต"
+ "@R" = ""เตƒ"
+ "R^^" = "เต "
+ "r^^" = "เต "
+ "r^" = "เด‹"
+ "R^" = "เดฑเต"
+ "r~" = "เดฐเตโ€"
+ "R~" = "เดฐเตโ€"
+ "R_" = "เดฐเตโ€"
+ "r_" = "เดฐเตโ€"
+ "r" = "เดฐเต":"เดฐเตโ€":"เดฐเตเต":"เด†เดฐเตโ€"
+ "R" = "เดฑเต":"เดฐเตโ€":"เดฑเตเต":"เด†เดฐเตโ€"
+ "Ra" = "เดฑ":"เดฐ":"เดฐเดพ"
+ "ra" = "เดฐ":"เดฑ"
+ "rA" = "เดฐเดพ"
+ "RA" = "เดฑเดพ"
+ "raa" = "เดฐเดพ":"เดฑเดพ"
+ "Raa" = "เดฑเดพ"
+ "Rae" = "เดฑเต‡"
+ "rae" = "เดฐเต‡"
+ "RaH" = "เดฑเดƒ"
+ "raH" = "เดฐเดƒ"
+ "rai" = "เดฐเตˆ":"เดฐเดพเดฏเต"
+ "Rai" = "เดฑเตˆ":"เดฑเดพเดฏเต"
+ "RaM" = "เดฑเด‚"
+ "raM" = "เดฐเด‚"
+ "Rau" = "เดฑเต—"
+ "rau" = "เดฐเต—"
+ "re" = "เดฐเต†"
+ "Re" = "เดฑเต†"
+ "rE" = "เดฐเต‡"
+ "RE" = "เดฑเต‡"
+ "Ree" = "เดฑเต€":"เดฐเต€":"เดฑเต‡"
+ "ree" = "เดฐเต€"
+ "rei" = "เดฐเตˆ":"เดฐเต†เดฏเต"
+ "Rei" = "เดฑเตˆ":"เดฑเต†เดฏเต"
+ "ri" = "เดฐเดฟ":"เดฑเดฟ":"เดฐเตˆ":"เดฑเตˆ"
+ "Ri" = "เดฑเดฟ":"เดฐเดฟ"
+ "rI" = "เดฐเต€"
+ "RI" = "เดฑเต€"
+ "rii" = "เดฐเต€"
+ "Rii" = "เดฑเต€"
+ "ro" = "เดฐเตŠ":"เดฐเต‹"
+ "rO" = "เดฐเต‹"
+ "Ro" = "เดฑเตŠ"
+ "RO" = "เดฑเต‹"
+ "Roo" = "เดฑเต‚":"เดฐเต‚"
+ "roo" = "เดฐเต‚"
+ "Rou" = "เดฑเตŒ"
+ "rou" = "เดฐเตŒ"
+ "RR" = "เด‹"
+ "rr" = "เด‹"
+ "rR" = "เดฐเตƒ"
+ "Ru" = "เดฑเต":"เดฐเต"
+ "ru" = "เดฐเต":"เดฑเต"
+ "RU" = "เดฑเต‚"
+ "rU" = "เดฐเต‚"
+ "Ruu" = "เดฑเต‚":"เดฐเต‚"
+ "ruu" = "เดฐเต‚"
+ "S^" = "เดถเต"
+ "s^" = "เดธเต"
+ "s" = "เดธเต":"เดถเต":"เดธเตเดธเต":"เดธเตเต":"เดธเตเดธเตเต":"เดŽเดธเต"
+ "S" = "เดถเต":"เดถเตเต":"เดธเต":"เดถเตเดถเต":"เดถเตเดถเตเต":"เดŽเดธเต"
+ "sa" = "เดธ":"เดถ"
+ "Sa" = "เดถ":"เดธ"
+ "SA" = "เดถเดพ":"เดธเดพ"
+ "sA" = "เดธเดพ"
+ "saa" = "เดธเดพ":"เดถเดพ"
+ "Saa" = "เดถเดพ":"เดธเดพ"
+ "Sae" = "เดถเต‡"
+ "sae" = "เดธเต‡"
+ "SaH" = "เดถเดƒ":"เดทเดพ"
+ "saH" = "เดธเดƒ"
+ "Sai" = "เดถเตˆ":"เดธเตˆ":"เดธเดพเดฏเต"
+ "sai" = "เดธเตˆ":"เดธเดพเดฏเต"
+ "saM" = "เดธเด‚"
+ "SaM" = "เดถเด‚"
+ "sau" = "เดธเต—":"เดธเตŒ"
+ "Sau" = "เดถเต—":"เดธเต—"
+ "Se" = "เดถเต†":"เดธเต†":"เดธเดฟ"
+ "se" = "เดธเต†":"เดธเดฟ"
+ "SE" = "เดถเต‡":"เดŽเดธเต.เด‡."
+ "sE" = "เดธเต‡"
+ "see" = "เดธเต€":"เดถเต€"
+ "See" = "เดถเต€":"เดธเต€"
+ "Sei" = "เดถเตˆ":"เดธเต€"
+ "sei" = "เดธเตˆ"
+ "Sh^" = "เดดเต"
+ "sh^" = "เดทเต"
+ "Sh" = "เดดเต":"เดทเต":"เดดเตเต"
+ "sh" = "เดทเต":"เดทเตเต"
+ "Sha" = "เดด":"เดท":"เดทเดพ"
+ "sha" = "เดท"
+ "shA" = "เดทเดพ"
+ "ShA" = "เดดเดพ"
+ "Shaa" = "เดดเดพ"
+ "shaa" = "เดทเดพ"
+ "shae" = "เดทเต‡"
+ "Shae" = "เดดเต‡"
+ "ShaH" = "เดดเดƒ"
+ "shaH" = "เดทเดƒ"
+ "shai" = "เดทเตˆ"
+ "Shai" = "เดดเตˆ"
+ "shaM" = "เดทเด‚"
+ "ShaM" = "เดดเด‚"
+ "Shau" = "เดดเต—":"เดทเต—":"เดดเตŒ"
+ "shau" = "เดทเต—":"เดทเตŒ"
+ "She" = "เดดเต†":"เดทเดฟ"
+ "she" = "เดทเต†":"เดทเดฟ"
+ "shE" = "เดทเต‡"
+ "ShE" = "เดดเต‡"
+ "shee" = "เดทเต€":"เดทเต‡"
+ "Shee" = "เดดเต€"
+ "Shei" = "เดดเตˆ"
+ "shei" = "เดทเตˆ"
+ "ShI" = "เดดเต€"
+ "shi" = "เดทเดฟ"
+ "Shi" = "เดดเดฟ"
+ "shI" = "เดทเต€"
+ "Shii" = "เดดเต€"
+ "shii" = "เดทเต€"
+ "sho" = "เดทเตŠ":"เดทเต‹"
+ "shO" = "เดทเต‹"
+ "Sho" = "เดดเตŠ"
+ "ShO" = "เดดเต‹"
+ "Shoo" = "เดดเต‚":"เดทเต‚"
+ "shoo" = "เดทเต‚"
+ "Shou" = "เดดเตŒ"
+ "shou" = "เดทเตŒ"
+ "ShR" = "เดดเตƒ"
+ "shR" = "เดทเตƒ"
+ "Shu" = "เดดเต":"เดทเต"
+ "shu" = "เดทเต"
+ "ShU" = "เดดเต‚"
+ "shU" = "เดทเต‚"
+ "Shuu" = "เดดเต‚"
+ "shuu" = "เดทเต‚"
+ "Si" = "เดถเดฟ":"เดธเดฟ"
+ "si" = "เดธเดฟ":"เดถเดฟ"
+ "SI" = "เดถเต€":"เดŽเดธเต.เด."
+ "sI" = "เดธเต€"
+ "Sii" = "เดถเต€"
+ "sii" = "เดธเต€"
+ "So" = "เดถเตŠ":"เดธเตŠ":"เดธเต‹"
+ "so" = "เดธเตŠ":"เดถเตŠ":"เดธเต‹"
+ "SO" = "เดถเต‹"
+ "sO" = "เดธเต‹"
+ "Soo" = "เดถเต‚":"เดธเต‚"
+ "soo" = "เดธเต‚":"เดถเต‚"
+ "Sou" = "เดถเตŒ":"เดธเตŒ"
+ "sou" = "เดธเตŒ"
+ "SR" = "เดถเตƒ":"เดŽเดธเต.เด†เดฐเตโ€."
+ "sR" = "เดธเตƒ"
+ "su" = "เดธเต":"เดถเต"
+ "Su" = "เดถเต":"เดธเต"
+ "SU" = "เดถเต‚"
+ "sU" = "เดธเต‚"
+ "suu" = "เดธเต‚":"เดถเต‚"
+ "Suu" = "เดถเต‚"
+ "t^" = "เดŸเต"
+ "T^" = "เด เต"
+ "t" = "เดŸเต":"เดŸเตเต":"เดŸเตเดŸเต":"เดฑเตเดฑเต":"เดคเต":"เดŸเดฟ"
+ "T" = "เด เต":"เดŸเตเดŸเตเต":"เดŸเดฟ":"เดฑเตเดฑเดฟ"
+ "Ta" = "เด ":"เดŸ":"เดค"
+ "ta" = "เดŸ":"เดฑเตเดฑ":"เดค":"เด "
+ "tA" = "เดŸเดพ":"เดคเดพ":"เดฑเตเดฑเดพ":"เด เดพ":"เดŸเตเดŸเดพ"
+ "TA" = "เด เดพ"
+ "taa" = "เดŸเดพ":"เดฑเตเดฑเดพ":"เดคเดพ":"เด เดพ":"เดŸเตเดŸเดพ"
+ "Taa" = "เด เดพ"
+ "Tae" = "เด เต‡"
+ "tae" = "เดŸเต‡"
+ "taH" = "เดŸเดƒ":"เดคเดƒ"
+ "TaH" = "เด เดƒ"
+ "tai" = "เดŸเตˆ":"เดŸเดพเดฏเต"
+ "Tai" = "เด เตˆ"
+ "taM" = "เดŸเด‚":"เดคเด‚"
+ "TaM" = "เด เด‚"
+ "Tau" = "เด เต—":"เด เตŒ"
+ "tau" = "เดŸเต—":"เดŸเตŒ"
+ "Te" = "เด เต†":"เดŸเต†":"เดคเต†"
+ "te" = "เดŸเต†":"เดคเต†":"เดฑเตเดฑเต†":"เด เต†"
+ "tE" = "เดŸเต‡":"เดคเต‡"
+ "TE" = "เด เต‡":"เดŸเต‡"
+ "tea" = "เดŸเต€":"เดฑเตเดฑเต€":"เดคเต€"
+ "tee" = "เดŸเต€":"เดคเต€":"เดฑเตเดฑเต€"
+ "Tee" = "เด เต€"
+ "tei" = "เดŸเตˆ":"เดŸเต†เดฏเต"
+ "Tei" = "เด เตˆ"
+ "th^" = "เดคเต"
+ "TH^" = "เดฅเต"
+ "Th^" = "เดฅเต"
+ "tH^" = "เดฅเต"
+ "th" = "เดคเต":"เดคเตเต":"เดคเตเดคเต":"เดคเตเดคเตเต"
+ "tH" = "เดฅเต":"เดฅเตเต"
+ "Th" = "เดฅเต":"เดฅเตเต"
+ "TH" = "เดฅเต":"เดฅเตเต"
+ "tha" = "เดค":"เดง":"เดฅ":"เดคเตเดค":"เดฆเตเดง"
+ "THa" = "เดฅ":"เดค"
+ "Tha" = "เดฅ":"เดค"
+ "tHa" = "เด ":"เดค"
+ "thA" = "เดคเดพ":"เดฅเดพ":"เดงเดพ":"เดคเตเดคเดพ"
+ "ThA" = "เดฅเดพ"
+ "tHA" = "เด เดพ"
+ "THA" = "เดฅเดพ"
+ "thaa" = "เดคเดพ":"เดฅเดพ":"เดงเดพ":"เดคเตเดคเดพ"
+ "Thaa" = "เดฅเดพ":"เดคเดพ"
+ "THaa" = "เดฅเดพ":"เดคเดพ"
+ "tHaa" = "เด เดพ":"เดคเดพ"
+ "tHae" = "เด เต‡"
+ "Thae" = "เดฅเต‡"
+ "THae" = "เดฅเต‡"
+ "thae" = "เดคเต‡"
+ "tHaH" = "เด เดƒ"
+ "thaH" = "เดคเดƒ"
+ "ThaH" = "เดฅเดƒ"
+ "THaH" = "เดฅเดƒ"
+ "THai" = "เดฅเตˆ":"เดคเตˆ"
+ "tHai" = "เด เตˆ":"เดคเตˆ"
+ "Thai" = "เดฅเตˆ":"เดคเตˆ"
+ "thai" = "เดคเตˆ"
+ "thaM" = "เดคเด‚":"เดคเตเดคเด‚"
+ "ThaM" = "เดฅเด‚"
+ "tHaM" = "เด เด‚"
+ "THaM" = "เดฅเด‚"
+ "Thau" = "เดฅเต—":"เดฅเตŒ"
+ "tHau" = "เด เต—":"เด เตŒ"
+ "THau" = "เดฅเต—":"เดฅเตŒ"
+ "thau" = "เดคเต—":"เดคเตŒ"
+ "THe" = "เดฅเต†":"เดฆเดฟ":"เดคเต†"
+ "tHe" = "เด เต†":"เดฆเดฟ":"เดคเต†"
+ "The" = "เดฅเต†":"เดฆเดฟ":"เดคเต†"
+ "tHE" = "เด เต‡"
+ "ThE" = "เดฅเต‡"
+ "the" = "เดคเต†"
+ "THE" = "เดฅเต‡"
+ "thE" = "เดคเต‡"
+ "thee" = "เดคเต€":"เดฅเต€":"เดคเต‡"
+ "Thee" = "เดฅเต€":"เดคเต€"
+ "tHee" = "เด เต€":"เดคเต€"
+ "THee" = "เดฅเต€":"เดคเต€"
+ "Thei" = "เดฅเตˆ":"เดคเต†เดฏเต"
+ "thei" = "เดคเตˆ":"เดคเต†เดฏเต"
+ "tHei" = "เด เตˆ":"เดคเต†เดฏเต"
+ "THei" = "เดฅเตˆ":"เดคเต†เดฏเต"
+ "THi" = "เดฅเดฟ":"เดคเดฟ":"เดคเตเดฅเดฟ"
+ "Thi" = "เดฅเดฟ":"เดคเดฟ":"เดคเตเดฅเดฟ"
+ "tHi" = "เด เดฟ":"เดคเดฟ":"เดคเตเด เดฟ"
+ "thi" = "เดคเดฟ":"เดคเตเดคเดฟ":"เดฅเดฟ":"เดงเดฟ":"เดคเตเดฅเดฟ":"เดฆเตเดงเดฟ":"เดคเตˆ"
+ "THI" = "เดฅเต€"
+ "ThI" = "เดฅเต€"
+ "tHI" = "เด เต€"
+ "thI" = "เดคเต€"
+ "thii" = "เดคเต€":"เดคเตเดคเต€":"เดฅเต€":"เดงเต€"
+ "THii" = "เดฅเต€"
+ "Thii" = "เดฅเต€"
+ "tHii" = "เด เต€"
+ "tho" = "เดคเตŠ":"เดคเต‹":"เดคเตเดคเตŠ"
+ "thO" = "เดคเต‹":"เดคเตเดคเต‹"
+ "tHo" = "เด เตŠ"
+ "Tho" = "เดฅเตŠ"
+ "ThO" = "เดฅเต‹"
+ "THO" = "เดฅเต‹"
+ "THo" = "เดฅเตŠ"
+ "tHO" = "เด เต‹"
+ "thoo" = "เดคเต‚":"เดฅเต‚":"เดคเต‹"
+ "tHoo" = "เดฅเต‚":"เดคเต‚"
+ "THoo" = "เดฅเต‚":"เดคเต‚"
+ "Thoo" = "เดฅเต‚":"เดคเต‚"
+ "Thou" = "เดฅเตŒ"
+ "THou" = "เดฅเตŒ"
+ "thou" = "เดคเตŒ"
+ "tHou" = "เด เตŒ"
+ "THR" = "เดฅเตƒ":"เดคเตƒ"
+ "ThR" = "เดฅเตƒ":"เดคเตƒ"
+ "tHR" = "เดฅเตƒ":"เดคเตƒ"
+ "thR" = "เดคเตƒ"
+ "THU" = "เดฅเต‚":"เดคเต‚"
+ "tHu" = "เดฅเต":"เดคเต"
+ "ThU" = "เดฅเต‚":"เดคเต‚"
+ "tHU" = "เดฅเต‚":"เดคเต‚"
+ "Thu" = "เดฅเต":"เดคเต"
+ "THu" = "เดฅเต":"เดคเต"
+ "thu" = "เดคเต":"เดคเตเดคเต"
+ "thU" = "เดคเต‚"
+ "thuu" = "เดคเต‚":"เดฅเต‚"
+ "tHuu" = "เดฅเต‚":"เดคเต‚"
+ "Thuu" = "เดฅเต‚":"เดคเต‚"
+ "THuu" = "เดฅเต‚":"เดคเต‚"
+ "Ti" = "เด เดฟ":"เดŸเดฟ":"เดคเดฟ":"เดคเตˆ"
+ "ti" = "เดŸเดฟ":"เดคเดฟ":"เดŸเตเดŸเดฟ":"เดฑเตเดฑเดฟ":"เด เดฟ":"เดŸเตˆ":"เดคเตˆ"
+ "tI" = "เดŸเต€":"เดฑเตเดฑเต€"
+ "TI" = "เด เต€"
+ "tii" = "เดŸเต€"
+ "Tii" = "เด เต€"
+ "To" = "เด เตŠ":"เดŸเต":"เดคเตŠ"
+ "to" = "เดŸเตŠ":"เดŸเต":"เดฑเตเดฑเต"
+ "TO" = "เด เต‹":"เดคเต‹"
+ "tO" = "เดŸเต‹"
+ "Too" = "เด เต‚":"เดŸเต‚":"เดคเต‚"
+ "too" = "เดŸเต‚":"เดฑเตเดฑเต‚":"เดคเต‚"
+ "Tou" = "เด เตŒ"
+ "tou" = "เดŸเตŒ"
+ "TR" = "เด เตƒ"
+ "tR" = "เดŸเตƒ"
+ "TT^" = "เดฑเตเดฑเต"
+ "TT" = "เดฑเตเดฑเต":"เดฑเตเดฑเตเต":"เดŸเดฟ.เดŸเดฟ."
+ "TTa" = "เดฑเตเดฑ":"เดŸเตเดŸ"
+ "TTA" = "เดฑเตเดฑเดพ"
+ "TTaa" = "เดฑเตเดฑเดพ"
+ "TTah" = "เดฑเตเดฑเดƒ"
+ "TTai" = "เดฑเตเดฑเตˆ"
+ "TTaM" = "เดฑเตเดฑเด‚"
+ "TTau" = "เดฑเตเดฑเต—":"เดฑเตเดฑเตŒ"
+ "TTe" = "เดฑเตเดฑเต†"
+ "TTE" = "เดฑเตเดฑเต‡"
+ "TTee" = "เดฑเตเดฑเต€"
+ "TTei" = "เดฑเตเดฑเตˆ"
+ "TTI" = "เดฑเตเดฑเต€":"เดŸเดฟ.เดŸเดฟ.เด."
+ "TTi" = "เดฑเตเดฑเดฟ"
+ "TTii" = "เดฑเตเดฑเต€"
+ "TTO" = "เดฑเตเดฑเต‹"
+ "TTo" = "เดฑเตเดฑเตŠ"
+ "TToo" = "เดฑเตเดฑเต‚"
+ "TTou" = "เดฑเตเดฑเตŒ"
+ "TTR" = "เดฑเตเดฑเตƒ":"เดŸเดฟ.เดŸเดฟ.เด†เดฐเตโ€."
+ "TTu" = "เดฑเตเดฑเต"
+ "TTU" = "เดฑเตเดฑเต‚"
+ "TTuu" = "เดฑเตเดฑเต‚"
+ "Tu" = "เด เต":"เดŸเต":"เดคเต"
+ "tu" = "เดŸเต":"เดคเต":"เดฑเตเดฑเต":"เดŸเตเดŸเต"
+ "tU" = "เดŸเต‚":"เดฑเตเดฑเต‚"
+ "TU" = "เด เต‚"
+ "tuu" = "เดŸเต‚":"เดคเต‚":"เดฑเตเดฑเต‚"
+ "Tuu" = "เด เต‚"
+ "@u" = ""เต"
+ "@U" = ""เต‚"
+ "u" = "เด‰":"เดŠ":"เดฏเต"
+ "U" = "เดŠ"
+ "@uu" = ""เต‚"
+ "uu" = "เดŠ"
+ "v^" = "เดตเต"
+ "v" = "เดตเต":"เดตเตเต":"เดตเตเดตเต":"เดตเตเดตเตเต":"เดตเดฟ"
+ "V" = "เดตเดฟ"
+ "va" = "เดต":"เดตเดพ"
+ "Va" = "เดต":"เดตเตเดต":"เดตเดพ"
+ "vA" = "เดตเดพ"
+ "Vaa" = "เดตเดพ"
+ "vaa" = "เดตเดพ"
+ "vae" = "เดตเต‡"
+ "vaH" = "เดตเดƒ"
+ "vai" = "เดตเตˆ":"เดตเดฏเต"
+ "vaM" = "เดตเด‚"
+ "vau" = "เดตเต—":"เดตเตŒ"
+ "ve" = "เดตเต†"
+ "vE" = "เดตเต‡"
+ "vee" = "เดตเต€":"เดตเต‡"
+ "vei" = "เดตเตˆเดฏเต":"เดตเตˆ"
+ "Vi" = "เดตเดฟ"
+ "vI" = "เดตเต€"
+ "vi" = "เดตเดฟ"
+ "vii" = "เดตเต€"
+ "vo" = "เดตเตŠ":"เดตเต‹"
+ "vO" = "เดตเต‹"
+ "voo" = "เดตเต‚"
+ "vou" = "เดตเตŒ"
+ "vR" = "เดตเตƒ"
+ "vu" = "เดตเต"
+ "vU" = "เดตเต‚"
+ "vuu" = "เดตเต‚"
+ "W^" = "เดตเต"
+ "w^" = "เดตเต"
+ "w" = "เดตเต":"เดตเตเต":"เดตเตเดตเต":"เดกเดฌเตเดฒเตเดฏเต‚"
+ "W" = "เดตเต":"เดตเตเดตเต":"เดกเดฌเตเดฒเตเดฏเต‚"
+ "wa" = "เดต"
+ "Wa" = "เดต"
+ "wA" = "เดตเดพ"
+ "WA" = "เดตเดพ"
+ "Waa" = "เดตเดพ"
+ "waa" = "เดตเดพ"
+ "Wae" = "เดตเต‡"
+ "wae" = "เดตเต‡"
+ "WaH" = "เดตเดƒ"
+ "waH" = "เดตเดƒ"
+ "Wai" = "เดตเตˆ"
+ "wai" = "เดตเตˆ"
+ "WaM" = "เดตเด‚"
+ "waM" = "เดตเด‚"
+ "wau" = "เดตเต—"
+ "Wau" = "เดตเต—"
+ "We" = "เดตเต†"
+ "WE" = "เดตเต‡"
+ "wE" = "เดตเต‡"
+ "we" = "เดตเต†"
+ "Wee" = "เดตเต€"
+ "wee" = "เดตเต€"
+ "Wei" = "เดตเตˆ"
+ "wei" = "เดตเตˆ"
+ "wi" = "เดตเดฟ"
+ "wI" = "เดตเต€"
+ "Wi" = "เดตเดฟ"
+ "WI" = "เดตเต€"
+ "Wii" = "เดตเต€"
+ "wii" = "เดตเต€"
+ "wo" = "เดตเตŠ"
+ "Wo" = "เดตเตŠ"
+ "wO" = "เดตเต‹"
+ "WO" = "เดตเต‹"
+ "woo" = "เดตเต‚"
+ "Woo" = "เดตเต‚"
+ "wou" = "เดตเตŒ"
+ "Wou" = "เดตเตŒ"
+ "wR" = "เดตเตƒ"
+ "WR" = "เดตเตƒ"
+ "wu" = "เดตเต"
+ "Wu" = "เดตเต"
+ "WU" = "เดตเต‚"
+ "wU" = "เดตเต‚"
+ "wuu" = "เดตเต‚"
+ "Wuu" = "เดตเต‚"
+ "x^" = "เด•เตเดทเต"
+ "x" = "เด•เตเดทเต":"เด•เตเดธเต":"เดŽเด•เตเดธเต"
+ "X" = "เดŽเด•เตเดธเต"
+ "xa" = "เด•เตเดท":"เด•เตเดธ":"เด•เตเดธเต†"
+ "xA" = "เด•เตเดทเดพ"
+ "xaa" = "เด•เตเดทเดพ"
+ "xaH" = "เด•เตเดทเดƒ"
+ "xai" = "เด•เตเดทเตˆ"
+ "xaM" = "เด•เตเดทเด‚"
+ "xau" = "เด•เตเดทเต—":"เด•เตเดทเตŒ"
+ "xe" = "เด•เตเดทเต†":"เด•เตเดทเต‡":"เด•เตเดธเต†":"เด•เตเดธเดฟ":"เด•เตเดทเดฟ"
+ "xE" = "เด•เตเดทเต‡"
+ "xee" = "เด•เตเดทเต€"
+ "xei" = "เด•เตเดทเตˆ"
+ "xi" = "เด•เตเดทเดฟ":"เด•เตเดธเดฟ"
+ "xI" = "เด•เตเดทเต€"
+ "xii" = "เด•เตเดทเต€"
+ "xo" = "เด•เตเดทเตŠ"
+ "xO" = "เด•เตเดทเต‹"
+ "xoo" = "เด•เตเดทเต‚"
+ "xou" = "เด•เตเดทเตŒ"
+ "xR" = "เด•เตเดทเตƒ"
+ "xu" = "เด•เตเดทเต":"เด•เตเดธเต"
+ "xU" = "เด•เตเดทเต‚"
+ "xuu" = "เด•เตเดทเต‚"
+ "y^" = "เดฏเต"
+ "y" = "เดฏเต":"เดฏเตเต":"เดฏเตเดฏเต":"เดฏเตเดฏเตเต":"เดตเตˆ"
+ "Y" = "เดตเตˆ"
+ "Ya" = "เดฏ"
+ "ya" = "เดฏ"
+ "YA" = "เดฏเดพ"
+ "yA" = "เดฏเดพ"
+ "Yaa" = "เดฏเดพ"
+ "yaa" = "เดฏเดพ"
+ "yae" = "เดฏเต‡"
+ "yaH" = "เดฏเดƒ":"เดฏเดƒ"
+ "Yai" = "เดฏเตˆ"
+ "yai" = "เดฏเตˆ"
+ "yaM" = "เดฏเด‚":"เดฏเด‚"
+ "yau" = "เดฏเต—":"เดฏเตŒ"
+ "Yau" = "เดฏเต—":"เดฏเตŒ"
+ "ye" = "เดฏเต†":"เดฏเต‡"
+ "Ye" = "เดฏเต†":"เดฏเต‡"
+ "YE" = "เดฏเต‡":"เดฏเต‡"
+ "yE" = "เดฏเต‡"
+ "Yee" = "เดฏเต€"
+ "yee" = "เดฏเต€"
+ "Yei" = "เดฏเตˆ"
+ "yei" = "เดฏเตˆ"
+ "YI" = "เดฏเต€"
+ "Yi" = "เดฏเดฟ"
+ "yi" = "เดฏเดฟ"
+ "yI" = "เดฏเต€"
+ "Yii" = "เดฏเต€"
+ "yii" = "เดฏเต€"
+ "Yo" = "เดฏเตŠ":"เดฏเต‹"
+ "yo" = "เดฏเตŠ"
+ "yO" = "เดฏเต‹"
+ "YO" = "เดฏเต‹"
+ "Yoo" = "เดฏเต‚"
+ "yoo" = "เดฏเต‚"
+ "you" = "เดฏเตŒ":"เดฏเต‚":"เดฏเต‚":"เดฏเตŒ"
+ "YR" = "เดฏเตƒ"
+ "yR" = "เดฏเตƒ"
+ "YU" = "เดฏเต‚"
+ "yU" = "เดฏเต‚"
+ "Yu" = "เดฏเต"
+ "yu" = "เดฏเต"
+ "Yuu" = "เดฏเต‚"
+ "yuu" = "เดฏเต‚"
+ "z^" = "เดถเต"
+ "z" = "เดถเต":"เดธเต":"เดถเตเต":"เด‡เดธเดกเต"
+ "Z" = "เดถเต":"เดธเต":"เด‡เดธเดกเต"
+ "za" = "เดถ":"เดธ"
+ "zA" = "เดถเดพ"
+ "zaa" = "เดถเดพ":"เดธเดพ"
+ "zaH" = "เดถเดƒ"
+ "zai" = "เดถเตˆ"
+ "zaM" = "เดถเด‚"
+ "zau" = "เดถเต—"
+ "zE" = "เดถเต‡"
+ "ze" = "เดถเต†"
+ "zee" = "เดถเต€":"เดธเต€"
+ "zei" = "เดถเตˆ"
+ "zh^" = "เดดเต"
+ "zh" = "เดดเต":"เดดเตเต"
+ "zha" = "เดด"
+ "zhA" = "เดดเดพ"
+ "zhaa" = "เดดเดพ"
+ "zhae" = "เดดเต‡"
+ "zhaH" = "เดดเดƒ"
+ "zhai" = "เดดเตˆ"
+ "zhaM" = "เดดเด‚"
+ "zhau" = "เดดเต—":"เดดเตŒ"
+ "zhe" = "เดดเต†"
+ "zhE" = "เดดเต‡"
+ "zhee" = "เดดเต€"
+ "zhei" = "เดดเตˆ"
+ "zhI" = "เดดเต€"
+ "zhi" = "เดดเดฟ"
+ "zhii" = "เดดเต€"
+ "zhO" = "เดดเต‹"
+ "zho" = "เดดเตŠ"
+ "zhoo" = "เดดเต‚"
+ "zhou" = "เดดเตŒ"
+ "zhR" = "เดดเตƒ"
+ "zhU" = "เดดเต‚"
+ "zhu" = "เดดเต"
+ "zhuu" = "เดดเต‚"
+ "zi" = "เดถเดฟ":"เดธเดฟ"
+ "zI" = "เดถเต€"
+ "zii" = "เดถเต€"
+ "zO" = "เดถเต‹"
+ "zo" = "เดถเตŠ"
+ "zoo" = "เดถเต‚":"เดธเต‚"
+ "zou" = "เดถเตŒ"
+ "zR" = "เดถเตƒ"
+ "zu" = "เดถเต":"เดธเต"
+ "zU" = "เดถเต‚"
+ "zuu" = "เดถเต‚"
diff --git a/input-methods/ibus-sulekha/engine/main.py b/input-methods/ibus-sulekha/engine/main.py
new file mode 100644
index 0000000..c64dcc7
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/main.py
@@ -0,0 +1,96 @@
+# vim:set et sts=4 sw=4:
+#
+# ibus-sulekha - The Sulekha engine for IBus
+#
+# Copyright(c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import os
+import sys
+import getopt
+import ibus
+import gobject
+import factory
+
+class IMApp:
+ def __init__(self, exec_by_ibus):
+ self.__component = ibus.Component("org.freedesktop.IBus.Sulekha",
+ "Sulekha Component",
+ "0.1.0",
+ "GPL",
+ "Peng Huang <shawn.p.huang@gmail.com>")
+ self.__component.add_engine("sulekha",
+ "Sulekha",
+ "Sulekha Input method",
+ "ml_IN",
+ "GPL",
+ "Peng Huang <shawn.p.huang@gmail.com>",
+ "",
+ "en")
+ self.__mainloop = gobject.MainLoop()
+ self.__bus = ibus.Bus()
+ self.__bus.connect("destroy", self.__bus_destroy_cb)
+ self.__factory = factory.EngineFactory(self.__bus)
+ if exec_by_ibus:
+ self.__bus.request_name("org.freedesktop.IBus.Sulekha", 0)
+ else:
+ self.__bus.register_component(self.__component)
+
+ def run(self):
+ self.__mainloop.run()
+
+ def __bus_destroy_cb(self, bus):
+ self.__mainloop.quit()
+
+
+def launch_engine(exec_by_ibus):
+ IMApp(exec_by_ibus).run()
+
+def print_help(out, v = 0):
+ print >> out, "-i, --ibus execute by ibus."
+ print >> out, "-h, --help show this message."
+ print >> out, "-d, --daemonize daemonize ibus"
+ sys.exit(v)
+
+def main():
+ daemonize = False
+ exec_by_ibus = False
+ shortopt = "hdi"
+ longopt = ["help", "daemonize", "ibus"]
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], shortopt, longopt)
+ except getopt.GetoptError, err:
+ print_help(sys.stderr, 1)
+
+ for o, a in opts:
+ if o in("-h", "--help"):
+ print_help(sys.stdout)
+ elif o in ("-d", "--daemonize"):
+ daemonize = True
+ elif o in ("-i", "--ibus"):
+ exec_by_ibus = True
+ else:
+ print >> sys.stderr, "Unknown argument: %s" % o
+ print_help(sys.stderr, 1)
+
+ if daemonize:
+ if os.fork():
+ sys.exit()
+
+ launch_engine(exec_by_ibus)
+
+if __name__ == "__main__":
+ main()
diff --git a/input-methods/ibus-sulekha/engine/sulekha.py b/input-methods/ibus-sulekha/engine/sulekha.py
new file mode 100644
index 0000000..eca5de5
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/sulekha.py
@@ -0,0 +1,223 @@
+# vim:set et sts=4 sw=4:
+#
+# ibus-sulekha - The Sulekha engine for IBus
+#
+# Copyright(c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import gobject
+import pango
+import ibus
+import keymap
+import autocomplete
+from ibus import keysyms
+from ibus import modifier
+
+class SulekhaEngine(ibus.EngineBase):
+
+ def __init__(self, bus, object_path):
+ super(SulekhaEngine, self).__init__(bus, object_path)
+ self.__keymap = keymap.Keymap("swanalekha_ml_IN")
+ self.__input_method="en_US"
+ self.__autocomplete=autocomplete.Autocomplete()
+ self.__is_invalidate = False
+ self.__preedit_string = u""
+ self.__current_word = u""
+ self.__lookup_table = ibus.LookupTable()
+ self.__prop_list = ibus.PropList()
+ self.__prop_list.append(ibus.Property(u"test", icon = u"ibus-locale"))
+
+ def process_key_event(self, keyval, state):
+ # ignore key release events
+ is_press = ((state & modifier.RELEASE_MASK) == 0)
+ if not is_press:
+ return False
+
+ if self.__preedit_string:
+ if keyval == keysyms.Return:
+ if self.__lookup_table.get_number_of_candidates() > 0:
+ self.__commit_string(self.__lookup_table.get_current_candidate().text)
+ else:
+ self.__commit_string(self.__preedit_string)
+ return True
+ elif keyval == keysyms.Escape:
+ self.__preedit_string = u""
+ self.__update()
+ return True
+ elif keyval == keysyms.BackSpace:
+ self.__preedit_string = self.__preedit_string[:-1]
+ self.__current_word = self.__current_word[:-1]
+ self.__invalidate()
+ return True
+ elif keyval == keysyms.space:
+ self.__commit_string(self.__preedit_string)
+ previous_word=self.__current_word
+ self.__current_word = u""
+ self.__update_prediction(previous_word)
+ return False
+ elif keyval >= keysyms._1 and keyval <= keysyms._9:
+ index = keyval - keysyms._1
+ candidates = self.__lookup_table.get_candidates_in_current_page()
+ if index >= len(candidates):
+ return False
+ candidate = candidates[index].text
+ self.__commit_string(candidate)
+ return True
+ elif keyval == keysyms.Page_Up or keyval == keysyms.KP_Page_Up:
+ self.page_up()
+ return True
+ elif keyval == keysyms.Page_Down or keyval == keysyms.KP_Page_Down:
+ self.page_down()
+ return True
+ elif keyval == keysyms.Up:
+ self.cursor_up()
+ return True
+ elif keyval == keysyms.Down:
+ self.cursor_down()
+ return True
+ elif keyval == keysyms.Left or keyval == keysyms.Right:
+ return True
+ if keyval in xrange(keysyms.a, keysyms.z + 1) or \
+ keyval in xrange(keysyms.A, keysyms.Z + 1):
+ if state & (modifier.CONTROL_MASK | modifier.ALT_MASK) == 0:
+ current_string = self.__preedit_string
+ if self.__input_method == "en_US":
+ self.__preedit_string += unichr(keyval)
+ else:
+ if self.__keymap.get_candidates(current_string+unichr(keyval))== None:
+ current_list = self.__keymap.get_candidates(current_string)
+ self.__commit_string(current_list[0])
+ self.__preedit_string = unichr(keyval)
+ self.__update()
+ else:
+ self.__preedit_string += unichr(keyval)
+ self.__invalidate()
+ return True
+ else:
+ if keyval < 128 and self.__preedit_string:
+ self.__commit_string(self.__preedit_string)
+
+ return False
+
+ def __invalidate(self):
+ if self.__is_invalidate:
+ return
+ self.__is_invalidate = True
+ gobject.idle_add(self.__update, priority = gobject.PRIORITY_LOW)
+
+
+ def page_up(self):
+ if self.__lookup_table.page_up():
+ self.page_up_lookup_table()
+ return True
+ return False
+
+ def page_down(self):
+ if self.__lookup_table.page_down():
+ self.page_down_lookup_table()
+ return True
+ return False
+
+ def cursor_up(self):
+ if len(self.__lookup_table.get_candidates_in_current_page()) == 0:
+ return False
+ if self.__lookup_table.cursor_up():
+ self.update_lookup_table(self.__lookup_table, True, True)
+ curr_text=self.__lookup_table.get_current_candidate().text
+ self.update_preedit(curr_text, None, len(curr_text), True)
+ return True
+
+
+ def cursor_down(self):
+ if len(self.__lookup_table.get_candidates_in_current_page()) == 0:
+ return False
+ if self.__lookup_table.cursor_down():
+ self.update_lookup_table(self.__lookup_table, True, True)
+ curr_text=self.__lookup_table.get_current_candidate().text
+ self.update_preedit(curr_text, None, len(curr_text), True)
+ return True
+
+ def __commit_string(self, text):
+ self.commit_text(ibus.Text(text))
+ self.__current_word = self.__current_word + text
+ self.__preedit_string = u""
+ self.__update()
+
+ def __update(self):
+ preedit_len = len(self.__preedit_string)
+ attrs = ibus.AttrList()
+ self.__lookup_table.clean()
+ if self.__input_method == "en_US":
+ if preedit_len > 0 :
+ autocompletion_list = self.__get_autocompletion()
+ for text in autocompletion_list:
+ self.__lookup_table.append_candidate(ibus.Text(text))
+ else:
+ if preedit_len > 0:
+ attrs.append(ibus.AttributeForeground(0xff0000, 0, preedit_len))
+ candidate_list = self.__keymap.get_candidates(self.__preedit_string)
+ for text in candidate_list:
+ self.__lookup_table.append_candidate(ibus.Text(text))
+
+ self.update_auxiliary_text(ibus.Text(self.__preedit_string, attrs), preedit_len > 0)
+ attrs.append(ibus.AttributeUnderline(pango.UNDERLINE_SINGLE, 0, preedit_len))
+ self.update_preedit_text(ibus.Text(self.__preedit_string, attrs), preedit_len, preedit_len > 0)
+ self.__update_lookup_table()
+ self.__is_invalidate = False
+ def __update_prediction(self, previous_word):
+ #self.__lookup_table.clean()
+
+ #if previous_word:
+ # self.__lookup_table.append_candidate(ibus.Text(previous_word+"Prediction1"))
+ # self.__lookup_table.append_candidate(ibus.Text(previous_word+"Prediction2"))
+ #self.update_preedit_text(ibus.Text(self.__preedit_string, None), 0, False)
+ #self.__update_lookup_table()
+ #self.__is_invalidate = False
+
+ def __get_autocompletion(self):
+ if self.__input_method == "en_US":
+ if(len(self.__preedit_string)<3):
+ return [self.__current_word]
+ autocompletion_candidates=self.__autocomplete.get_autocompletion_suggestions(self.__preedit_string)
+ else:
+ if(len(self.__current_word)<3):
+ return [self.__current_word]
+ autocompletion_candidates=self.__autocomplete.get_autocompletion_suggestions(self.__current_word)
+ return autocompletion_candidates
+
+ def __update_lookup_table(self):
+ visible = self.__lookup_table.get_number_of_candidates() > 0
+ self.update_lookup_table(self.__lookup_table, visible)
+
+ def update_preedit(self, preedit_string, preedit_attrs, cursor_pos, visible):
+ if preedit_attrs == None:
+ preedit_attrs = ibus.AttrList()
+ attr = ibus.AttributeUnderline(ibus.ATTR_UNDERLINE_SINGLE, 0, len(preedit_string))
+ preedit_attrs.append(attr)
+ super(SulekhaEngine, self).update_preedit_text(ibus.Text(preedit_string, preedit_attrs), cursor_pos, visible)
+
+ def focus_in(self):
+ self.register_properties(self.__prop_list)
+
+ def focus_out(self):
+ pass
+
+ def reset(self):
+ pass
+
+ def property_activate(self, prop_name):
+ print "PropertyActivate(%s)" % prop_name
+
diff --git a/input-methods/ibus-sulekha/engine/sulekha.xml b/input-methods/ibus-sulekha/engine/sulekha.xml
new file mode 100644
index 0000000..0cd5ff2
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/sulekha.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- filename: sulekha.xml -->
+<component>
+ <name>org.freedesktop.IBus.Sulekha</name>
+ <description>Sulekha Component</description>
+ <exec>/usr/libexec/ibus-engine-sulekha --ibus</exec>
+ <version>1.1.0.20090501</version>
+ <author>Santhosh Thottingal &lt;santhosh.thottingal@gmail.com&gt;</author>
+ <license>GPL</license>
+ <homepage>http://code.google.com/p/ibus</homepage>
+ <textdomain>ibus-sulekha</textdomain>
+
+ <!-- for static engines -->
+ <engines>
+ <engine>
+ <name>sulekha</name>
+ <language>ml_IN</language>
+ <license>GPL</license>
+ <author>Santhosh Thottingal &lt;santhosh.thottingal@gmail.com&gt;</author>
+ <icon>/usr/share/ibus-sulekha/icons/ibus-sulekha.svg</icon>
+ <layout>us</layout>
+ <longname>Sulekha</longname>
+ <description>Sulekha Input Method</description>
+ <rank>99</rank>
+ </engine>
+ </engines>
+</component>
diff --git a/input-methods/ibus-sulekha/engine/sulekha.xml.in b/input-methods/ibus-sulekha/engine/sulekha.xml.in
new file mode 100644
index 0000000..0165946
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/sulekha.xml.in
@@ -0,0 +1,27 @@
+<?xml version=\"1.0\" encoding=\"utf-8\"?>
+<!-- filename: sulekha.xml -->
+<component>
+ <name>org.freedesktop.IBus.Sulekha</name>
+ <description>Sulekha Component</description>
+ <exec>${libexecdir}/ibus-engine-sulekha --ibus</exec>
+ <version>1.1.0.20090501</version>
+ <author>Santhosh Thottingal &lt;santhosh.thottingal@gmail.com&gt;</author>
+ <license>GPL</license>
+ <homepage>http://code.google.com/p/ibus</homepage>
+ <textdomain>ibus-sulekha</textdomain>
+
+ <!-- for static engines -->
+ <engines>
+ <engine>
+ <name>sulekha</name>
+ <language>ml_IN</language>
+ <license>GPL</license>
+ <author>Santhosh Thottingal &lt;santhosh.thottingal@gmail.com&gt;</author>
+ <icon>${pkgdatadir}/icons/ibus-sulekha.svg</icon>
+ <layout>us</layout>
+ <longname>Sulekha</longname>
+ <description>Sulekha Input Method</description>
+ <rank>99</rank>
+ </engine>
+ </engines>
+</component>
diff --git a/input-methods/ibus-sulekha/engine/sulekha.xml.in.in b/input-methods/ibus-sulekha/engine/sulekha.xml.in.in
new file mode 100644
index 0000000..e6ed112
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/sulekha.xml.in.in
@@ -0,0 +1,27 @@
+<?xml version=\"1.0\" encoding=\"utf-8\"?>
+<!-- filename: sulekha.xml -->
+<component>
+ <name>org.freedesktop.IBus.Sulekha</name>
+ <description>Sulekha Component</description>
+ <exec>${libexecdir}/ibus-engine-sulekha --ibus</exec>
+ <version>@VERSION@</version>
+ <author>Santhosh Thottingal &lt;santhosh.thottingal@gmail.com&gt;</author>
+ <license>GPL</license>
+ <homepage>http://code.google.com/p/ibus</homepage>
+ <textdomain>ibus-sulekha</textdomain>
+
+ <!-- for static engines -->
+ <engines>
+ <engine>
+ <name>sulekha</name>
+ <language>ml_IN</language>
+ <license>GPL</license>
+ <author>Santhosh Thottingal &lt;santhosh.thottingal@gmail.com&gt;</author>
+ <icon>${pkgdatadir}/icons/ibus-sulekha.svg</icon>
+ <layout>us</layout>
+ <longname>Sulekha</longname>
+ <description>Sulekha Input Method</description>
+ <rank>99</rank>
+ </engine>
+ </engines>
+</component>
diff --git a/input-methods/ibus-sulekha/engine/trainer.py b/input-methods/ibus-sulekha/engine/trainer.py
new file mode 100644
index 0000000..6adba41
--- /dev/null
+++ b/input-methods/ibus-sulekha/engine/trainer.py
@@ -0,0 +1,133 @@
+# vim:set et sts=4 sw=4:
+#
+# ibus-sulekha - The Sulekha engine for IBus
+#
+# Copyright(c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import sqlite3
+import re
+import codecs
+import getopt
+import sys
+tz = re.compile('-[0-2]\d:00$')
+class Trainer():
+ def __init__(self, language="en_US"):
+ self.__connection = sqlite3.connect('sulekha.db')
+ # Create a cursor object to do the interacting.
+ self.__cursor = self.__connection.cursor()
+ self.__language=language
+
+ def get_frequency(self, string):
+ freq=0
+ records = self.__cursor.execute("select frequency \
+ from words_" + self.__language + \
+ " where \
+ language = ? and word = ?" , (self.__language, string))
+ #print records.fetchall()
+ for record in records :
+ freq = int(record[0])
+ return freq
+
+ def __insert_word(self, word):
+ self.__cursor.execute("INSERT INTO words_"+self.__language + \
+ " (id, word, frequency, language) \
+ VALUES(NULL, ? , 1, ?)" , (word, self.__language))
+ print ">* "+ word + " ("+ self.__language + " : 0)"
+ self.__connection .commit()
+ def __update_word(self, word, frequency):
+ self.__cursor.execute("UPDATE words_"+self.__language + \
+ " set frequency= ?, \
+ language = ? where word = ? " , (frequency, self.__language, word))
+ print "> "+ word + " ("+ self.__language + " : ",frequency , ")"
+ self.__connection .commit()
+ def learn_from_file(self, file_name):
+ corpus_file = codecs. open(file_name,encoding='utf-8', errors='ignore')
+ while 1:
+ text=corpus_file.readline()
+ if text=="":
+ break
+ text = unicode(text)
+ words=text.split()
+ for word in words:
+ word=word.strip()
+ self.add_word(word)
+
+ def create_tables(self, recreate):
+ try:
+ self.__cursor.execute("select count(word) from words_"+self.__language )
+ except:
+ recreate=True
+ if recreate:
+ print "Creating tables"
+ self.__cursor.execute("drop TABLE words_"+self.__language)
+ self.__cursor.execute("CREATE TABLE words_"+self.__language + \
+ " ( id INTEGER PRIMARY KEY, \
+ word VARCHAR(100), \
+ frequency NUMERIC(8), \
+ language VARCHAR(10) )")
+ self.__connection .commit()
+
+ def add_word(self, word):
+ freq=self.get_frequency(word)
+ if(freq==0):
+ self.__insert_word(word)
+ else:
+ freq= freq+1
+ self.__update_word(word, freq)
+ def set_langauge(self, language) :
+ self.language=language
+ def close(self):
+ self.__connection .close()
+ self.__curser .close()
+def print_help(out, v = 0):
+ print >> out, "-l, --lang language."
+ print >> out, "-i, --input-file input text file."
+ print >> out, "-h, --help show this message."
+ print >> out, "-r, --recreate recreate the database"
+ sys.exit(v)
+
+
+if __name__ == '__main__':
+ shortopt = "hl:i:r"
+ longopt = ["help", "lang", "input-file", "recreate"]
+ language="en_US"
+ input_file="/usr/share/dict/words"
+ recreate=False
+ opts=None
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], shortopt, longopt)
+ except getopt.GetoptError, err:
+ print_help(sys.stderr, 1)
+ if len(opts)==0:
+ print_help(sys.stderr, 1)
+
+ for o, a in opts:
+ if o in("-h", "--help"):
+ print_help(sys.stdout)
+ elif o in ("-l", "--lang"):
+ language = a
+ elif o in ("-i", "--input-file"):
+ input_file = a
+ elif o in ("-r", "--recreate"):
+ recreate=True
+ else:
+ print >> sys.stderr, "Unknown argument: %s" % o
+ print_help(sys.stderr, 1)
+ trainer = Trainer(language)
+ trainer.create_tables(recreate)
+ trainer.learn_from_file (input_file)
+
diff --git a/input-methods/ibus-sulekha/icons/Makefile.am b/input-methods/ibus-sulekha/icons/Makefile.am
new file mode 100644
index 0000000..f7b60f9
--- /dev/null
+++ b/input-methods/ibus-sulekha/icons/Makefile.am
@@ -0,0 +1,29 @@
+# vim:set noet ts=4:
+#
+# ibus-sulekha - The Sulekha engine for IBus
+#
+# Copyright(c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+icons_DATA = \
+ ibus-sulekha.svg
+ $(NULL)
+
+iconsdir = $(pkgdatadir)/icons
+
+EXTRA_DIST = \
+ $(icons_DATA) \
+ $(NULL)
diff --git a/input-methods/ibus-sulekha/icons/ibus-sulekha.svg b/input-methods/ibus-sulekha/icons/ibus-sulekha.svg
new file mode 100644
index 0000000..928985b
--- /dev/null
+++ b/input-methods/ibus-sulekha/icons/ibus-sulekha.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2383">
+ <defs
+ id="defs2385">
+ <linearGradient
+ id="linearGradient3237">
+ <stop
+ id="stop3239"
+ style="stop-color:#256fef;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3241"
+ style="stop-color:#256fef;stop-opacity:0"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3177">
+ <stop
+ id="stop3179"
+ style="stop-color:#0000fb;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3251"
+ style="stop-color:#0000fb;stop-opacity:0.49803922"
+ offset="0.83333331" />
+ <stop
+ id="stop3181"
+ style="stop-color:#0000fb;stop-opacity:0"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="5.5772877"
+ y1="22.953403"
+ x2="42.784321"
+ y2="22.953403"
+ id="linearGradient3187"
+ xlink:href="#linearGradient3177"
+ gradientUnits="userSpaceOnUse"
+ spreadMethod="pad" />
+ <linearGradient
+ x1="5.0772877"
+ y1="22.953403"
+ x2="43.284321"
+ y2="22.953403"
+ id="linearGradient3243"
+ xlink:href="#linearGradient3237"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <g
+ id="layer1"
+ style="opacity:1">
+ <flowRoot
+ id="flowRoot2393"
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"><flowRegion
+ id="flowRegion2395"><rect
+ width="42.857143"
+ height="44.285713"
+ x="2.5714285"
+ y="2"
+ id="rect2397" /></flowRegion><flowPara
+ id="flowPara2399">เดฎเดฎ</flowPara></flowRoot> <text
+ x="-0.42857155"
+ y="42.142857"
+ id="text2401"
+ xml:space="preserve"
+ style="font-size:100px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#2682ff;fill-opacity:1;stroke:#2331ef;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
+ x="-0.42857155"
+ y="42.142857"
+ id="tspan2403"
+ style="fill:#2682ff;fill-opacity:1;stroke:#2331ef;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">เดฎ</tspan></text>
+ </g>
+</svg>
diff --git a/input-methods/ibus-sulekha/icons/sulekha.png b/input-methods/ibus-sulekha/icons/sulekha.png
new file mode 100644
index 0000000..facc945
--- /dev/null
+++ b/input-methods/ibus-sulekha/icons/sulekha.png
Binary files differ