Inputpublic class Input extends Object Command that sends key events to the device, either by their keycode, or by
desired character output. |
Methods Summary |
---|
public static void | main(java.lang.String[] args)Command-line entry point.
(new Input()).run(args);
| private void | run(java.lang.String[] args)
if (args.length < 1) {
showUsage();
return;
}
String command = args[0];
if (command.equals("text")) {
sendText(args[1]);
} else if (command.equals("keyevent")) {
sendKeyEvent(args[1]);
} else if (command.equals("motionevent")) {
System.err.println("Error: motionevent not yet supported.");
return;
}
else {
System.err.println("Error: Unknown command: " + command);
showUsage();
return;
}
| private void | sendKeyEvent(java.lang.String event)Send a single key event.
int eventCode = Integer.parseInt(event);
long now = SystemClock.uptimeMillis();
Log.i("SendKeyEvent", event);
try {
KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, eventCode, 0);
KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, eventCode, 0);
(IWindowManager.Stub
.asInterface(ServiceManager.getService("window")))
.injectKeyEvent(down, true);
(IWindowManager.Stub
.asInterface(ServiceManager.getService("window")))
.injectKeyEvent(up, true);
} catch (RemoteException e) {
Log.i("Input", "DeadOjbectException");
}
| private void | sendMotionEvent(long downTime, int action, float x, float y, float pressure, float size)
| private void | sendText(java.lang.String text)Convert the characters of string text into key event's and send to
device.
StringBuffer buff = new StringBuffer(text);
boolean escapeFlag = false;
for (int i=0; i<buff.length(); i++) {
if (escapeFlag) {
escapeFlag = false;
if (buff.charAt(i) == 's") {
buff.setCharAt(i, ' ");
buff.deleteCharAt(--i);
}
}
if (buff.charAt(i) == '%") {
escapeFlag = true;
}
}
char[] chars = buff.toString().toCharArray();
KeyCharacterMap mKeyCharacterMap = KeyCharacterMap.
load(KeyCharacterMap.BUILT_IN_KEYBOARD);
KeyEvent[] events = mKeyCharacterMap.getEvents(chars);
for(int i = 0; i < events.length; i++) {
KeyEvent event = events[i];
Log.i("SendKeyEvent", Integer.toString(event.getKeyCode()));
try {
(IWindowManager.Stub
.asInterface(ServiceManager.getService("window")))
.injectKeyEvent(event, true);
} catch (RemoteException e) {
Log.i("Input", "DeadOjbectException");
}
}
| private void | showUsage()
System.err.println("usage: input [text|keyevent]");
System.err.println(" input text <string>");
System.err.println(" input keyevent <event_code>");
|
|