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,6 +32,28 @@ public class Keyboard2 extends InputMethodService
if (getCurrentInputConnection() == null)
return ;
if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
handleMetaKeyUp(key, flags);
else if (key.getEventCode() == KeyEvent.KEYCODE_DEL)
handleDelKey(1, 0);
else if (key.getEventCode() == KeyEvent.KEYCODE_FORWARD_DEL)
handleDelKey(0, 1);
else if (key.getChar(false) == KeyValue.CHAR_NONE && key.getEventCode() != KeyValue.EVENT_NONE)
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;
@ -48,26 +70,6 @@ public class Keyboard2 extends InputMethodService
getCurrentInputConnection().sendKeyEvent(event);
getCurrentInputConnection().sendKeyEvent(KeyEvent.changeAction(event, KeyEvent.ACTION_UP));
}
else if (key.getEventCode() == KeyEvent.KEYCODE_DEL)
{
getCurrentInputConnection().deleteSurroundingText(1, 0);
}
else if (key.getEventCode() == KeyEvent.KEYCODE_FORWARD_DEL)
{
getCurrentInputConnection().deleteSurroundingText(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));
}
else if (key.getChar(false) != KeyValue.CHAR_NONE)
{
sendKeyChar(key.getChar((flags & KeyValue.FLAG_SHIFT) != 0));
}
}
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;