19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.commands.ime; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.view.IInputMethodManager; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ServiceManager; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.PrintStreamPrinter; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Printer; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.inputmethod.InputMethodInfo; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic final class Ime { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IInputMethodManager mImm; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String[] mArgs; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mNextArg; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mCurArgData; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final String IMM_NOT_RUNNING_ERR = 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Error: Could not access the Input Method Manager. Is the system running?"; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void main(String[] args) { 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Ime().run(args); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void run(String[] args) { 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (args.length < 1) { 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project showUsage(); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mImm = IInputMethodManager.Stub.asInterface(ServiceManager.getService("input_method")); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mImm == null) { 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(IMM_NOT_RUNNING_ERR); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgs = args; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String op = args[0]; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextArg = 1; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ("list".equals(op)) { 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project runList(); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ("enable".equals(op)) { 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project runSetEnabled(true); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ("disable".equals(op)) { 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project runSetEnabled(false); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ("set".equals(op)) { 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project runSet(); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (op != null) { 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("Error: unknown command '" + op + "'"); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project showUsage(); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Execute the list sub-command. 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void runList() { 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String opt; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean all = false; 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean brief = false; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while ((opt=nextOption()) != null) { 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (opt.equals("-a")) { 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project all = true; 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (opt.equals("-s")) { 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project brief = true; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("Error: Unknown option: " + opt); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project showUsage(); 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<InputMethodInfo> methods; 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!all) { 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project methods = mImm.getEnabledInputMethodList(); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(e.toString()); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(IMM_NOT_RUNNING_ERR); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project methods = mImm.getInputMethodList(); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(e.toString()); 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(IMM_NOT_RUNNING_ERR); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (methods != null) { 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Printer pr = new PrintStreamPrinter(System.out); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<methods.size(); i++) { 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputMethodInfo imi = methods.get(i); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (brief) { 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println(imi.getId()); 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println(imi.getId() + ":"); 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project imi.dump(pr, " "); 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void runSetEnabled(boolean state) { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String id = nextArg(); 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (id == null) { 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("Error: no input method ID specified"); 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project showUsage(); 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean res = mImm.setInputMethodEnabled(id, state); 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (state) { 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("Input method " + id + ": " 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (res ? "already enabled" : "now enabled")); 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("Input method " + id + ": " 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (res ? "now disabled" : "already disabled")); 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IllegalArgumentException e) { 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("Error: " + e.getMessage()); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(e.toString()); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(IMM_NOT_RUNNING_ERR); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void runSet() { 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String id = nextArg(); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (id == null) { 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("Error: no input method ID specified"); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project showUsage(); 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mImm.setInputMethod(null, id); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("Input method " + id + " selected"); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IllegalArgumentException e) { 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("Error: " + e.getMessage()); 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(e.toString()); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(IMM_NOT_RUNNING_ERR); 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String nextOption() { 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextArg >= mArgs.length) { 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String arg = mArgs[mNextArg]; 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!arg.startsWith("-")) { 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextArg++; 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (arg.equals("--")) { 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (arg.length() > 1 && arg.charAt(1) != '-') { 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (arg.length() > 2) { 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCurArgData = arg.substring(2); 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return arg.substring(0, 2); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCurArgData = null; 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return arg; 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCurArgData = null; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return arg; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String nextOptionData() { 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mCurArgData != null) { 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mCurArgData; 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextArg >= mArgs.length) { 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String data = mArgs[mNextArg]; 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextArg++; 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return data; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String nextArg() { 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNextArg >= mArgs.length) { 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String arg = mArgs[mNextArg]; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNextArg++; 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return arg; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static void showUsage() { 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("usage: ime list [-a] [-s]"); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(" ime enable ID"); 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(" ime disable ID"); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(" ime set ID"); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(""); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("The list command prints all enabled input methods. Use"); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("the -a option to see all input methods. Use"); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("the -s option to see only a single summary line of each."); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(""); 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("The enable command allows the given input method ID to be used."); 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(""); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("The disable command disallows the given input method ID from use."); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println(""); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.err.println("The set command switches to the given input method ID."); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 249