Compare commits

...

2 Commits

Author SHA1 Message Date
Jules Aguillon
408d80b26c Remove the old implementation of the Caps lock button 2024-02-17 12:04:02 +01:00
Jules Aguillon
95e7494ad7 Define Caps lock as a modifier
The previous implementation has unintended interactions with
auto-capitalisation.

Caps lock can now be locked twice at the same time, independently:
- Long press on shift
- Tap on Caps lock

Both have to be disabled independently. This might seem weird.
2024-02-17 11:59:38 +01:00
4 changed files with 9 additions and 14 deletions

View File

@ -292,7 +292,7 @@ public final class KeyEventHandler implements Config.IKeyEventHandler
public static interface IReceiver public static interface IReceiver
{ {
public void handle_event_key(KeyValue.Event ev); public void handle_event_key(KeyValue.Event ev);
public void set_shift_state(boolean state, boolean lock); public void set_shift_state(boolean state);
public InputConnection getCurrentInputConnection(); public InputConnection getCurrentInputConnection();
} }
@ -302,9 +302,9 @@ public final class KeyEventHandler implements Config.IKeyEventHandler
public void update_shift_state(boolean should_enable, boolean should_disable) public void update_shift_state(boolean should_enable, boolean should_disable)
{ {
if (should_enable) if (should_enable)
_recv.set_shift_state(true, false); _recv.set_shift_state(true);
else if (should_disable) else if (should_disable)
_recv.set_shift_state(false, false); _recv.set_shift_state(false);
} }
} }
} }

View File

@ -18,7 +18,6 @@ public final class KeyValue
SWITCH_FORWARD, SWITCH_FORWARD,
SWITCH_BACKWARD, SWITCH_BACKWARD,
SWITCH_GREEKMATH, SWITCH_GREEKMATH,
CAPS_LOCK,
SWITCH_VOICE_TYPING, SWITCH_VOICE_TYPING,
SWITCH_VOICE_TYPING_CHOOSER, SWITCH_VOICE_TYPING_CHOOSER,
} }
@ -355,6 +354,7 @@ public final class KeyValue
case "box": return modifierKey("Box", Modifier.BOX, 0); case "box": return modifierKey("Box", Modifier.BOX, 0);
case "fn": return modifierKey("Fn", Modifier.FN, 0); case "fn": return modifierKey("Fn", Modifier.FN, 0);
case "meta": return modifierKey("Meta", Modifier.META, 0); case "meta": return modifierKey("Meta", Modifier.META, 0);
case "capslock": return modifierKey(0xE012, Modifier.SHIFT, FLAG_LOCKED);
/* Special event keys */ /* Special event keys */
case "config": return eventKey(0xE004, Event.CONFIG, FLAG_SMALLER_FONT); case "config": return eventKey(0xE004, Event.CONFIG, FLAG_SMALLER_FONT);
@ -368,7 +368,6 @@ public final class KeyValue
case "change_method": return eventKey(0xE009, Event.CHANGE_METHOD_PICKER, FLAG_SMALLER_FONT); case "change_method": return eventKey(0xE009, Event.CHANGE_METHOD_PICKER, FLAG_SMALLER_FONT);
case "change_method_prev": return eventKey(0xE009, Event.CHANGE_METHOD_AUTO, FLAG_SMALLER_FONT); case "change_method_prev": return eventKey(0xE009, Event.CHANGE_METHOD_AUTO, FLAG_SMALLER_FONT);
case "action": return eventKey("Action", Event.ACTION, FLAG_SMALLER_FONT); // Will always be replaced case "action": return eventKey("Action", Event.ACTION, FLAG_SMALLER_FONT); // Will always be replaced
case "capslock": return eventKey(0xE012, Event.CAPS_LOCK, 0);
case "voice_typing": return eventKey(0xE015, Event.SWITCH_VOICE_TYPING, FLAG_SMALLER_FONT); case "voice_typing": return eventKey(0xE015, Event.SWITCH_VOICE_TYPING, FLAG_SMALLER_FONT);
case "voice_typing_chooser": return eventKey(0xE015, Event.SWITCH_VOICE_TYPING_CHOOSER, FLAG_SMALLER_FONT); case "voice_typing_chooser": return eventKey(0xE015, Event.SWITCH_VOICE_TYPING_CHOOSER, FLAG_SMALLER_FONT);

View File

@ -418,10 +418,6 @@ public class Keyboard2 extends InputMethodService
setSpecialLayout(loadNumpad(R.xml.greekmath)); setSpecialLayout(loadNumpad(R.xml.greekmath));
break; break;
case CAPS_LOCK:
set_shift_state(true, true);
break;
case SWITCH_VOICE_TYPING: case SWITCH_VOICE_TYPING:
if (!VoiceImeSwitcher.switch_to_voice_ime(Keyboard2.this, get_imm(), if (!VoiceImeSwitcher.switch_to_voice_ime(Keyboard2.this, get_imm(),
Config.globalPrefs())) Config.globalPrefs()))
@ -435,9 +431,9 @@ public class Keyboard2 extends InputMethodService
} }
} }
public void set_shift_state(boolean state, boolean lock) public void set_shift_state(boolean state)
{ {
_keyboardView.set_shift_state(state, lock); _keyboardView.set_shift_state(state);
} }
public InputConnection getCurrentInputConnection() public InputConnection getCurrentInputConnection()

View File

@ -110,16 +110,16 @@ public class Keyboard2View extends View
} }
/** Called by auto-capitalisation. */ /** Called by auto-capitalisation. */
public void set_shift_state(boolean state, boolean lock) public void set_shift_state(boolean state)
{ {
if (_keyboard == null || _shift_key == null) if (_keyboard == null || _shift_key == null)
return; return;
int flags = _pointers.getKeyFlags(_shift_key, _shift_kv); int flags = _pointers.getKeyFlags(_shift_key, _shift_kv);
if (state) if (state)
{ {
if (flags != -1 && !lock) if (flags != -1)
return; // Don't replace an existing pointer return; // Don't replace an existing pointer
_pointers.add_fake_pointer(_shift_kv, _shift_key, lock); _pointers.add_fake_pointer(_shift_kv, _shift_key, false);
} }
else else
{ {