<!--
 Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

 This code is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License version 2 only, as
 published by the Free Software Foundation.  Oracle designates this
 particular file as subject to the "Classpath" exception as provided
 by Oracle in the LICENSE file that accompanied this code.

 This code 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
 version 2 for more details (a copy is included in the LICENSE file that
 accompanied this code).

 You should have received a copy of the GNU General Public License version
 2 along with this work; if not, write to the Free Software Foundation,
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 or visit www.oracle.com if you need additional information or have any
 questions.
-->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
   <META NAME=GENERATOR CONTENT="Claris Home Page 2.0">
   <X-SAS-WINDOW TOP=42 BOTTOM=589 LEFT=4 RIGHT=534>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

<P>Provides classes and interfaces for the input method framework.
This package enables text editing components to receive text input
through input methods. Input methods are software components that let
the user enter text in ways other than simple typing on a keyboard.
They are commonly used to enter Japanese, Chinese, or Korean -
languages using thousands of different characters - on keyboards with
far fewer keys. However, the framework also supports input methods
for other languages and the use of entirely different input
mechanisms, such as handwriting or speech recognition.</P>

<H2>Package Specification</H2>

<UL>
   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/spec.html">Input Method
   Framework Specification</A></B>
   
   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/api-reference.html">Input
   Method Client API Reference</A></B>
</UL>

<H2>Related Documentation</H2>

<P>For overviews, tutorials, examples, guides, and tool
documentation, please see:</P>

<UL>
   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/overview.html">Input Method
   Framework Overview</A></B>
   
   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/api-tutorial.html">Input
   Method Client API Tutorial</A></B>
</UL>

@since 1.2
</BODY>
</HTML>
