Mis pensamientos sobre el teclado en pantalla de Flipper Zero para una pantalla de 128x64 píxeles



Recientemente vi una publicación invitando a desarrolladores al proyecto Flipper Zero y apliqué. Me agregaron al repositorio de firmware y comencé a pensar mucho en la usabilidad del dispositivo. Soñé que necesitaba escanear un montón de llaves de llavero de diferentes entradas. En el sueño, había diferentes personas, apartamentos, lluvia y, por alguna razón, me dieron un puñado de estas rondas amarillas, que se diferenciaban entre sí solo por la cantidad de suciedad que tenían. Y, naturalmente, para poder hacer frente de alguna manera a este lío, decidí agregar todas estas claves a Flipper Zero.



Justo en mi sueño, ingresé nuevos identificadores y todos se agregaron al menú como "Clave", lo que hizo que la acción fuera aún más sin sentido. El resultado es una gran lista, que consta únicamente de la palabra "Clave". Pensé que necesitaba reescribir el firmware. Y aquí está exactamente la ventaja del sueño: todo lo concebido se hace realidad a la vez. Las claves comenzaron a agregarse con un sufijo aleatorio como "Clave 74", seguido de "Clave 22". El número es aleatorio, no debe confundirse con sumas de comprobación o hashes. En principio, si tiene buena memoria, puede recordar que la Clave 22 es de Lenin 54 y la Clave 74 es de Pushkin 29. Pensé que sería bueno editar de alguna manera los números, directamente en Flipper, justo en la lista de teclas: tenemos botones libres de izquierda a derecha, ¡que incrementen / reduzcan el número! ¡Una pulsación larga llamará al teclado completo! Pero detenteque teclado dibujar? Qwerty estándar con el cambio a Ytsuken? ¿Yaverta rusificada? Tenemos una pantalla de solo 128x64 píxeles, además, ¡es necesario meter en ella de alguna manera la salida de lo que se está escribiendo! ¿Cómo encajar todo esto? ¿Es posible ingresar texto en código Morse?



Teclado primitivo







Decir que escribir en un teclado de este tipo es conveniente es claramente imposible. Que también es rápido. La simplicidad y un gran conjunto de símbolos son lo único que puede obtener aquí, pero de lo contrario, desea ejecutar desde ese teclado y no mirar hacia atrás. Sorprendentemente, este método de entrada era bastante común en el pasado.



QWERTY



Entonces, ¿qué pasa si toma un teclado estándar de Android, aplica un efecto de lente y ve qué sucede? 10 horas en After Effects y aquí está:







tenía un script que convierte gráficos en una paleta CGA, después de procesarlo resultó así:











me gustó, e incluso me gustaron los medios tonos. DETENER. ¡Flipper tiene una pantalla en blanco y negro! Pero, por otro lado, tiene energía, lo que significa que puede obtener semitonos activando / desactivando píxeles rápidamente. Tuve que inventar mi propia versión de dither. En el proceso, se inventó Smoker Dither:







es una variación del dither de Baer y una matriz de distribución de errores de Bill Atkinson ligeramente modificada. Después de depurar y corregir errores 9000, resultó así:







No quiero decir que me guste mucho más esta opción, pero en la pantalla LCD debería verse mejor, los medios tonos deberían ser especialmente buenos debido a la constante rotación de las matrices. Todavía no he recibido mi Flipper, así que no puedo probarlo, pero en teoría debería verse bien.



Mmm, ¿qué pasa si intentas dibujar un teclado lo más pequeño posible?











En principio, funcionó bien. Todo encaja si quieres. Opcionalmente, puede cortar la tecla RUSLAT, como muchas otras teclas útiles. Pero cuales? ¿Subir al estándar HID y presionar el botón de café y rojo desde allí?



Diseño



El diseño estándar QWERTY tiene las siguientes características:



  1. Diseñado para máquinas de escribir que requieren entrada manual (dos manos)
  2. Se supone que cambia de manos al escribir. Mientras una mano presiona una tecla, la otra se prepara para presionar. Sin embargo, muchas palabras en inglés solo se pueden escribir en el lado izquierdo del teclado.
  3. La disposición diagonal de las teclas se remonta a la disposición física de las palancas en una máquina de escribir.


Las siguientes palabras se atribuyen a August Dvorak, creador del "teclado Dvorak", una alternativa al QWERTY:

, , , , . , , . , , , .
Pero sucedió que ni Dvorak ni su sucesor, Kolemak, no ganaron popularidad.



Pero volvamos a Flipper. ¿Tenemos influencia sobre eso? ¿Puedo usar 2 manos a la vez para escribir? ¿Tiene sentido alternar las manos? ¿Queremos usar nuestros dedos meñiques de manera más eficaz, como anuncia el autor Kolemak? ¿Necesitamos compatibilidad con teclas de acceso rápido populares de Windows como CTRL + C / CTRL + V? La respuesta a todas estas preguntas es NO. Conclusión: necesitamos inventarnos nuestro propio diseño, ya que QWERTY no cumple con nuestras tareas y objetivos.



Globos



Tomé un par de artículos de Wikipedia, copié el texto de ellos y conté los caracteres únicos, aquí están: Gracioso, pero no hay comillas dobles ", pero hay" árboles de Navidad ". Traté de visualizar la frecuencia de uso de cada letra, pero inmediatamente tuve que aplicar una escala logarítmica, para ver al menos algo: Pensemos en cómo organizar estos caracteres en la pantalla para que sea más conveniente para el usuario ingresarlos. La primera idea es calcular la frecuencia de uso de esta o aquella letra junto con los vecinos. Y usando estos datos, inicie el simulador de "Bolas", donde entre las bolas tiene alguna fuerza de atracción, que es igual a la frecuencia de uso de estos personajes en el vecindario. La primera experiencia fue la siguiente:



!$%&'(),-./01234567

89:;?ABCDEFGHIJKLM

NOPQRSTUVWXYZ[]a

bcdefghijklmnopqrstu

vwxyz|£¥«°²»àéœ́







—’“„…№

↑▲
































Hay poco que ver, pero si miras de cerca, puedes ver cómo los alfabetos cirílico y latino han formado grupos que prácticamente no están relacionados entre sí, y los caracteres poco utilizados salen volando del espacio.



Después de 9000 horas de depuración y dolor, se realizó una simulación más agradable:







para mi decepción, los símbolos están interfiriendo mucho con el movimiento de los demás. Traté de jugar con la fuerza de gravedad, la cambié dinámicamente, incluso arreglé "vórtices" manuales, pero nada ayudó.







Ya se puede ver aquí que aunque los grupos ya se han formado en su mayor parte, contienen elementos extraños. Necesitamos encontrar otra forma de ordenar las teclas ...



Por otro lado, si ponemos todo esto en el diagrama de Voronoi ...







¡Se ve realmente genial! Mmmm, con un teclado así, ¡incluso podrías dejar Flipper y empezar a producir tus propios teclados reales! ¿Quién más necesita teclados de 1 dedo? ¿Qué debo escribir en el kickstarter? Voy a llorar en mi almohada por mi próximo invento inútil.



Genética



Bien, después de llorar, continué mi investigación. Tomé un prototipo de teclado chino como base : es







decir, tomé una matriz de familiaridad de 16x16 y puse un conjunto de caracteres en orden aleatorio. En general, al principio quería empaquetarlos de alguna manera hermosa, usando los datos de frecuencia en los símbolos vecinos, análogos de los árboles de Huffman pasaron por mi cabeza, pero no pude dar a luz a nada sensato. Por lo tanto, simplemente coloqué las llaves en el centro, colocándolas en espiral desde la celda central. Posteriormente, comencé a mezclarlos, por lo que la prueba con los árboles de Huffman fue innecesaria.



Y luego comencé una simple búsqueda genética: hice un conjunto de mutaciones, seleccioné las mejores (ver más abajo), las convertí en los padres de las próximas generaciones. Y así hasta que cuelgue, es decir no se encontrará con un pozo evolutivo.



Hubo muchos experimentos:



  • 2 , ,
  • 30 3000. , , — 30.
  • , , .
  • , - 5 ,
  • , , . - ,


Luego consideré cuán efectiva era esta o aquella mutación. Tuve que inventar mi propio sistema de clasificación. Para hacer esto, tomé un texto de Wikipedia e hice algo así como un simulador del proceso de escritura. Teclado virtual 16x16, joystick virtual, texto virtual. Al final de la simulación, miré cuántos clics se necesitaron para escribir este texto. Esta fue la calificación de eficiencia. Si el número de pulsaciones de teclas era menor que en otras variaciones de la mutación, e incluso más antes de que se reorganizaran las teclas, entonces esta “mutación” resultó ser mejor y se utilizó para continuar con el cálculo. Como resultado, resultó así:























En algunos lugares me gusta mucho el teclado numérico resultante, en algunos lugares el cirílico y el latín se han formado una especie de "Yin y Yang", casi en todas partes los símbolos del dólar, el euro y la libra están uno al lado del otro, así como el símbolo de porcentaje. El número de la izquierda significa cuántas veces debe presionar los botones del joystick para escribir el texto de prueba. Quizás, si ejecutara el simulador durante una semana, habría opciones más interesantes, pero tengo una computadora vieja para tales experimentos. Y el lector atento también encontrará una mitad de bolsa de Pascua: casi todas las opciones de diseño contienen la palabra KFC, ya que fue entrenado en un artículo sobre KFC y algunos tenistas.



En principio, me siento tentado a tomar y reordenar algunas teclas con mis manos, especialmente la Y Cirílica, que siempre resulta estar cerca del alfabeto latino, o la X Latina, que a veces ocurre entre el alfabeto cirílico, y distribuir los símbolos uniformemente en un círculo o apilarlos, pero ... ¿Y a qué responderá la evolución? ¿esto es? ¿Qué tan efectivo sería tal reordenamiento? Sí, era demasiado vago para escribir un reordenamiento interactivo. Pero es para mejor: ahora sé que incluso para el alfabeto cirílico / latino puede haber varios diseños, y dejar que el usuario elija lo que sea mejor para él.



Si está interesado en otras opciones para los diseños que se generaron durante el cálculo, consulte los archivos anon.fm/articles/flipper-keyboard/layouts.html y anon.fm/articles/flipper-keyboard/layouts-more.html



Puede experimentar durante mucho tiempo, aquí hay algunas ideas para experimentos:



  1. Curvar los bordes del espacio uno encima del otro. Aquellos. no es el cursor el que se mueve por el teclado, sino que el teclado se mueve, y cuando se mueve hacia un lado de la pantalla, aparece en el otro lado.
  2. Rechazo del espacio bidimensional y envolviendo el plano en una especie de objeto tridimensional, por ejemplo, que se extiende sobre un globo o alguna otra figura geométrica. Hay más posibilidades de espacio en bucle.
  3. Agregar símbolos de uso común en múltiples instancias. Por ejemplo, ¿por qué no crear una docena de espacios? Aquí en Kolemak hay 2 backspaces, solo que en nuestro caso es más bien un espacio para multiplicar.
  4. , , . —
  5. , , Dasher


Si alguien no sabe sobre Dasher, ejecute aquí: f-droid.org/en/packages/dasher.android : todo sobre nuestro dispositivo y aún más aquí: entrada de texto desde joysticks, trackballs, mouse, rastreadores oculares y otros con una sola mano, un dedo y dispositivos portátiles. La interfaz se puede iniciar incluso a 32x32 píxeles sin sacrificar la usabilidad. Trabajó en Pocket PC y sobrevivió durante años. Pero, por mucho que sea fanático de esto, a pesar de la gran selección de opciones, no he aprendido a usarlo, aunque siento la conveniencia, por lo que para mí es más una tecnodemia de posibilidades, la posibilidad de interactuar con una máquina. Si alguien quiere portar Dasher, entonces es bienvenido, los parches todavía llegan al repositorio de manera regular, creo que habrá muchos que deseen ver tal cosa en su Flipper.



Aquí también puede agregar una variedad de opciones para teclados de acordes o teclados en pantalla de la era Palm, como MessagEase. La idea detrás de MessagEase es genial, pero el problema es que mantener presionado 2 botones es personalmente inaceptable para mí, así que personalmente no convertiré a Flipper en un teclado de acordes. Pero estoy seguro de que un dispositivo de piratería real no puede sobrevivir sin un teclado de acordes, por lo que seguramente alguien más lo agregará.



Resumiendo: puede haber una gran variedad de opciones de teclado. Pero no solo debo imaginar cómo debería ser, sino también implementar todo lo descrito anteriormente. Entonces, si estás dispuesto, puedes intentarlo, pero tengo que trabajar.



Implementación



Y en la siguiente parte intentaremos implementar todo lo que hemos concebido. Escribiremos un pequeño emulador e intentaremos reinventar la API.



Finalmente, aquí hay algunas animaciones más con conceptos de teclado:







Teclado estirado sobre lo que Max llama Torus Knot:







Y este es un intento de llevar un búho a un globo ^ W ^ W ^ W teclado sobre una esfera. Aquí experimenté un poco con el dithering, y también agregué el Dithering epiléptico al Dithering of the Smoker.







Similar al anterior, solo para CGA.



UPD: Olvidé por completo adjuntar las fuentes de toda esta desgracia. ¿Son interesantes para alguien?



All Articles