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 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();
}
@ -302,9 +302,9 @@ public final class KeyEventHandler implements Config.IKeyEventHandler
public void update_shift_state(boolean should_enable, boolean should_disable)
{
if (should_enable)
_recv.set_shift_state(true, false);
_recv.set_shift_state(true);
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_BACKWARD,
SWITCH_GREEKMATH,
CAPS_LOCK,
SWITCH_VOICE_TYPING,
SWITCH_VOICE_TYPING_CHOOSER,
}
@ -355,6 +354,7 @@ public final class KeyValue
case "box": return modifierKey("Box", Modifier.BOX, 0);
case "fn": return modifierKey("Fn", Modifier.FN, 0);
case "meta": return modifierKey("Meta", Modifier.META, 0);
case "capslock": return modifierKey(0xE012, Modifier.SHIFT, FLAG_LOCKED);
/* Special event keys */
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_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 "capslock": return eventKey(0xE012, Event.CAPS_LOCK, 0);
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);

View File

@ -418,10 +418,6 @@ public class Keyboard2 extends InputMethodService
setSpecialLayout(loadNumpad(R.xml.greekmath));
break;
case CAPS_LOCK:
set_shift_state(true, true);
break;
case SWITCH_VOICE_TYPING:
if (!VoiceImeSwitcher.switch_to_voice_ime(Keyboard2.this, get_imm(),
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()

View File

@ -110,16 +110,16 @@ public class Keyboard2View extends View
}
/** 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)
return;
int flags = _pointers.getKeyFlags(_shift_key, _shift_kv);
if (state)
{
if (flags != -1 && !lock)
if (flags != -1)
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
{