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 * isAppField
* Detects a particular input field of a particular application. * Detects a particular input field of a particular application.
@ -114,6 +122,8 @@ public class AppHacks {
return true; return true;
} else if (isMessenger()) { } else if (isMessenger()) {
return onEnterFbMessenger(); return onEnterFbMessenger();
} else if (isGoogleChat()) {
return onEnterGoogleChat();
} }
return onEnterDefault(); return onEnterDefault();
@ -161,28 +171,46 @@ public class AppHacks {
/** /**
* onEnterFbMessenger * 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() { private boolean onEnterFbMessenger() {
if (textField == null) { if (inputConnection == null || textField == null || !textField.isThereText()) {
return false; return false;
} }
if (settings.getFbMessengerHack()) {
sendDownUpKeyEvents(KeyEvent.KEYCODE_ENTER);
} else {
// in case the setting is disabled, just type a new line as one would expect // in case the setting is disabled, just type a new line as one would expect
if (!settings.getFbMessengerHack()) {
inputConnection.commitText("\n", 1); inputConnection.commitText("\n", 1);
}
return true; return true;
} }
// do not send any commands if the user has not typed anything or the field is invalid /**
if (!textField.isThereText()) { * 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; return false;
} }
if (isMessenger()) { if (settings.getGoogleChatHack()) {
// Messenger responds only to ENTER, but not DPAD_CENTER, so we make sure to send the correct code, sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB);
// no matter how the hardware key is implemented. sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB);
sendDownUpKeyEvents(KeyEvent.KEYCODE_ENTER); 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; return true;
@ -190,9 +218,16 @@ public class AppHacks {
private void sendDownUpKeyEvents(int keyCode) { private void sendDownUpKeyEvents(int keyCode) {
sendDownUpKeyEvents(keyCode, false);
}
private void sendDownUpKeyEvents(int keyCode, boolean shift) {
if (inputConnection != null) { if (inputConnection != null) {
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, keyCode)); KeyEvent downEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, keyCode, 0, shift ? KeyEvent.META_SHIFT_ON : 0);
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, keyCode)); 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() { public boolean getFbMessengerHack() {
return prefs.getBoolean("pref_hack_fb_messenger", false); 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_hacks">Съвместимост</string>
<string name="pref_category_appearance">Облик</string> <string name="pref_category_appearance">Облик</string>
<string name="pref_category_function_keys">Бутони за бърз достъп</string> <string name="pref_category_function_keys">Бутони за бърз достъп</string>
<string name="pref_hack_fb_messenger">Изпращай съобщения с ОК в Messenger</string> <string name="pref_hack_fb_messenger">Изпращай с ОК във Facebook Messenger</string>
<string name="pref_hack_fb_messenger_summary">Позволява изпращането на съобщения с бутона ОК във Facebook Messenger.</string> <string name="pref_hack_google_chat">Изпращай съобщения с „ОК“ в Google Chat</string>
<string name="pref_show_soft_function_keys">Бутони на екрана</string> <string name="pref_show_soft_function_keys">Бутони на екрана</string>
<string name="key_back">Назад</string> <string name="key_back">Назад</string>
<string name="key_call">Зелена слушалка</string> <string name="key_call">Зелена слушалка</string>

View file

@ -32,4 +32,6 @@
<string name="pref_dark_theme_auto">Automatisch</string> <string name="pref_dark_theme_auto">Automatisch</string>
<string name="donate_title">Spenden</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="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> </resources>

View file

@ -76,4 +76,6 @@
<string name="pref_dark_theme_auto">Automática</string> <string name="pref_dark_theme_auto">Automática</string>
<string name="donate_title">Donar</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="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> </resources>

View file

@ -28,8 +28,8 @@
<string name="pref_category_appearance">Apparance</string> <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_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="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">Envoyer avec «OK» dans Facebook 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_google_chat">Envoyer des messages avec «OK» dans Google Chat</string>
<string name="pref_show_soft_function_keys">Boutons à l\'écran</string> <string name="pref_show_soft_function_keys">Boutons à l\'écran</string>
<string name="dictionary_loading_indeterminate">Chargement du dictionnaire</string> <string name="dictionary_loading_indeterminate">Chargement du dictionnaire</string>
<string name="dictionary_load_cancelled">Chargement est annulé.</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="pref_dark_theme_auto">Automatica</string>
<string name="donate_title">Donare</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="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> </resources>

View file

@ -69,4 +69,6 @@
<string name="pref_dark_theme_auto">אוטומטי</string> <string name="pref_dark_theme_auto">אוטומטי</string>
<string name="donate_title">לִתְרוֹם</string> <string name="donate_title">לִתְרוֹם</string>
<string name="donate_summary">אם אתה אוהב את %1$s, תוכל לתמוך בפיתוח שלו בכתובת: %2$s</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> </resources>

View file

@ -32,4 +32,6 @@
<string name="pref_dark_theme_auto">Automatisch</string> <string name="pref_dark_theme_auto">Automatisch</string>
<string name="donate_title">Doneer</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="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> </resources>

View file

@ -65,4 +65,6 @@
<string name="pref_dark_theme_auto">Automático</string> <string name="pref_dark_theme_auto">Automático</string>
<string name="donate_title">Doar</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="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> </resources>

View file

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

View file

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

View file

@ -45,8 +45,8 @@
<string name="pref_dark_theme_no">No</string> <string name="pref_dark_theme_no">No</string>
<string name="pref_dark_theme_auto">Auto</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_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_google_chat">Send messages with \"OK\" in Google Chat</string>
<string name="pref_hack_fb_messenger_summary">Allows sending messages with the OK key in Facebook Messenger.</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_function_keys">Show On-Screen Keys</string>
<string name="pref_show_soft_numpad">Show On-Screen Numpad</string> <string name="pref_show_soft_numpad">Show On-Screen Numpad</string>
<string name="pref_show_soft_numpad_summary" translatable="false">(BETA)</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"?> <?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:layout="@layout/pref_text"
app:orderingFromXml="true"> app:orderingFromXml="true">
<Preference <Preference
@ -24,12 +25,17 @@
app:title="@string/pref_alternative_suggestion_scrolling" app:title="@string/pref_alternative_suggestion_scrolling"
app:summary="@string/pref_alternative_suggestion_scrolling_summary"/> 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 <SwitchPreferenceCompat
app:defaultValue="false" app:defaultValue="false"
app:key="pref_hack_fb_messenger" app:key="pref_hack_fb_messenger"
app:layout="@layout/pref_switch" app:layout="@layout/pref_switch"
app:title="@string/pref_hack_fb_messenger" app:title="@string/pref_hack_fb_messenger"/>
app:summary="@string/pref_hack_fb_messenger_summary"/>
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>