abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/KeyModifier.java
diff options
context:
space:
mode:
Diffstat (limited to 'srcs/juloo.keyboard2/KeyModifier.java')
-rw-r--r--srcs/juloo.keyboard2/KeyModifier.java161
1 files changed, 98 insertions, 63 deletions
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java
index c40c342..3ef16bc 100644
--- a/srcs/juloo.keyboard2/KeyModifier.java
+++ b/srcs/juloo.keyboard2/KeyModifier.java
@@ -178,15 +178,26 @@ public final class KeyModifier
private static KeyValue apply_dead_char(KeyValue k, char dead_char)
{
+ KeyValue r = null;
switch (k.getKind())
{
- case Char:
- char c = k.getChar();
- char modified = (char)KeyCharacterMap.getDeadChar(dead_char, c);
- if (modified != 0 && modified != c)
- return KeyValue.makeStringKey(String.valueOf(modified));
+ case Char: r = apply_dead_char(k.getChar(), dead_char); break;
+ case Editing:
+ switch (k.getEditing())
+ {
+ case SPACE_BAR: r = apply_dead_char(' ', dead_char); break;
+ }
+ break;
}
- return k;
+ return (r == null) ? k : r;
+ }
+
+ private static KeyValue apply_dead_char(char c, char dead_char)
+ {
+ char modified = (char)KeyCharacterMap.getDeadChar(dead_char, c);
+ if (modified != 0 && modified != c)
+ return KeyValue.makeStringKey(String.valueOf(modified));
+ return null;
}
private static KeyValue apply_combining_char(KeyValue k, String combining)
@@ -294,6 +305,7 @@ public final class KeyModifier
{
case UNDO: return "redo";
case PASTE: return "pasteAsPlainText";
+ case SPACE_BAR: return "nbsp";
default: return null;
}
}
@@ -313,65 +325,76 @@ public final class KeyModifier
private static KeyValue turn_into_keyevent(KeyValue k)
{
- if (k.getKind() != KeyValue.Kind.Char)
- return k;
int e;
- switch (k.getChar())
+ switch (k.getKind())
{
- case 'a': e = KeyEvent.KEYCODE_A; break;
- case 'b': e = KeyEvent.KEYCODE_B; break;
- case 'c': e = KeyEvent.KEYCODE_C; break;
- case 'd': e = KeyEvent.KEYCODE_D; break;
- case 'e': e = KeyEvent.KEYCODE_E; break;
- case 'f': e = KeyEvent.KEYCODE_F; break;
- case 'g': e = KeyEvent.KEYCODE_G; break;
- case 'h': e = KeyEvent.KEYCODE_H; break;
- case 'i': e = KeyEvent.KEYCODE_I; break;
- case 'j': e = KeyEvent.KEYCODE_J; break;
- case 'k': e = KeyEvent.KEYCODE_K; break;
- case 'l': e = KeyEvent.KEYCODE_L; break;
- case 'm': e = KeyEvent.KEYCODE_M; break;
- case 'n': e = KeyEvent.KEYCODE_N; break;
- case 'o': e = KeyEvent.KEYCODE_O; break;
- case 'p': e = KeyEvent.KEYCODE_P; break;
- case 'q': e = KeyEvent.KEYCODE_Q; break;
- case 'r': e = KeyEvent.KEYCODE_R; break;
- case 's': e = KeyEvent.KEYCODE_S; break;
- case 't': e = KeyEvent.KEYCODE_T; break;
- case 'u': e = KeyEvent.KEYCODE_U; break;
- case 'v': e = KeyEvent.KEYCODE_V; break;
- case 'w': e = KeyEvent.KEYCODE_W; break;
- case 'x': e = KeyEvent.KEYCODE_X; break;
- case 'y': e = KeyEvent.KEYCODE_Y; break;
- case 'z': e = KeyEvent.KEYCODE_Z; break;
- case '0': e = KeyEvent.KEYCODE_0; break;
- case '1': e = KeyEvent.KEYCODE_1; break;
- case '2': e = KeyEvent.KEYCODE_2; break;
- case '3': e = KeyEvent.KEYCODE_3; break;
- case '4': e = KeyEvent.KEYCODE_4; break;
- case '5': e = KeyEvent.KEYCODE_5; break;
- case '6': e = KeyEvent.KEYCODE_6; break;
- case '7': e = KeyEvent.KEYCODE_7; break;
- case '8': e = KeyEvent.KEYCODE_8; break;
- case '9': e = KeyEvent.KEYCODE_9; break;
- case '`': e = KeyEvent.KEYCODE_GRAVE; break;
- case '-': e = KeyEvent.KEYCODE_MINUS; break;
- case '=': e = KeyEvent.KEYCODE_EQUALS; break;
- case '[': e = KeyEvent.KEYCODE_LEFT_BRACKET; break;
- case ']': e = KeyEvent.KEYCODE_RIGHT_BRACKET; break;
- case '\\': e = KeyEvent.KEYCODE_BACKSLASH; break;
- case ';': e = KeyEvent.KEYCODE_SEMICOLON; break;
- case '\'': e = KeyEvent.KEYCODE_APOSTROPHE; break;
- case '/': e = KeyEvent.KEYCODE_SLASH; break;
- case '@': e = KeyEvent.KEYCODE_AT; break;
- case '+': e = KeyEvent.KEYCODE_PLUS; break;
- case ',': e = KeyEvent.KEYCODE_COMMA; break;
- case '.': e = KeyEvent.KEYCODE_PERIOD; break;
- case '*': e = KeyEvent.KEYCODE_STAR; break;
- case '#': e = KeyEvent.KEYCODE_POUND; break;
- case '(': e = KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN; break;
- case ')': e = KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN; break;
- case ' ': e = KeyEvent.KEYCODE_SPACE; break;
+ case Char:
+ switch (k.getChar())
+ {
+ case 'a': e = KeyEvent.KEYCODE_A; break;
+ case 'b': e = KeyEvent.KEYCODE_B; break;
+ case 'c': e = KeyEvent.KEYCODE_C; break;
+ case 'd': e = KeyEvent.KEYCODE_D; break;
+ case 'e': e = KeyEvent.KEYCODE_E; break;
+ case 'f': e = KeyEvent.KEYCODE_F; break;
+ case 'g': e = KeyEvent.KEYCODE_G; break;
+ case 'h': e = KeyEvent.KEYCODE_H; break;
+ case 'i': e = KeyEvent.KEYCODE_I; break;
+ case 'j': e = KeyEvent.KEYCODE_J; break;
+ case 'k': e = KeyEvent.KEYCODE_K; break;
+ case 'l': e = KeyEvent.KEYCODE_L; break;
+ case 'm': e = KeyEvent.KEYCODE_M; break;
+ case 'n': e = KeyEvent.KEYCODE_N; break;
+ case 'o': e = KeyEvent.KEYCODE_O; break;
+ case 'p': e = KeyEvent.KEYCODE_P; break;
+ case 'q': e = KeyEvent.KEYCODE_Q; break;
+ case 'r': e = KeyEvent.KEYCODE_R; break;
+ case 's': e = KeyEvent.KEYCODE_S; break;
+ case 't': e = KeyEvent.KEYCODE_T; break;
+ case 'u': e = KeyEvent.KEYCODE_U; break;
+ case 'v': e = KeyEvent.KEYCODE_V; break;
+ case 'w': e = KeyEvent.KEYCODE_W; break;
+ case 'x': e = KeyEvent.KEYCODE_X; break;
+ case 'y': e = KeyEvent.KEYCODE_Y; break;
+ case 'z': e = KeyEvent.KEYCODE_Z; break;
+ case '0': e = KeyEvent.KEYCODE_0; break;
+ case '1': e = KeyEvent.KEYCODE_1; break;
+ case '2': e = KeyEvent.KEYCODE_2; break;
+ case '3': e = KeyEvent.KEYCODE_3; break;
+ case '4': e = KeyEvent.KEYCODE_4; break;
+ case '5': e = KeyEvent.KEYCODE_5; break;
+ case '6': e = KeyEvent.KEYCODE_6; break;
+ case '7': e = KeyEvent.KEYCODE_7; break;
+ case '8': e = KeyEvent.KEYCODE_8; break;
+ case '9': e = KeyEvent.KEYCODE_9; break;
+ case '`': e = KeyEvent.KEYCODE_GRAVE; break;
+ case '-': e = KeyEvent.KEYCODE_MINUS; break;
+ case '=': e = KeyEvent.KEYCODE_EQUALS; break;
+ case '[': e = KeyEvent.KEYCODE_LEFT_BRACKET; break;
+ case ']': e = KeyEvent.KEYCODE_RIGHT_BRACKET; break;
+ case '\\': e = KeyEvent.KEYCODE_BACKSLASH; break;
+ case ';': e = KeyEvent.KEYCODE_SEMICOLON; break;
+ case '\'': e = KeyEvent.KEYCODE_APOSTROPHE; break;
+ case '/': e = KeyEvent.KEYCODE_SLASH; break;
+ case '@': e = KeyEvent.KEYCODE_AT; break;
+ case '+': e = KeyEvent.KEYCODE_PLUS; break;
+ case ',': e = KeyEvent.KEYCODE_COMMA; break;
+ case '.': e = KeyEvent.KEYCODE_PERIOD; break;
+ case '*': e = KeyEvent.KEYCODE_STAR; break;
+ case '#': e = KeyEvent.KEYCODE_POUND; break;
+ case '(': e = KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN; break;
+ case ')': e = KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN; break;
+ case ' ': e = KeyEvent.KEYCODE_SPACE; break;
+ default: return k;
+ }
+ break;
+ case Editing:
+ switch (k.getEditing())
+ {
+ case SPACE_BAR: e = KeyEvent.KEYCODE_SPACE; break;
+ default: return k;
+ }
+ break;
default: return k;
}
return k.withKeyevent(e);
@@ -409,6 +432,12 @@ public final class KeyModifier
case KeyEvent.KEYCODE_FORWARD_DEL: name = "forward_delete_word"; break;
}
break;
+ case Editing:
+ switch (k.getEditing())
+ {
+ case BACKSPACE: name = "delete_word"; break;
+ }
+ break;
}
return (name == null) ? k : KeyValue.getKeyByName(name);
}
@@ -437,6 +466,12 @@ public final class KeyModifier
case KeyEvent.KEYCODE_ESCAPE: name = "selection_cancel"; break;
}
break;
+ case Editing:
+ switch (k.getEditing())
+ {
+ case SPACE_BAR: name = "selection_cancel"; break;
+ }
+ break;
}
return (name == null) ? k : KeyValue.getKeyByName(name);
}