磁轴固件

更新历史

日期 说明
2023/11/25 update corsa firmware, limit the maximum luminance to avoid over current issue
2023/11/24 update corsa firmware
2023/11/24 update rabbit60 firmware(fixed a incorrect parameter setting)
2023/11/23 add dead zone description.
2023/11/22 add description for magnetive field.
2023/11/22 add polling rate setting through USERxx Keys.
2023/11/22 add firmware for 8xv3.0, update firmware for corsa, rabbit60, falcon.
2023/10/30 update firmware for corsa(adjust the valid actuation point)
2023/10/20 added firmware for corsa
2023/10/20 added DKS support for falcon
2023/10/13 update rabbit 60 signal rgb plugin and firmware
2023/10/10 Added signalrgb support rabbit 60
2023/10/07 Added firmware for rabbit 60(APC,RT&DKS)
2023/10/07 Added DKS description
2023/09/20 Added APC&RT firmware for Falcon Magnet Switch
2023/09/13 使用说明

回报率设置

键值 含义 说明
FS_1K 将键盘切换到全速 1K Hz 回报率 用所谓的客制化线的时候尽量切到这个模式
HS_2K 将键盘切换到高速 2K Hz 回报率  
HS_4K 将键盘切换到高速 4K Hz 回报率  
HS_8K 将键盘切换到高速 8K Hz 回报率  

关于死区

似乎这是一个大家比较关注的问题,这里做个简单回应吧,死区,简单说就是有些磁轴键盘在按下和抬起时候,有固定的一段行程不会触发。 抬起的死区个人觉得理论上是不应该存在的,存在较大的死区,首先应该怀疑是固件的实现问题,其次,也可能是PCB硬件设计 的问题。其实就是信号的干扰太大,以至于在按键行程没有变化的时候,PCB主控检测到的磁场强度数据在不断跳动。因此,为了避免数据 跳动造成的乱触问题,键盘固件里引入了死区(大于干扰信号)从而避免胡乱触发的问题。当然,完全避免干扰是做不到的,除非这个PCB 只有纯粹的按键功能,而没有其他类似rgb,屏幕之类增加可玩性的玩意,这些器件和线路都会产生干扰信号。要避免过大的干扰,这就挺考验 PCB的设计和实现了。磁轴的PCB是个模拟和数字的混合应用。不像MX轴的键盘,纯粹是个数字板子,干扰问题不太会影响到键盘的正常 功能。 这玩意的测试很简单,拿示波器接在按键的霍尔传感器输出脚,能看的明明白白是否是硬件问题。

至于按下死区,这个大部分时候是霍尔传感器的选择造成的,打开立创商城,搜索“线性 霍尔传感器”,能看到茫茫多的各种价位的器件。这些器件 差在哪?主要是灵敏度,输出噪音,响应速度。举个例子: TI DRV5055 详细的列出了各项指标,其中对按下死区关系的最大的是灵敏度和响应速度。磁轴在松开状态时离传感器的距离最远,这时候,假如霍尔传感器的灵敏度或响应速度太拉跨 ,导致即使你按下了一段距离但是霍尔传感器还是检测不到足够磁场的变化,此时pcb主控也无法感知此时按键的状态, 当然也无法做相应的动作了,在用户看来,就是按下按键而没有任何响应,这就是死区的最大来源。客制化里常用的夹心棉,轴下垫会抬高磁铁的位置,有时候会更加恶化这个问题。 其次,跟抬起时候一样,为了避免霍尔传感器的输出噪音,pcb的噪音(来自usb,rgb,屏幕之类的)也会引入一定的死区。 霍尔传感器是磁轴PCB里面成本最高的部分,它的价格又很大程度上取决于灵敏度,输出噪音和响应频率。 这个也很容易检测,同样接个示波器在霍尔传感器的输出脚,按下轴体,看看输出变化就一目了然了。

所以,其实结论很简单,精心设计的pcb能有效的降低按下和抬起的死区,好的霍尔传感器能大大降低按下的死区,当然,也需要搭配实现良好的键盘固件。 没有免费的午餐,不存在又便宜又牛逼的磁轴键盘。但是世事无绝对,假如市面上出现了高灵敏度,高响应速度,低功耗,低输出噪音的霍尔传感器,还特别 便宜,那么这就是一个错误的结论。不过,大部分时候,磁轴键盘能比MX轴的键盘强点不就得了。还是按需选择吧,又不是不能用。

磁轴行程

磁轴的行程和磁力线的强度不是一个线性关系,这个跟轴体有很大的关系,前期固件采用了线性行程。实际使用过程中,后半段的误差很大, 所以做了一下调整,近期有空准备买台设备测试一下。以下是某种轴体的实际行程和磁场强度的曲线,感谢TAB老胡的细致工作 :)

Magnetic Field Strength

按这个做了一个简单的拟合,后续等设备到了,再精细优化一下。 另外:目前的固件有自校正功能,常用的按键上电后最好按到底2-3次,这样整体行程相对准确一些。

使用说明

今年618的时候,佳达隆上架了零售版的磁轴。使得磁轴的获得门槛降低为零。所以就开始花了点时间和精力做了一下磁轴PCB(当然是Falcon)。 嗯,Falcon这个版本的pcb完全是改自静电容,其实主要是验证我的实现思路。模拟键盘的基本实现原理都是类似的,无非静电容是测量电容 的变化。而磁轴,就是利用霍尔效应是测量磁场的变化。由于磁轴PCB可以使用现成的霍尔传感器,比起静电容的PCB,极大的降低了实现门槛, 最终无非就是传感器的成本较高而导致PCB成本高昂而已。Falcon版本成功后,又花了点功夫琢磨了一下,优化了一个兔子60的版本,差不多 应该定稿了,后期最多也就是简化一下方案,优化一下器件选型,硬件原理已经不会有太大的变更。

最早的磁轴(或者说是利用霍尔效应检测按键的状态)是多年的MiccroSwitch(被Honeywell收购),这种磁轴将霍尔传感器和磁铁,轴体集成 在一起,成本略高,但是PCB实现相对简单。我有几把这种磁轴,手感实属拉跨,大概除了超长的待机寿命,其它全是缺点。海外的InputClub也做过 类似的轴体,也有键盘在预售,但我不清楚最终有没有量产上市,这应该也是好几年前的事情。当然目前最火的磁轴就是Wooting的系列键盘了。 Wooting确实是发挥了模拟轴体的优势:1.触发行程可调 2.所谓的Rapid Trigger 3.DKS。其实这些feature在Topre的键盘上都有,只是以前 一直在挤牙膏,这回终于在Realforce GX1上反抗了一把。

所以,在完成磁轴PCB和对应的固件开发后,怎么用Vial使用这些feature就成了一个问题。目前大致是这么一个思路:

用F1-F24这24个键值表示24档行程,磁轴的总行程是4mm,所以每一档的行程就是4.0mm/24=0.17mm。于此同时利用客制化键盘里层的概念进行行程的设置, 具体就是在第4层定义为触发行程: Actuation Point F1为最小触发高度,F24为最大触发高度。

第5层为抬起行程设置,缺省时为 KC_NO,此时按键无RT功能,当将某个键值设置到F1-F24某个时,此时RT功能自动激活,即当抬起按键到对应行程时,键盘 会释放该按键并发送报文到电脑。再按下时,假如还在触发高度之内,该按键会触发按下事件并发送给电脑。大致对应非全局RT的功能。 Rapid Triger

DKS

目前采用vial中的Macro来实现DKS按键设置,首先定义四个触发位置,按下过第一点(约1.4mm),按下过第二点(约3.0mm),释放回到第二点(约3.0mm), 释放回到第一点(约1.4mm)。标记为序号:1,2,3,4。如下图所示: DKS keys 采用 Delay(ms)的数值代表事件序号,可使用的Action有Down,UP和Tap。注意:不要使用Text,目前无用,可能还会导致该DKS按键定义错误。 比如这个图中,定义了第一点的事件是按下A和S,第二点的事件是按下D和F以及抬起A和S,最后定义第4点的事件是释放D和F。 更简单的说法就是,按下超过1.4mm的时候,会触发A和S,按下超过3.0mm的时候,会触发D和F并同时释放A和S。最后,抬起小于1.4mm的时候,释放D和F。 当然,不按倒第二点(3.0mm)就直接抬起,也会正常释放按键A和S。 目前Layer 6用于设置DKS按键,如图: DKS layer 如图,Q被设置成M0,也就是前面定义的Macro。对应就是按下键盘的Q时,会按以上的说明,触发各个按键。

几点说明:

  1. 目前一个DKS按键最多支持四个键,即在定义的宏中不能出现超过5个按键,否则行为不可预测。
  2. 目前第一点和第二点的触发位置不可调。
  3. DKS层(layer 6)的优先级最高,即配置了DKS后,会导致该按键的APC(Layer 4),RT(Layer 5)的配置失效。

第1和第2点,将来会放开限制。DKS按键最多放到16颗,触发位置应该可以改成任意可调(用APC层设置第一点,RT层设置第二点)。 或则甚至不仅局限于2段,弄成多段触发。

SignalRGB

带全键RGB的磁轴PCB会逐渐加入 SignalRGB 的支持,目前Rabbit60磁轴已经支持该应用,更新固件后,需要将 附带插件文件拷入 %userprofile%/Documents/WhirlwindFX/plugins ,重新启动SignalRGB即可。

后续计划

目前大致能确定的是兔子60,3.0&兔子80,Corsa会被列入磁轴的支持,当然,其实前期的静电容PCB如falcon,3.0,Me之类也可以实现这两个功能,后续 会逐渐更新各类固件。

Vial 固件

键盘 下载链接 更新时间 SignalRGB插件
8xv3.0 MS 8xv3.0 MS 2023/11/22  
Corsa MS Corsa MS 2023/11/25  
Falcon MS Falcon MS 2023/11/22  
Rabbit 60 MS Rabbit MS 2023/11/24 SRGB plugin