forked from extern/Unexpected-Keyboard
only vibrate when the swipe key changes
This commit is contained in:
parent
a27c64479f
commit
bce0a98f62
@ -195,9 +195,11 @@ class KeyboardData
|
|||||||
return new Key(key0, key1, key2, key3, key4, width * s, shift, edgekeys);
|
return new Key(key0, key1, key2, key3, key4, width * s, shift, edgekeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeyValue getValue(int index)
|
|
||||||
|
/* Get the KeyValue at the given direction. See Pointers.onTouchMove() for the represented direction */
|
||||||
|
public KeyValue getAtDirection(int direction)
|
||||||
{
|
{
|
||||||
if (index == 0 || index > 8) return key0;
|
if (direction == 0 || direction > 8) return key0;
|
||||||
KeyValue key = null;
|
KeyValue key = null;
|
||||||
if (edgekeys) {
|
if (edgekeys) {
|
||||||
// \ 1 /
|
// \ 1 /
|
||||||
@ -207,7 +209,7 @@ class KeyboardData
|
|||||||
// / 4 \
|
// / 4 \
|
||||||
|
|
||||||
// first closer
|
// first closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 2: case 3: key = key1; break;
|
case 2: case 3: key = key1; break;
|
||||||
case 4: case 8: key = key2; break;
|
case 4: case 8: key = key2; break;
|
||||||
@ -216,7 +218,7 @@ class KeyboardData
|
|||||||
}
|
}
|
||||||
if (key != null) return key;
|
if (key != null) return key;
|
||||||
// second closer
|
// second closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 1: case 4: key = key1; break;
|
case 1: case 4: key = key1; break;
|
||||||
case 3: case 7: key = key2; break;
|
case 3: case 7: key = key2; break;
|
||||||
@ -225,7 +227,7 @@ class KeyboardData
|
|||||||
}
|
}
|
||||||
if (key != null) return key;
|
if (key != null) return key;
|
||||||
// third closer
|
// third closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 5: case 8: key = key1; break;
|
case 5: case 8: key = key1; break;
|
||||||
case 2: case 6: key = key2; break;
|
case 2: case 6: key = key2; break;
|
||||||
@ -234,7 +236,7 @@ class KeyboardData
|
|||||||
}
|
}
|
||||||
if (key != null) return key;
|
if (key != null) return key;
|
||||||
// fourth closer
|
// fourth closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 6: case 7: key = key1; break;
|
case 6: case 7: key = key1; break;
|
||||||
case 1: case 5: key = key2; break;
|
case 1: case 5: key = key2; break;
|
||||||
@ -251,7 +253,7 @@ class KeyboardData
|
|||||||
// |
|
// |
|
||||||
// 3 | 4
|
// 3 | 4
|
||||||
// first closer
|
// first closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 1: case 2: key = key1; break;
|
case 1: case 2: key = key1; break;
|
||||||
case 3: case 4: key = key2; break;
|
case 3: case 4: key = key2; break;
|
||||||
@ -260,7 +262,7 @@ class KeyboardData
|
|||||||
}
|
}
|
||||||
if (key != null) return key;
|
if (key != null) return key;
|
||||||
// second closer
|
// second closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 3: case 5: key = key1; break;
|
case 3: case 5: key = key1; break;
|
||||||
case 2: case 8: key = key2; break;
|
case 2: case 8: key = key2; break;
|
||||||
@ -269,7 +271,7 @@ class KeyboardData
|
|||||||
}
|
}
|
||||||
if (key != null) return key;
|
if (key != null) return key;
|
||||||
// third closer
|
// third closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 4: case 6: key = key1; break;
|
case 4: case 6: key = key1; break;
|
||||||
case 1: case 7: key = key2; break;
|
case 1: case 7: key = key2; break;
|
||||||
@ -278,7 +280,7 @@ class KeyboardData
|
|||||||
}
|
}
|
||||||
if (key != null) return key;
|
if (key != null) return key;
|
||||||
// fourth closer
|
// fourth closer
|
||||||
switch (index)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case 7: case 8: key = key1; break;
|
case 7: case 8: key = key1; break;
|
||||||
case 3: case 4: key = key2; break;
|
case 3: case 4: key = key2; break;
|
||||||
|
@ -135,7 +135,7 @@ public final class Pointers implements Handler.Callback
|
|||||||
return;
|
return;
|
||||||
int mflags = getFlags(isOtherPointerDown());
|
int mflags = getFlags(isOtherPointerDown());
|
||||||
KeyValue value = _handler.onPointerDown(key.key0, mflags);
|
KeyValue value = _handler.onPointerDown(key.key0, mflags);
|
||||||
Pointer ptr = new Pointer(pointerId, key, 0, value, x, y, mflags);
|
Pointer ptr = new Pointer(pointerId, key, key.key0, value, x, y, mflags);
|
||||||
_ptrs.add(ptr);
|
_ptrs.add(ptr);
|
||||||
if (value != null && (value.flags & KeyValue.FLAG_SPECIAL) == 0)
|
if (value != null && (value.flags & KeyValue.FLAG_SPECIAL) == 0)
|
||||||
startKeyRepeat(ptr);
|
startKeyRepeat(ptr);
|
||||||
@ -155,28 +155,33 @@ public final class Pointers implements Handler.Callback
|
|||||||
float dy = y - ptr.downY;
|
float dy = y - ptr.downY;
|
||||||
float dist = Math.abs(dx) + Math.abs(dy);
|
float dist = Math.abs(dx) + Math.abs(dy);
|
||||||
ptr.ptrDist = dist;
|
ptr.ptrDist = dist;
|
||||||
int newIndex;
|
|
||||||
|
int direction;
|
||||||
if (dist < _config.swipe_dist_px)
|
if (dist < _config.swipe_dist_px)
|
||||||
{
|
{
|
||||||
newIndex = 0;
|
direction = 0;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
// One of the 8 directions:
|
|
||||||
// |\2|3/|
|
|
||||||
// |1\|/4|
|
|
||||||
// |-----|
|
|
||||||
// |5/|\8|
|
|
||||||
// |/6|7\|
|
|
||||||
newIndex = 1;
|
|
||||||
if (dy > 0) newIndex += 4;
|
|
||||||
if (dx > 0) newIndex += 2;
|
|
||||||
if (dx > Math.abs(dy) || (dx < 0 && dx > -Math.abs(dy))) newIndex += 1;
|
|
||||||
}
|
|
||||||
if (newIndex != ptr.value_index)
|
|
||||||
{
|
{
|
||||||
ptr.value_index = newIndex;
|
// One of the 8 directions:
|
||||||
|
// |\2|3/|
|
||||||
|
// |1\|/4|
|
||||||
|
// |-----|
|
||||||
|
// |5/|\8|
|
||||||
|
// |/6|7\|
|
||||||
|
direction = 1;
|
||||||
|
if (dy > 0) direction += 4;
|
||||||
|
if (dx > 0) direction += 2;
|
||||||
|
if (dx > Math.abs(dy) || (dx < 0 && dx > -Math.abs(dy))) direction += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyValue newSelectedValue = ptr.key.getAtDirection(direction);
|
||||||
|
if (newSelectedValue != ptr.selected_value)
|
||||||
|
{
|
||||||
|
ptr.selected_value = newSelectedValue;
|
||||||
|
// apply modifier flags and trigger vibration.
|
||||||
KeyValue newValue =
|
KeyValue newValue =
|
||||||
_handler.onPointerSwipe(ptr.key.getValue(newIndex), ptr.modifier_flags);
|
_handler.onPointerSwipe(ptr.selected_value, ptr.modifier_flags);
|
||||||
if (newValue != null)
|
if (newValue != null)
|
||||||
{
|
{
|
||||||
int old_flags = ptr.flags;
|
int old_flags = ptr.flags;
|
||||||
@ -308,9 +313,11 @@ public final class Pointers implements Handler.Callback
|
|||||||
{
|
{
|
||||||
/** -1 when latched. */
|
/** -1 when latched. */
|
||||||
public int pointerId;
|
public int pointerId;
|
||||||
|
/** The Key pressed by this Pointer */
|
||||||
public final KeyboardData.Key key;
|
public final KeyboardData.Key key;
|
||||||
public int value_index;
|
/** The current seletected KeyValue in key (any one of key0 to key4). */
|
||||||
/** Modified value. Not equal to [key.getValue(value_index)]. */
|
public KeyValue selected_value;
|
||||||
|
/** selected_value with modifier_flags applied. */
|
||||||
public KeyValue value;
|
public KeyValue value;
|
||||||
public float downX;
|
public float downX;
|
||||||
public float downY;
|
public float downY;
|
||||||
@ -325,11 +332,11 @@ public final class Pointers implements Handler.Callback
|
|||||||
/** ptrDist at the first repeat, -1 otherwise. */
|
/** ptrDist at the first repeat, -1 otherwise. */
|
||||||
public float repeatingPtrDist;
|
public float repeatingPtrDist;
|
||||||
|
|
||||||
public Pointer(int p, KeyboardData.Key k, int vi, KeyValue v, float x, float y, int mflags)
|
public Pointer(int p, KeyboardData.Key k, KeyValue sv, KeyValue v, float x, float y, int mflags)
|
||||||
{
|
{
|
||||||
pointerId = p;
|
pointerId = p;
|
||||||
key = k;
|
key = k;
|
||||||
value_index = vi;
|
selected_value = sv;
|
||||||
value = v;
|
value = v;
|
||||||
downX = x;
|
downX = x;
|
||||||
downY = y;
|
downY = y;
|
||||||
|
Loading…
Reference in New Issue
Block a user