客制化键盘QMK固件入门-修改keyboard和keymap

2020-05-04 20:03:32 7点赞 58收藏 7评论

客制化键盘,这是一个巨大的坑,形形色色的轴体、外壳、PCB、数据线键帽、灯效、音效甚至掌托,对于热爱DIY的玩家们来说,确实很吸引人,但再看看价格,只能打扰了。作为一只程序猿,想要玩客制化键盘又玩不起,就只能对着键盘的固件深入研究一番了。在我的前一篇文章中,一步步搭建起了QMK固件在Windows系统中的编译环境,接下来就着手打造自己的键盘固件吧。

建立自己的KEYBOARD 和KEYMAP

在终端中使用命令./util/new_keyboard.sh,输入自己为键盘取的名称(mini01)、使用的芯片(默认AVR)、自己的github用户名,生成自己的KEYBOARD文件夹和配置文件。

再输入./util/new_keymap.sh KEYBOARD NAME,这里的KEYBOARD替换为上一步取的键盘名称mini01,NAME是自己的github用户名,生成自己的KEYMAP示例文件。两条命令中自己的名字主要是为了生成一些文档中的名字部分,让看到键盘文档的广大网友认识你,在意的话就好好想个好名字,不关心的话随意取都可以。


客制化键盘QMK固件入门-修改keyboard和keymap



此时可看到在固件目录./keyboards中生成了一个以刚才输入名称(mini01)命名的文件夹,里面有rules.mk、config.h等示例配置文件,文件夹./keyboards/mini01/keymaps中为示例的KEYMAP相关文件。


客制化键盘QMK固件入门-修改keyboard和keymap



修改KEYBOARD 和KEYMAP


客制化键盘QMK固件入门-修改keyboard和keymap



这里以5个按键的小键盘为例,主控使用Arduino leonardo,为了快速入门,尽量只对固件做最少的修改,先让这个键盘能用起来。

/mini01/rules.mk

rules.mk是用来控制编译选项的文件,在该文件中可打开或关闭一些功能。文件中#号后是注释,为我们解释了相关编译选项的意义。

MCU是键盘所使用的主控型号,目前使用的Arduino leonardo,其主控是Atmega32u4,所以MCU = atmega32u4不用修改,如果使用了其他主控芯片,修改为相应的名称就好,比如MCU = STM32F303。


客制化键盘QMK固件入门-修改keyboard和keymap



如果使用ATmel芯片作为主控,需要定义主控芯片使用的bootloader,示例文件中已经列出了可能的bootloader种类,通常使用默认的BOOTLOADER = atmel-dfu即可。如果使用STM32主控,由于STM32主控芯片的bootloader是固化在芯片内部的,仅与前面定义的MCU型号相关,因此注释掉此行即可。其他选项暂时不作修改。

/mini01/config.h

矩阵键盘电路均是将按键开关分为多行多列,这里的行列不是从表面上看到的键帽排列的行列,而是PCB上各个按键组成的矩阵键盘的排列。


客制化键盘QMK固件入门-修改keyboard和keymap



MATRIXROWS定义为矩阵键盘的行数,此键盘为2;MATRIXCOLS定义为矩阵键盘的列数,此键盘为3。行列之间通过按键开关和防止按键冲突的二极管连接,这里需要定义二极管的从正极到负极的方向。大多数二极管都是有色环的一方为负极,从上图看,二极管有色环的一方连接到了矩阵键盘的行上,因此方向为列到行,#define DIODE_DIRECTION COL2ROW。


客制化键盘QMK固件入门-修改keyboard和keymap



每一行和列分别连接到主控芯片的某一个GPIO(LEONARDO PINOUT中的Port Pin),在config.h文件中主要就是定义这些GPIO的连接情况。MATRIX_ROW_PINS 对应矩阵键盘PCB上每一行连接的GPIO,#define MATRIX_ROW_PINS { D1, D0 },MATRIX_COL_PINS 对应矩阵键盘PCB上每一列连接的GPIO,#define MATRIX_COL_PINS { D4, C6, D7 }。


客制化键盘QMK固件入门-修改keyboard和keymap



/mini01/mini01.h


客制化键盘QMK固件入门-修改keyboard和keymap



此文件内定义的宏LAYOUT是一种映射关系,将从正面看键盘的键位布局映射为从透视到键盘背面的矩阵键盘电路连接情况。定义这个宏是为了方便后面的按键功能定义,LAYOUT后紧跟的()括号内,knm的n表示按键在第几行,m表示按键在第几列,排列与正面看的键位布局一致,方便定义功能时对应到相应键位,而不用关心PCB上的电路连接情况。{}括号内,是二维数组形式,必须满足前面定义的行列数,每一行为矩阵键盘电路上连接在一起的一行,如果某行某列无按键,必须使用KC_NO填充。

/mini01/datou/keymap.c

在keymap.c中就可以按照按键的位置来定义功能,对于标准的104键的键盘,普通的功能均可以使用下图的定义。


客制化键盘QMK固件入门-修改keyboard和keymap



这里先把键盘定义为两层,第0层按键实现上下左右,第1层按键实现数字1234。

生成的默认文件内也是定义的两层,我们把每一层的名字修改一下,方便识别,当然也可以不修改。


客制化键盘QMK固件入门-修改keyboard和keymap



keymaps[][MATRIX_ROWS][MATRIX_ROWS][MATRIX_COLS]就是定义键盘功能的数组了,每一层按键功能使用了一个的LAYOUT来定义功能。MO(NUMBER)表示按住该键时,键盘功能映射为NUMBER这一层,实现数字按键1234的功能。_______表示与n-1层的功能相同(n为按键所在的层),比如下图第1层的_______的功能就是第0层对应位置按键的功能,也就是MO(NUMBER)。


客制化键盘QMK固件入门-修改keyboard和keymap



编译固件


客制化键盘QMK固件入门-修改keyboard和keymap



至此,这个极其简单的5个按键的键盘固件就修改完了,最后使用命令qmk compile -kb mini01 -km datou编译生成固件,一切顺利。


展开 收起

锐普无线蓝牙键盘鼠标套装可充电双模静轻音笔记本台式电脑办公打字mac ipad平板 安卓手机通用键盘K22 单键盘-灰白拼色【可充电】 【无线2.4G+蓝牙】双模

锐普无线蓝牙键盘鼠标套装可充电双模静轻音笔记本台式电脑办公打字mac ipad平板 安卓手机通用键盘K22 单键盘-灰白拼色【可充电】 【无线2.4G+蓝牙】双模

69.9元起

阿米洛(Varmilo) 阿米洛金属 Sword68 机械键盘 金属键盘 办公键盘 游戏键盘 紫丁香(Lilac)68键三模凯华臻悦轴

阿米洛(Varmilo) 阿米洛金属 Sword68 机械键盘 金属键盘 办公键盘 游戏键盘 紫丁香(Lilac)68键三模凯华臻悦轴

1390元起

梦族K783无线键盘鼠标套装奶茶色静音女生办公笔记本电脑打字

梦族K783无线键盘鼠标套装奶茶色静音女生办公笔记本电脑打字

38.8元起

欧特姆outemu高特水蜜桃轴V2客制化机械键盘热插拔静音线性开关轴

欧特姆outemu高特水蜜桃轴V2客制化机械键盘热插拔静音线性开关轴

22.1元起

NuPhy Air60 V2 客制化矮轴机械键盘mac无线蓝牙超薄双三模静音 离子白 红轴 64

NuPhy Air60 V2 客制化矮轴机械键盘mac无线蓝牙超薄双三模静音 离子白 红轴 64

569元起

黑爵(AJAZZ)AKP815矮轴机械键盘Mac平板笔记本台式办公游戏彩屏有线 白蓝橙 RGB灯 (矮红轴)-有线

黑爵(AJAZZ)AKP815矮轴机械键盘Mac平板笔记本台式办公游戏彩屏有线 白蓝橙 RGB灯 (矮红轴)-有线

399元起

Keychron V2 MAX 68键 三模机械键盘

Keychron V2 MAX 68键 三模机械键盘

381.06元起

宏碁(acer) 无线蓝牙有线三模机械键盘 68键便携键盘 笔记本电脑手机键盘 办公游戏键盘 68键-无线蓝牙有线三模【复古灰-青轴】 无光

宏碁(acer) 无线蓝牙有线三模机械键盘 68键便携键盘 笔记本电脑手机键盘 办公游戏键盘 68键-无线蓝牙有线三模【复古灰-青轴】 无光

137.9元起

黑爵(AJAZZ)AK680有线机械键盘 双拼键帽 68键 全键热插拔 客制化机械键盘 混彩灯效 便携小巧 红白 青轴 有线热插拔 68键 红白青轴 混彩

黑爵(AJAZZ)AK680有线机械键盘 双拼键帽 68键 全键热插拔 客制化机械键盘 混彩灯效 便携小巧 红白 青轴 有线热插拔 68键 红白青轴 混彩

79元起

狼蛛(AULA)蓝牙2.4G无线三模套件 机械键盘热插拔客制化 铝坨坨客制化套件 电竞游戏精调大键 F3161 客制化三模 键盘套件(61键 黑色) 单套件/无轴体无键帽

狼蛛(AULA)蓝牙2.4G无线三模套件 机械键盘热插拔客制化 铝坨坨客制化套件 电竞游戏精调大键 F3161 客制化三模 键盘套件(61键 黑色) 单套件/无轴体无键帽

149元起

NuPhy Air75 V2 客制化矮轴机械键盘mac无线蓝牙超薄双三模静音办公 玄武岩黑 红轴

NuPhy Air75 V2 客制化矮轴机械键盘mac无线蓝牙超薄双三模静音办公 玄武岩黑 红轴

619元起

珂芝 KZZI K75Lite客制化机械键盘2.4G无线蓝牙有线三模连接游戏办公gasket全键热插拔RGB渐变侧刻82键柯芝 星岩灰(彩虹轴)RGB-热插拔(三模)游戏

珂芝 KZZI K75Lite客制化机械键盘2.4G无线蓝牙有线三模连接游戏办公gasket全键热插拔RGB渐变侧刻82键柯芝 星岩灰(彩虹轴)RGB-热插拔(三模)游戏

199元起

罗技(Logitech) K580 无线键盘 蓝牙办公键盘 小刘鸭IP联名款键鼠套装 K580 【小刘鸭联名款 甜甜酷】

罗技(Logitech) K580 无线键盘 蓝牙办公键盘 小刘鸭IP联名款键鼠套装 K580 【小刘鸭联名款 甜甜酷】

259元起

高特水蜜桃轴欧特姆客制化机械键盘热插拔开关outemu静音线性轴体

高特水蜜桃轴欧特姆客制化机械键盘热插拔开关outemu静音线性轴体

11元起

新贵(Newmen) GM980星辰黑三模机械键盘热插拔Gasket结构98配列透明客制化轴体 凯华联名-星空轴

新贵(Newmen) GM980星辰黑三模机械键盘热插拔Gasket结构98配列透明客制化轴体 凯华联名-星空轴

608元起

Disney 迪士尼 键盘

Disney 迪士尼 键盘

279元起
7评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
58
扫一下,分享更方便,购买更轻松