diff options
| author | Jules Aguillon | 2024-03-18 01:00:22 +0100 |
|---|---|---|
| committer | Jules Aguillon | 2024-03-18 01:00:22 +0100 |
| commit | e604f6fd57d85f46dd46da9da192646660547bc2 (patch) | |
| tree | 23e27096cc85ec85d865ef7f13afb6f7422b8c2c /srcs/juloo.keyboard2/ComposeKey.java | |
| parent | dc3a303af1ef72602b58292e5cc938944d6954ba (diff) | |
| download | unexpected-keyboard-e604f6fd57d85f46dd46da9da192646660547bc2.tar.gz unexpected-keyboard-e604f6fd57d85f46dd46da9da192646660547bc2.zip | |
refactor: Implement Compose without global state
Thanks to the previous commit, a modifier key can now be more complex
than just a KeyValue.Modifier. This allows a more elegant implementation
of the compose key, that could be taken as a base for other features
(eg. unicode hex entry, hangul)
The COMPOSE_PENDING modifier is removed as keys of kind Compose_pending
can act as a modifier. This has the advantage of highlighting the key
that was last pressed in the sequence.
Rules are added to Pointers: Non-special but latchable keys must clear
latches and cannot be locked with a long press. These rules were not
needed before but were intended.
Diffstat (limited to 'srcs/juloo.keyboard2/ComposeKey.java')
| -rw-r--r-- | srcs/juloo.keyboard2/ComposeKey.java | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/srcs/juloo.keyboard2/ComposeKey.java b/srcs/juloo.keyboard2/ComposeKey.java index dd805a5..ef5a7f2 100644 --- a/srcs/juloo.keyboard2/ComposeKey.java +++ b/srcs/juloo.keyboard2/ComposeKey.java @@ -4,31 +4,26 @@ import java.util.Arrays; public final class ComposeKey { - /** Apply the pending compose sequence to [kv]. Returns [null] if [kv] is not - part of the pending sequence. */ + /** Apply the pending compose sequence to [kv]. */ public static KeyValue apply(int state, KeyValue kv) { switch (kv.getKind()) { case Char: KeyValue res = apply(state, kv.getChar()); - // Dim characters not part of any sequence instead of removing them. + // Grey-out characters not part of any sequence. if (res == null) return kv.withFlags(kv.getFlags() | KeyValue.FLAG_GREYED); return res; - /* These keys must not be removed. */ + /* These keys are not greyed. */ case Event: case Modifier: + case Compose_pending: return kv; - /* These keys cannot be part of sequences. */ - case String: - case Keyevent: - case Editing: - case Placeholder: + /* Other keys cannot be part of sequences. */ + default: return kv.withFlags(kv.getFlags() | KeyValue.FLAG_GREYED); - case Compose_pending: return null; } - return null; } /** Apply the pending compose sequence to char [c]. */ |
