the Korean Space key is now just Space key with the correct behavior in all languages
This commit is contained in:
parent
b446e41120
commit
a622aa0d70
19 changed files with 61 additions and 32 deletions
|
|
@ -7,6 +7,7 @@ import io.github.sspanak.tt9.db.words.DictionaryLoader;
|
|||
import io.github.sspanak.tt9.ime.helpers.TextField;
|
||||
import io.github.sspanak.tt9.ime.modes.InputMode;
|
||||
import io.github.sspanak.tt9.ime.modes.InputModeKind;
|
||||
import io.github.sspanak.tt9.languages.LanguageKind;
|
||||
import io.github.sspanak.tt9.ui.UI;
|
||||
import io.github.sspanak.tt9.util.Ternary;
|
||||
|
||||
|
|
@ -121,7 +122,7 @@ public abstract class HotkeyHandler extends CommandHandler {
|
|||
}
|
||||
|
||||
if (keyCode == settings.getKeySpaceKorean()) {
|
||||
return onText(" ", validateOnly);
|
||||
return onKeySpaceKorean(validateOnly);
|
||||
}
|
||||
|
||||
if (keyCode == settings.getKeyShowSettings()) {
|
||||
|
|
@ -391,24 +392,28 @@ public abstract class HotkeyHandler extends CommandHandler {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* For CJK languages: when there are suggestions, accept the current one, otherwise type a space.
|
||||
* For Non-CJK languages: accept the current suggestion (if any) AND type a space.
|
||||
* The name is kept for historical reasons, because Korean was the first to introduce this behavior.
|
||||
*/
|
||||
public boolean onKeySpaceKorean(boolean validateOnly) {
|
||||
if (shouldBeOff() || !InputModeKind.isCheonjiin(mInputMode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// type a space when there is nothing to accept
|
||||
if (suggestionOps.isEmpty() && !onText(" ", validateOnly)) {
|
||||
if (shouldBeOff()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// simulate accept with OK when there are suggestions
|
||||
if (!suggestionOps.isEmpty()) {
|
||||
if (!suggestionOps.isEmpty() && LanguageKind.isCJK(mLanguage)) {
|
||||
if (!validateOnly) {
|
||||
onAcceptSuggestionManually(suggestionOps.acceptCurrent(), KeyEvent.KEYCODE_ENTER);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// type a space when there is nothing to accept
|
||||
return onText(" ", validateOnly);
|
||||
}
|
||||
|
||||
|
||||
private boolean onKeyVoiceInput(boolean validateOnly) {
|
||||
if (!isInputViewShown() || shouldBeOff() || !voiceInputOps.isAvailable()) {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import io.github.sspanak.tt9.ime.helpers.OrientationListener;
|
|||
import io.github.sspanak.tt9.ime.modes.InputModeKind;
|
||||
import io.github.sspanak.tt9.ime.voice.VoiceInputOps;
|
||||
import io.github.sspanak.tt9.languages.Language;
|
||||
import io.github.sspanak.tt9.languages.LanguageKind;
|
||||
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
|
||||
import io.github.sspanak.tt9.ui.main.ResizableMainView;
|
||||
|
||||
|
|
@ -192,11 +191,6 @@ abstract public class MainViewHandler extends HotkeyHandler {
|
|||
}
|
||||
|
||||
|
||||
public boolean hasLettersOnAllKeys() {
|
||||
return LanguageKind.isKorean(mLanguage) || LanguageKind.isChineseBopomofo(mLanguage);
|
||||
}
|
||||
|
||||
|
||||
private void resetNormalizedDimensions() {
|
||||
normalizedWidth = -1;
|
||||
normalizedHeight = -1;
|
||||
|
|
|
|||
|
|
@ -63,7 +63,9 @@ public class ModePinyin extends ModeIdeograms {
|
|||
|
||||
@Override
|
||||
public boolean shouldAcceptPreviousSuggestion(int nextKey, boolean hold) {
|
||||
// In East Asian languages, 0-key must accept the current word, or type a space when there is no word.
|
||||
// In East Asian languages, Space must accept the current word, or type a space when there is no word.
|
||||
// Here, we handle the case when 0-key is Space, unlike the Space hotkey in HotkeyHandler,
|
||||
// which could be a different key, assigned by the user.
|
||||
if (!digitSequence.isEmpty() && !digitSequence.endsWith(SPECIAL_CHAR_SEQUENCE) && nextKey == SPECIAL_CHAR_KEY) {
|
||||
ignoreNextSpace = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ abstract public class Language {
|
|||
protected String currency;
|
||||
protected String dictionaryFile;
|
||||
protected boolean hasABC = true;
|
||||
private Boolean hasLettersOnAllKeys = null;
|
||||
protected boolean hasSpaceBetweenWords = true;
|
||||
protected boolean hasUpperCase = true;
|
||||
protected boolean hasTranscriptionsEmbedded = false;
|
||||
|
|
@ -69,6 +70,30 @@ abstract public class Language {
|
|||
return hasABC;
|
||||
}
|
||||
|
||||
final public boolean hasLettersOnAllKeys() {
|
||||
if (hasLettersOnAllKeys != null) {
|
||||
return hasLettersOnAllKeys;
|
||||
}
|
||||
|
||||
boolean hasCharsOn0 = false;
|
||||
for (String ch : getKeyCharacters(0)) {
|
||||
if (Character.isAlphabetic(ch.charAt(0))) {
|
||||
hasCharsOn0 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
boolean hasCharsOn1 = false;
|
||||
for (String ch : getKeyCharacters(1)) {
|
||||
if (Character.isAlphabetic(ch.charAt(0))) {
|
||||
hasCharsOn1 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return hasLettersOnAllKeys = hasCharsOn0 && hasCharsOn1;
|
||||
}
|
||||
|
||||
final public boolean hasSpaceBetweenWords() {
|
||||
return hasSpaceBetweenWords;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -281,10 +281,13 @@ class MainLayoutNumpad extends BaseMainLayout {
|
|||
setWidth(tt9.getSettings().getWidthPercent(), tt9.getSettings().getAlignment());
|
||||
setKeyColumnWidth(tt9.getSettings().getNumpadFnKeyScale());
|
||||
setBackgroundBlending();
|
||||
|
||||
boolean hasLettersOnAllKeys = tt9.getLanguage() != null && tt9.getLanguage().hasLettersOnAllKeys();
|
||||
showLongSpace(
|
||||
tt9.getSettings().isNumpadShapeLongSpace() && !tt9.isInputModeNumeric() && !tt9.hasLettersOnAllKeys(),
|
||||
tt9.getSettings().isNumpadShapeLongSpace() && !tt9.isInputModeNumeric() && !hasLettersOnAllKeys,
|
||||
defaultKeyHeight
|
||||
);
|
||||
|
||||
for (SoftKey key : getKeys()) {
|
||||
key.render();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public class SoftKey extends BaseClickableKey {
|
|||
|
||||
|
||||
protected boolean hasLettersOnAllKeys() {
|
||||
return tt9 != null && tt9.hasLettersOnAllKeys();
|
||||
return tt9 != null && tt9.getLanguage() != null && tt9.getLanguage().hasLettersOnAllKeys();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@
|
|||
<string name="key_yellow">Жълт бутон</string>
|
||||
<string name="key_blue">Син бутон</string>
|
||||
<string name="key_volume_mute">Заглушаване на звук</string>
|
||||
<string name="virtual_key_space_korean">Интервал (корейски)</string>
|
||||
<string name="virtual_key_space_korean">Интервал</string>
|
||||
<string name="voice_input_listening">Говорете</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Трябва да разрешите достъпа до микрофона, за да използвате гласовото въвеждане.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Несъвместим гласов асистент</string>
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@
|
|||
<string name="key_yellow">Gelber Knopf</string>
|
||||
<string name="key_blue">Blauer Knopf</string>
|
||||
<string name="key_volume_mute">Stummschalttaste</string>
|
||||
<string name="virtual_key_space_korean">Leertaste (Koreanisch)</string>
|
||||
<string name="virtual_key_space_korean">Leertaste</string>
|
||||
<string name="voice_input_listening">Sprechen</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Sie müssen dem Mikrofon die Erlaubnis erteilen, die Spracheingabe zu verwenden.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Inkompatibler Sprachassistent</string>
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@
|
|||
<string name="key_yellow">Botón amarillo</string>
|
||||
<string name="key_blue">Botón azul</string>
|
||||
<string name="key_volume_mute">Botón de silencio</string>
|
||||
<string name="virtual_key_space_korean">Espacio (coreano)</string>
|
||||
<string name="virtual_key_space_korean">Espacio</string>
|
||||
<string name="voice_input_listening">Hable</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Debe otorgar permiso al micrófono para usar la entrada de voz.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Asistente de voz incompatible</string>
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@
|
|||
<string name="key_yellow">Bouton jaune</string>
|
||||
<string name="key_blue">Bouton bleu</string>
|
||||
<string name="key_volume_mute">Muet</string>
|
||||
<string name="virtual_key_space_korean">Espace (coréen)</string>
|
||||
<string name="virtual_key_space_korean">Espace</string>
|
||||
<string name="voice_input_listening">Parlez</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Vous devez accorder l\'autorisation au microphone pour utiliser la saisie vocale.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Assistant vocal incompatible</string>
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@
|
|||
<string name="key_yellow">Pulsante giallo</string>
|
||||
<string name="key_blue">Pulsante blu</string>
|
||||
<string name="key_volume_mute">Muto</string>
|
||||
<string name="virtual_key_space_korean">Spazio (coreano)</string>
|
||||
<string name="virtual_key_space_korean">Spazio</string>
|
||||
<string name="voice_input_listening">Parli</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Devi concedere l\'autorizzazione al microfono per utilizzare l\'input vocale.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Assistente vocale incompatibile</string>
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@
|
|||
<string name="key_yellow">כפתור צהוב</string>
|
||||
<string name="key_blue">כפתור כחול</string>
|
||||
<string name="key_volume_mute">כפתור השתק</string>
|
||||
<string name="virtual_key_space_korean">רווח (קוריאנית)</string>
|
||||
<string name="virtual_key_space_korean">רווח</string>
|
||||
<string name="voice_input_listening">האזנה</string>
|
||||
<string name="voice_input_mic_permission_is_needed">עליך להעניק למיקרופון הרשאה להשתמש בקלט קולי.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">עוזר קולי לא תואם</string>
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@
|
|||
<string name="key_yellow">Geltonas mygtukas</string>
|
||||
<string name="key_blue">Mėlynas mygtukas</string>
|
||||
<string name="key_volume_mute">Nutildymo mygt.</string>
|
||||
<string name="virtual_key_space_korean">Tarpas (korėjiečių)</string>
|
||||
<string name="virtual_key_space_korean">Tarpas</string>
|
||||
<string name="voice_input_listening">Kalbėkite</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Turite suteikti mikrofonui leidimą naudoti balso įvestį.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Nesuderinamas balso asistentas</string>
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@
|
|||
<string name="key_yellow">Gele knop</string>
|
||||
<string name="key_blue">Blauwe knop</string>
|
||||
<string name="key_volume_mute">Stilteknop</string>
|
||||
<string name="virtual_key_space_korean">Spatie (Koreaans)</string>
|
||||
<string name="virtual_key_space_korean">Spatie</string>
|
||||
<string name="voice_input_listening">Spreek</string>
|
||||
<string name="voice_input_mic_permission_is_needed">U moet de microfoon toestemming geven om spraakopvoer te gebruiken.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Onverenigbare spraakassistent</string>
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@
|
|||
<string name="key_yellow">Botão amarelo</string>
|
||||
<string name="key_blue">Botão azul</string>
|
||||
<string name="key_volume_mute">Mudo</string>
|
||||
<string name="virtual_key_space_korean">Espaço (coreano)</string>
|
||||
<string name="virtual_key_space_korean">Espaço</string>
|
||||
<string name="voice_input_listening">Fale</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Você deve conceder permissão ao microfone para usar a entrada de voz.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Assistente de voz incompatível</string>
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@
|
|||
<string name="key_yellow">Жёлтая кнопка</string>
|
||||
<string name="key_blue">Синяя кнопка</string>
|
||||
<string name="key_volume_mute">Выключения звука</string>
|
||||
<string name="virtual_key_space_korean">Пробел (корейский)</string>
|
||||
<string name="virtual_key_space_korean">Пробел</string>
|
||||
<string name="voice_input_listening">Говорите</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Вы должны предоставить микрофону разрешение на использование голосового ввода.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Несовместимый голосовой ассистент</string>
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@
|
|||
<string name="key_yellow">Sarı düğme</string>
|
||||
<string name="key_blue">Mavi düğme</string>
|
||||
<string name="key_volume_mute">Sessiz tuşu</string>
|
||||
<string name="virtual_key_space_korean">Boşluk (Korece)</string>
|
||||
<string name="virtual_key_space_korean">Boşluk</string>
|
||||
<string name="voice_input_listening">Konuşun</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Sesli giriş kullanmak için mikrofona izin vermelisiniz.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Uyumsuz sesli asistan</string>
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@
|
|||
<string name="key_yellow">Жовта кнопка</string>
|
||||
<string name="key_blue">Синя кнопка</string>
|
||||
<string name="key_volume_mute">Вимкнення звуку</string>
|
||||
<string name="virtual_key_space_korean">Пробіл (корейська)</string>
|
||||
<string name="virtual_key_space_korean">Пробіл</string>
|
||||
<string name="voice_input_listening">Диктуйте</string>
|
||||
<string name="voice_input_mic_permission_is_needed">Ви повинні надати мікрофону дозвіл на використання голосового введення.</string>
|
||||
<string name="voice_input_error_incompatible_voice_service">Несумісний голосовий асистент</string>
|
||||
|
|
|
|||
|
|
@ -239,7 +239,7 @@
|
|||
<string name="virtual_key_del" translatable="false">Del</string>
|
||||
<string name="virtual_key_input_mode" translatable="false">Mode</string>
|
||||
<string name="virtual_key_shift" translatable="false">Shift</string>
|
||||
<string name="virtual_key_space_korean">Space (Korean)</string>
|
||||
<string name="virtual_key_space_korean">Space</string>
|
||||
|
||||
<string name="voice_input_listening">Speak</string>
|
||||
<string name="voice_input_stopping">Turning off the microphone…</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue