Skip to content
ixx edited this page May 8, 2024 · 2 revisions

zmk config

使用在线环境要注意这个 git 提供的Codespaces 保存一个月,一个月不登录就会销毁,记得提前保存在Codespaces中修改的代码,别问我怎么知道的。。

本文用的是nrfmicro主控,其他的主控可以参考主控自己的文档

环境准备

登录zmk官方仓库 https://github.com/zmkfirmware/zmk

Code按钮下拉,在Codespaces中点创建

初始化成功后,在控制台执行以下命令初始化zmk编译环境(update 执行需要几分钟,等着就好):

west init -l app/
west update

初始化完成后可执行以下命令验证编译环境是否正常:

cd app
west build -p -b nice_nano_v2 -- -DSHIELD=kyria_left

如果没有报错说明编写环境ok,输出示例:

....
-- Generating done
-- Build files have been written to: /workspaces/zmk/app/build
-- west build: building application
[1/327] Preparing syscall dependency handling

[2/327] Generating include/generated/version.h
-- Zephyr version: 3.2.0 (/workspaces/zmk/zephyr), build: 1ae0eb5ce8ad
[317/327] Linking C executable zephyr/zephyr_pre0.elf

[321/327] Linking C executable zephyr/zephyr_pre1.elf

[327/327] Linking C executable zephyr/zmk.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:      191996 B       792 KB     23.67%
            SRAM:       55004 B       256 KB     20.98%
        IDT_LIST:          0 GB         2 KB      0.00%
Converting to uf2, output size: 384000, start address: 0x26000
Wrote 384000 bytes to zmk.uf2

构建的文件保存路径为app/build/zephyr/zmk.uf2

配列编写

编写自己的配列需要在 app/boards/shields 下创建自己的文件夹,参考这个shields目录下现有的配置编写,比如 jian ,这个是分体键盘,我主要就是参考这个改的,不是分体的可以参考 m60

文件列表简单说明(这个说明主要是基于自己理解的,有可能存在偏差)

  • jian_left.conf 空文件(可以指定一些zmk配置,暂时用不到)
  • jian_left.overlay 主要设置左手的列GPIO引脚,按promicro的引脚编号去写
  • jian_right.conf 空文件
  • jian_right.overlay 主要设置右手的列GPIO引脚,两个注意的点,一个是如果PCB跟左手是镜像的,则GPIO顺序要反过来写,跟左手PCB一样的话直接按左手的GPIO写就行。另一个是右手有col-offset 要设置,用来设置右手列的起始偏移量,比如10列的,就设置5
  • jian.conf 空文件(可以指定一些zmk配置,暂时用不到,这个跟左右手设置类似,这里设置是左右手全局的,上边左和右是单独设置的)
  • jian.dtsi 这里设置键盘配列布局,他这里设置了多种布局情况,我们写自己的可以只保留一个,设置好对应的columns和rows , map里按自己的键盘布局设置,行列索引都是从0开始,最下边的row-gpios里设置行的引脚,依然是参考promicro的引脚编号
  • jian.keymap 这里就是修改键盘多层配置的地方了,可以使用在线配置网站,可视生成:Keymap Editor (nickcoutsos.github.io) 设置好后直接把内容复制过来最上边添加一下 #include <behaviors.dtsi> 就可以
  • jian.zmk.yml 这是键盘的一些配置第一行不要动,就改一下id(注意不要跟别人重复)、name(键盘连电脑显示名)、url(配列项目地址)、siblings里的左右配置名字
  • Kconfig.defconfig 设置键盘名和分体键盘的设置,按自己的名字改就行
  • Kconfig.shield 定义shield,按自己名字改一下对应的变量就行

编写行列时对照GPIO按promicro 填写:

Untitled

构建

一般情况下构建使用

west build -p -b nice_nano_v2 -- -DSHIELD=kyria_left
  • -b 指定使用的主控,nrfmicro可以使用nrfmicro_13(虽然我用的是1.4版本的nrfmicro硬件)
  • -DSHIELD 指定要编译的配列

分体键盘可以使用如下命令,分别保存构建的左、右两部分:

west build -d build/left -b nice_nano_v2 -- -DSHIELD=kyria_left
west build -d build/right -b nice_nano_v2 -- -DSHIELD=kyria_right
  • -d 指定构建输出文件目录

构建完后生成文件目录为 app/build/left/zephyr/zmk.uf2app/build/right/zephyr/zmk.uf2

找到这两个文件分别右键下载到本地(记得改名区分left、right)

然后将nrfmicro主板使用数据线连接电脑快速短接nrfmicro的GND和RST两次,触发键盘刷机,进入u盘状态,将对应的zmk.uf2 直接拖进u盘,写入完成后会自动弹出,重新插拨一下就可以测试按键了

一些问题

记录一下自己遇到的一些问题

  1. E73主控质量问题,第一次买的两块有一块刷完有一个引脚会触发连击,一次输入4个按键,且通电后主板发热量大,联系商家客服后一说现象马上补发了一个(看来不是个例)
  2. 已经配对好的两个主控,更换时要重新刷新bootloader,不然识别不到,不知道是不是特殊情况,我拿补发的主控做了一个nrfmicro 刷成右手 ,不能和之前的左手键盘匹配上(有可能左手记录了上一个右手键盘的蓝牙设备),重新刷了左手bootloader后好了
  3. 构建采用 -d build/left 这种方式构建,记得把原来 build 下的 zephyr 目录删除,目录太长,找 left下的 zephyr的时候容易点错,下错文件
Clone this wiki locally