forked from extern/Unexpected-Keyboard
Fix del key and keyEvent keys
This commit is contained in:
parent
e9df9bc299
commit
b32f2ce3f3
@ -32,41 +32,43 @@ public class Keyboard2 extends InputMethodService
|
|||||||
if (getCurrentInputConnection() == null)
|
if (getCurrentInputConnection() == null)
|
||||||
return ;
|
return ;
|
||||||
if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
|
if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
|
||||||
{
|
handleMetaKeyUp(key, 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));
|
|
||||||
}
|
|
||||||
else if (key.getEventCode() == KeyEvent.KEYCODE_DEL)
|
else if (key.getEventCode() == KeyEvent.KEYCODE_DEL)
|
||||||
{
|
handleDelKey(1, 0);
|
||||||
getCurrentInputConnection().deleteSurroundingText(1, 0);
|
|
||||||
}
|
|
||||||
else if (key.getEventCode() == KeyEvent.KEYCODE_FORWARD_DEL)
|
else if (key.getEventCode() == KeyEvent.KEYCODE_FORWARD_DEL)
|
||||||
{
|
handleDelKey(0, 1);
|
||||||
getCurrentInputConnection().deleteSurroundingText(0, 1);
|
|
||||||
}
|
|
||||||
else if (key.getChar(false) == KeyValue.CHAR_NONE && key.getEventCode() != KeyValue.EVENT_NONE)
|
else if (key.getChar(false) == KeyValue.CHAR_NONE && key.getEventCode() != KeyValue.EVENT_NONE)
|
||||||
{
|
handleMetaKeyUp(key, flags);
|
||||||
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)
|
else if (key.getChar(false) != KeyValue.CHAR_NONE)
|
||||||
{
|
|
||||||
sendKeyChar(key.getChar((flags & KeyValue.FLAG_SHIFT) != 0));
|
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)
|
public static void log(String str)
|
||||||
|
@ -16,7 +16,7 @@ public class Keyboard2View extends View
|
|||||||
{
|
{
|
||||||
private static final float KEY_PER_ROW = 10;
|
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_LONG = 25;
|
||||||
private static final long VIBRATE_MIN_INTERVAL = 100;
|
private static final long VIBRATE_MIN_INTERVAL = 100;
|
||||||
|
Loading…
Reference in New Issue
Block a user