QMK鍵盤固件配置詳解

QMK鍵盤固件配置詳解

前言

大家好!今天給大家帶來QMK鍵盤固件配置的詳細指南。如果你正在DIY機械鍵盤或者想要給自己的鍵盤刷固件,這篇文章絕對不容錯過。QMK是目前最流行的開源鍵盤固件框架之一,它允許我們對鍵盤進行高度自定義。接下來,我們將深入了解QMK的配置項,幫助你打造一把獨一無二的機械鍵盤!

基礎配置

鍵盤矩陣設置

#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }

這些參數定義了鍵盤的物理矩陣結構:

  • MATRIX_ROWS:鍵盤矩陣的行數
  • MATRIX_COLS:鍵盤矩陣的列數
  • MATRIX_ROW_PINS:行引腳定義,從上到下排列
  • MATRIX_COL_PINS:列引腳定義,從左到右排列

如果你采用替代方式處理矩陣讀取,可以省略引腳定義,詳情請參閱低級矩陣重寫(low-level matrix overrides)。

矩陣相關配置

#define MATRIX_IO_DELAY 30
#define MATRIX_HAS_GHOST
#define MATRIX_UNSELECT_DRIVE_HIGH
#define DIODE_DIRECTION COL2ROW
  • MATRIX_IO_DELAY:更改矩陣引腳狀態和讀取值之間的延遲(微秒)
  • MATRIX_HAS_GHOST:定義矩陣是否有重影現象(不太常見)
  • MATRIX_UNSELECT_DRIVE_HIGH:取消選擇矩陣引腳時設置為輸出高電平而非輸入高電平
  • DIODE_DIRECTION:二極管方向,COL2ROW表示二極管黑色標記面向行,ROW2COL表示反方向

直接引腳映射

#define DIRECT_PINS { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }

當每個按鍵直接連接到單獨的引腳和接地時,可以使用此配置定義引腳映射。

音頻功能配置

#define AUDIO_VOICES
#define AUDIO_PIN C4
#define AUDIO_PIN_ALT B5

QMK支持通過蜂鳴器或揚聲器輸出音頻。上述配置啟用音頻功能并指定音頻輸出引腳。AUDIO_PIN_ALTAUDIO_PIN一起使用可實現雙聲道輸出。

💡 小知識:QMK音頻功能不僅可以播放簡單的提示音,還能演奏整首歌曲!你可以用它來設置開機音樂,甚至可以在打字時播放音效。

背光配置

#define BACKLIGHT_PIN B7
#define BACKLIGHT_LEVELS 3
#define BACKLIGHT_BREATHING
#define BREATHING_PERIOD 6

這些選項用于配置鍵盤背光:

  • BACKLIGHT_PIN:背光控制引腳
  • BACKLIGHT_LEVELS:背光亮度級別數(最多31級,不包括關閉狀態)
  • BACKLIGHT_BREATHING:啟用背光呼吸效果
  • BREATHING_PERIOD:一個背光"呼吸"周期的時長(秒)

按鍵行為配置

#define DEBOUNCE 5
#define TAPPING_TERM 200
#define TAPPING_TERM_PER_KEY
#define RETRO_TAPPING
#define PERMISSIVE_HOLD
#define QUICK_TAP_TERM 100

這部分涉及按鍵檢測和雙功能鍵的行為設置:

  • DEBOUNCE:按鍵去抖動延遲(默認5ms)
  • TAPPING_TERM:點按變為長按的時間閾值(毫秒)
  • TAPPING_TERM_PER_KEY:啟用針對每個鍵單獨設置TAPPING_TERM
  • RETRO_TAPPING:如果在TAPPING_TERM時間內按下并釋放鍵,且期間沒有其他鍵干擾,則仍視為點擊
  • PERMISSIVE_HOLD:如果在釋放前按下另一個鍵,即使未到TAPPING_TERM時間也觸發長按功能
  • QUICK_TAP_TERM:定義雙角色鍵重復激活的時間窗口

高級特性配置

鼠標鍵配置

#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0

這些參數控制鍵盤模擬鼠標時的行為特性,可以調整速度和加速度等參數。

拆分鍵盤配置

#define SPLIT_HAND_PIN B7
#define EE_HANDS
#define MASTER_RIGHT
#define USE_I2C
#define SOFT_SERIAL_PIN D0
#define SPLIT_USB_DETECT
#define SPLIT_TRANSPORT_MIRROR

拆分鍵盤(如Ergodox、Corne等)需要這些特殊配置來實現兩半部分的通信和協調:

  • SPLIT_HAND_PIN:通過引腳電平確定左右手(高=左,低=右)
  • EE_HANDS:從EEPROM讀取左右手信息
  • MASTER_RIGHT:定義右半部分為主控端(默認左半部分為主控)
  • USE_I2C:使用I2C而非串行通信(默認串行)
  • SOFT_SERIAL_PIN:使用軟串行時的通信引腳
  • SPLIT_USB_DETECT:檢測USB連接以決定主從關系
  • SPLIT_TRANSPORT_MIRROR:在從機上鏡像主機矩陣狀態

💡 進階提示:拆分鍵盤設計中,需要特別注意兩半之間的通信延遲問題。如果遇到響應滯后,可以嘗試調整通信速率或切換通信方式。

USB端點配置和兼容性

QMK通過USB端點提供各種功能,但每個微控制器的端點資源有限。以下功能可能會占用單獨的端點:

  • MOUSEKEY_ENABLE
  • EXTRAKEY_ENABLE
  • CONSOLE_ENABLE
  • NKRO_ENABLE
  • MIDI_ENABLE
  • RAW_ENABLE
  • VIRTSER_ENABLE

為了優化資源使用,QMK默認會合并一些功能到同一端點。但這可能帶來兼容性問題:

KEYBOARD_SHARED_EP = yes
MOUSE_SHARED_EP = no
  • KEYBOARD_SHARED_EP = yes:將基本鍵盤功能合并到一個端點,但可能在某些BIOS中不兼容
  • MOUSE_SHARED_EP = no:取消鼠標功能的合并,以保持Boot Mouse兼容性

?? 重要提示:組合鼠標會破壞Boot Mouse的兼容性。如果需要保持兼容性,請設置MOUSE_SHARED_EP = no

rules.mk文件配置

除了config.h外,QMK還使用rules.mk文件來配置編譯選項:

DEFAULT_FOLDER = keyboard/default
FIRMWARE_FORMAT = bin
SRC += my_custom.c
LIB_SRC += lib_custom.c
LAYOUTS = 60_ansi 60_iso
LTO_ENABLE = yes

主要的功能選項包括:

MAGIC_ENABLE = yes        # 魔術鍵功能
BOOTMAGIC_ENABLE = yes    # 啟用Bootmagic
MOUSEKEY_ENABLE = yes     # 鼠標鍵
EXTRAKEY_ENABLE = yes     # 音頻控制和系統控制
CONSOLE_ENABLE = no       # 調試控制臺
COMMAND_ENABLE = no       # 調試和配置命令
NKRO_ENABLE = yes         # USB N-Key無沖
AUDIO_ENABLE = yes        # 音頻子系統
RGBLIGHT_ENABLE = yes     # RGB燈光
SPLIT_KEYBOARD = yes      # 分體式鍵盤支持

總結

通過QMK的豐富配置選項,我們可以實現鍵盤的高度定制化。從簡單的矩陣定義到復雜的分體鍵盤通信,從基礎按鍵去抖到花哨的RGB燈效,QMK幾乎能滿足所有DIY鍵盤愛好者的需求。

希望這篇教程對你有所幫助!如果你還有疑問,歡迎在評論區留言交流。記得點贊收藏,下期再見!


參考資料

  • QMK官方文檔
  • QMK GitHub倉庫
  • 機械鍵盤DIY社區

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80735.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于STM32、HAL庫的DPS368XTSA1氣壓傳感器 驅動程序設計

一、簡介: DPS368XTSA1 是 InvenSense(TDK 集團旗下公司)生產的一款高精度數字氣壓傳感器,專為需要精確測量氣壓和溫度的應用場景設計。它具有超低功耗、高精度、快速響應等特點,非常適合物聯網、可穿戴設備和無人機等應用。 二、硬件接口: DPS368XTSA1 引腳STM32L4XX 引…

因子分析——數學原理及R語言代碼

正交因子分析 目的數學原理參數估計方法主成分法主因子法極大似然法 因子旋轉模型檢驗因子得分加權最小二乘法回歸法 代碼實現注意事項例子 Reference 目的 FactorAnalysis的目的是從多個高度相關的觀測變量中提取出少數幾個LatentFactor,這些因子代表了變量背后的…

ACL訪問控制列表:access-list 10 permit 192.168.10.1

ACL訪問控制列表 標準ACL語法 1. 創建ACL access-list <編號> <動作> <源IP> <通配符掩碼> // 編號范圍 1-99 // 動作&#xff1a;permit 允許 、 deny 拒絕2. 示例 //允許192.168.1.0/24g整個網絡,0.0.0.255 反掩碼 access-list 10 permit 192.1…

解決社區錄音應用橫屏狀態下,錄音后無法播放的bug

最近看到社區有小伙伴反映&#xff0c;社區錄音應用橫屏時&#xff0c;錄音后無法播放的問題。現分享解決辦法。 社區錄音應用的來源&#xff1a;https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-5.0.2-Release/code/SystemFeature/Media/Recorder …

每周靶點分享:Angptl3、IgE、ADAM9及文獻分享:抗體的多樣性和特異性以及結構的新見解

本期精選了《脂質代謝的關鍵調控者Angptl3》《T細胞活化抑制因子VISTA靶點》《文獻分享&#xff1a;雙特異性抗體重輕鏈配對設計》三篇文章。以下為各研究內容的概述&#xff1a; 1. 脂質代謝的關鍵調控者Angptl3 血管生成素相關蛋白3&#xff08;Angptl3&#xff09;是血管生…

保持Word中插入圖片的清晰度

大家有沒有遇到這個問題&#xff0c;原本繪制的高清晰度圖片&#xff0c;插入word后就變模糊了。先說原因&#xff0c;word默認啟動了自動壓縮圖片功能&#xff0c;分享一下如何關閉這項功能&#xff0c;保持Word中插入圖片的清晰度。 ①在Word文檔中&#xff0c;點擊左上角的…

Datawhale AI春訓營 day

待補充 2025星火杯應用賽入門應用 創空間 魔搭社區 {"default": {"system": "你是星火大模型&#xff0c;一個由科大訊飛研發的人工智能助手。請用簡潔、專業、友好的方式回答問題。","description": "默認系統提示詞"}…

項目全棧實戰-基于智能體、工作流、API模塊化Docker集成的創業分析平臺

目錄 思維導圖 前置知識 Docker是什么&#xff1f; Docker的核心概念&#xff1a; Docker在本項目中的作用 1. 環境隔離與一致性 2. 簡化部署流程 3. 資源管理與擴展性 4. 服務整合與通信 5. 版本控制和回滾 6. 開發與生產環境一致性 總結 前端 1.小程序 2.web …

正則表達式實用指南:原理、場景、優化與引擎對比

正則表達式實用指南&#xff1a;原理、場景、優化與引擎對比 正則表達式&#xff08;Regular Expression&#xff0c;簡稱 regex 或 regexp&#xff09;是程序員處理文本數據時不可或缺的“瑞士軍刀”。無論是表單校驗、日志分析、數據清洗&#xff0c;還是敏感信息脫敏&#…

OSCP - Hack The Box - Sau

主要知識點 CVE-2023-27163漏洞利用systemd提權 具體步驟 執行nmap掃描&#xff0c;可以先看一下55555端口 Nmap scan report for 10.10.11.224 Host is up (0.58s latency). Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp o…

5.1.1 WPF中Command使用介紹

WPF 的命令系統是一種強大的輸入處理機制,它比傳統的事件處理更加靈活和可重用,特別適合 MVVM (Model, View, ViewModel)模式開發。 一、命令系統核心概念 1.命令系統基本元素: 命令(Command): 即ICommand類,使用最多的是RoutedCommand,也可以自己繼承ICommand使用自定…

Dagster Pipes系列-2:增強外部腳本與Dagster的交互能力

在現代數據工程中&#xff0c;自動化和監控是確保數據管道高效運行的關鍵因素。Dagster作為一款強大的數據編排工具&#xff0c;提供了多種方式來實現這些目標。本文將深入探討如何使用Dagster Pipes修改外部代碼&#xff0c;以實現日志記錄、結構化元數據報告以及資產檢查等功…

C++類和對象進階 —— 與數據結構的結合

&#x1f381;個人主頁&#xff1a;工藤新一 &#x1f50d;系列專欄&#xff1a;C面向對象&#xff08;類和對象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;終會照亮我前方的路 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 文章目錄 […

Java中進階并發編程

第一章、并發編程的挑戰 并發和并行&#xff1a;指多線程或多進程 線程的本質&#xff1a;操作系統能夠進行運算調度的最小單位&#xff0c;是進程&#xff08;Process&#xff09;中的實際工作單元 進程的本質&#xff1a;操作系統進行資源分配和調度的基本單位&#xff0c…

《 指針變量類型與內存訪問:揭秘背后的奧秘》

&#x1f680;個人主頁&#xff1a;BabyZZの秘密日記 &#x1f4d6;收入專欄&#xff1a;C語言 &#x1f30d;文章目入 一、指針變量類型的基本概念二、指針類型與內存訪問字節數的關系&#xff08;一&#xff09;整型指針&#xff08;二&#xff09;字符型指針&#xff08;三&…

mapbox進階,使用mapbox-plugins插件加載餅狀圖

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.1 ??mapboxgl.Map style屬性二、??使用mapbox-plugins插件加載餅狀圖1. ?…

GraphicLayer與BusineDataLayer層級控制

補充說明&#xff1a; 當參與層級控制的元素是點型元素時&#xff0c;是無法參與ZIndex層級控制的&#xff0c;此時可以換個解決方案 1.給不同的高度值實現&#xff0c;元素間的層級控制覆蓋 import * as mars3d from "mars3d"export let map // mars3d.Map三維地…

uniapp 百家云直播插件打包失敗

打包錯誤日志 Android自有證書 打包失敗 錯誤日志: https://app.liuyingyong.cn/build/errorLog/cf41a610-effe-11ef-88db-05262d4c3e5d原因&#xff1a;需要導入插件依賴 依賴地址&#xff1a;https://ext.dcloud.net.cn/plugin?id16289 百家云直播插件地址 直播插…

【C++】”如虎添翼“:模板初階

泛型編程&#xff1a; C中一種使用模板來實現代碼重用和類型安全的編程范式。它允許程序員編寫與數據類型無關的代碼&#xff0c;從而可以用相同的代碼邏輯處理不同的數據類型。模板是泛型編程的基礎 模板分為兩類&#xff1a; 函數模板&#xff1a;代表了一個函數家族&#x…

十五、多態與虛函數

十五、多態與虛函數 15.1 引言 面向對象編程的基本特征&#xff1a;數據抽象&#xff08;封裝&#xff09;、繼承、多態基于對象&#xff1a;我們創建類和對象&#xff0c;并向這些對象發送消息多態&#xff08;Polymorphism&#xff09;&#xff1a;指的是相同的接口、不同的…