ZMK 中的 BFO-9000 分体正交键盘 Shield:硬件特性、矩阵配置与默认键位深度解析
固件嵌入式智能硬件蓝牙【免费下载链接】zmkZMK Firmware Repository项目地址https://gitcode.com/gh_mirrors/zm/zmk点击查看免费下载BFO-9000 是一款可自定义尺寸的全尺寸full-size分体正交split ortholinear键盘由 keeb.io 推出。本文以 ZMK 固件仓库中 app/boards/shields/bfo9000 目录下的 shield 实现为核心从硬件特性、分体双胞胎siblings结构、kscan 矩阵定义、matrix-transform 映射到内置默认键位逐层拆解这套 6 行 × 18 列分体布局在 ZMK 中是如何被描述、接线和固化的并给出在 bfo9000.keymap 基础上进行二次定制的实操指引。硬件特性概览ZMK 仓库为该 shield 维护的 README.md 明确列出了三项核心硬件特性这也是理解后续所有配置文件的物理前提轴体兼容性广同时兼容 MX 兼容轴、Alps 兼容轴以及 Kailh 矮轴Low-Profile Choc开关可拆分尺寸breakoff piecesPCB 提供可掰断的模块允许用户自由组合出46 行、79 列的不同矩阵规模RGB LED 连接PCB 预留 RGB LED 的接线点可配合 ZMK 的rgb_ug行为实现底灯/轴灯控制。正因如此BFO 之名对应 Big Freaking Ortholinear——它本质上是一块想要多大就有多大的正交布局 PCB。ZMK 的默认实现选择了其最大规模6 行 × 18 列左右半区各 6 行 × 9 列这一点在 bfo9000.dtsi 的default_transform中直接体现default_transform: keymap_transform_0 { compatible zmk,matrix-transform; columns 18; rows 6; map RC(0,0) RC(0,1) ... RC(0,17) RC(1,0) RC(1,1) ... RC(1,17) RC(2,0) RC(2,1) ... RC(2,17) RC(3,0) RC(3,1) ... RC(3,17) RC(4,0) RC(4,1) ... RC(4,17) RC(5,0) RC(5,1) ... RC(5,17) ; };RC(行, 列)宏来自 ZMK 的 app/include/dt-bindings/zmk 头文件族其中包含matrix-transform.h用于按物理行列位置描述键位当物理矩阵与逻辑键位布局不一致时开发者可以在map中重新排布这些RC()条目来完成矩阵变换。分体结构left / right 双胞胎与 Kconfig 开关ZMK 中一块物理 PCB 对应一个 shield分体键盘的左右两半则通过siblings双胞胎机制表达。在 bfo9000.zmk.yml 中可以看到file_format: 1 id: bfo9000 name: BFO-9000 type: shield url: https://keeb.io/products/bfo-9000-keyboard-customizable-full-size-split-ortholinear requires: [pro_micro] features: - keys siblings: - bfo9000_left - bfo9000_right几个关键字段的含义id: bfo9000shield 的唯一标识requires: [pro_micro]该 shield 依赖 Pro Micro 兼容主控板引脚定义在 app/boards/shields 体系内的pro_microinterconnect 中siblings声明bfo9000_left与bfo9000_right两个可独立构建的变体构建时通过SHIELDbfo9000_left或SHIELDbfo9000_right选择。与此对应的 Kconfig.shield 定义了编译开关config SHIELD_BFO9000_LEFT def_bool $(shields_list_contains,bfo9000_left) config SHIELD_BFO9000_RIGHT def_bool $(shields_list_contains,bfo9000_right)而 Kconfig.defconfig 则完成了分体相关的默认配置注入if SHIELD_BFO9000_LEFT config ZMK_KEYBOARD_NAME default BFO-9000 config ZMK_SPLIT_ROLE_CENTRAL default y endif if SHIELD_BFO9000_LEFT || SHIELD_BFO9000_RIGHT config ZMK_SPLIT default y endif从这段源码可以清楚读出 ZMK 的分体角色约定左半bfo9000_left默认充当 central中心角色负责蓝牙连接、USB 枚举与组合键处理右半作为 peripheral 通过 BLE 或有线方式与左半通信。ZMK_SPLIT对左右两半都启用确保双方都具备分体通信能力。矩阵接线kscan0 与左右 overlay 的 GPIO 分工ZMK 使用zmk,kscan-gpio-matrix兼容节点来描述行列扫描物理接线。公共部分写在 bfo9000.dtsi 中kscan0: kscan { compatible zmk,kscan-gpio-matrix; wakeup-source; diode-direction col2row; row-gpios pro_micro 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN) , pro_micro 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN) , pro_micro 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN) , pro_micro 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN) , pro_micro 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN) , pro_micro 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN) ; };要点解读wakeup-source该矩阵可作为系统唤醒源允许键盘在睡眠状态下通过按键唤醒diode-direction col2row二极管方向为列到行这是扫描方向的硬件约定必须与 PCB 实际二极管焊接方向一致row-gpios6 个行引脚分别接到 Pro Micro 的 1、0、4、5、6、7 号引脚并配置为GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN默认拉低、按键按下时被拉高从而判定按下。列引脚则因左右半区不同而拆分为两个 overlaybfo9000_left.overlayinclude 公共 dtsi 后为kscan0追加 9 个col-gpios分别接 Pro Micro 的 9、10、16、14、15、18、19、20、21 号引脚bfo9000_right.overlay同样追加相同的 9 个列引脚定义额外再通过default_transform设置col-offset 9。col-offset 9是理解分体矩阵的关键左右两半共用同一份 6 行 × 18 列的矩阵变换模板右半从物理第 0 列开始扫描但其逻辑列号需要整体偏移 9 列映射到第 917 列左右两半各自的 9 列拼合起来恰好构成完整的 18 列逻辑矩阵。这样左右两半可以烧录同一份 keymap 文件键位坐标在逻辑上无缝衔接。默认键位bfo9000.keymap 全解析app/boards/shields/bfo9000/bfo9000.keymap 是该 shield 的开箱即用键位共定义两个层default_layerDEFAULT层 0与lower_layerLOWER层 1。它通过#include behaviors.dtsi见 app/dts/behaviors.dtsi以及keys.h、bt.h、outputs.h、ext_power.h、rgb.h等 dt-bindings 头文件引入全部行为与键码宏。Default Layer全尺寸对称布局默认层共 108 个键位采用左半区 右半区镜像的对称设计布局从上到下依次为行左半区第 08 列右半区第 917 列第 0 行Esc、Vol Up、Esc、F1F6F5、F6F12、Del第 1 行Home、Vol Dn、、165、60、-、、Backspace第 2 行End、Tab、Tab、QYT、YP、[、]、\第 3 行PgUp、Caps、Ctrl、AHG、HL、;、、Enter、Enter第 4 行PgDn、↑、Shift、ZNB、NM、,、.、/、Shift、↑、mo LOWER第 5 行←、↓、→、Ctrl、Alt、Win、Space、Space、EnterBackspace、Space、Space、Win、Alt、Ctrl、←、↓、→键位定义摘录如下完整定义见源码bindings kp ESC kp C_VOL_UP kp ESC kp F1 kp F2 kp F3 kp F4 kp F5 kp F6 kp F5 kp F6 kp F7 kp F8 kp F9 kp F10 kp F11 kp F12 kp DEL kp HOME kp C_VOL_DN kp GRAVE kp N1 kp N2 kp N3 kp N4 kp N5 kp N6 kp N5 kp N6 kp N7 kp N8 kp N9 kp N0 kp MINUS kp EQUAL kp BSPC ... kp LEFT kp DOWN kp RIGHT kp LCTRL kp LALT kp LMETA kp SPACE kp SPACE kp ENTER kp BSPC kp SPACE kp SPACE kp RMETA kp RALT kp RCTRL kp LEFT kp DOWN kp RIGHT ;其中值得注意的细节卷屏/导航键Esc、Home、End、PgUp、PgDn、方向键在左右两半均有镜像副本方便双手就近操作音量控制通过C_VOL_UP/C_VOL_DN消费类键码实现第 4 行最右一列绑定了mo LOWERmomentary layer按住即临时切入 Lower 层第 5 行左右拇指区对称布置 Space、Enter、Backspace符合分体键盘的拇指列使用习惯。Lower Layer功能与系统控制层Lower 层bfo9000.keymap 第 3955 行是典型的功能层左右半区镜像布置提供四类能力蓝牙连接管理btBT_CLR清除配对与BT_SEL 0BT_SEL 7选择 07 号蓝牙配置文件。ZMK 最多支持 8 个蓝牙 profile此层将其全部暴露在 F 区上方输出切换outOUT_USB切换 USB 输出与OUT_BLE切换蓝牙输出其余位置用trans透明透传外部电源控制ext_powerEP_ON/EP_OFF用于开关外设电源轨例如 RGB 或扩展供电系统与重置sys_reset软复位固件与bootloader进入刷写模式RGB 底灯控制rgb_ugRGB_TOG开关、RGB_HUI/RGB_HUD色调、RGB_SAI/RGB_SAD饱和度、RGB_BRI/RGB_BRD亮度、RGB_SPI/RGB_SPD速度、RGB_EFF/RGB_EFR效果切换完整覆盖 ZMK RGB 行为的主要控制维度。transtransparent行为意味着该键位在 Lower 层不生效、透传到更低层从而保证功能键之外的位置不干扰默认层输入。如何构建与使用该 shield 的构建遵循 ZMK 标准的 west 构建流程对应 app/CMakeLists.txt 与 app/west.yml 定义的 ZMK 应用骨架。以 Pro Micro 兼容板requires: [pro_micro]为例典型构建命令形如west build -b pro_micro -- -DSHIELDbfo9000_left west build -b pro_micro -- -DSHIELDbfo9000_right需要烧录的两份固件分别对应左右半区左半默认承担 central 角色由ZMK_SPLIT_ROLE_CENTRAL注入见 Kconfig.defconfig。若你的实际硬件是 4/5 行或 7/8 列的非最大配置则需在个人 keymap 项目中对 bfo9000.dtsi 的rows/columns与map按实际矩阵规模裁剪并同步调整左右 overlay 中使用的列 GPIO 数量。小结BFO-9000 shield 是 ZMK 分体键盘实现中非常典型且信息完整的范例硬件侧通过kscan0的row-gpios与左右 overlay 的col-gpios描述 6 × 18 物理矩阵逻辑侧用matrix-transform的col-offset完成左右半区坐标拼接软件侧用siblingsKconfig.defconfig表达 central/peripheral 角色最后以一份 bfo9000.keymap 同时服务左右两半。理解了这一整套从 GPIO 到键位的映射链路你就能轻松在 app/boards/shields/bfo9000 基础上定制属于自己的全尺寸正交分体布局。赞分享固件嵌入式智能硬件蓝牙【免费下载链接】zmkZMK Firmware Repository项目地址https://gitcode.com/gh_mirrors/zm/zmk点击查看免费下载相关推荐ZMK 固件 TG4x Shield 适配指南40% 键盘矩阵、键位分层与 RGB 灯带配置ZMK 固件 TG4x Shield 适配指南40% 键盘矩阵、键位分层与 RGB 灯带配置 TG4x 是一款采用 8×7 矩阵扫描的 40% 键盘其 ZM固件嵌入式智能硬件蓝牙ZMK Microdox 分体键盘 Shield 全解析V1/V2 版本选型、构建烧录与默认键位配置ZMK Microdox 分体键盘 Shield 全解析V1/V2 版本选型、构建烧录与默认键位配置 Microdox 是由 Boardsource 推出的一固件嵌入式智能硬件蓝牙QMK Firmware 中的 Southern Breeze Rev1分体键盘的矩阵配置、USB 描述与默认键位全解析QMK Firmware 中的 Southern Breeze Rev1分体键盘的矩阵配置、USB 描述与默认键位全解析 本文以 QMK Firmware 仓嵌入式固件驱动开发硬件开发上一篇OCRAutoScoreAI智能阅卷系统如何重塑教育评价效率下一篇从512KB到256KBZephyr RTOS固件瘦身实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Positron 数据资源管理器列摘要慢源探索性测试:10 秒超时、Retry 与 Continue 的缺陷复盘

Positron 数据资源管理器列摘要慢源探索性测试:10 秒超时、Retry 与 Continue 的缺陷复盘

开发工具代码编辑器数据科学 【免费下载链接】positron Positron, a next-generation data science IDE 项目地址: https://gitcode.com/gh_mirrors/po/positron 点击查看 免费下载 本文以 Positron 仓库中 .claude/skills/exploratory-test/renderer/fixtures/typ…

2026/10/5 1:49:20 阅读更多 →
QXlsx 入门指南:基于 Qt 的 XLSX 读写库的安装、配置与实战

QXlsx 入门指南:基于 Qt 的 XLSX 读写库的安装、配置与实战

数据分析 【免费下载链接】QXlsx Excel file(*.xlsx) reader/writer library using Qt. Descendant of QtXlsxWriter. 项目地址: https://gitcode.com/gh_mirrors/qx/QXlsx 点击查看 免费下载 QXlsx 是一个基于 Qt 框架、使用 C 开发的 Excel 文件(*.xl…

2026/10/5 1:49:20 阅读更多 →
VueUse onLongPress 详解:元素长按检测的 Hook、组件与指令三种用法

VueUse onLongPress 详解:元素长按检测的 Hook、组件与指令三种用法

前端 【免费下载链接】vueuse Collection of essential Vue Composition Utilities for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vueuse 点击查看 免费下载 导读 onLongPress 是 VueUse(Vue 3 组合式工具集)中用于监听元素长按…

2026/10/5 1:49:20 阅读更多 →

最新新闻

【关注可白嫖源码】--课程设计+毕业设计+76444基于SpringBoot的心理健康自助咨询平台设计与实现

【关注可白嫖源码】--课程设计+毕业设计+76444基于SpringBoot的心理健康自助咨询平台设计与实现

本文仅展示核心实现逻辑与部分代码片段,完整项目源码、配套文档、数据库脚本内容较多,篇幅有限无法全部放出。有需要完整资源的同学,可以在评论区留言【资料或领源码】,我会一一回复站内私信,发送完整文件摘 要当前社…

2026/10/5 2:25:36 阅读更多 →
【含视频】官方WorkBuddy应用师认证教程05 安 全 与 合 规

【含视频】官方WorkBuddy应用师认证教程05 安 全 与 合 规

对应视频: WorkBuddy应用师认证教程05安全与合规01使用决策-CSDN直播 WorkBuddy应用师认证教程05安全与合规02权限边界-CSDN直播 WorkBuddy应用师认证教程05安全与合规03输出验证-CSDN直播 WorkBuddy应用师认证教程05安全与合规04防线配置-CSDN直播 第 五 章 安…

2026/10/5 2:25:36 阅读更多 →
数据缩放(Feature Scaling)旨在将特征值映射到统一范围,避免大数值特征主导模型训练,提升收敛速度与预测精度

数据缩放(Feature Scaling)旨在将特征值映射到统一范围,避免大数值特征主导模型训练,提升收敛速度与预测精度

在 Python 编程生态中,“Scale” 是一个高频多义词。它既可以指代数据预处理中的特征缩放,也可以是 Matplotlib 中的坐标轴刻度,还能是 Tkinter 中的滑块控件,甚至涉及大模型时代的 Scaling Laws。理解不同语境下的 Scale&#xf…

2026/10/5 2:25:36 阅读更多 →
STM32+MAX6675+K型热电偶高温测温方案详解:原理、接线与代码

STM32+MAX6675+K型热电偶高温测温方案详解:原理、接线与代码

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 2:25:36 阅读更多 →
OBCA V4.0课后习题整理

OBCA V4.0课后习题整理

第一章 OceanBase 概述 【判断题】OceanBase 是 100% 自研的国产数据库,不是基于开源产品的再次开发。(√)【判断题】OceanBase 是全球唯一一个同时刷新了 TPCC 和 TPCH 世界纪录的数据库。(√)【判断题】OceanBase 是…

2026/10/5 2:25:36 阅读更多 →
AI前沿 | 2026年9月21日:Step 5 大模型来了 + 600B 稀疏 MoE 架构 + 1/8 成本 API

AI前沿 | 2026年9月21日:Step 5 大模型来了 + 600B 稀疏 MoE 架构 + 1/8 成本 API

AI前沿 | 2026年9月21日:Step 5 大模型来了 600B 稀疏 MoE 架构 1/8 成本 API 📖 首屏导读 本教程配套付费专栏:《大模型工程师修炼手记》 19.9 元(AI 编程 Agent 实战 本文同主题系统课程) 《AI时代程序员的自我…

2026/10/5 2:24:36 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →