当前位置: 首页 > article >正文

DIY QMK量子键盘

        最近放假了,趁这个空余在做一个分支项目,一款机械键盘,量子键盘取自固件名称QMK(Quantum Mechanical Keyboard)。

        键盘作为计算机或其他电子设备的重要输入设备之一,通过将按键的物理动作转换为数字信号,实现用户与设备的交互。

        键盘的工作原理可以分为几个关键部分,包括按键矩阵、扫描电路、信号传输和固件控制等。下面将详细介绍这些基本原理。

1. 键盘按键矩阵

        大多数键盘采用按键矩阵结构来实现多个按键的检测。按键矩阵是一种通过行列交叉的方式连接多个按键的电路布局,这样可以减少所需的电线数量。

  • 行(Rows)和列(Columns):键盘的每个按键通常通过一个行和一个列来标识。当按下某个键时,它连接了一个特定的行和列,这样可以通过电路检测出该按键的位置。

  • 矩阵布局:假设有一个4x4的矩阵布局,代表16个按键。每个按键都由一行和一列组成。按下某个按键时,电路中对应的行和列之间会闭合,从而让控制器可以确定是哪个按键被按下。

    /*

     * ┌───┬───┬───┬───┐

     * │ 7 │ 8 │ 9 │   │

     * ├───┼───┼───┤ + │

     * │ 4 │ 5 │ 6 │   │

     * ├───┼───┼───┼───┤

     * │ 1 │ 2 │ 3 │   │

     * ├───┴───┼───┤Ent│

     * │   0   │ . │   │

     * └───────┴───┴───┘

     */

例如,如果你按下位于第2行和第3列的按键,电路会通过扫描检测到该按键位置,输出6这个数字。

2. 键盘扫描与信号检测

        键盘的扫描是通过控制器(通常是微控制器或专用的键盘芯片)完成的。扫描过程可以分为以下步骤:

  1. 行激活:控制器逐一激活键盘的每一行,并读取与之连接的所有列。

  2. 列检测:在某一行激活时,控制器会读取所有列的信号。如果某个列的信号改变(通常是由按键按下引起的电流流动),说明该行列交点上的按键被按下。

  3. 去抖动:按键的物理开关会在按下和松开时发生微小的震动,这会导致信号的不稳定。为了避免错误的按键输入,控制器会进行去抖动处理,即在按键被按下后,控制器会等待短暂时间再确认按键状态。

  4. 重复检测:当用户按住某个按键时,键盘通常会以一定的速度重复发送按键信号,直到按键松开。这是为了在长时间按住某个按键时能够持续输入。

        提起键盘定制,QMK(Quantum Mechanical Keyboard)固件无疑是其中的佼佼者。作为一个开源项目,QMK固件已经成为了键盘爱好者和DIY者的标配工具。它不仅提供了高度的定制能力,还支持各种复杂的功能和设置,使得用户能够根据自己的需求,打造出个性化的键盘布局和操作体验。QMK固件是一款针对机械键盘的开源固件,基于C语言编写,允许用户自由修改和配置键盘的各项功能。QMK原本是基于一个叫做TMK的开源固件开发的,后来因为功能强大和灵活性高,逐渐成为了社区的主流选择。

        QMK的最大亮点在于它的高度可定制性,它不仅支持常见的按键映射和宏命令,还支持更多复杂的功能,如多层布局、特殊键位、RGB灯效等。用户可以通过修改QMK固件中的代码,轻松实现个人化需求。

QMK固件的强大之处还在于它可以对键盘的各个方面进行深入的定制。以下是QMK固件的一些核心功能:
  • 按键映射(Keymap):QMK允许用户自定义每个按键的功能,包括普通键位、功能键、组合键、宏命令等。通过QMK的配置文件,用户可以为每个按键分配不同的任务,使得每个按键的功能都可以根据需要进行调整。

  • 多层(Layers)支持:QMK固件支持多层布局功能,允许用户通过按下特定的修饰键(如Shift、Ctrl等)来切换不同的键位布局。这使得键盘的功能得到极大的扩展。例如,你可以将一层映射为数字键盘,另一层用于控制媒体播放,或者将一层配置为游戏快捷键。

  • 宏命令(Macros):QMK支持宏命令功能,允许用户定义一组按键序列,并将其绑定到某个单独的按键上。通过按下这个特定的按键,QMK会自动执行这组按键序列。宏命令功能非常适合需要频繁输入复杂命令的用户,比如程序员、游戏玩家等。

  • RGB灯效:QMK还支持RGB背光的控制,可以根据需要调整灯效的颜色、亮度以及动态效果。用户可以通过固件代码自定义灯效模式,例如设置呼吸灯、波浪灯、渐变色等效果,或者根据按键的状态变化调整灯光。

  • 定制功能:QMK固件还支持一些特殊的功能,如按键防抖、长按触发、按键禁用、音效反馈等。这些功能可以进一步提升用户体验,使得键盘更加智能和人性化。

QMK固件的配置和编程过程是有一定的学习曲线,但一旦掌握了,就可以进行极其灵活和深入的定制。以下是QMK固件配置的基本步骤:

安装QMK MSYS

打开QMK MSYS在shell里面输入qmk setup

        下载QMK固件源代码:会通过git 去QMK官方GitHub仓库下载固件源代码。QMK的源代码中包含了许多已经预定义好的配置文件和示例代码,用户可以根据自己的需求进行修改。本着国内GitHub访问的不稳定性,科学上网是必要的,因为在sub-routine这块很容易失败      

这个最好设置一下git的代理

 如果想取消代理  

 在shell里面输入qmk new-keyboard

输入一个键盘的名称和Github用户名称

选择键盘和布局:在QMK固件中,每个键盘都有一个对应的配置文件,用户需要选择适合自己键盘的文件。如果是自定义键盘,用户需要根据自己的硬件设计来编写新的配置文件。

选择你想要的键盘布局,然后选择开发板,这里手里因为有块树莓派的RP2040的开发板,所以选择了15

这里的RP2040有足够的IO口关键还很便宜10-20RMB,还包邮

修改按键映射和功能:在QMK的配置文件中,用户可以根据自己的需求修改每个按键的功能。可以是单一的字符,也可以是复杂的宏命令。QMK允许用户通过修改C语言代码来自定义每个按键的行为,例如设置某个按键为切换多层、触发宏命令等。

设计好引脚和键盘扫描电路的mapping

一些个性化的定制也可以通过QMK Configurator进行修改,生成的文件替换文件夹里的文件

在编译之前一定修改matrix_pins的对应,因为我用了RP2040

编译并烧录固件:修改完配置后,用户需要使用QMK的编译工具将固件编译成可供键盘使用的二进制文件。然后,使用适当的工具(如QMK Toolbox)将固件烧录到键盘的微控制器中。

输入:qmk compile -kb demo_keyboard -km default

开始编译固件

编译成功

烧录固件,qmk flash -kb demo_keyboard -km default   注意RP2040按住boot键然后松开

调试与测试:烧录完成后,用户需要通过测试确保每个按键的功能都正常工作。如果有任何问题,可以重新调整配置文件并编译新的固件版本。

这个是4*4矩阵键盘打印出的

7++++++7744566456123


http://www.kler.cn/a/523590.html

相关文章:

  • Vue3 结合 .NetCore WebApi 前后端分离跨域请求简易实例
  • Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)
  • 第十六届蓝桥杯大赛软件赛(编程类)知识点大纲
  • pytorch逻辑回归实现垃圾邮件检测
  • 2024年记 | 凛冬将至
  • OpenCV:形态学操作总结
  • 【Unity】cinemachine核心知识
  • 知识库管理驱动企业知识流动与工作协同创新模式
  • MIMIC-IV数据部署
  • TypeScript 学习
  • 为AI聊天工具添加一个知识系统 之76 详细设计之17 正则表达式 之4 正则表达式模板
  • 基于蓝牙6.0的RSSI和UWB融合定位方法,可行性分析
  • 【华为OD-E卷 - 数字加减游戏 100分(python、java、c++、js、c)】
  • 【Postman接口测试】Postman的全局变量和环境变量设置
  • 运算符(C#)
  • MySQL 9.2.0 的功能
  • ImportError: No module named Cryptodome.Cipher
  • 250123-java设计模式
  • 图论——单源最短路的综合应用
  • C言算法面试:分类与高频题解析
  • 【算法】快速排序1
  • 探秘 TCP TLP:从背景到实现
  • Python中的asyncio:高效的异步编程模型
  • Python设计模式 - 组合模式
  • 使用 MSYS2 qemu 尝鲜Arm64架构国产Linux系统
  • 电感的Q值+如何判断变压器好坏