abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/Autocapitalisation.java
diff options
context:
space:
mode:
authorJules Aguillon2022-07-24 23:32:14 +0200
committerJules Aguillon2022-07-24 23:32:14 +0200
commitbfde31da6e74aa57e3bcd6f2985fd4588bd48814 (patch)
tree335d7de350bd4bd7f60cf0b80b5244f4445680a3 /srcs/juloo.keyboard2/Autocapitalisation.java
parent324756535e139aacfb9d828a5bc9a2a6fef634ea (diff)
downloadunexpected-keyboard-bfde31da6e74aa57e3bcd6f2985fd4588bd48814.tar.gz
unexpected-keyboard-bfde31da6e74aa57e3bcd6f2985fd4588bd48814.zip
Avoid automatic capitalisation when using arrows
Disable capitalisation just after an arrow kind is pressed to avoid interrupting navigation.
Diffstat (limited to 'srcs/juloo.keyboard2/Autocapitalisation.java')
-rw-r--r--srcs/juloo.keyboard2/Autocapitalisation.java41
1 files changed, 35 insertions, 6 deletions
diff --git a/srcs/juloo.keyboard2/Autocapitalisation.java b/srcs/juloo.keyboard2/Autocapitalisation.java
index 1affdab..a055d3d 100644
--- a/srcs/juloo.keyboard2/Autocapitalisation.java
+++ b/srcs/juloo.keyboard2/Autocapitalisation.java
@@ -10,7 +10,8 @@ final class Autocapitalisation
{
private boolean _enabled = false;
private boolean _beginning_of_sentence = false;
-
+ /** Used to avoid enabling shift after an arrow key is pressed. */
+ private boolean _skip_next_selection_update = false;
/** Keep track of the cursor to differentiate 'selection_updated' events
corresponding to typing from cursor movement. */
private int _cursor = 0;
@@ -50,22 +51,50 @@ final class Autocapitalisation
_beginning_of_sentence = false;
}
- public void selection_updated(int old_cursor, int new_cursor, InputConnection ic)
+ public void event_sent(int code)
{
+ switch (code)
+ {
+ // Disable temporarily after a keyboard cursor movement
+ case KeyEvent.KEYCODE_DPAD_UP:
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ case KeyEvent.KEYCODE_DPAD_LEFT:
+ case KeyEvent.KEYCODE_PAGE_UP:
+ case KeyEvent.KEYCODE_PAGE_DOWN:
+ case KeyEvent.KEYCODE_MOVE_HOME:
+ case KeyEvent.KEYCODE_MOVE_END:
+ _skip_next_selection_update = true;
+ _beginning_of_sentence = false;
+ break;
+ }
+ }
+
+ /** Returns [true] if shift might be disabled. */
+ public boolean selection_updated(int old_cursor, int new_cursor, InputConnection ic)
+ {
+ if (_skip_next_selection_update)
+ {
+ _cursor = new_cursor;
+ _skip_next_selection_update = false;
+ return false;
+ }
if (new_cursor == _cursor)
- return;
- // Text has been inserted
+ return false;
+ // Text has been inserted or cursor moved forward
if (old_cursor == _cursor && new_cursor > old_cursor)
{
scan_text_before_cursor(Math.min(new_cursor - old_cursor, 10), ic);
+ return true;
}
else
{
- // Cursor has moved or [_cursor] wasn't uptodate
+ // Cursor has moved backward or text deleted
_beginning_of_sentence = false;
scan_text_before_cursor(10, ic);
+ _cursor = new_cursor;
+ return true;
}
- _cursor = new_cursor;
}
/** Updates [_cursor]. */