Mes réflexions sur le clavier à l'écran de Flipper Zero pour un écran de 128x64 pixels



J'ai récemment vu un article invitant les développeurs au projet Flipper Zero et postulé. J'ai été ajouté au référentiel du firmware et j'ai commencé à beaucoup réfléchir à la convivialité de l'appareil. J'ai rêvé que j'avais besoin de scanner un tas de clés de trousseau à partir de différentes entrées. Dans le rêve, il y avait des personnes différentes, des appartements, de la pluie, et pour une raison quelconque, on m'a donné une poignée entière de ces rondes jaunes, ne différant les unes des autres que par la quantité de saleté sur elles. Et naturellement, pour faire face à ce désordre, j'ai décidé d'ajouter toutes ces clés à Flipper Zero.



Dans mon rêve, j'ai entré de nouveaux identifiants et ils ont tous été ajoutés au menu en tant que "Clé", ce qui a rendu l'action encore plus dénuée de sens. Le résultat est une grande liste, composée uniquement du mot "Clé". Je pensais que j'avais besoin de réécrire le firmware. Et voici exactement l'avantage du sommeil - tout ce qui est conçu se réalise en même temps. Les clés ont commencé à être ajoutées avec un suffixe aléatoire comme "Key 74", suivi de "Key 22". Le nombre est aléatoire, à ne pas confondre avec les sommes de contrôle ou les hachages. En principe, si vous avez une bonne mémoire, vous pouvez vous rappeler que la clé 22 est de Lénine 54 et la clé 74 de Pouchkine 29. J'ai pensé que ce serait bien de modifier les chiffres, directement sur Flipper, directement dans la liste des clés: nous avons des boutons gauche-droite libres, laissez-les incrémenter / décrémenter le nombre! Une longue attente appellera le clavier complet! Mais arrêtezquel clavier dessiner? Qwerty standard avec passage à Ytsuken? Yaverta russifié? Nous avons un écran de seulement 128x64 pixels, de plus, il faut en quelque sorte y fourrer la sortie de ce qui est tapé! Comment adapter tout cela? Est-il possible de saisir du texte en code Morse?



Clavier primitif







Dire qu'il est pratique de taper quoi que ce soit sur un tel clavier est clairement impossible. Ce qui est rapide aussi. La simplicité et un grand nombre de symboles sont la seule chose que vous puissiez obtenir ici, mais sinon, vous voulez courir à partir d'un tel clavier et ne pas regarder en arrière. Étonnamment, cette méthode d'entrée était assez courante dans le passé.



Qwerty



Alors, que faire si vous prenez un clavier Android standard, appliquez un effet d'objectif et voyez ce qui se passe? 10 heures dans After Effects et le voici:







j'avais un script qui convertissait les graphiques en une palette CGA, après le traitement, il s'est avéré comme ceci:











j'ai aimé, et même aimé les demi-teintes. ARRÊTEZ. Flipper a un écran noir et blanc! Mais d'un autre côté, il a de l'énergie, ce qui signifie que vous pouvez obtenir des demi-tons en activant / désactivant rapidement les pixels. J'ai dû inventer ma propre version du tramage. Dans le processus, le Smoker Dither a été inventé:







il s'agit d'une variation du tramage de Baer et d'une matrice de distribution d'erreur de Bill Atkinson légèrement modifiée. Après quelques débogages et correction de 9000 erreurs, cela s'est avéré comme ceci:







Cela ne veut pas dire que j'aime beaucoup plus cette option, mais sur l'écran LCD, elle devrait être meilleure, les demi-tons devraient être particulièrement bons en raison de la rotation constante des matrices. Je n'ai pas encore reçu mon Flipper, donc je ne peux pas vraiment le tester, mais en théorie, il devrait bien paraître.



Hmm, et si vous essayez de dessiner un clavier aussi petit que possible?











En principe, cela a bien fonctionné. Tout va si vous le souhaitez. En option, vous pouvez pincer la touche RUSLAT, comme beaucoup d'autres touches utiles. Mais lesquels? Monter dans la norme HID et pousser le café et le bouton rouge à partir de là?



Disposition



La disposition QWERTY standard présente les caractéristiques suivantes:



  1. Conçu pour les machines à écrire nécessitant une saisie manuelle (deux mains)
  2. Il est censé changer de main lors de la frappe. Pendant qu'une main appuie sur une touche, l'autre se prépare à appuyer. Cependant, de nombreux mots en anglais ne peuvent être saisis que sur le côté gauche du clavier.
  3. La disposition diagonale des touches remonte à la disposition physique des leviers sur une machine à écrire


Les mots suivants sont attribués à August Dvorak, créateur du «clavier Dvorak», une alternative à QWERTY:

, , , , . , , . , , , .
Mais il se trouve que ni Dvorak ni son successeur, Kolemak, n'ont gagné en popularité.



Mais revenons à Flipper. Avons-nous un effet de levier là-dessus? Puis-je utiliser 2 mains à la fois pour taper? Est-il judicieux d'alterner les mains? Voulons-nous utiliser nos petits doigts plus efficacement, comme l'a annoncé l'auteur Kolemak? Avons-nous besoin d'une compatibilité avec les raccourcis clavier Windows populaires tels que CTRL + C / CTRL + V? La réponse à toutes ces questions est NON. Conclusion: nous devons inventer notre propre mise en page, car QWERTY ne répond pas à nos tâches et objectifs.



des ballons



J'ai pris quelques articles de Wikipédia, copié le texte d'eux et compté les caractères uniques, les voici: Drôle, mais il n'y a pas de guillemets doubles ", mais il y a des" arbres de Noël ". J'ai essayé de visualiser la fréquence d'utilisation de chaque lettre, mais j'ai immédiatement dû appliquer une échelle logarithmique, pour voir au moins quelque chose: réfléchissons à la manière d'organiser ces caractères à l'écran pour qu'il soit plus pratique pour l'utilisateur de les saisir? La toute première idée est de calculer la fréquence d'utilisation de telle ou telle lettre avec les voisins. Et en utilisant ces données, lancez le simulateur "Balls", où il y a une force d'attraction entre les boules, égale à la fréquence d'utilisation de ces lettres dans le voisinage.La première expérience a été la suivante:



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

89:;?ABCDEFGHIJKLM

NOPQRSTUVWXYZ[]a

bcdefghijklmnopqrstu

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







—’“„…№

↑▲
































Il y a peu de choses à voir, mais si vous regardez de plus près, vous pouvez voir comment les alphabets cyrillique et latin ont formé des groupes qui ne sont pratiquement pas liés les uns aux autres, et des caractères peu utilisés volent hors de l'espace.



Après 9000 heures de débogage et de douleur, une simulation plus agréable a été faite:







à ma grande déception, les symboles interfèrent beaucoup avec les mouvements de chacun. J'ai essayé de jouer avec la force de gravité, je l'ai changé dynamiquement, j'ai même fait des "vortex" manuels, mais rien n'y a aidé.







On voit déjà ici que si les clusters ont déjà été constitués pour la plupart, ils contiennent des éléments étrangers. Nous devons trouver une autre façon d'organiser les touches ...



D'un autre côté, si nous mettons tout cela dans le diagramme de Voronoi ...







Ça a l'air vraiment cool! Hmm, avec un tel clavier, vous pourriez même quitter Flipper et commencer à produire vos propres vrais claviers! Qui d'autre a besoin de claviers à 1 doigt? Que dois-je écrire sur le kickstarter? Je vais pleurer dans mon oreiller pour ma prochaine invention inutile.



La génétique



D'accord, après avoir pleuré, j'ai continué mes recherches. Comme base, j'ai pris un prototype de clavier chinois : à







savoir, j'ai pris une matrice d'espaces de familiarité 16x16 et y ai mis un ensemble de caractères dans un ordre aléatoire. En général, au début, je voulais les emballer magnifiquement, en utilisant les données de fréquence sur les symboles voisins, des analogues d'arbres de Huffman me traversaient la tête, mais je ne pouvais rien donner de sensé. Par conséquent, j'ai simplement placé les clés au centre, en les plaçant en spirale à partir de la cellule centrale. Par la suite, j'ai commencé à les mélanger, donc l'épreuve avec les arbres de Huffman était inutile.



Et puis je viens de commencer une simple recherche génétique: j'ai fait un ensemble de mutations, sélectionné les meilleures (voir ci-dessous), en ai fait les parents des générations suivantes. Et ainsi jusqu'à ce qu'il se bloque, c.-à-d. ne se heurtera pas à une fosse évolutive.



Il y a eu de nombreuses expériences:



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


Ensuite, j'ai réfléchi à l'efficacité de telle ou telle mutation. J'ai dû inventer mon propre système de notation. Pour ce faire, j'ai pris un texte de Wikipédia et créé quelque chose comme un simulateur du processus de frappe. Clavier virtuel 16x16, joystick virtuel, texte virtuel. À la fin de la simulation, j'ai regardé le nombre de clics nécessaires pour taper ce texte. C'était la cote d'efficacité. Si le nombre de frappes était inférieur à celui des autres variantes de la mutation, et encore plus avant le réarrangement des touches, alors cette «mutation» s'est avérée meilleure et elle a été utilisée pour poursuivre le calcul. En conséquence, il s'est avéré comme ceci:























À certains endroits, j'aime beaucoup le pavé numérique qui en résulte, à certains endroits, le cyrillique et le latin ont formé un semblant de "Yin et Yang", presque partout les symboles du dollar, de l'euro et des livres sont côte à côte, ainsi que le symbole du pourcentage. Le nombre à gauche indique le nombre de fois que vous devez appuyer sur les boutons du joystick pour saisir le texte de test. Peut-être que si je dirigeais le simulateur pendant une semaine, il y aurait des options plus intéressantes, mais j'ai un vieil ordinateur pour de telles expériences. Et le lecteur attentif trouvera également un demi-sac de Pâques: presque toutes les options de mise en page contiennent le mot KFC, car il a été formé sur un article sur KFC et certains joueurs de tennis.



En principe, je suis tenté de prendre et de réorganiser certaines touches avec mes mains, en particulier le cyrillique Y, qui se révèle toujours proche de l'alphabet latin, ou le latin X, ce qui arrive parfois parmi l'alphabet cyrillique, et les symboles sont uniformément répartis en cercle ou empilés en pile, mais ... Et à quoi va répondre l'évolution c'est? Dans quelle mesure un tel réarrangement serait-il efficace? Oui, j'étais trop paresseux pour écrire un réarrangement interactif. Mais c'est pour le mieux: maintenant je sais que même pour l'alphabet cyrillique / latin, il peut y avoir plusieurs mises en page, et laisser l'utilisateur choisir ce qui lui convient le mieux.



Si vous êtes intéressé par d'autres options pour les mises en page générées pendant le calcul, regardez les fichiers anon.fm/articles/flipper-keyboard/layouts.html et anon.fm/articles/flipper-keyboard/layouts-more.html



Vous pouvez expérimenter pendant une longue période, voici quelques idées d'expériences:



  1. Curling les bords de l'espace les uns sur les autres. Ceux. ce n'est pas le curseur qui se déplace sur le clavier, mais le clavier se déplace, et lorsqu'il se déplace d'un côté de l'écran, il apparaît de l'autre côté.
  2. Rejet de l'espace bidimensionnel et enrobage de l'avion dans une sorte d'objet tridimensionnel, par exemple, s'étendant sur un globe ou une autre figure géométrique. Il y a plus de possibilités de boucler l'espace.
  3. Ajout de symboles couramment utilisés sur plusieurs instances. Par exemple, pourquoi ne pas créer une dizaine d'espaces? Ici à Kolemak il y a 2 backspaces, seulement dans notre cas c'est plutôt un espace à multiplier.
  4. , , . —
  5. , , Dasher


Si quelqu'un ne connaît pas Dasher, alors exécutez ici: f-droid.org/en/packages/dasher.android - ici tout sur notre appareil et plus encore: saisie de texte à partir de joysticks, trackballs, souris, eye trackers et autres à une main, un doigt et les appareils portables. L'interface peut être lancée même à 32x32 pixels sans sacrifier la convivialité. A travaillé sur Pocket PC et a survécu pendant des années! Mais, peu importe à quel point je suis fan de cette chose, malgré le grand choix d'options, je n'ai pas appris à l'utiliser, tout en ressentant la commodité, donc pour moi c'est plus une techno-démie des possibilités, la possibilité d'interagir avec une machine. Si quelqu'un veut porter Dasher, alors vous êtes les bienvenus, les correctifs arrivent toujours au référentiel régulièrement, je pense qu'il y en aura beaucoup qui souhaiteront voir une telle chose sur leur Flipper.



Ici, vous pouvez également ajouter une variété d'options pour les claviers à accords ou les claviers à l'écran de l'ère Palm, tels que MessagEase. L'idée derrière MessagEase est excellente, mais le problème est que maintenir 2 boutons enfoncés est personnellement inacceptable pour moi, donc personnellement, je ne transformerai pas Flipper en un clavier d'accords. Mais je suis sûr qu'un véritable appareil de piratage ne peut pas survivre sans un clavier d'accords, donc quelqu'un d'autre l'ajoutera sûrement.



Pour résumer: il peut y avoir une grande variété d'options de clavier. Mais je dois non seulement imaginer comment cela devrait être, mais aussi mettre en œuvre tout ce qui est décrit ci-dessus. Donc, si vous le souhaitez, vous pouvez essayer, mais je dois travailler.



la mise en oeuvre



Et dans la partie suivante, nous essaierons de mettre en œuvre tout ce que nous avons conçu. Nous allons écrire un petit émulateur et essayer d'inventer une API.



Enfin, voici quelques animations supplémentaires avec des concepts de clavier:







Clavier étendu sur ce que Max appelle Torus Knot:







Et ceci est une tentative de tirer un hibou sur un clavier globe ^ W ^ W ^ W sur une sphère. Ici, j'ai expérimenté un peu le tramage, et j'ai également ajouté le tramage épileptique au tramage du fumeur.







Similaire au précédent, uniquement pour CGA.



UPD: J'ai complètement oublié de joindre les sources de toute cette honte. Sont-ils intéressants pour quelqu'un?



All Articles