forked from extern/Unexpected-Keyboard
Avoid showing some symbols twice in Fn mode
This commit is contained in:
parent
ee6e892ef4
commit
a57bdf8cfb
@ -14,6 +14,8 @@ class KeyEventHandler implements Config.IKeyEventHandler
|
|||||||
public void handleKeyUp(KeyValue key, int flags)
|
public void handleKeyUp(KeyValue key, int flags)
|
||||||
{
|
{
|
||||||
key = KeyModifier.handleFlags(key, flags);
|
key = KeyModifier.handleFlags(key, flags);
|
||||||
|
if (key == null || (key.flags & KeyValue.FLAG_NOCHAR) != 0)
|
||||||
|
return;
|
||||||
switch (key.eventCode)
|
switch (key.eventCode)
|
||||||
{
|
{
|
||||||
case KeyValue.EVENT_CONFIG: _recv.showKeyboardConfig(); return;
|
case KeyValue.EVENT_CONFIG: _recv.showKeyboardConfig(); return;
|
||||||
|
@ -14,7 +14,7 @@ class KeyModifier
|
|||||||
/* Modify a key according to modifiers. */
|
/* Modify a key according to modifiers. */
|
||||||
public static KeyValue handleFlags(KeyValue k, int flags)
|
public static KeyValue handleFlags(KeyValue k, int flags)
|
||||||
{
|
{
|
||||||
if (flags == 0) // No modifier
|
if (k == null || flags == 0) // No modifier
|
||||||
return k;
|
return k;
|
||||||
SparseArray<KeyValue> ks = cacheEntry(k);
|
SparseArray<KeyValue> ks = cacheEntry(k);
|
||||||
KeyValue r = ks.get(flags);
|
KeyValue r = ks.get(flags);
|
||||||
@ -22,7 +22,9 @@ class KeyModifier
|
|||||||
return r;
|
return r;
|
||||||
r = k;
|
r = k;
|
||||||
r = handleFn(r, flags);
|
r = handleFn(r, flags);
|
||||||
|
if (r != null)
|
||||||
r = handleShift(r, flags);
|
r = handleShift(r, flags);
|
||||||
|
if (r != null)
|
||||||
r = handleAccents(r, flags);
|
r = handleAccents(r, flags);
|
||||||
ks.put(flags, r);
|
ks.put(flags, r);
|
||||||
return r;
|
return r;
|
||||||
@ -211,6 +213,7 @@ class KeyModifier
|
|||||||
case "#": name = "£"; break;
|
case "#": name = "£"; break;
|
||||||
case "*": name = "°"; break;
|
case "*": name = "°"; break;
|
||||||
case "tab": name = "\\t"; break;
|
case "tab": name = "\\t"; break;
|
||||||
|
case "€": case "£": return null; // Avoid showing these twice
|
||||||
default: return k;
|
default: return k;
|
||||||
}
|
}
|
||||||
return KeyValue.getKeyByName(name);
|
return KeyValue.getKeyByName(name);
|
||||||
|
@ -85,7 +85,6 @@ public class Keyboard2View extends View
|
|||||||
|
|
||||||
public void onPointerUp(KeyValue k)
|
public void onPointerUp(KeyValue k)
|
||||||
{
|
{
|
||||||
if (k != null && (k.flags & KeyValue.FLAG_NOCHAR) == 0)
|
|
||||||
_config.handler.handleKeyUp(k, _flags);
|
_config.handler.handleKeyUp(k, _flags);
|
||||||
updateFlags();
|
updateFlags();
|
||||||
invalidate();
|
invalidate();
|
||||||
@ -93,7 +92,6 @@ public class Keyboard2View extends View
|
|||||||
|
|
||||||
public void onPointerHold(KeyValue k)
|
public void onPointerHold(KeyValue k)
|
||||||
{
|
{
|
||||||
if (k != null)
|
|
||||||
_config.handler.handleKeyUp(k, _flags);
|
_config.handler.handleKeyUp(k, _flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,28 +213,19 @@ public class Keyboard2View extends View
|
|||||||
_tmpRect.set(x, y, x + keyW, y + keyH);
|
_tmpRect.set(x, y, x + keyW, y + keyH);
|
||||||
canvas.drawRoundRect(_tmpRect, _theme.keyBorderRadius, _theme.keyBorderRadius,
|
canvas.drawRoundRect(_tmpRect, _theme.keyBorderRadius, _theme.keyBorderRadius,
|
||||||
isKeyDown ? _theme.keyDownBgPaint : _theme.keyBgPaint);
|
isKeyDown ? _theme.keyDownBgPaint : _theme.keyBgPaint);
|
||||||
if (k.key0 != null)
|
|
||||||
drawLabel(canvas, k.key0, keyW / 2f + x, y, keyH, isKeyDown);
|
drawLabel(canvas, k.key0, keyW / 2f + x, y, keyH, isKeyDown);
|
||||||
if (k.edgekeys)
|
if (k.edgekeys)
|
||||||
{
|
{
|
||||||
if (k.key1 != null) // top key
|
|
||||||
drawSubLabel(canvas, k.key1, x, y, keyW, keyH, Paint.Align.CENTER, Vertical.TOP, isKeyDown);
|
drawSubLabel(canvas, k.key1, x, y, keyW, keyH, Paint.Align.CENTER, Vertical.TOP, isKeyDown);
|
||||||
if (k.key3 != null) // left key
|
|
||||||
drawSubLabel(canvas, k.key3, x, y, keyW, keyH, Paint.Align.LEFT, Vertical.CENTER, isKeyDown);
|
drawSubLabel(canvas, k.key3, x, y, keyW, keyH, Paint.Align.LEFT, Vertical.CENTER, isKeyDown);
|
||||||
if (k.key2 != null) // right key
|
|
||||||
drawSubLabel(canvas, k.key2, x, y, keyW, keyH, Paint.Align.RIGHT, Vertical.CENTER, isKeyDown);
|
drawSubLabel(canvas, k.key2, x, y, keyW, keyH, Paint.Align.RIGHT, Vertical.CENTER, isKeyDown);
|
||||||
if (k.key4 != null) // bottom key
|
|
||||||
drawSubLabel(canvas, k.key4, x, y, keyW, keyH, Paint.Align.CENTER, Vertical.BOTTOM, isKeyDown);
|
drawSubLabel(canvas, k.key4, x, y, keyW, keyH, Paint.Align.CENTER, Vertical.BOTTOM, isKeyDown);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (k.key1 != null) // top left key
|
|
||||||
drawSubLabel(canvas, k.key1, x, y, keyW, keyH, Paint.Align.LEFT, Vertical.TOP, isKeyDown);
|
drawSubLabel(canvas, k.key1, x, y, keyW, keyH, Paint.Align.LEFT, Vertical.TOP, isKeyDown);
|
||||||
if (k.key3 != null) // bottom left key
|
|
||||||
drawSubLabel(canvas, k.key3, x, y, keyW, keyH, Paint.Align.LEFT, Vertical.BOTTOM, isKeyDown);
|
drawSubLabel(canvas, k.key3, x, y, keyW, keyH, Paint.Align.LEFT, Vertical.BOTTOM, isKeyDown);
|
||||||
if (k.key2 != null) // top right key
|
|
||||||
drawSubLabel(canvas, k.key2, x, y, keyW, keyH, Paint.Align.RIGHT, Vertical.TOP, isKeyDown);
|
drawSubLabel(canvas, k.key2, x, y, keyW, keyH, Paint.Align.RIGHT, Vertical.TOP, isKeyDown);
|
||||||
if (k.key4 != null) // bottom right key
|
|
||||||
drawSubLabel(canvas, k.key4, x, y, keyW, keyH, Paint.Align.RIGHT, Vertical.BOTTOM, isKeyDown);
|
drawSubLabel(canvas, k.key4, x, y, keyW, keyH, Paint.Align.RIGHT, Vertical.BOTTOM, isKeyDown);
|
||||||
}
|
}
|
||||||
x += _keyWidth * k.width;
|
x += _keyWidth * k.width;
|
||||||
@ -269,8 +258,10 @@ public class Keyboard2View extends View
|
|||||||
|
|
||||||
private void drawLabel(Canvas canvas, KeyValue k, float x, float y, float keyH, boolean isKeyDown)
|
private void drawLabel(Canvas canvas, KeyValue k, float x, float y, float keyH, boolean isKeyDown)
|
||||||
{
|
{
|
||||||
float textSize = scaleTextSize(k, _config.labelTextSize, keyH);
|
|
||||||
k = KeyModifier.handleFlags(k, _flags);
|
k = KeyModifier.handleFlags(k, _flags);
|
||||||
|
if (k == null)
|
||||||
|
return;
|
||||||
|
float textSize = scaleTextSize(k, _config.labelTextSize, keyH);
|
||||||
Paint p = _theme.labelPaint(((k.flags & KeyValue.FLAG_KEY_FONT) != 0));
|
Paint p = _theme.labelPaint(((k.flags & KeyValue.FLAG_KEY_FONT) != 0));
|
||||||
p.setColor(labelColor(k, isKeyDown, _theme.labelColor));
|
p.setColor(labelColor(k, isKeyDown, _theme.labelColor));
|
||||||
p.setTextSize(textSize);
|
p.setTextSize(textSize);
|
||||||
@ -279,8 +270,10 @@ public class Keyboard2View extends View
|
|||||||
|
|
||||||
private void drawSubLabel(Canvas canvas, KeyValue k, float x, float y, float keyW, float keyH, Paint.Align a, Vertical v, boolean isKeyDown)
|
private void drawSubLabel(Canvas canvas, KeyValue k, float x, float y, float keyW, float keyH, Paint.Align a, Vertical v, boolean isKeyDown)
|
||||||
{
|
{
|
||||||
float textSize = scaleTextSize(k, _config.sublabelTextSize, keyH);
|
|
||||||
k = KeyModifier.handleFlags(k, _flags);
|
k = KeyModifier.handleFlags(k, _flags);
|
||||||
|
if (k == null)
|
||||||
|
return;
|
||||||
|
float textSize = scaleTextSize(k, _config.sublabelTextSize, keyH);
|
||||||
Paint p = _theme.subLabelPaint(((k.flags & KeyValue.FLAG_KEY_FONT) != 0), a);
|
Paint p = _theme.subLabelPaint(((k.flags & KeyValue.FLAG_KEY_FONT) != 0), a);
|
||||||
p.setColor(labelColor(k, isKeyDown, _theme.subLabelColor));
|
p.setColor(labelColor(k, isKeyDown, _theme.subLabelColor));
|
||||||
p.setTextSize(textSize);
|
p.setTextSize(textSize);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user