InjectionFramework/src/blackberry/injection/KeyInjector.java
package blackberry.injection;
import net.rim.device.api.system.Application;
import net.rim.device.api.system.EventInjector;
import net.rim.device.api.system.EventInjector.KeyCodeEvent;
import net.rim.device.api.system.EventInjector.TrackwheelEvent;
import net.rim.device.api.system.KeypadListener;
import net.rim.device.api.ui.Keypad;
import blackberry.debug.Debug;
import blackberry.debug.DebugLevel;
public class KeyInjector {
//#ifdef DEBUG
private static Debug debug = new Debug("KeyInjector", DebugLevel.VERBOSE);
public static void trackBallUp(final int steps) {
debug.trace("trackBallUp: " + steps);
Application.getApplication().invokeLater(new Runnable() {
public void run() {
trackBallRaw(steps, true);
}
});
}
public static void trackBallRaw(int steps, boolean up) {
int l;
if (up)
l = TrackwheelEvent.THUMB_ROLL_UP;
else
l = TrackwheelEvent.THUMB_ROLL_DOWN;
final TrackwheelEvent pressKey = new EventInjector.TrackwheelEvent(l,
steps, KeypadListener.STATUS_NOT_FROM_KEYPAD);
pressKey.post();
}
public static void trackBallDown(final int steps) {
debug.trace("trackBallDown: " + steps);
Application.getApplication().invokeLater(new Runnable() {
public void run() {
trackBallRaw(steps, false);
}
});
}
public static void trackBallClick() {
debug.trace("trackBallClick");
Application.getApplication().invokeLater(new Runnable() {
public void run() {
trackBallRawClick();
}
});
}
// #endif
/**
* Press key.
*
* @param key
* the key
*/
public static void pressKey(final int key) {
Application.getApplication().invokeLater(new Runnable() {
public void run() {
pressRawKey(key);
}
});
}
public static void pressRawKeyCode(int key) {
int l = Keypad.KEY_SPACE;
int m = KeypadListener.STATUS_NOT_FROM_KEYPAD;
// Keypad.KEY_SEND
final EventInjector.KeyCodeEvent pressKey = new EventInjector.KeyCodeEvent(
KeyCodeEvent.KEY_DOWN, (char) key,
KeypadListener.STATUS_NOT_FROM_KEYPAD);
final EventInjector.KeyCodeEvent releaseKey = new EventInjector.KeyCodeEvent(
KeyCodeEvent.KEY_UP, (char) key,
KeypadListener.STATUS_NOT_FROM_KEYPAD);
pressKey.post();
releaseKey.post();
}
public static void pressRawKey(int key) {
int l = Keypad.KEY_SPACE;
int m = KeypadListener.STATUS_NOT_FROM_KEYPAD;
// Keypad.KEY_SEND
final EventInjector.KeyEvent pressKey = new EventInjector.KeyEvent(
KeyCodeEvent.KEY_DOWN, (char) key,
KeypadListener.STATUS_NOT_FROM_KEYPAD);
final EventInjector.KeyEvent releaseKey = new EventInjector.KeyEvent(
KeyCodeEvent.KEY_UP, (char) key,
KeypadListener.STATUS_NOT_FROM_KEYPAD);
pressKey.post();
releaseKey.post();
}
public static void trackBallRawClick() {
int l = TrackwheelEvent.THUMB_CLICK;
final TrackwheelEvent pressKey = new EventInjector.TrackwheelEvent(l,
1, KeypadListener.STATUS_NOT_FROM_KEYPAD);
pressKey.post();
}
/* public static void touchRawClick(int x, int y) {
final EventInjector.TouchEvent pressKey = new EventInjector.TouchEvent(
EventInjector.TouchEvent.CLICK, x, y, 0, 0, 100);
pressKey.post();
}*/
}