forked from extern/Unexpected-Keyboard
use the closest swipe key on swipe
fix a direction
This commit is contained in:
parent
7da7a5082d
commit
a27c64479f
@ -197,14 +197,98 @@ class KeyboardData
|
|||||||
|
|
||||||
public KeyValue getValue(int index)
|
public KeyValue getValue(int index)
|
||||||
{
|
{
|
||||||
switch (index)
|
if (index == 0 || index > 8) return key0;
|
||||||
{
|
KeyValue key = null;
|
||||||
case 1: return key1;
|
if (edgekeys) {
|
||||||
case 2: return key2;
|
// \ 1 /
|
||||||
case 3: return key3;
|
// \ /
|
||||||
case 4: return key4;
|
// 3 0 2
|
||||||
default: case 0: return key0;
|
// / \
|
||||||
|
// / 4 \
|
||||||
|
|
||||||
|
// first closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 2: case 3: key = key1; break;
|
||||||
|
case 4: case 8: key = key2; break;
|
||||||
|
case 1: case 5: key = key3; break;
|
||||||
|
case 6: case 7: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
|
// second closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 1: case 4: key = key1; break;
|
||||||
|
case 3: case 7: key = key2; break;
|
||||||
|
case 2: case 6: key = key3; break;
|
||||||
|
case 5: case 8: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
|
// third closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 5: case 8: key = key1; break;
|
||||||
|
case 2: case 6: key = key2; break;
|
||||||
|
case 3: case 7: key = key3; break;
|
||||||
|
case 1: case 4: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
|
// fourth closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 6: case 7: key = key1; break;
|
||||||
|
case 1: case 5: key = key2; break;
|
||||||
|
case 4: case 8: key = key3; break;
|
||||||
|
case 2: case 3: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 1 | 2
|
||||||
|
// |
|
||||||
|
// --0--
|
||||||
|
// |
|
||||||
|
// 3 | 4
|
||||||
|
// first closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 1: case 2: key = key1; break;
|
||||||
|
case 3: case 4: key = key2; break;
|
||||||
|
case 5: case 6: key = key3; break;
|
||||||
|
case 7: case 8: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
|
// second closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 3: case 5: key = key1; break;
|
||||||
|
case 2: case 8: key = key2; break;
|
||||||
|
case 1: case 7: key = key3; break;
|
||||||
|
case 4: case 6: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
|
// third closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 4: case 6: key = key1; break;
|
||||||
|
case 1: case 7: key = key2; break;
|
||||||
|
case 2: case 8: key = key3; break;
|
||||||
|
case 3: case 5: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
|
// fourth closer
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 7: case 8: key = key1; break;
|
||||||
|
case 3: case 4: key = key2; break;
|
||||||
|
case 5: case 6: key = key3; break;
|
||||||
|
case 1: case 2: key = key4; break;
|
||||||
|
}
|
||||||
|
if (key != null) return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
return key0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,6 +146,11 @@ public final class Pointers implements Handler.Callback
|
|||||||
Pointer ptr = getPtr(pointerId);
|
Pointer ptr = getPtr(pointerId);
|
||||||
if (ptr == null)
|
if (ptr == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// The position in a IME windows is clampled to view.
|
||||||
|
// For a better up swipe behaviour, set the y position to a negative value when clamped.
|
||||||
|
if (y == 0.0) y = -400;
|
||||||
|
|
||||||
float dx = x - ptr.downX;
|
float dx = x - ptr.downX;
|
||||||
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);
|
||||||
@ -155,19 +160,17 @@ public final class Pointers implements Handler.Callback
|
|||||||
{
|
{
|
||||||
newIndex = 0;
|
newIndex = 0;
|
||||||
}
|
}
|
||||||
else if (ptr.key.edgekeys)
|
else {
|
||||||
{
|
// One of the 8 directions:
|
||||||
if (Math.abs(dy) > Math.abs(dx)) // vertical swipe
|
// |\2|3/|
|
||||||
newIndex = (dy < 0) ? 1 : 4;
|
// |1\|/4|
|
||||||
else // horizontal swipe
|
// |-----|
|
||||||
newIndex = (dx < 0) ? 3 : 2;
|
// |5/|\8|
|
||||||
}
|
// |/6|7\|
|
||||||
else
|
newIndex = 1;
|
||||||
{
|
if (dy > 0) newIndex += 4;
|
||||||
if (dx < 0) // left side
|
if (dx > 0) newIndex += 2;
|
||||||
newIndex = (dy < 0) ? 1 : 3;
|
if (dx > Math.abs(dy) || (dx < 0 && dx > -Math.abs(dy))) newIndex += 1;
|
||||||
else // right side
|
|
||||||
newIndex = (dy < 0) ? 2 : 4;
|
|
||||||
}
|
}
|
||||||
if (newIndex != ptr.value_index)
|
if (newIndex != ptr.value_index)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user