Fix del key and keyEvent keys

This commit is contained in:
juloo 2015-08-03 15:58:13 +02:00
parent e9df9bc299
commit b32f2ce3f3
2 changed files with 33 additions and 31 deletions

View File

@ -32,41 +32,43 @@ public class Keyboard2 extends InputMethodService
if (getCurrentInputConnection() == null)
return ;
if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
{
int metaState = 0;
KeyEvent event;
if (key.getEventCode() == KeyValue.EVENT_NONE)
return ;
if ((flags & KeyValue.FLAG_CTRL) != 0)
metaState |= KeyEvent.META_CTRL_LEFT_ON | KeyEvent.META_CTRL_ON;
if ((flags & KeyValue.FLAG_ALT) != 0)
metaState |= KeyEvent.META_ALT_LEFT_ON | KeyEvent.META_ALT_ON;
if ((flags & KeyValue.FLAG_SHIFT) != 0)
metaState |= KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON;
event = new KeyEvent(1, 1, KeyEvent.ACTION_DOWN, key.getEventCode(), 1, metaState);
getCurrentInputConnection().sendKeyEvent(event);
getCurrentInputConnection().sendKeyEvent(KeyEvent.changeAction(event, KeyEvent.ACTION_UP));
}
handleMetaKeyUp(key, flags);
else if (key.getEventCode() == KeyEvent.KEYCODE_DEL)
{
getCurrentInputConnection().deleteSurroundingText(1, 0);
}
handleDelKey(1, 0);
else if (key.getEventCode() == KeyEvent.KEYCODE_FORWARD_DEL)
{
getCurrentInputConnection().deleteSurroundingText(0, 1);
}
handleDelKey(0, 1);
else if (key.getChar(false) == KeyValue.CHAR_NONE && key.getEventCode() != KeyValue.EVENT_NONE)
{
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, key.getEventCode());
getCurrentInputConnection().sendKeyEvent(event);
getCurrentInputConnection().sendKeyEvent(KeyEvent.changeAction(event, KeyEvent.ACTION_UP));
}
handleMetaKeyUp(key, flags);
else if (key.getChar(false) != KeyValue.CHAR_NONE)
{
sendKeyChar(key.getChar((flags & KeyValue.FLAG_SHIFT) != 0));
}
}
private void handleDelKey(int before, int after)
{
CharSequence selection = getCurrentInputConnection().getSelectedText(0);
if (selection != null && selection.length() > 0)
getCurrentInputConnection().commitText("", 1);
else
getCurrentInputConnection().deleteSurroundingText(before, after);
}
private void handleMetaKeyUp(KeyValue key, int flags)
{
int metaState = 0;
KeyEvent event;
if (key.getEventCode() == KeyValue.EVENT_NONE)
return ;
if ((flags & KeyValue.FLAG_CTRL) != 0)
metaState |= KeyEvent.META_CTRL_LEFT_ON | KeyEvent.META_CTRL_ON;
if ((flags & KeyValue.FLAG_ALT) != 0)
metaState |= KeyEvent.META_ALT_LEFT_ON | KeyEvent.META_ALT_ON;
if ((flags & KeyValue.FLAG_SHIFT) != 0)
metaState |= KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON;
event = new KeyEvent(1, 1, KeyEvent.ACTION_DOWN, key.getEventCode(), 1, metaState);
getCurrentInputConnection().sendKeyEvent(event);
getCurrentInputConnection().sendKeyEvent(KeyEvent.changeAction(event, KeyEvent.ACTION_UP));
}
public static void log(String str)

View File

@ -16,7 +16,7 @@ public class Keyboard2View extends View
{
private static final float KEY_PER_ROW = 10;
private static final float SUB_VALUE_DIST = 6f;
private static final float SUB_VALUE_DIST = 7f;
private static final long VIBRATE_LONG = 25;
private static final long VIBRATE_MIN_INTERVAL = 100;