From b03d4507c14d7d2ba4651edc8283edd7b30390ba Mon Sep 17 00:00:00 2001 From: caspar Date: Thu, 8 Oct 2026 01:00:07 -0400 Subject: [PATCH] Fix scanner input and move keyboard toggle into admin dialog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit onCheckIsTextEditor() returning false prevented the InputConnection from being established, breaking hardware key relay from the barcode scanner into HTML inputs. Always return true — the other suppression layers handle keyboard hiding. Move the keyboard toggle from the top-right corner gesture (which blocked a UI feature) into the admin dialog (7 taps top-left corner). The dialog now shows three options: exit, toggle keyboard, or cancel. Co-Authored-By: Claude Opus 4.6 --- .../main/java/mx/joykoo/scanner/AppConfig.kt | 5 --- .../java/mx/joykoo/scanner/MainActivity.kt | 37 +++++-------------- .../joykoo/scanner/NoSoftKeyboardWebView.kt | 2 +- app/src/main/res/values/strings.xml | 6 +++ 4 files changed, 16 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/mx/joykoo/scanner/AppConfig.kt b/app/src/main/java/mx/joykoo/scanner/AppConfig.kt index 098ab68..43a9487 100644 --- a/app/src/main/java/mx/joykoo/scanner/AppConfig.kt +++ b/app/src/main/java/mx/joykoo/scanner/AppConfig.kt @@ -27,9 +27,4 @@ object AppConfig { /** Time window (ms) for admin tap sequence. */ const val ADMIN_TAP_WINDOW_MS = 3000L - /** Number of taps on the top-right corner to toggle the on-screen keyboard. */ - const val KEYBOARD_TOGGLE_TAP_COUNT = 5 - - /** Time window (ms) for keyboard toggle tap sequence. */ - const val KEYBOARD_TOGGLE_TAP_WINDOW_MS = 3000L } diff --git a/app/src/main/java/mx/joykoo/scanner/MainActivity.kt b/app/src/main/java/mx/joykoo/scanner/MainActivity.kt index b7ca678..98f45e3 100644 --- a/app/src/main/java/mx/joykoo/scanner/MainActivity.kt +++ b/app/src/main/java/mx/joykoo/scanner/MainActivity.kt @@ -40,9 +40,6 @@ class MainActivity : AppCompatActivity() { // Admin exit: rapid taps in the top-left corner private var adminTapTimestamps = mutableListOf() - - // Keyboard toggle: rapid taps in the top-right corner - private var keyboardToggleTapTimestamps = mutableListOf() private var isKeyboardSuppressed = true // Back-press exit: rapid presses when no WebView history @@ -221,10 +218,6 @@ class MainActivity : AppCompatActivity() { if (ev.x < threshold && ev.y < threshold) { handleAdminTap() } - val screenWidth = resources.displayMetrics.widthPixels - if (ev.x > screenWidth - threshold && ev.y < threshold) { - handleKeyboardToggleTap() - } } return super.dispatchTouchEvent(ev) } @@ -236,34 +229,22 @@ class MainActivity : AppCompatActivity() { if (adminTapTimestamps.size >= AppConfig.ADMIN_TAP_COUNT) { adminTapTimestamps.clear() - showAdminExitDialog() + showAdminDialog() } } - private fun showAdminExitDialog() { + private fun showAdminDialog() { + val keyboardLabel = if (isKeyboardSuppressed) + getString(R.string.keyboard_show) else getString(R.string.keyboard_hide) AlertDialog.Builder(this) - .setTitle("Salir de la aplicación") - .setMessage("¿Desea cerrar la aplicación del escáner?") - .setPositiveButton("Salir") { _, _ -> finish() } - .setNegativeButton("Cancelar", null) + .setTitle(R.string.admin_title) + .setMessage(R.string.admin_message) + .setPositiveButton(R.string.admin_exit) { _, _ -> finish() } + .setNeutralButton(keyboardLabel) { _, _ -> toggleKeyboard() } + .setNegativeButton(R.string.admin_cancel, null) .show() } - // ── Keyboard Toggle (hidden tap gesture, top-right corner) ────────── - - private fun handleKeyboardToggleTap() { - val now = System.currentTimeMillis() - keyboardToggleTapTimestamps.add(now) - keyboardToggleTapTimestamps.removeAll { - now - it > AppConfig.KEYBOARD_TOGGLE_TAP_WINDOW_MS - } - - if (keyboardToggleTapTimestamps.size >= AppConfig.KEYBOARD_TOGGLE_TAP_COUNT) { - keyboardToggleTapTimestamps.clear() - toggleKeyboard() - } - } - private fun toggleKeyboard() { isKeyboardSuppressed = !isKeyboardSuppressed webView.keyboardSuppressed = isKeyboardSuppressed diff --git a/app/src/main/java/mx/joykoo/scanner/NoSoftKeyboardWebView.kt b/app/src/main/java/mx/joykoo/scanner/NoSoftKeyboardWebView.kt index 0a6efff..acc3b2d 100644 --- a/app/src/main/java/mx/joykoo/scanner/NoSoftKeyboardWebView.kt +++ b/app/src/main/java/mx/joykoo/scanner/NoSoftKeyboardWebView.kt @@ -49,6 +49,6 @@ class NoSoftKeyboardWebView : WebView { } override fun onCheckIsTextEditor(): Boolean { - return !keyboardSuppressed + return true } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a5a954..fbe2580 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,6 +4,12 @@ No se puede conectar Verifique la conexión Wi-Fi e intente de nuevo. Reintentar + Administración + ¿Qué desea hacer? + Salir + Cancelar + Mostrar teclado + Ocultar teclado Teclado en pantalla activado Teclado en pantalla desactivado