小白进!QMK 键盘新手入门指南

经常玩键盘的伙伴应该都知道,现在的键盘市场可谓是百花齐放,已经不是之前的单一功能产品化时代。我们可以看到很多诸如:机械轴键盘、磁轴键盘、光轴键盘、电感轴键盘,以及可能会上市的光磁轴键盘,更有支持屏幕的、带旋钮的、带触摸按键甚至是触摸板的键盘,还有各种不同的键位配置,背光灯效,重量配置,以及各种回报率的键盘等等。在这些键盘里面,最近几天我关注最多的是 QMK 键盘,为此去搜集了些资料,分享给大家,仅供参考。

一、什么是 QMK

QMK (Quantum Mechanical Keyboard) 是一个以开发计算机输入设备为中心的开源社区。社区包含各种输入设备,如键盘、鼠标和 MIDI (Musical Instrument Digital Interface乐器数字接口)设备。有一个核心协作者组负责维护 QMK 固件,QMK 配置器,QMK 工具箱和 QMK 网站。 作为一个开源的键盘固件,可以用于许多不同类型的机械键盘。旨在为用户提供高度定制化的键盘功能。它支持多种键盘硬件,并允许用户通过修改配置文件自定义按键映射、宏、LED 灯光效果等,可以帮助用户自定义键盘布局和功能,支持多种操作系统和编程语言。

我们的键盘里面有一个处理器,就像我们的电脑里面的一样。该处理器运行的软件负责检测按键的按下,并在按键按下时通知计算机。QMK 固件充当软件的角色,检测按下的按键并将信息传递给主机。当我们构建自定义的键映射时,就是为我们的键盘创建一个可执行的程序。

"qmk_keyboards" 资源库提供了一站式的平台,以获取各种键盘的机器可读数据,包括配置文件、元数据、布局图、文档、示例代码、测试脚本和更新日志。QMK 的核心是它的模块化设计。它将键盘的各个部分------如扫描矩阵、USB 通信、键盘配置------作为独立的模块,方便开发者针对特定设备进行定制。

此外,QMK 提供了丰富的 API 和工具链,如 qmk_toolbox 和 qmk_configurator,让非开发人员也能轻松地调整键盘设置,允许用户在本地或通过在线服务快速构建固件。

二、QMK 的历史

QMK 最早由 Jack Humbert 在 2013 年发布。它是一个开源项目,得到了广泛的应用和认可。随着时间的推移,QMK不断得到改进和升级,逐渐成为一个高度灵活和可定制的键盘固件。

三、QMK 的特点

可定制性:QMK 允许用户自定义键盘布局和功能,可以满足各种使用需求。

跨平台:QMK 支持多种操作系统和编程语言,如 Windows、Linux、Mac OS、C 和 C++ 等。

易用性:QMK 提供了易于理解和使用的 API 接口,可以帮助开发人员快速上手。

高度灵活:QMK 支持多种映射方式和触发事件,可以定制各种复杂的键盘操作。

开放性:QMK 是一个开源项目,并且遵循 GPLv3 许可证。

四、QMK 的应用

自定义键盘:QMK 可以用于自定义机械键盘的功能和布局,满足各种用户需求。

游戏开发:QMK 可以用于游戏开发中的键盘响应和触发事件。

软件开发:QMK 可以用于软件开发中的快捷键和代码块等操作。

数据输入:QMK 可以用于数据输入软件的快捷键和输入模式等操作。

教育培训:QMK 可以用于编程教育中的键盘布局和快捷键等操作。

五、QMK 键盘的一般构建步骤

  • 建立qmk开发环境
  • 构建我们的第一个固件
  • 刷写我们的键盘固件
  • 刷写我们的固件
  • 调试和运行

六、QMK 目前支持的 MCU

我们从下图可以看到,在社区网站上,我们可以找到目前支持我们进行 QMK 键盘创作的 MCU 平台。

七、QMK 固件功能定制的原理

键码映射 :每一个物理按键都能被映射到任意的键码上,支持各种自定义布局和功能。

层管理 :通过分层的方式管理不同功能的按键,实现单个按键在不同层中的不同功能。

宏编程 :可以编写宏,即一系列按键操作的集合,一键执行复杂的命令序列。

LED控制 :利用底层的LED控制功能,自定义键盘的背光效果。

功能扩展 :利用额外的插件和功能,比如音频音效、LCD 显示等。

最后,键盘很多人生活中都要用到的,如果我们都能按照自己的意愿使用键盘,我们的工作效率将大大提升。同时,QMK 是免费的,并且由于强大的社区支持而不断改进,因此大家可以去尝试制作一把属于自己独有键盘。

点击此处登录大大通,获取更多精彩技术内容吧!

相关推荐
志-AOX21 分钟前
C语言入门指南:从零开始的编程之路
经验分享
WANGWUSAN6629 分钟前
Python高频写法总结!
java·linux·开发语言·数据库·经验分享·python·编程
西洼工作室44 分钟前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.1 小时前
Webpack学习笔记(2)
笔记·学习·webpack
新手上路狂踩坑2 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
赵谨言3 小时前
基于python+django的外卖点餐系统
经验分享·python·毕业设计
stm 学习ing3 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉4 小时前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
十二测试录4 小时前
Python基础——字符串
开发语言·经验分享·python·程序人生·职场发展
bohu834 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口