La interfaz de línea de comandos es fácil y conveniente de crear, amplíe la funcionalidad sin preocuparse por el usuario.
Si necesita configurar algo, pero no hay ningún elemento necesario en el menú, puede acceder a la configuración manualmente. Si no hay acceso a la configuración, entonces tienes que sufrir.
Esto es lo que aporto al hecho de que incluso teniendo una interfaz gráfica, una de texto, puede ser muy útil, sobre todo si algo no estaba previsto durante el desarrollo.
Las reflexiones sobre el teclado en Flipper Zero provocaron una lenta discusión sobre la optimización de los métodos de entrada. También me encantan las bicicletas, así que aquí hay un par de ideas locas.
Desplazamiento de clasificación inteligente
Partiremos de un simple desplazamiento de símbolos.
Hay texto escrito, navegación a través del texto: flechas izquierda / derecha. Para seleccionar un símbolo, desplácese hacia arriba o hacia abajo por una lista lineal de todos los símbolos.
Es bastante incómodo, hagamos un par de mejoras.
Con base en el texto ingresado por el usuario, recopilaremos estadísticas sobre n-gramas de caracteres. En el caso más simple, tomamos los 4 símbolos anteriores, ordenamos la tabla de símbolos por frecuencia de uso con este tetragrama. El usuario comienza a desplazarse hacia abajo y encuentra rápidamente el símbolo deseado. Al desplazarse hacia arriba, hay un conjunto fijo de comandos de servicio, como espacio, eliminar el carácter anterior, cambiar mayúsculas y minúsculas y diseño.
Para una gama limitada de tareas, este método sería adecuado, pero para una persona sigue siendo demasiado difícil. Hay que concentrarse para no perderse la señal deseada, y esto es agotador.
Sistema ternario
Pero, ¿qué pasa si solo recuerda la ubicación de los rangos de caracteres deseados en Unicode?
Escribimos el código del símbolo, confirmamos, escribimos el siguiente.
Tenemos 5 botones. Si usamos uno para confirmar la entrada, el segundo para borrar el último dígito, hay 3 botones por número. Digamos arriba - 0, a la derecha - 1, abajo - 2.
Es suficiente acostumbrarse al sistema ternario y aprender los rangos de los códigos requeridos. La conveniencia es cuestionable, pero acostumbrarse a este método de entrada es mucho más fácil que abarrotar el código Morse. Existe cierta redundancia, es posible ingresar de todo, desde caracteres de control hasta emojis, pero casi nadie necesitará usar más de cien letras y signos de puntuación.
Desplazamiento 2D
Expandamos el desplazamiento a varias filas de símbolos, ordenándolos por frecuencia de uso, de modo que la distancia de Manhattan desde el punto de partida al símbolo sea mayor cuanto menos se use.
Resulta mucho más conveniente, no se requiere preparación. Interfaz pobre e intuitiva, bastante adecuada para una pantalla pequeña. En los teléfonos de botón, puede marcar todo tipo de caracteres especiales de manera similar. Pero al reducir el tamaño a una línea, puede hacer esto en pantallas muy pequeñas.
La entrada debe controlarse visualmente, luego no se requiere un entrenamiento prolongado (hola código Morse) y la ubicación de los caracteres debe ser estática; de lo contrario, la marcación rápida no funcionará. Aunque, tal vez esto sea una cuestión de costumbre, si nuestros botones de uso frecuente saltaran bajo nuestros dedos, el cerebro podría adaptarse, pero tenemos lo que tenemos.
También puede crear todo tipo de códigos de Huffman, pero estas son complicaciones innecesarias, además de la imposibilidad de expandirse, el código Morse es un ejemplo de esto.
Aquí hay un enlace al código de la demostración utilizado en la publicación.
Incluida como una biblioteca de Python, la función ternaria acepta opcionalmente una cadena para editar. Para salir del modo de navegación, presione la flecha hacia arriba. En el modo de edición, se escribe el código ternario del carácter (arriba - 0, derecha - 1, abajo - 2, izquierda - borrar el último dígito, Enter - confirmar). Para salir, presione Enter, la función devolverá la línea editada.
En la función de rollo, todo es mucho más simple: seleccione un símbolo con las flechas, confirme con el botón Enter. En la primera línea superior: Insertar tabulación, Mayús, Retroceso, Espacio, Salto de línea, Eliminar y Bloq Mayús.