mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-06-14 13:57:41 +02:00
Refactor: Use enum values in KeyValue.Kind
instead of maintaining a separate set of constants and a conversion function.
This commit is contained in:
parent
e213834f67
commit
22a7df6632
@ -19,7 +19,7 @@ public class Emoji
|
|||||||
protected Emoji(String name, String bytecode, String desc)
|
protected Emoji(String name, String bytecode, String desc)
|
||||||
{
|
{
|
||||||
_name = name;
|
_name = name;
|
||||||
_kv = new KeyValue(bytecode, KeyValue.KIND_STRING, 0, 0);
|
_kv = new KeyValue(bytecode, KeyValue.Kind.String, 0, 0);
|
||||||
_desc = desc;
|
_desc = desc;
|
||||||
emojis_by_name.put(name, this);
|
emojis_by_name.put(name, this);
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,11 @@ final class KeyValue
|
|||||||
FN, // Must be placed last to be applied first
|
FN, // Must be placed last to be applied first
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static enum Kind
|
||||||
|
{
|
||||||
|
Char, String, Keyevent, Event, Modifier
|
||||||
|
}
|
||||||
|
|
||||||
// Behavior flags.
|
// Behavior flags.
|
||||||
public static final int FLAG_LATCH = (1 << 20);
|
public static final int FLAG_LATCH = (1 << 20);
|
||||||
public static final int FLAG_LOCK = (1 << 21);
|
public static final int FLAG_LOCK = (1 << 21);
|
||||||
@ -66,13 +71,6 @@ final class KeyValue
|
|||||||
public static final int FLAG_LOCKED = (1 << 28);
|
public static final int FLAG_LOCKED = (1 << 28);
|
||||||
public static final int FLAG_FAKE_PTR = (1 << 29);
|
public static final int FLAG_FAKE_PTR = (1 << 29);
|
||||||
|
|
||||||
// Kinds
|
|
||||||
public static final int KIND_CHAR = (0 << 29);
|
|
||||||
public static final int KIND_STRING = (1 << 29);
|
|
||||||
public static final int KIND_KEYEVENT = (2 << 29);
|
|
||||||
public static final int KIND_EVENT = (3 << 29);
|
|
||||||
public static final int KIND_MODIFIER = (4 << 29);
|
|
||||||
|
|
||||||
// Ranges for the different components
|
// Ranges for the different components
|
||||||
private static final int FLAGS_BITS = (0b111111111 << 20); // 9 bits wide
|
private static final int FLAGS_BITS = (0b111111111 << 20); // 9 bits wide
|
||||||
private static final int KIND_BITS = (0b111 << 29); // 3 bits wide
|
private static final int KIND_BITS = (0b111 << 29); // 3 bits wide
|
||||||
@ -85,29 +83,12 @@ final class KeyValue
|
|||||||
|
|
||||||
private final String _symbol;
|
private final String _symbol;
|
||||||
|
|
||||||
/** This field encodes three things:
|
/** This field encodes three things: Kind, flags and value. */
|
||||||
- The kind
|
|
||||||
- The flags
|
|
||||||
- The value for Char, Event and Modifier keys.
|
|
||||||
*/
|
|
||||||
private final int _code;
|
private final int _code;
|
||||||
|
|
||||||
public static enum Kind
|
|
||||||
{
|
|
||||||
Char, String, Keyevent, Event, Modifier
|
|
||||||
}
|
|
||||||
|
|
||||||
public Kind getKind()
|
public Kind getKind()
|
||||||
{
|
{
|
||||||
switch (_code & KIND_BITS)
|
return Kind.values()[(_code & KIND_BITS) >>> 29];
|
||||||
{
|
|
||||||
case KIND_CHAR: return Kind.Char;
|
|
||||||
case KIND_STRING: return Kind.String;
|
|
||||||
case KIND_KEYEVENT: return Kind.Keyevent;
|
|
||||||
case KIND_EVENT: return Kind.Event;
|
|
||||||
case KIND_MODIFIER: return Kind.Modifier;
|
|
||||||
default: throw new RuntimeException("Corrupted kind flags");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getFlags()
|
public int getFlags()
|
||||||
@ -154,12 +135,12 @@ final class KeyValue
|
|||||||
/* Update the char and the symbol. */
|
/* Update the char and the symbol. */
|
||||||
public KeyValue withChar(char c)
|
public KeyValue withChar(char c)
|
||||||
{
|
{
|
||||||
return new KeyValue(String.valueOf(c), KIND_CHAR, c, getFlags());
|
return new KeyValue(String.valueOf(c), Kind.Char, c, getFlags());
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeyValue withString(String s)
|
public KeyValue withString(String s)
|
||||||
{
|
{
|
||||||
return new KeyValue(s, KIND_STRING, 0, getFlags());
|
return new KeyValue(s, Kind.String, 0, getFlags());
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeyValue withSymbol(String s)
|
public KeyValue withSymbol(String s)
|
||||||
@ -169,7 +150,7 @@ final class KeyValue
|
|||||||
|
|
||||||
public KeyValue withKeyevent(int code)
|
public KeyValue withKeyevent(int code)
|
||||||
{
|
{
|
||||||
return new KeyValue(_symbol, KIND_KEYEVENT, code, getFlags());
|
return new KeyValue(_symbol, Kind.Keyevent, code, getFlags());
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeyValue withFlags(int f)
|
public KeyValue withFlags(int f)
|
||||||
@ -201,32 +182,37 @@ final class KeyValue
|
|||||||
_code = kind | flags | value;
|
_code = kind | flags | value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public KeyValue(String s, Kind k, int v, int f)
|
||||||
|
{
|
||||||
|
this(s, (k.ordinal() << 29), v, f);
|
||||||
|
}
|
||||||
|
|
||||||
public static KeyValue getKeyByName(String name)
|
public static KeyValue getKeyByName(String name)
|
||||||
{
|
{
|
||||||
KeyValue kv = keys.get(name);
|
KeyValue kv = keys.get(name);
|
||||||
if (kv != null)
|
if (kv != null)
|
||||||
return kv;
|
return kv;
|
||||||
if (name.length() == 1)
|
if (name.length() == 1)
|
||||||
return new KeyValue(name, KIND_CHAR, name.charAt(0), 0);
|
return new KeyValue(name, Kind.Char, name.charAt(0), 0);
|
||||||
else
|
else
|
||||||
return new KeyValue(name, KIND_STRING, 0, 0);
|
return new KeyValue(name, Kind.String, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addKey(String name, String symbol, int kind, int code, int flags)
|
private static void addKey(String name, String symbol, Kind kind, int code, int flags)
|
||||||
{
|
{
|
||||||
keys.put(name, new KeyValue(symbol, kind, code, flags));
|
keys.put(name, new KeyValue(symbol, kind, code, flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addCharKey(String name, String symbol, char c, int flags)
|
private static void addCharKey(String name, String symbol, char c, int flags)
|
||||||
{
|
{
|
||||||
addKey(name, symbol, KIND_CHAR, c, flags);
|
addKey(name, symbol, Kind.Char, c, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addModifierKey(String name, String symbol, Modifier m, int flags)
|
private static void addModifierKey(String name, String symbol, Modifier m, int flags)
|
||||||
{
|
{
|
||||||
if (symbol.length() > 1)
|
if (symbol.length() > 1)
|
||||||
flags |= FLAG_SMALLER_FONT;
|
flags |= FLAG_SMALLER_FONT;
|
||||||
addKey(name, symbol, KIND_MODIFIER, m.ordinal(),
|
addKey(name, symbol, Kind.Modifier, m.ordinal(),
|
||||||
FLAG_LATCH | FLAG_SPECIAL | FLAG_SECONDARY | flags);
|
FLAG_LATCH | FLAG_SPECIAL | FLAG_SECONDARY | flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,13 +223,13 @@ final class KeyValue
|
|||||||
|
|
||||||
private static void addDiacritic(String name, int symbol, Modifier m)
|
private static void addDiacritic(String name, int symbol, Modifier m)
|
||||||
{
|
{
|
||||||
addKey(name, String.valueOf((char)symbol), KIND_MODIFIER, m.ordinal(),
|
addKey(name, String.valueOf((char)symbol), Kind.Modifier, m.ordinal(),
|
||||||
FLAG_LATCH | FLAG_SPECIAL | FLAG_KEY_FONT);
|
FLAG_LATCH | FLAG_SPECIAL | FLAG_KEY_FONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addEventKey(String name, String symbol, Event e, int flags)
|
private static void addEventKey(String name, String symbol, Event e, int flags)
|
||||||
{
|
{
|
||||||
addKey(name, symbol, KIND_EVENT, e.ordinal(), flags | FLAG_SPECIAL | FLAG_SECONDARY);
|
addKey(name, symbol, Kind.Event, e.ordinal(), flags | FLAG_SPECIAL | FLAG_SECONDARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addEventKey(String name, int symbol, Event e, int flags)
|
private static void addEventKey(String name, int symbol, Event e, int flags)
|
||||||
@ -253,7 +239,7 @@ final class KeyValue
|
|||||||
|
|
||||||
private static void addKeyeventKey(String name, String symbol, int code, int flags)
|
private static void addKeyeventKey(String name, String symbol, int code, int flags)
|
||||||
{
|
{
|
||||||
addKey(name, symbol, KIND_KEYEVENT, code, flags | FLAG_SECONDARY);
|
addKey(name, symbol, Kind.Keyevent, code, flags | FLAG_SECONDARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addKeyeventKey(String name, int symbol, int code, int flags)
|
private static void addKeyeventKey(String name, int symbol, int code, int flags)
|
||||||
@ -268,7 +254,7 @@ final class KeyValue
|
|||||||
placeholders (it is the empty string). */
|
placeholders (it is the empty string). */
|
||||||
private static void addPlaceholderKey(String name)
|
private static void addPlaceholderKey(String name)
|
||||||
{
|
{
|
||||||
addKey(name, "", KIND_STRING, placeholder_unique_id++, 0);
|
addKey(name, "", Kind.String, placeholder_unique_id++, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
|
Loading…
x
Reference in New Issue
Block a user