2026/9/18 19:46:50

QMK 固件中的 Four Banger 2x2 宏键盘:从硬件配置到默认键位解析

QMK 固件中的 Four Banger 2x2 宏键盘:从硬件配置到默认键位解析 QMK 固件中的 Four Banger 2x2 宏键盘从硬件配置到默认键位解析【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmwareFour Banger 是一款由 Bishop Keyboards 设计、1up Keyboards 销售的 2x2 宏小键盘macro pad其在 QMK 固件仓库中拥有完整的键盘支持目录。本文以该键盘在仓库中的官方文档与配置为线索逐步解析其硬件定义、数据驱动配置keyboard.json、默认键位实现与编译烧录流程帮助读者掌握在 QMK 中移植与定制小尺寸宏键盘的完整方法。键盘概览与仓库支持情况Four Banger 是一个仅包含 4 个按键的 2x2 正交宏键盘硬件由 Bishop Keyboards 设计由 1up Keyboards 销售。它在 QMK 仓库中的支持信息如下见 readme.mdKeyboard MaintainerQMK CommunityQMK 社区Hardware SupportedFour Banger Keyboard PCBHardware Availability1up Keyboards值得注意的是Four Banger 目录下没有独立的config.h、rules.mk或.c/.h实现文件整个键盘仅由一份数据驱动配置文件keyboard.json和一套默认键位keymaps/default/keymap.c构成。这正是 QMK 数据驱动配置data-driven configuration特性的典型体现当键盘没有特殊矩阵扫描逻辑或板级自定义代码时纯 JSON 配置即可完整描述硬件无需编写 C 代码。硬件定义基于 keyboard.json 的数据驱动配置键盘的核心配置位于 keyboard.json这是一份标准的 QMK 数据驱动配置完整定义了 USB 标识、处理器、矩阵、RGB 灯效与键位布局。逐项解析如下。USB 标识与引导加载器usb: { vid: 0xFEED, pid: 0x2004, device_version: 0.0.1 }, processor: atmega32u4, bootloader: atmel-dfuVID/PID使用 QMK 社区常用的0xFEED作为 Vendor ID0x2004作为 Product ID设备版本号为0.0.1处理器atmega32u4这是 QMK 生态中使用最广泛的 AVR 主控之一内置 USB 功能引导加载器atmel-dfu即 AVR 芯片原生的 DFU bootloader烧录时需使用 QMK Toolbox 或dfu-programmer并配合qmk flash。矩阵与二极管方向matrix_pins: { cols: [B5, B4], rows: [B2, B6] }, diode_direction: COL2ROW2 列分别接PB5B5与PB4B42 行分别接PB2B2与PB6B6构成 2x2 矩阵diode_direction为COL2ROW表示二极管方向为列到行这是矩阵扫描方向的关键参数错误设置会导致按键行为异常。RGB 灯效与 WS2812 数据引脚rgblight: { saturation_steps: 8, brightness_steps: 8, led_count: 1, animations: { breathing: true, rainbow_mood: true, rainbow_swirl: true, snake: true, knight: true, christmas: true, static_gradient: true, rgb_test: true, alternating: true, twinkle: true } }, ws2812: { pin: E6 }WS2812 灯带通过PE6E6引脚驱动led_count为 1即板上只有一颗 RGB LED通常作为指示灯或氛围灯rgblight区块一次性启用了10 种内置动画呼吸、彩虹流动、彩虹旋转、贪吃蛇、骑士、圣诞、静态渐变、RGB 自检、交替闪烁与闪烁效果饱和度与亮度调节步进均为 8配合qmk flash烧录后可通过默认键位或 RGB 控制键实时调节。特性开关与功能启用features: { bootmagic: true, extrakey: true, mousekey: true, nkro: true, rgblight: true }, qmk: { locking: { enabled: true, resync: true } }bootmagic支持在启动时按住特定按键进入配置模式如切换默认层、交换按键等extrakey启用多媒体键支持KC_MEDIA_*等mousekey启用鼠标键模拟KC_MS_*nkro启用 N 键无冲突N-Key Rolloverrgblight启用 RGB 背光系统qmk.locking启用锁定键Caps Lock 等的状态跟踪与重同步resync确保锁定状态在不同系统间保持同步。2x2 正交布局定义layouts: { LAYOUT_ortho_2x2: { layout: [ {matrix: [0, 0], x: 0, y: 0}, {matrix: [0, 1], x: 1, y: 0}, {matrix: [1, 0], x: 0, y: 1}, {matrix: [1, 1], x: 1, y: 1} ] } }布局宏LAYOUT_ortho_2x2将 2x2 矩阵的四个交点映射到平面坐标(0,0)、(1,0)、(0,1)、(1,1)对应键盘左上、右上、左下、右下四个按键。这也是 QMK 中定义正交网格布局的标准写法行列数量与matrix_pins中的 2 行 2 列一一对应。默认键位自定义键码与字符串发送默认键位位于 keymaps/default/keymap.c它展示了一个非常实用的宏键盘编程范式——通过自定义键码custom keycode配合SEND_STRING一键输出指定文本。自定义键码声明enum custom_keycodes { UP_URL SAFE_RANGE };SAFE_RANGE是 QMK 为用户自定义键码预留的起始值从它开始递增即可安全地定义自己的键码而不会与内置键码冲突。键位矩阵定义const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] { LAYOUT_ortho_2x2( KC_1, KC_U, KC_P, UP_URL ), };四个按键的默认功能分别为按键位置键码功能左上KC_1数字 1右上KC_U字母 U左下KC_P字母 P右下UP_URL自定义宏输出网址文本1、U、P 三个按键拼在一起恰好是 1UP——对应销售方 1up Keyboards 的品牌梗。事件处理钩子与 SEND_STRINGbool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case UP_URL: if (record-event.pressed) { SEND_STRING(http://1upkeyboards.com); } return false; break; } return true; }process_record_user是 QMK 提供给用户的按键事件钩子在每个按键按下/抬起时被调用当UP_URL按下时record-event.pressed为真通过SEND_STRING(http://1upkeyboards.com)将网址文本逐字符模拟输入到电脑返回false表示该事件已被处理完毕QMK 不会再执行默认行为避免重复输出。这段代码是 QMK 宏键盘macro pad最典型的应用场景把常用的网址、命令、短语绑定到物理按键上一键输入。若想深入了解process_record_user的更多用法可参考 custom_quantum_functions.md 与 feature_macros.md。编译与烧录在搭建好 QMK 构建环境后环境搭建方法见 newbs_getting_started.md编译该键盘默认键位的命令为make bpiphany/four_banger:default其中bpiphany/four_banger是键盘的目录路径对应keyboards/bpiphany/four_banger/:default是键位名对应keymaps/default/。构建产物为.hex固件文件之后可使用 DFU 模式配合 QMK Toolbox 或dfu-programmer烧录具体流程参考 newbs_flashing.md 与 flashing.md。关于make参数、目标名与常见构建选项的完整说明可参见 getting_started_make_guide.md。总结与扩展阅读Four Banger 是 QMK 仓库中一个“小而全”的参考实现它用纯数据驱动配置keyboard.json完整描述了 AVR 主控、2x2 矩阵、WS2812 RGB 灯与正交布局用极简的 keymap.c 演示了自定义键码与SEND_STRING宏的配合使用。对于想要移植自己宏小键盘如 1x4、2x2、3x3 pad的开发者这份配置几乎是最佳起点模板——只需修改矩阵引脚、布局坐标与键位即可。进一步了解本仓库相关主题可阅读data_driven_config.mdkeyboard.json 数据驱动配置的完整字段说明reference_info_json.mdinfo.json / keyboard.json 的逐字段参考feature_rgblight.mdRGB 灯效系统配置与动画feature_macros.mdSEND_STRING 与宏功能详解newbs_building_firmware_workflow.md从零编译固件的标准流程。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考