客制化鍵盤QMK固件入門-修改keyboard和keymap

2020-12-13 圓大頭說

客制化鍵盤,這是一個巨大的坑,形形色色的軸體、外殼、PCB、數據線、鍵帽、燈效、音效甚至掌託,對於熱愛DIY的玩家們來說,確實很吸引人,但再看看價格,只能打擾了。作為一隻程序猿,想要玩客制化鍵盤又玩不起,就只能對著鍵盤的固件深入研究一番了。在我的前一篇文章中,一步步搭建起了QMK固件在Windows系統中的編譯環境,接下來就著手打造自己的鍵盤固件吧。

建立自己的KEYBOARD 和KEYMAP

在終端中使用命令./util/new_keyboard.sh,輸入自己為鍵盤取的名稱(mini01)、使用的晶片(默認AVR)、自己的github用戶名,生成自己的KEYBOARD文件夾和配置文件。

再輸入./util/new_keymap.sh KEYBOARD NAME,這裡的KEYBOARD替換為上一步取的鍵盤名稱mini01,NAME是自己的github用戶名,生成自己的KEYMAP示例文件。兩條命令中自己的名字主要是為了生成一些文檔中的名字部分,讓看到鍵盤文檔的廣大網友認識你,在意的話就好好想個好名字,不關心的話隨意取都可以。

此時可看到在固件目錄./keyboards中生成了一個以剛才輸入名稱(mini01)命名的文件夾,裡面有rules.mk、config.h等示例配置文件,文件夾./keyboards/mini01/keymaps中為示例的KEYMAP相關文件。

修改KEYBOARD 和KEYMAP

這裡以5個按鍵的小鍵盤為例,主控使用Arduino leonardo,為了快速入門,儘量只對固件做最少的修改,先讓這個鍵盤能用起來。

/mini01/rules.mk

rules.mk是用來控制編譯選項的文件,在該文件中可打開或關閉一些功能。文件中#號後是注釋,為我們解釋了相關編譯選項的意義。

MCU是鍵盤所使用的主控型號,目前使用的Arduino leonardo,其主控是Atmega32u4,所以MCU = atmega32u4不用修改,如果使用了其他主控晶片,修改為相應的名稱就好,比如MCU = STM32F303。

如果使用ATmel晶片作為主控,需要定義主控晶片使用的bootloader,示例文件中已經列出了可能的bootloader種類,通常使用默認的BOOTLOADER = atmel-dfu即可。如果使用STM32主控,由於STM32主控晶片的bootloader是固化在晶片內部的,僅與前面定義的MCU型號相關,因此注釋掉此行即可。其他選項暫時不作修改。

/mini01/config.h

矩陣鍵盤電路均是將按鍵開關分為多行多列,這裡的行列不是從表面上看到的鍵帽排列的行列,而是PCB上各個按鍵組成的矩陣鍵盤的排列。

MATRIXROWS定義為矩陣鍵盤的行數,此鍵盤為2;MATRIXCOLS定義為矩陣鍵盤的列數,此鍵盤為3。行列之間通過按鍵開關和防止按鍵衝突的二極體連接,這裡需要定義二極體的從正極到負極的方向。大多數二極體都是有色環的一方為負極,從上圖看,二極體有色環的一方連接到了矩陣鍵盤的行上,因此方向為列到行,#define DIODE_DIRECTION COL2ROW。

每一行和列分別連接到主控晶片的某一個GPIO(LEONARDO PINOUT中的Port Pin),在config.h文件中主要就是定義這些GPIO的連接情況。MATRIX_ROW_PINS 對應矩陣鍵盤PCB上每一行連接的GPIO,#define MATRIX_ROW_PINS { D1, D0 },MATRIX_COL_PINS 對應矩陣鍵盤PCB上每一列連接的GPIO,#define MATRIX_COL_PINS { D4, C6, D7 }。

/mini01/mini01.h

此文件內定義的宏LAYOUT是一種映射關係,將從正面看鍵盤的鍵位布局映射為從透視到鍵盤背面的矩陣鍵盤電路連接情況。定義這個宏是為了方便後面的按鍵功能定義,LAYOUT後緊跟的()括號內,knm的n表示按鍵在第幾行,m表示按鍵在第幾列,排列與正面看的鍵位布局一致,方便定義功能時對應到相應鍵位,而不用關心PCB上的電路連接情況。{}括號內,是二維數組形式,必須滿足前面定義的行列數,每一行為矩陣鍵盤電路上連接在一起的一行,如果某行某列無按鍵,必須使用KC_NO填充。

/mini01/datou/keymap.c

在keymap.c中就可以按照按鍵的位置來定義功能,對於標準的104鍵的鍵盤,普通的功能均可以使用下圖的定義。

這裡先把鍵盤定義為兩層,第0層按鍵實現上下左右,第1層按鍵實現數字1234。

生成的默認文件內也是定義的兩層,我們把每一層的名字修改一下,方便識別,當然也可以不修改。

keymaps[][MATRIX_ROWS][MATRIX_ROWS][MATRIX_COLS]就是定義鍵盤功能的數組了,每一層按鍵功能使用了一個的LAYOUT來定義功能。MO(NUMBER)表示按住該鍵時,鍵盤功能映射為NUMBER這一層,實現數字按鍵1234的功能。_______表示與n-1層的功能相同(n為按鍵所在的層),比如下圖第1層的_______的功能就是第0層對應位置按鍵的功能,也就是MO(NUMBER)。

編譯固件

至此,這個極其簡單的5個按鍵的鍵盤固件就修改完了,最後使用命令qmk compile -kb mini01 -km datou編譯生成固件,一切順利。

相關焦點

  • 客制化鍵盤QMK固件入門-編譯環境搭建
    客制化鍵盤,這是一個巨大的坑,形形色色的軸體、外殼、PCB、數據線、鍵帽、燈效、音效甚至掌託,對於熱愛DIY的玩家們來說,確實很吸引人,但再看看價格,只能打擾了。T站上看到了一款主要零部件用3D列印的機械鍵盤(SICK68),列印外殼甚至鍵帽,不用PCB而是飛線,非常硬核,關鍵是價格,這應該算是除撿垃圾以外,最便宜的客制化機械鍵盤了。
  • 價格親民的入門客制化鍵盤-GK61
    前言 自從用上了機械鍵盤,就再也回不去以前一把薄膜用好幾年的我了。從入手的第一把機械鍵盤到現在,陸陸續續也買了好多把了。基本常見的黑紅青茶全都體驗過了,但是用了一段時間線性軸後就回懷念線性軸的手感,換回線性軸就開始想念段落軸按下的爽快感,便想著有沒有一把鍵盤能同時讓我享受到線性軸和段落軸呢。問了問身邊的朋友得知自己可以客制化機械鍵盤來裝不同的軸進去用,客制化機械鍵盤一般是購買套件、軸體、鍵帽等。於是上了萬能的馬爸爸家搜了下,找到了一把我的家庭條件能夠支持得起的套件-GK61。
  • 機械鍵盤的終極命題:入門、客制化還是一步到位
    各位看官想討論軸體,這裡歡迎,但是噴櫻桃軸的,輕點 我是真的不懂,我只是個入門小白。經過一番查詢大概了解了一些品牌,入門級的ikbc、Ganss,中端的杜嘉、阿米洛,高端的大L(Leopold)、大F(Filco)。大F大L名聲在外,就不談了,而且當時覺得真的太貴了。在經過翻看張大媽各類評測與橫評文章後,最後選擇了Ganss紅軸作為我的第一把機械鍵盤。
  • 鍵盤收藏家的創造力 客制化Heavy Shell登陸中國市場
    在眾多客制化產品中,以「玩法」著稱的就不得不提到國外一枚優秀客制化設計公司i:C,其主筆的大咖設計師Jacob Alexander號稱收藏了600隻以上的珍藏鍵盤。一位可以為了鍵盤而搬家的男人,你覺得他能設計出怎樣的產品呢?有興趣?
  • CHERRY RGB軸客制化鍵盤——憶光GK64機械鍵盤體驗
    最近有個玩客制化的朋友給我推薦了一款他朋友做的客制化鍵盤,然後我看了一下外觀再瞅了一眼價格,覺得還是可以接受的,果斷要過來體驗了一下。這是一款60%布局的迷你鍵盤,共有64顆按鍵,而且和目前市面上大多數60%鍵盤不同的是,這款鍵盤有方向鍵,你可以不要小看這方向鍵啊,有和沒有的使用感受絕對是天差地別。
  • TIME RE 客制化機械鍵盤套件
    價格:3188RMB提供額外配件選購顏色選項:上蓋顏色:PC,黑,銀,白,天藍,淺紫,灰底蓋顏色:PC,黑,銀,白,天藍,淺紫,灰定位板和銘牌顏色TIME RE  數據及特色:結構形式:Top mount split plate(分體定位板)配列:無門牙/大門牙角度:5.7度PCB:typec 支持qmk
  • 【故事】韓國客制化品牌TX KEYBOARD
    ,韓國客制化品牌TX Keyboard(不得不說這個logo...emmmm和國內品牌比起來沒什麼味兒)說起韓國客制化,OTD、LZ、DUCK被談起得比較多,交易群也常能見到某些人高價收OTD和LZ。,TX1800,TXCP,TX108,TX84SE,TX60,EO87等各款配列鍵盤 (很想說取名真簡單,我知道的其實是出了兩代80,兩代1800,兩代75,兩代CP,兩代60/65,一代108,還有EO87等)三.TX嘗試了電鍍銅,噴漆白(TX的古銅色分紅和黃,質感非常好,還有他家的白色非常推薦嘗試)等表面處理,致力於鍵盤外觀無瑕疵.鍵盤鋁合金材料從板材
  • 高端鍵盤展示解決方案!FUXK KEYBOARD BOX鍵盤展示收納盒
    今天,ZOMO官方旗艦店上線了一款鍵盤收納展示盒:FUXK KEYBOARD BOX。提供兩個版本選擇,分別是入門級亞克力材質版本以及旗艦鋁合金材質版本。
  • 外設新寵:DIY客制化鍵盤
    為何DIY客制化鍵盤成為外設新寵? 說起來客制化,其字面意思就是客戶定製的意思。由於客制化鍵盤的多樣性組合,使得玩家能根據個人的喜好設計製造出自己心目中最好的那塊鍵盤,給外設玩家提供的更多的可能。
  • 機械鍵盤不完全指北——我的客制化優聯鍵盤
    嚴格意義上說我對於機械鍵盤的了解還很初級(所以只能來做做入門科普和分享),自己也僅僅擁有兩把機械鍵盤——ikbc F104以及高斯ALT 61。不過後來能讓我暫時消停作死的原因是一把叫普拉斯(現更名為寧芝NIZ)的國產靜電容鍵盤,35克的觸發壓力,溫潤綿滑的手感,以及對比HHKB的低廉售價,用它打字真的是種享受。雖說無法接受它手感的人也不在少數,但手感這個事兒嘛,因人而異,在此不表了。
  • 航世BOW-HB186鍵盤與蘋果Magic keyboard對比評測
    大家好,我是EZ,在別的評測裡像我這麼帥的一般都是男主角,不過今天的主角是航世BOW的HB186和蘋果的Magic keyboard
  • 高度客制化 iQunix F96 KAT逸白雙模機械鍵盤評測
    鋁廠iQunix也憑藉第一款機械鍵盤Lambo 62逐漸在外設圈擁有不錯的知名度,在此之後,KQB 62、Lambo 87、X87、F96和F60等鍵盤也相繼登場,不時吸引用戶的目光。據悉iQunix將在6月18日發售一款基於F96的新款鍵盤F96 KAT逸白,接下來就由筆者帶大家先睹為快吧 。
  • 從入門到精通 機械鍵盤發燒不完全指南-入門,入坑,機械鍵盤,還能...
    在筆者來看,機械鍵盤近幾年的大火併不是一個偶然的現象。因為隨著PC硬體性能的逐年過剩和電競的興起,玩家們勢必會將注意力轉移到外設周邊這個曾經被忽略的陣地上來。而機械鍵盤又憑藉其更易於DIY的屬性成為玩家眼中的香餑餑。這次,筆者就從入門到高階為大家梳理一下機械鍵盤的發燒方向,希望能幫助剛剛上路的同學少走一點彎路。
  • 作為量產機械鍵盤頂端的F與L,為啥只是某些客制化價格的零頭?
    這也是為啥不直接叫鍵盤而是套件的原因,因為在出售時還沒有組成鍵盤。 而今天要討論的就是第二種客制化套件,也就是玩家們常說的高端套件。 二、客制化套件是怎麼來的? 之前也說了,套件都是作者設計好了的。那問題來了,作者是誰?又怎麼出售呢?
  • 客制化鍵盤配列
    一眨眼,從最早的為了給自己的量產鍵盤換上一套可可愛愛的鍵帽,到某魚翻到各種套件的毒圖,再到加入了好幾頁的客制化鍵盤群,然後一股腦的跟著衝衝衝買各種鍵帽、各種套件,已經過去兩年多了,從最早的小白「蛻變」成為了一根老韭菜,希望本帖可以為剛入圈想買套件不懂套件配列的的朋友節省一些時間成本40%配列(出鏡鍵盤摩根
  • 觀點|什麼是客制化鍵盤?萌新入坑簡單指南
    隨著電子競技的不斷發展,現在的許多遊戲玩家也開始注重起自己的遊戲體驗,而作為與遊戲體驗切身相關的,那就是平常使用的滑鼠鍵盤等外設了,而其中,鍵盤想必是許多遊戲玩家的第一把"武器"了。而入手了機械鍵盤遊戲鍵盤之後,想必可能有的小夥伴們開始聽到了"客制化"這個詞,於是乎又想要入坑客制化鍵盤,那麼什麼是客制化鍵盤呢?現在的客制化鍵盤圈子又怎麼樣呢?就讓小編這個剛入坑的小萌新幫你排排雷吧,注意,僅為個人觀點。首先是客制化(customize),其實它就是"定製化"的另一種稱呼,這個詞語本來是流行於港臺的。
  • 「客制化鍵盤」L980改優聯熱插拔+PG電耗子+蒂芙尼V2潤軸
    轉自 Stefan 過去十年,一直在用量產機械鍵盤,跟很多人一樣,迷信櫻桃、雷蛇、海盜船,覺得他們就是最棒的。去年有了孩子,基本上和電腦無緣了,家裡的鍵盤也被孩子把鍵帽拆的七零八落的,每日和電腦接觸的時間基本上只剩下在公司上班的時間。
  • 一入鍵坑深似海,怒喵科技客制化鍵盤NOWIRE品牌新品定價引熱議
    其實許多接觸過機械鍵盤的朋友都知道,機械鍵盤並不是一個廉價的產品,高品質的鍵盤價格破千並不是難事,大廠的鍵盤的旗艦款價格基本在1500元左右。從入門到旗艦的差距,基本上出現在鍵帽材質以及軸體,每個價位段都有代表產品,不同價位的產品表現也相差巨大,低價並不能買來高端產品的體驗。
  • 客制化登大舞臺 iqunix金屬小鍵盤試玩
    ▲客制化登大舞臺 iqunix金屬小鍵盤試玩  當然,客制化門檻還是比較高的,玩家具備的條件除了很有錢和時間之外(高端客制化零件可燒錢了),個人的DIY手藝是決定鍵盤的逼格水平的唯一因素。這和小編預期一樣,首批貨量不多,小批量生產肯定會遇上各種問題。感嘆鋁廠老闆打造這款鍵盤確實大心臟。創業不容易,特別是目前隨大流的市場環境下,要把客制化的鍵盤搬上品牌化是需要多大決心呀。
  • 客制化元素多樣:2019特色鍵盤產品盤點
    CNC一體成型鋁合金底殼+VSA高度的PBT雙色注塑鍵帽也帶來了很強的客制化感覺,更有Vortexgear宏編程功能、配列切換、RGB燈光也大大增加了這款鍵盤的兼容性、可玩性。客制化的特殊設計隨著機械鍵盤市場的不斷擴大,用戶的需求也呈現出多樣化的態勢,廠商越來越注重產品的個性化元素,通過客制化的設計來搶佔更多的市場。