0104ALL苍TheError上下,妙控键盘符号怎么打

kbfirmware使用教程——以制作小太刀TEX Kodachi键盘为例

2019-08-11 14:06:21

79点赞

373收藏

71评论

前言

这些天有值友在之前的制作键盘的原创中询问kbfirmware的详细使用教程,趁着最近在自制小太刀TEX Kodachi小红点机械键盘,就制作个详细kbfirmware使用教程好了。df12cac327c07ad43ae854730f7bbfbe.png低端客制化——画图汪键盘制作记录前言前排提示这是个低端客制化,大家不要将其和那些上百元上千元的客制化套件相比。键盘制作考虑到金钱及时间的消耗,没有去打PCB,没有钢材定位板,没有轴间纸,没有铝阳极外壳,没有酷炫的键帽,只是一把为了方便工作而制作出来的键盘,很丑,极其粗糙不精致。其实我不是很想把这个键盘的制作过程晒出来的,但是上次分qianseyue|赞33评论19收藏77查看详情

PS:docs.qmk.fm有QMK固件的详细设置介绍,有兴趣的可以自己去看。

教程

小太刀Kodachi这款红点机械键盘最近很有名,TEX原版389元美刀,合计约2500元人民币。

108298de43a21ee159a2eb43e05baa1c.png

而挂了ThinkPad标志的限量版售价则翻了一倍,高达4999元人民币,标志就是值钱。

3ecddeffff49ca1426b9a38c5dae1aa8.png百科4b45500e7e1479722f78db3a46028835.pngThinkPad 七行小红点手工机械式键盘 SK-8865小红点机械键盘SK-8865搭载Cherry绿轴,保留了TrackPonint小红帽指点杆。外壳为铝合金不经冲压,CNC切割而成,模具为手工打造,表面经阳极氧化工艺处理。键帽则是80年代的复古Cherry球帽,ABS材质,还额外附赠一套无刻键帽,采用USB-C口有线连接,全球限量100台。值3点评0原创2好价22去购买查看详情

小太刀的命名来自于ThinkPad X300,因为X300设计之初的研发代号为Kodachi。键位方面则是近似于ThinkPad的SK-8855和SK-8845键盘,所以联想的代号是SK-8865,相当于是一种延续。

528eb337245421cf624a86d51c6b839e.png

根据TEX Kodachi的键列,在keyboard-layout-editor画好了布局图,细节上自己作了改变。

e525a68f3e7b27f49c8cec17de3b6fab.png

将keyboard-layout-editor生成的RAW数据,复制到kbfirmware中,点击Import。

5b2bfa2a911cbc48146e40dce76282c7.png

这时候kbfirmware会自动生成一个一个键盘矩阵,接着就能进行固件的自定义设置。

51789638553b801120f55081773e283e.png

WINRING 连线

因为机械键盘都有防冲二极管,所以要区分感知引脚和驱动引脚。红色线的Rows代表驱动引脚,灰色线的Columns代表感知引脚。自动生成的矩阵中,有15个感知引脚和8个驱动引脚。

bfdd92494816a06c7c8c1b592b7074b9.png

Specify the diode direction指的是二极管方向。引用3dg12的图,大部分机械键盘的二极管负极接驱动引脚,正极接感知引脚,此时选项就是Column to Row。相反就是Row to Column。

35e396fd3a5a033a1c2610ca7f0b5a93.png

单独点击按键,可以看到这个按键的感知引脚和驱动引脚。

0092083cb1d4c208873397ae59b1d933.png

kbfirmware不支持实时生成矩阵。如果修改了驱动引脚和感知引脚的数目,矩阵就会乱掉。

def10f947b2e0380f9489295c1c8e4a2.png

这时候需要一个一个按键修改,才能把矩阵修改回来。需要耐性,还要注意不要重复。

4509f9d4831a48500bc7170c5a9fa682.png

50f023774f2ff134ebddc63a5705b0b6.png

81f9deefb480a7ac3c06517872bfc019.png

另外kbfirmware中线与线的连接都是点对点的连线,会造成线与线的相交,矩阵比较复杂的时候就会看起来好混乱。建议在Excel建立表格,确定每一个按键的驱动引脚和感知引脚的数字,再填到kbfirmware中。

225c19140a4aa20839ff51d57fcc6e37.png

图片中的Excel表格是我测试的某优联主控键盘矩阵,权当参考。

cb2598bc3b5f92bc75386decae17597b.png

修改后的矩阵设定如图,将底部三大键的驱动引脚从7改成0,感知引脚改成5-7。最右下角的方向键驱动引脚从7改成6,感知引脚改成5-7。空格键的感知引脚改成9。如此一来可以节省一个接口。

PINS 引脚

引脚一般可以不管,kbfirmware可以自动生成。自己设定则有助于接线的整理。

2454a4748717ace00f661da44c75db1a.png

kbfirmware支持ATmega32U2、ATmega32U4、AT90USB1286三款芯片。

22c1bd5ebf346105056bcfbba23f1e70.png

ATmega32U4芯片的Arduino Pro Micro引脚定义图,P开头那些就是kbfirmware设置中所对应的接口。

a77b14a30e02d3af6b30ba571bc5a274.png

AT90USB1286芯片的Teensy 2.0++引脚定义图。同样P开头那些就是kbfirmware设置中所对应的接口。

8b7f2b7f8f5d7e7484c32475f7a83767.png

另外还可以设置指示灯的引脚。Num、Caps和Scroll就是常见的数字键盘锁、大小写锁和滚动锁。Compose是组合键指示灯,在Linux上比较常见。Kana是日文键盘假名输入模式。另外还有键盘背光的引脚,Backlight是轴的LED灯珠,WS2812 Strip是灯条。

34b96c6a021f986d14328b4435f8db5c.png

KEYMAP 键列

kbfirmware支持全键盘自定义。

3a4646d55ad968bad01fae055955f3f4.png

图层是指按键功能所在的层,键盘可以自定义多个层并进行切换。

4d6b768439da58a1d70432dc6b030bbd.png

点击需要修改的按键,就会显示其键值。例如我点击空格键,就会显示其键值KC_SPC。

4bfa0080bf8a4f922bf5bf3fa08b7cd9.png

点击键值可以进行修改。设置页面主要有PRIMARY主键位,SECONDARY辅助键位,KEYPAD数字键盘,LIGHTING背光,FN功能键,OTHER其他。

PRIMARY主键位

主要是常见的字母按键,符号按键和Ctrl、Win(GUI)、Alt按键等。

13bfe0fa6d6fb04f1fd5b8c5e4e4d7c2.png

比较特殊的是NUBS、NUBS、TRNS、RESET和NO。NO最好理解,为不定义键值,无功能。

f37daddcc12f072d70c00440dbffd35c.png

NUBS是EU键列的 和 | 。US键列为无功能按键。

15368ac3eaa45fcf04c0cac0cff8ebbb.png

NUHS是EU键列的 # 和 ~。US键列为无功能按键。

2edbe5529a0289f90a979e0be4ef970e.png

TRNS则是键值相当于前一个层中所定义的键值。

b66199a25592386e76735958204dae48.png

RESET为重置按键,相当于板子上的重置按键。按下后能进入刷机模式,可以重新刷入固件。

SECONDARY辅助键位

主要是一些符号,特殊按键,方向键和媒体按键。Fn1-Fn12是win系统的,Fn1-Fn24是mac系统的。

07cac1b4d01a7c1763edc3a5757e9673.png

LEFT、DOWN、UP、RIGHT分别是左、下、上、右方向键。POWER电源,SLEEP睡眠,WAKE唤醒,MUTE静音,VOLD音量减少,VOLU音量增加,PLAY播放,STOP停止,PREV上一 首,NEXT下一首。

2b4fdca5c36ddbe3cdb2a83a4389ed3d.png

媒体按键还有很多,docs.qmk.fm有完整的媒体按键键值定义。

KEYPAD数字键盘

小数字键盘区域按键的键值定义,就是在前面加了P作区别。

9c44aeebe2b68943f86d3bc0fa692d6a.png

LIGHTING背光

键盘背光的设置按键定义。分为单色和RGB背光两种。

d1e463f3c7faa31636a0c4dcae938ca0.png

BL_TOGG 开启或关闭背光。BL_DEC 背光亮度减弱。BL_INC 背光亮度增加。BL_STEP 亮度从暗到亮再到暗循环。

f6895649f49977ba006c078f4bf6b766.png

RGB_TOGG RGB灯开关。RGB_MOD RGB灯光模式切换。RGB_HUI RGB灯光色相数值增加,RGB_HUD RGB灯光色相数值减少。RGB_SAI RGB灯光饱和度数值增加,RGB_SAD RGB灯光饱和度数值减少。RGB_VAI RGB灯光亮度数值增加,RGB_VAD RGB灯光亮度数值减少。

e0183ec9fcd385b957b65e016ec85b19.png

灯光模式细分有RGB_M_P静态光,RGB_M_B呼吸灯,RGB_M_R彩虹灯,RGB_M_SW彩虹渐变,RGB_M_PRGB_M_SN贪吃蛇,RGB_M_PK霹雳侠,RGB_M_X圣诞灯,RGB_M_G单色渐变,RGB_M_T三色渐变。

FN功能键

功能按键区,包含一些组合按键和键列层转换的控制键。

5093724f57e7dca76aa564ea874ba3fc.png

组合按键主要是Ctrl、Alt、GUI的组合按键。

599b54552e32ef090b4dcd90ed9d1244.png

例如LCTL() 相当于左Ctrl加特殊按键,RCTL()、LALT()、LGUI()类似。

a735fdca7c8808ba7931be5aa419f6e4.png

这种组合按键还可以叠加,进行一些快捷键的自定义。

27fb250d23c80cd1d51312fc34055d30.png

另外固件有自定义多组合键,例如HYPR()相当于Ctrl + Shift + Alt + Gui +自定义按键。 MEH()相当于Ctrl + Shift + Alt + 自定义。LCAG()相当于Ctrl + Alt + Gui +自定义按键。ALTG()相当于Ctrl + Alt +自定义按键。

d9ef4fa3cd8af5524c70e2253a96a308.png

后续加_T的则表示长按触发组合键,短按触发自定义按键。例如MEH()设置为MEH_T(T),长按触发Ctrl + Shift + Alt + T,短按触发T。MT()长按为组合按键,短按为自定义按键。OSM()则是锁定组合按键直到下一次按下按键。例如OSM()设定为OSM(Shift),按下OSM()后,按1按键则输入!,再按1按键则输入1。OSL()则是切换到指定键列层,直到下一次按下按键。例如层0是某按键的键值是1,层1此按键的键值是2,按下OSM(1)后,按此按键则输入2,再按此按键则输入1。

5a76aa1d3dc01ee69490a7b3b85a0d3b.png

图层转换按键中最常用MO(),相当于常见键盘的Fn按键。默认0键列层情况下,按下Mo按键加某按键,就会切换到下一个键列层,也就是1层的按键的键值。例如0层下某按键定义是A按键,1层下是B按键。按下MO加A按键,就会变成B按键。

752347acd944088007174e7f8bd61e7f.png

LT(),长按是MO加自定义按键,短按则是自定义按键,例如LT()设定为A按键。长按是MO加A按键,短按则是A按键。TO(),切换到指定键列层。设定为TO(1)则是转换到1键列层,设定为2则是转换到2键列层。DF(),返回默认0键列层。TG(),指定图层切换。

OTHER其他

有些按键的键值kbfirmware的预设中没有定义,可以手动输入。

13d62a86ce0cdeed7f0d9fbd3c975e5c.png

例如一下复制粘贴的快捷键。

f6fcec81966c4c0c9e7f93f88e9cc803.png

还有鼠标的控制按键。KC_MS_WH为鼠标滚轮的设定,KC_MS_MS为鼠标光标的设定。KC_MS_UP、KC_MS_DOWN、KC_MS_LEFT、KC_MS_RIGHT分别是光标上移,下移,左移和右移。这些设定可以适用于小红点的光标移动。KC_MS_BTN1为鼠标左键、KC_MS_BTN2为鼠标右键,KC_MS_BTN3为鼠标中键。

11d7732591d8f44c85bc480204d1734e.png

MACEOS 自定义宏

kbfirmware支持记录宏脚本。Add Action是添加脚本,Record Macro是记录宏,Clear Marco则是删除宏。

a537e26a816c814861e8f891758ecdbf.png

理论上可以添加无限个脚本,实际没有测试最多多少个。

e9463e6715ef87d24c6439c8ada08eea.png

No Action为无动作。

0962209d62ee0ba7201da051cc210a57.png

Press为按下按键,Release为释放按键。

96f4febae904271c72586b37d4c26ca6.png

Set Interval为延时,Wait是等待。单位都是MS。

3cc8efc8ff59286b9282d7bd429a89c7.png

Type为点击指定按键。

f63f14c3605a5eff9b3c28bb2012ebda.png

点击Record Macro录取宏后,点击的按键会记录在脚本中,点击Stop Recording则停止记录。Clear Marco则会清除脚本。

0b52bf32a030793dd4266c1af7b6844a.png

Quantumb 编程

量子算法编程语言,可以在这个页面添加自己的代码,详细可以在docs.qmk.fm查看相关函数定义。一般人用不上,最好不要乱改。

1bfbe0116e0f467534293b716a4d84d8.png

Settings 设置

设置页面可以自定义键盘的名字,Windows系统能识别出这个名字。

c761b74622087c9aa1843dc33d39c13c.png

固件大小,点击旁边的问号可以看到相关主板的名字以及固件大小。

ed48180ff30eb4e6fde7a7294157a2b9.png

WS2812 LEDs则是指灯条数量。Backlight Levels为背光的亮度级别。

8be86ee527b9b45d5c81714cb789e36e.png

设置完成后记得保存配置JSON文件到自己电脑中。下次想再编辑的时候,可以在首页的Upload上传JSON文件继续编辑。

345c54b36b1bc763cebecf3d15935913.png

Compile 编译

编译页面可以下载Hex文件和打包成zip压缩包的Hex文件。

26deb55be764222434d78c4f1a8324f6.png

如果固件设置有错误,是无法编译并下载hex文件的。

1a8cae0542b3b6a2cf418f5cec2d0f82.png

错误信息在Settings页面会有提示。错误符号的Not every key has a unique position in the wiring matrix. 指有按键的驱动引脚和感知引脚重复。感叹号的提示只是警告,可以不管,不影响编译hex。

后记

这篇文章主要是以制作小太刀TEX Kodachi为例,详细介绍kbfirmware的使用教程。以后还会写一篇小太刀TEX Kodachi红点机械键盘制作过程的原创文章,成本在100元左右,喜欢的可以关注一下。

PS:之前我也制作过一把60%键列的红点机械键盘。喜欢的也可以去浏览一下。84a2884ca882e8416e517e968aafaf06.png全手工制作双模无线小红点机械键盘记录前言自从购买了Thinkpad25周年纪念版机械键盘后,一直对其不是无线键盘耿耿于怀。常常寻思着怎么将其改造成无线键盘。匠心独妙——Thinkpad25周年纪念版键盘晒物匠心独妙——Thinkpad25周年纪念版键盘晒物在二零一七年十二月...qianseyue|赞371评论126收藏796查看详情

未经授权,不得转载

c2ad9c123c4d84295e50d901fd065b58.png

Qt实现串口通信(C++实现串口通信小助手)---串口收发及 ...鲁大能的个人空间_哔哩哔哩_Bilibili盟威软件快速开发平台 BUG 及改进建议反馈无穷小亮的科普日常的个人空间_哔哩哔哩_Bilibilikuaiwan-快玩-快玩游戏-快玩网页游戏AI 少女 Mod下载(AI Shoujo Mod Download) -3DM MOD站怀旧连环画 - 故园怀旧已被格式化的叔叔_CSDN博客-C#学习笔记,项目记录,后端 ...凯师傅结冰的推荐 | LOFTER(乐乎) - 让兴趣,更有趣百科知识 hta文件如何打开linux内核文档翻译之——V4L2-framework.txt V4L2 API Specification并发机制之线程(1)关于Flutter.await操作符使用详解PHP表单附加CSVV4L2 API Specificationvobx 和linux共享文件IOS网络请求的简单封装设计一步一步在平衡车上实现卡尔曼滤波任何人都可以在此POST NSMutableURLRequest中找到错误到PHP脚本吗?[转] iOS OpenGL ES Guide重点考察内容:(以第五版内容和相关RFC为准)(转)IOS App中揉合讯飞SDK功能详细ORACLE 10g命令大全HTML应用程序(HTML Application)从ffmpeg的AVFrame得到iOS的CVPixelBufferSQL Server的I / O基础--2Learn Mac os/iOS programInstalling SQL Server 2008 Express GuidanceiOS OpenGL ES Guide.htaccess文件的详解以及404页面的设置ctypes__attribute__ java.sql.SQLException: The server time zone value ‘�й���׼ʱ��‘ is unrecognized or ...iOS 网络编程:socketOracle9i Developer Suite - A Tutorial on Oracle9i Forms and Reports
01Dart介绍0501左阳015豆芽0571支付宝074失联08乘125列竖式走嘛去青城山赏银杏泡温泉住民宿浪漫过冬简历的贯籍怎么填写035五爷故意拿乔反被撩了01中国美术史课件0412月2020苹果好玩网06月21日NBA直播03元就能提现的游戏04关055后土小萝莉诞生02动漫壁纸010完犊子04温病学形成与发展020米皮子痒了06运算符表达式流程控制上ppt略谈地方文化系统中的关帝庙文化马克思主义哲学基本原理