summaryrefslogtreecommitdiffstats
path: root/cmds/ime/src
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/ime/src')
-rw-r--r--cmds/ime/src/com/android/commands/ime/Ime.java248
1 files changed, 248 insertions, 0 deletions
diff --git a/cmds/ime/src/com/android/commands/ime/Ime.java b/cmds/ime/src/com/android/commands/ime/Ime.java
new file mode 100644
index 0000000..72a0af6
--- /dev/null
+++ b/cmds/ime/src/com/android/commands/ime/Ime.java
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.commands.ime;
+
+import com.android.internal.view.IInputMethodManager;
+
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.util.PrintStreamPrinter;
+import android.util.Printer;
+import android.view.inputmethod.InputMethodInfo;
+
+import java.util.List;
+
+public final class Ime {
+ IInputMethodManager mImm;
+
+ private String[] mArgs;
+ private int mNextArg;
+ private String mCurArgData;
+
+ private static final String IMM_NOT_RUNNING_ERR =
+ "Error: Could not access the Input Method Manager. Is the system running?";
+
+ public static void main(String[] args) {
+ new Ime().run(args);
+ }
+
+ public void run(String[] args) {
+ if (args.length < 1) {
+ showUsage();
+ return;
+ }
+
+ mImm = IInputMethodManager.Stub.asInterface(ServiceManager.getService("input_method"));
+ if (mImm == null) {
+ System.err.println(IMM_NOT_RUNNING_ERR);
+ return;
+ }
+
+ mArgs = args;
+ String op = args[0];
+ mNextArg = 1;
+
+ if ("list".equals(op)) {
+ runList();
+ return;
+ }
+
+ if ("enable".equals(op)) {
+ runSetEnabled(true);
+ return;
+ }
+
+ if ("disable".equals(op)) {
+ runSetEnabled(false);
+ return;
+ }
+
+ if ("set".equals(op)) {
+ runSet();
+ return;
+ }
+
+ if (op != null) {
+ System.err.println("Error: unknown command '" + op + "'");
+ }
+ showUsage();
+ }
+
+ /**
+ * Execute the list sub-command.
+ */
+ private void runList() {
+ String opt;
+ boolean all = false;
+ boolean brief = false;
+ while ((opt=nextOption()) != null) {
+ if (opt.equals("-a")) {
+ all = true;
+ } else if (opt.equals("-s")) {
+ brief = true;
+ } else {
+ System.err.println("Error: Unknown option: " + opt);
+ showUsage();
+ return;
+ }
+ }
+
+
+ List<InputMethodInfo> methods;
+ if (!all) {
+ try {
+ methods = mImm.getEnabledInputMethodList();
+ } catch (RemoteException e) {
+ System.err.println(e.toString());
+ System.err.println(IMM_NOT_RUNNING_ERR);
+ return;
+ }
+ } else {
+ try {
+ methods = mImm.getInputMethodList();
+ } catch (RemoteException e) {
+ System.err.println(e.toString());
+ System.err.println(IMM_NOT_RUNNING_ERR);
+ return;
+ }
+ }
+
+ if (methods != null) {
+ Printer pr = new PrintStreamPrinter(System.out);
+ for (int i=0; i<methods.size(); i++) {
+ InputMethodInfo imi = methods.get(i);
+ if (brief) {
+ System.out.println(imi.getId());
+ } else {
+ System.out.println(imi.getId() + ":");
+ imi.dump(pr, " ");
+ }
+ }
+ }
+ }
+
+ private void runSetEnabled(boolean state) {
+ String id = nextArg();
+ if (id == null) {
+ System.err.println("Error: no input method ID specified");
+ showUsage();
+ return;
+ }
+
+ try {
+ boolean res = mImm.setInputMethodEnabled(id, state);
+ if (state) {
+ System.out.println("Input method " + id + ": "
+ + (res ? "already enabled" : "now enabled"));
+ } else {
+ System.out.println("Input method " + id + ": "
+ + (res ? "now disabled" : "already disabled"));
+ }
+ } catch (IllegalArgumentException e) {
+ System.err.println("Error: " + e.getMessage());
+ return;
+ } catch (RemoteException e) {
+ System.err.println(e.toString());
+ System.err.println(IMM_NOT_RUNNING_ERR);
+ return;
+ }
+ }
+
+ private void runSet() {
+ String id = nextArg();
+ if (id == null) {
+ System.err.println("Error: no input method ID specified");
+ showUsage();
+ return;
+ }
+
+ try {
+ mImm.setInputMethod(null, id);
+ System.out.println("Input method " + id + " selected");
+ } catch (IllegalArgumentException e) {
+ System.err.println("Error: " + e.getMessage());
+ return;
+ } catch (RemoteException e) {
+ System.err.println(e.toString());
+ System.err.println(IMM_NOT_RUNNING_ERR);
+ return;
+ }
+ }
+
+ private String nextOption() {
+ if (mNextArg >= mArgs.length) {
+ return null;
+ }
+ String arg = mArgs[mNextArg];
+ if (!arg.startsWith("-")) {
+ return null;
+ }
+ mNextArg++;
+ if (arg.equals("--")) {
+ return null;
+ }
+ if (arg.length() > 1 && arg.charAt(1) != '-') {
+ if (arg.length() > 2) {
+ mCurArgData = arg.substring(2);
+ return arg.substring(0, 2);
+ } else {
+ mCurArgData = null;
+ return arg;
+ }
+ }
+ mCurArgData = null;
+ return arg;
+ }
+
+ private String nextOptionData() {
+ if (mCurArgData != null) {
+ return mCurArgData;
+ }
+ if (mNextArg >= mArgs.length) {
+ return null;
+ }
+ String data = mArgs[mNextArg];
+ mNextArg++;
+ return data;
+ }
+
+ private String nextArg() {
+ if (mNextArg >= mArgs.length) {
+ return null;
+ }
+ String arg = mArgs[mNextArg];
+ mNextArg++;
+ return arg;
+ }
+
+ private static void showUsage() {
+ System.err.println("usage: ime list [-a] [-s]");
+ System.err.println(" ime enable ID");
+ System.err.println(" ime disable ID");
+ System.err.println(" ime set ID");
+ System.err.println("");
+ System.err.println("The list command prints all enabled input methods. Use");
+ System.err.println("the -a option to see all input methods. Use");
+ System.err.println("the -s option to see only a single summary line of each.");
+ System.err.println("");
+ System.err.println("The enable command allows the given input method ID to be used.");
+ System.err.println("");
+ System.err.println("The disable command disallows the given input method ID from use.");
+ System.err.println("");
+ System.err.println("The set command switches to the given input method ID.");
+ }
+}