我对Flipper Zero的屏幕键盘的想法是128x64像素的屏幕



我最近看到了一篇邀请开发人员加入Flipper Zero项目并被应用的帖子。我被添加到固件存储库中,并且我开始考虑设备的可用性。我梦到我需要从不同的入口扫描一堆钥匙串钥匙。在梦中,有不同的人,公寓,下雨,由于某种原因,他们给了我这些黄色的回弹球,而彼此之间的区别仅在于它们上的污垢数量。当然,为了以某种方式应对这种混乱,我决定将所有这些键添加到Flipper Zero中。



在一个梦中,我输入了新的标识符,并将它们全部作为“键”添加到菜单中,这使操作变得更加毫无意义。结果是一个很大的列表,仅包含单词“ Key”。我以为我需要重写固件。而这正是睡眠的优势-设想中的一切立即实现。开始添加带有随机后缀的键作为“键74”,然后是“键22”。该数字只是随机的,不要与校验和或哈希值混淆。原则上,如果您有良好的记忆力,您会记得Key 22来自列宁54,Key 74来自普希金29。我认为最好以某种方式在Flipper上的键列表中编辑数字:我们有免费的左右按钮,让他们增加/减少数字!长按将呼叫完整键盘!但是停下来画什么键盘?标准Qwerty切换到Ytsuken?僵化的Yaverta?我们的屏幕只有128x64像素,此外,有必要以某种方式将键入的输出塞入其中!如何适应所有这些?可以用摩尔斯电码输入文字吗?



原始键盘







说在这样的键盘上打字很方便显然是不可能的。太快了。简单性和大量符号是您在这里所能获得的唯一东西,但是否则您想要从这样的键盘运行而不是回头。令人惊讶的是,这种输入方法在过去非常普遍。



Qwerty



因此,如果您使用标准的Android键盘,应用镜头效果并看到会发生什么呢?在After Effects中工作了10个小时,结果是:







我有一个脚本将图形转换成CGA调色板,经过处理后结果是这样的:











我喜欢它,甚至喜欢半色调。停。鳍状肢有黑白屏幕!但另一方面,它具有能量,这意味着您可以通过快速打开/关闭像素来获得半色调。我必须发明自己的抖动版本。在此过程中,发明了Smoker Dither:







它是Baer抖动的变体,是经过稍微修改的Bill Atkinson误差分布矩阵。经过一些调试和修复9000错误,结果是这样的:







并不是说我更喜欢此选项,但在LCD屏幕上应该看起来更好,由于矩阵不断旋转,半色调应该特别好。我尚未收到我的Flipper,因此我无法进行实际测试,但从理论上讲,它应该看起来不错。



嗯,如果您尝试绘制尽可能小的键盘怎么办?











原则上讲,效果很好。如果需要,一切都适合。您也可以选择夹住RUSLAT键,就像其他许多有用的键一样。但是哪一个呢?爬上HID标准并从那里戳咖啡和红色按钮?



布局



标准的QWERTY布局具有以下功能:



  1. 专为需要手动输入(两只手)的打字机而设计
  2. 打字时应该换手。一只手按下一个键时,另一只手准备按下。但是,许多英语单词只能在键盘的左侧输入。
  3. 按键的对角线排列可以追溯到打字机上杠杆的物理排列


以下单词归因于“ Dvorak键盘”(替代QWERTY)的创建者August Dvorak:

, , , , . , , . , , , .
但是碰巧德沃夏克(Dvorak)和他的继任者科莱马克(Kolemak)都没有受到欢迎。



但是回到Flipper。我们可以利用它吗?我可以一次用两只手打字吗?换手有意义吗?如作者Kolemak所宣传的,我们是否要更有效地使用我们的小手指?我们需要与流行的Windows热键(例如CTRL + C / CTRL + V)兼容吗?所有这些问题的答案是否定的。结论:由于QWERTY无法满足我们的任务和目标,因此我们需要发明自己的布局。



气球



我从维基百科上拿了几篇文章,从中复制了文本并计算了唯一字符,它们是: 有趣,但是没有双引号“,但是有”圣诞树。” 我试图形象化每个字母的使用频率,但是我立即不得不采用对数刻度,至少看到一些东西: 让我们考虑如何在屏幕上排列这些字符,以便用户更方便地输入它们? 第一个想法是计算与邻居一起使用该字母或那个字母的频率,并使用此数据,启动“球”模拟器,球之间有一定的吸引力,这与在附近使用这些字母的频率相等, 最初的经验如下:



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

89:;?ABCDEFGHIJKLM

NOPQRSTUVWXYZ[]a

bcdefghijklmnopqrstu

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







—’“„…№

↑▲
































几乎看不见,但是如果仔细观察,您会看到西里尔字母和拉丁字母是如何形成簇的,实际上彼此之间没有连接,并且很少使用的字符飞出空间。



经过9000个小时的调试和痛苦之后,我们进行了更令人愉悦的模拟:







令我感到失望的是,这些符号相互之间的干扰很大。我尝试发挥重力的作用,对其进行动态更改,甚至进行了手动“涡旋”处理,但没有任何帮助。







在这里已经可以看出,尽管大部分已经形成了簇,但是它们包含异物。我们需要提出其他安排键的方法...



另一方面,如果将所有这些都放在Voronoi图中...







看起来真的很酷!嗯,有了这样的键盘,您甚至可以离开Flipper并开始生产自己的真实键盘!还有谁需要一指键盘?我应该在kickstarter上写些什么?我要为下一个无用的发明哭泣。



遗传学



好吧,哭了之后,我继续研究。我以中文键盘的原型基础







即,以16x16的熟悉度矩阵,并以随机顺序将一组字符放入其中。总的来说,起初我想用相邻符号的频率数据将它们打包得精美一些,霍夫曼树的类似物闪过我的头,但是我无法生出任何明智的东西。因此,我只需将键放在中间,然后将它们从中心单元以螺旋形式放置。后来,我也开始将它们混合在一起,因此不需要对霍夫曼树进行折磨。



然后,我开始了一个简单的基因搜索:我为突变制作了一套,选择了最好的突变(见下文),使它们成为下一代的父母。因此,直到挂起,即 不会陷入进化困境。



有很多实验:



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


然后我考虑了这个或那个突变的有效性。我必须发明自己的评分系统。为此,我从Wikipedia上获取了一段文字,并做了类似打字过程的模拟器。虚拟键盘16x16,虚拟操纵杆,虚拟文本。在模拟结束时,我查看了键入此文本所需的点击次数。这是效率等级。如果击键的次数少于该突变的其他变异的次数,并且在重新排列键之前的击键次数甚至更多,则证明这种“变异”更好,它被用来继续计算。最终结果是这样的:























在某些地方,我真的很喜欢最终的数字键盘,在某些地方,西里尔文和拉丁文形成了类似“阴阳”的字样,几乎到处美元,欧元和英镑的符号以及百分号符号都彼此相邻。左侧的数字表示您需要按操纵杆按钮多次键入测试文本。也许,如果我将模拟器运行一周,将会有更多有趣的选择,但我有一台旧计算机可以进行此类实验。细心的读者还会发现一个半复活节的袋子:几乎所有的布局选项都包含“肯德基”这个词,因为它是在一篇有关肯德基和一些网球运动员的文章上接受训练的。



原则上,我很想动手重新排列一些键,尤其是西里尔字母Y(它总是总是靠近拉丁字母)或拉丁字母X(有时出现在西里尔字母中),并且这些符号均匀地分布在一个圆圈中或堆成一堆,但是……进化将如何回答?这是?这种重新安排的效果如何?是的,我懒得写互动式重排。但这是更好的方法:现在我知道,即使对于西里尔字母/拉丁字母,也可以有几种布局,并让用户选择最适合自己的布局。



如果您对在计算期间生成的布局的其他选项感兴趣,请查看文件anon.fm/articles/flipper-keyboard/layouts.htmlanon.fm/articles/flipper-keyboard/layouts-more.html



您可以进行长时间的实验,以下是一些实验思路:



  1. 将空间的边缘彼此卷曲。那些。并不是光标在键盘上移动,而是键盘在移动,并且当它移动到屏幕的一侧时,它会出现在另一侧。
  2. 拒绝二维空间并将平面包裹成某种三维物体,例如,在地球仪或其他几何图形上延伸。循环空间还有更多可能性。
  3. 在多个实例之间添加常用符号。例如,为什么不添加十几个空格?在Kolemak,这里有2个退格键,只是在我们的情况下,它是一个要乘的空间。
  4. , , . —
  5. , , Dasher


如果有人不知道Dasher,请在这里运行:f-droid.org/en/packages/dasher.android-有关我们设备的所有信息,甚至在这里还有更多信息:来自操纵杆,轨迹球,鼠标,眼动仪和其他单手单指的文本输入和可穿戴设备。该接口甚至可以以32x32像素启动,而不会牺牲可用性。在Pocket PC上工作并存活了很多年!但是,无论我有多喜欢这个东西,尽管有很多选择,但我仍然没有学会如何使用它,却感觉到了便利,所以对我来说,它更像是一种可能性的技术,即与机器交互的可能性。如果有人想移植Dasher,那么不客气,补丁仍会定期发布到存储库中,我想会有很多人希望在自己的Flipper上看到这样的事情。



在这里,您还可以为和弦键盘或Palm时代的屏幕键盘(例如MessagEase)添加各种选项。MessagEase背后的想法很棒,但问题是按住2个按钮对我个人来说是不可接受的,因此我个人不会将Flipper变成和弦键盘。但是我敢肯定,没有和弦键盘,真正的黑客设备就无法生存,因此肯定会有其他人添加它。



总结:可能有各种各样的键盘选项。但我不仅必须想象应该如何,而且必须实现上述所有内容。因此,如果您愿意,可以尝试,但我必须努力。



实作



在下一部分中,我们将尝试实现我们构想的所有内容。我们将编写一个小型仿真器,然后尝试重新发明该API。



最后,还有一些带有键盘概念的动画:







键盘被Max称为Torus Knot的延伸:







这是一种尝试将猫头鹰拉到球形^ W ^ W ^ W键盘上的尝试。在这里,我对抖动做了一些实验,并且还将“癫痫抖动”添加到了“吸烟者抖动”中。







与上一个相似,仅适用于CGA。



UPD:我完全忘记附加所有这些耻辱的信息。他们对任何人都有趣吗?



All Articles