diff options
Diffstat (limited to 'srcs/juloo.keyboard2')
| -rw-r--r-- | srcs/juloo.keyboard2/Config.java | 2 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/Pointers.java | 66 |
2 files changed, 34 insertions, 34 deletions
diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java index 8b72bc7..7570728 100644 --- a/srcs/juloo.keyboard2/Config.java +++ b/srcs/juloo.keyboard2/Config.java @@ -47,6 +47,7 @@ public final class Config public long vibrate_duration; public long longPressTimeout; public long longPressInterval; + public boolean keyrepeat_enabled; public float margin_bottom; public float keyHeight; public float horizontal_margin; @@ -152,6 +153,7 @@ public final class Config vibrate_duration = _prefs.getInt("vibrate_duration", 20); longPressTimeout = _prefs.getInt("longpress_timeout", 600); longPressInterval = _prefs.getInt("longpress_interval", 65); + keyrepeat_enabled = _prefs.getBoolean("keyrepeat_enabled", true); margin_bottom = get_dip_pref_oriented(dm, "margin_bottom", 7, 3); key_vertical_margin = get_dip_pref(dm, "key_vertical_margin", 1.5f) / 100; key_horizontal_margin = get_dip_pref(dm, "key_horizontal_margin", 2) / 100; diff --git a/srcs/juloo.keyboard2/Pointers.java b/srcs/juloo.keyboard2/Pointers.java index 55ca9c5..0b24b8f 100644 --- a/srcs/juloo.keyboard2/Pointers.java +++ b/srcs/juloo.keyboard2/Pointers.java @@ -24,14 +24,14 @@ public final class Pointers implements Handler.Callback /** Can't be locked, even when long pressing. */ public static final int FLAG_P_CANT_LOCK = (1 << 7); - private Handler _keyrepeat_handler; + private Handler _longpress_handler; private ArrayList<Pointer> _ptrs = new ArrayList<Pointer>(); private IPointerEventHandler _handler; private Config _config; public Pointers(IPointerEventHandler h, Config c) { - _keyrepeat_handler = new Handler(this); + _longpress_handler = new Handler(this); _handler = h; _config = c; } @@ -62,7 +62,7 @@ public final class Pointers implements Handler.Callback public void clear() { for (Pointer p : _ptrs) - stopKeyRepeat(p); + stopLongPress(p); _ptrs.clear(); } @@ -142,7 +142,7 @@ public final class Pointers implements Handler.Callback ptr.sliding.onTouchUp(ptr); return; } - stopKeyRepeat(ptr); + stopLongPress(ptr); KeyValue ptr_value = ptr.value; if (ptr.gesture != null && ptr.gesture.is_in_progress()) { @@ -206,7 +206,7 @@ public final class Pointers implements Handler.Callback KeyValue value = _handler.modifyKey(key.keys[0], mods); Pointer ptr = new Pointer(pointerId, key, value, x, y, mods); _ptrs.add(ptr); - startKeyRepeat(ptr); + startLongPress(ptr); _handler.onPointerDown(value, false); } @@ -313,7 +313,7 @@ public final class Pointers implements Handler.Callback else { ptr.value = apply_gesture(ptr, ptr.gesture.get_gesture()); - restartKeyRepeat(ptr); + restartLongPress(ptr); ptr.flags = 0; // Special behaviors are ignored during a gesture. } } @@ -382,7 +382,7 @@ public final class Pointers implements Handler.Callback // Key repeat - /** Message from [_keyrepeat_handler]. */ + /** Message from [_longpress_handler]. */ @Override public boolean handleMessage(Message msg) { @@ -390,11 +390,7 @@ public final class Pointers implements Handler.Callback { if (ptr.timeoutWhat == msg.what) { - if (handleKeyRepeat(ptr)) - _keyrepeat_handler.sendEmptyMessageDelayed(msg.what, - _config.longPressInterval); - else - ptr.timeoutWhat = -1; + handleLongPress(ptr); return true; } } @@ -403,60 +399,62 @@ public final class Pointers implements Handler.Callback private static int uniqueTimeoutWhat = 0; - private void startKeyRepeat(Pointer ptr) + private void startLongPress(Pointer ptr) { int what = (uniqueTimeoutWhat++); ptr.timeoutWhat = what; - _keyrepeat_handler.sendEmptyMessageDelayed(what, _config.longPressTimeout); + _longpress_handler.sendEmptyMessageDelayed(what, _config.longPressTimeout); } - private void stopKeyRepeat(Pointer ptr) + private void stopLongPress(Pointer ptr) { - if (ptr.timeoutWhat != -1) - { - _keyrepeat_handler.removeMessages(ptr.timeoutWhat); - ptr.timeoutWhat = -1; - } + _longpress_handler.removeMessages(ptr.timeoutWhat); } - private void restartKeyRepeat(Pointer ptr) + private void restartLongPress(Pointer ptr) { - stopKeyRepeat(ptr); - startKeyRepeat(ptr); + stopLongPress(ptr); + startLongPress(ptr); } - /** A pointer is repeating. Returns [true] if repeat should continue. */ - private boolean handleKeyRepeat(Pointer ptr) + /** A pointer is long pressing. */ + private void handleLongPress(Pointer ptr) { // Long press toggle lock on modifiers if ((ptr.flags & FLAG_P_LATCHABLE) != 0) { if (!ptr.hasFlagsAny(FLAG_P_CANT_LOCK)) lockPointer(ptr, true); - return false; + return; } - // Stop repeating: Latched key, no key + // Latched key, no key if (ptr.hasFlagsAny(FLAG_P_LATCHED) || ptr.value == null) - return false; + return; + // Key is long-pressable KeyValue kv = KeyModifier.modify_long_press(ptr.value); if (!kv.equals(ptr.value)) { ptr.value = kv; _handler.onPointerDown(kv, true); - return true; + return; } - // Stop repeating: Special keys + // Special keys if (kv.hasFlagsAny(KeyValue.FLAG_SPECIAL)) - return false; - _handler.onPointerHold(kv, ptr.modifiers); - return true; + return; + // For every other keys, key-repeat + if (_config.keyrepeat_enabled) + { + _handler.onPointerHold(kv, ptr.modifiers); + _longpress_handler.sendEmptyMessageDelayed(ptr.timeoutWhat, + _config.longPressInterval); + } } // Sliding void startSliding(Pointer ptr, float x) { - stopKeyRepeat(ptr); + stopLongPress(ptr); ptr.flags |= FLAG_P_SLIDING; ptr.sliding = new Sliding(x); } |
