From b32f2ce3f370244c98178f140d38e5b6f0ac2220 Mon Sep 17 00:00:00 2001 From: juloo Date: Mon, 3 Aug 2015 15:58:13 +0200 Subject: Fix del key and keyEvent keys --- srcs/juloo.keyboard2/Keyboard2.java | 62 +++++++++++++++++---------------- srcs/juloo.keyboard2/Keyboard2View.java | 2 +- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java index d02b239..30ef5fc 100644 --- a/srcs/juloo.keyboard2/Keyboard2.java +++ b/srcs/juloo.keyboard2/Keyboard2.java @@ -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) diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index f405850..b30e955 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -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; -- cgit v1.2.3