1
0
Fork 0

added a hack for sending with OK in Google Chat

This commit is contained in:
sspanak 2024-02-11 17:41:40 +02:00 committed by Dimo Karaivanov
parent 89eaf0eedd
commit 6b95c6b9d1
14 changed files with 88 additions and 31 deletions

View file

@ -59,6 +59,14 @@ public class AppHacks {
}
private boolean isGoogleChat() {
return isAppField(
"com.google.android.apps.dynamite",
EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES | EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT
);
}
/**
* isAppField
* Detects a particular input field of a particular application.
@ -114,6 +122,8 @@ public class AppHacks {
return true;
} else if (isMessenger()) {
return onEnterFbMessenger();
} else if (isGoogleChat()) {
return onEnterGoogleChat();
}
return onEnterDefault();
@ -161,28 +171,46 @@ public class AppHacks {
/**
* onEnterFbMessenger
* Once we have detected the chat message field we apply the appropriate key combo to send the message.
* Messenger responds only to ENTER, but not DPAD_CENTER, so we make sure to send the correct code,
* no matter how the hardware key is implemented. In case the hack is disabled, we just type a new line,
* as one would expect.
*/
private boolean onEnterFbMessenger() {
if (textField == null) {
if (inputConnection == null || textField == null || !textField.isThereText()) {
return false;
}
// in case the setting is disabled, just type a new line as one would expect
if (!settings.getFbMessengerHack()) {
inputConnection.commitText("\n", 1);
return true;
}
// do not send any commands if the user has not typed anything or the field is invalid
if (!textField.isThereText()) {
return false;
}
if (isMessenger()) {
// Messenger responds only to ENTER, but not DPAD_CENTER, so we make sure to send the correct code,
// no matter how the hardware key is implemented.
if (settings.getFbMessengerHack()) {
sendDownUpKeyEvents(KeyEvent.KEYCODE_ENTER);
} else {
// in case the setting is disabled, just type a new line as one would expect
inputConnection.commitText("\n", 1);
}
return true;
}
/**
* onEnterGoogleChat
* Google Chat does not seem to respond consistently to ENTER. So we trick it by selecting
* the send button it, then going back to the text field, so that one can continue typing.
* If the hack is disabled, we just type a new line.
*/
private boolean onEnterGoogleChat() {
if (inputConnection == null || textField == null || !textField.isThereText()) {
return false;
}
if (settings.getGoogleChatHack()) {
sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB);
sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB);
sendDownUpKeyEvents(KeyEvent.KEYCODE_ENTER);
sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB, true);
sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB, true);
sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB, true);
sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB, true);
} else {
inputConnection.commitText("\n", 1);
}
return true;
@ -190,9 +218,16 @@ public class AppHacks {
private void sendDownUpKeyEvents(int keyCode) {
sendDownUpKeyEvents(keyCode, false);
}
private void sendDownUpKeyEvents(int keyCode, boolean shift) {
if (inputConnection != null) {
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, keyCode));
KeyEvent downEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, keyCode, 0, shift ? KeyEvent.META_SHIFT_ON : 0);
KeyEvent upEvent = new KeyEvent(0, 0, KeyEvent.ACTION_UP, keyCode, 0, shift ? KeyEvent.META_SHIFT_ON : 0);
inputConnection.sendKeyEvent(downEvent);
inputConnection.sendKeyEvent(upEvent);
}
}
}

View file

@ -300,4 +300,8 @@ public class SettingsStore {
public boolean getFbMessengerHack() {
return prefs.getBoolean("pref_hack_fb_messenger", false);
}
public boolean getGoogleChatHack() {
return prefs.getBoolean("pref_hack_google_chat", false);
}
}

View file

@ -28,8 +28,8 @@
<string name="pref_category_hacks">Съвместимост</string>
<string name="pref_category_appearance">Облик</string>
<string name="pref_category_function_keys">Бутони за бърз достъп</string>
<string name="pref_hack_fb_messenger">Изпращай съобщения с ОК в Messenger</string>
<string name="pref_hack_fb_messenger_summary">Позволява изпращането на съобщения с бутона ОК във Facebook Messenger.</string>
<string name="pref_hack_fb_messenger">Изпращай с ОК във Facebook Messenger</string>
<string name="pref_hack_google_chat">Изпращай съобщения с „ОК“ в Google Chat</string>
<string name="pref_show_soft_function_keys">Бутони на екрана</string>
<string name="key_back">Назад</string>
<string name="key_call">Зелена слушалка</string>

View file

@ -32,4 +32,6 @@
<string name="pref_dark_theme_auto">Automatisch</string>
<string name="donate_title">Spenden</string>
<string name="donate_summary">Wenn Ihnen %1$s gefällt, könnten Sie die Entwicklung auf %2$s unterstützen.</string>
<string name="pref_hack_fb_messenger">Mit \"OK\" in Facebook Messenger senden</string>
<string name="pref_hack_google_chat">Nachrichten mit \"OK\" in Google Chat senden</string>
</resources>

View file

@ -76,4 +76,6 @@
<string name="pref_dark_theme_auto">Automática</string>
<string name="donate_title">Donar</string>
<string name="donate_summary">Si te gusta %1$s, podrías apoyar su desarrollo en: %2$s.</string>
<string name="pref_hack_fb_messenger">Enviar con «OK» en Facebook Messenger</string>
<string name="pref_hack_google_chat">Enviar mensajes con «OK» en Google Chat</string>
</resources>

View file

@ -28,8 +28,8 @@
<string name="pref_category_appearance">Apparance</string>
<string name="dictionary_load_bad_char">Echec du chargement. Mot inadmissible «%1$s» à la ligne %2$d de langue «%3$s».</string>
<string name="dictionary_truncated">Le dictionaire est supprimé avec succès.</string>
<string name="pref_hack_fb_messenger">Envoyer des messages avec OK dans Messenger</string>
<string name="pref_hack_fb_messenger_summary">La touche OK servira pour envoyer des messages dans Facebook Messenger.</string>
<string name="pref_hack_fb_messenger">Envoyer avec «OK» dans Facebook Messenger</string>
<string name="pref_hack_google_chat">Envoyer des messages avec «OK» dans Google Chat</string>
<string name="pref_show_soft_function_keys">Boutons à l\'écran</string>
<string name="dictionary_loading_indeterminate">Chargement du dictionnaire</string>
<string name="dictionary_load_cancelled">Chargement est annulé.</string>

View file

@ -41,5 +41,7 @@
<string name="pref_dark_theme_auto">Automatica</string>
<string name="donate_title">Donare</string>
<string name="donate_summary">Se ti piace %1$s, potresti supportarne lo sviluppo su: %2$s.</string>
<string name="pref_hack_fb_messenger">Inviare con \"OK\" su Facebook Messenger</string>
<string name="pref_hack_google_chat">Inviare messaggi con \"OK\" su Google Chat</string>
</resources>

View file

@ -69,4 +69,6 @@
<string name="pref_dark_theme_auto">אוטומטי</string>
<string name="donate_title">לִתְרוֹם</string>
<string name="donate_summary">אם אתה אוהב את %1$s, תוכל לתמוך בפיתוח שלו בכתובת: %2$s</string>
<string name="pref_hack_fb_messenger">שלח עם \"OK\" ב-Facebook Messenger.</string>
<string name="pref_hack_google_chat">שלח הודעות עם \"OK\" ב-Google Chat</string>
</resources>

View file

@ -32,4 +32,6 @@
<string name="pref_dark_theme_auto">Automatisch</string>
<string name="donate_title">Doneer</string>
<string name="donate_summary">Als je %1$s leuk vindt, zou je de ontwikkeling kunnen ondersteunen op: %2$s.</string>
<string name="pref_hack_fb_messenger">Verstuur met \"OK\" in Facebook Messenger</string>
<string name="pref_hack_google_chat">Stuur berichten met \"OK\" in Google Chat</string>
</resources>

View file

@ -65,4 +65,6 @@
<string name="pref_dark_theme_auto">Automático</string>
<string name="donate_title">Doar</string>
<string name="donate_summary">Se você gosta de %1$s, você poderia apoiar o seu desenvolvimento em: %2$s.</string>
<string name="pref_hack_fb_messenger">Enviar com \"OK\" no Facebook Messenger</string>
<string name="pref_hack_google_chat">Enviar mensagens com \"OK\" no Google Chat</string>
</resources>

View file

@ -42,8 +42,7 @@
<string name="pref_auto_text_case">Авто заглавные буквы</string>
<string name="pref_auto_text_case_summary">Автоматически начинать предложение с заглавной буквы.</string>
<string name="pref_double_zero_char">Символ при двойном нажатии клавиши 0</string>
<string name="pref_hack_fb_messenger">Отправка сообщения с «ОК» в Messenger</string>
<string name="pref_hack_fb_messenger_summary">Позволяет отправлять сообщения с помощью кнопки «ОК» в Facebook Messenger.</string>
<string name="pref_hack_fb_messenger">Отправка с «ОК» в Messenger</string>
<string name="pref_show_soft_function_keys">Кнопки на экране</string>
<string name="dictionary_load_bad_char">Не удалось загрузить словарь. Проблема в слове «%1$s» в строке %2$d для языка «%3$s».</string>
<string name="dictionary_missing_go_load_it">Отсутствует словарь для языка «%1$s». Вы можете загрузить его в Настройках.</string>
@ -82,4 +81,5 @@
<string name="add_word_confirm">Добавить слово «%1$s» в %2$s?</string>
<string name="donate_title">Поддержать</string>
<string name="donate_summary">Если вам нравится %1$s, вы можете поддержать его разработку по: %2$s.</string>
<string name="pref_hack_google_chat">Отправка сообщения с «ОК» в Google Chat</string>
</resources>

View file

@ -41,8 +41,7 @@
<string name="pref_auto_text_case">Авто заголовні букви</string>
<string name="pref_auto_text_case_summary">Автоматично починати речення з заголовної букви.</string>
<string name="pref_double_zero_char">Символ при подвійному натисканні клавіші 0</string>
<string name="pref_hack_fb_messenger">Надсилати повідомлення з «ОК» до Messenger</string>
<string name="pref_hack_fb_messenger_summary">Дозволяє надсилати повідомлення за допомогою клавіші «ОК» у Facebook Messenger.</string>
<string name="pref_hack_fb_messenger">Надсилати з «ОК» до Messenger</string>
<string name="pref_show_soft_function_keys">Кнопки на екрані</string>
<string name="key_back">Назад</string>
<string name="key_call">Виклик</string>
@ -82,4 +81,5 @@
<string name="add_word_confirm">Додати слово «%1$s» до %2$s?</string>
<string name="donate_title">Підтримуйте</string>
<string name="donate_summary">Якщо вам подобається %1$s, ви можете підтримати його розробку за: %2$s.</string>
<string name="pref_hack_google_chat">Надсилати повідомлення з «ОК» до Google Chat</string>
</resources>

View file

@ -45,8 +45,8 @@
<string name="pref_dark_theme_no">No</string>
<string name="pref_dark_theme_auto">Auto</string>
<string name="pref_double_zero_char">Character for Double 0-key Press</string>
<string name="pref_hack_fb_messenger">Send messages with OK in Messenger</string>
<string name="pref_hack_fb_messenger_summary">Allows sending messages with the OK key in Facebook Messenger.</string>
<string name="pref_hack_google_chat">Send messages with \"OK\" in Google Chat</string>
<string name="pref_hack_fb_messenger">Send with \"OK\" in Facebook Messenger</string>
<string name="pref_show_soft_function_keys">Show On-Screen Keys</string>
<string name="pref_show_soft_numpad">Show On-Screen Numpad</string>
<string name="pref_show_soft_numpad_summary" translatable="false">(BETA)</string>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layout="@layout/pref_text"
app:orderingFromXml="true">
<Preference
@ -24,12 +25,17 @@
app:title="@string/pref_alternative_suggestion_scrolling"
app:summary="@string/pref_alternative_suggestion_scrolling_summary"/>
<SwitchPreferenceCompat
app:defaultValue="false"
app:key="pref_hack_google_chat"
app:layout="@layout/pref_switch"
app:title="@string/pref_hack_google_chat"/>
<SwitchPreferenceCompat
app:defaultValue="false"
app:key="pref_hack_fb_messenger"
app:layout="@layout/pref_switch"
app:title="@string/pref_hack_fb_messenger"
app:summary="@string/pref_hack_fb_messenger_summary"/>
app:title="@string/pref_hack_fb_messenger"/>
</PreferenceCategory>
</PreferenceScreen>