客制化鍵盤,這是一個巨大的坑,形形色色的軸體、外殼、PCB、數據線、鍵帽、燈效、音效甚至掌託,對於熱愛DIY的玩家們來說,確實很吸引人,但再看看價格,只能打擾了。
T站上看到了一款主要零部件用3D列印的機械鍵盤(SICK68),列印外殼甚至鍵帽,不用PCB而是飛線,非常硬核,關鍵是價格,這應該算是除撿垃圾以外,最便宜的客制化機械鍵盤了。SICK68採用了QMK固件,擁有和大幾千的客制化鍵盤相同的核心,作為一隻程序汪,想要玩客制化鍵盤又玩不起,就只能著鍵盤的固件深入研究一番了。
簡介
QMK包含了一套高度可定製的工具集:QMK Firmware,QMK Configurator,QMK Toolbox。QMKFirmware是固件的原始碼;QMKConfigurator是在線配置鍵盤功能、生成固件的網絡客戶端;QMK_Toolbox是下載和調試固件時使用圖形界面工具。
通常來說,使用QMK_Configurator就可以生成市面上一些客制化鍵盤套件的固件了。但對於想要高度定製的同學,特別是給鍵盤添加便宜的藍牙模塊、oled屏、旋鈕等,就需要搭建編譯環境,自己修改代碼,自己編譯,這也是折騰的樂趣所在。
編譯QMK固件,首先需要搭建編譯環境,按照官網文檔一步步操作本應很輕鬆的。但得益於國內的網絡環境,在安裝編譯環境的過程中會遇到很多坑。
安裝msys2客戶端
Windows中使用開發環境,去官網下載免費的安裝包。
安裝則沒有什麼特別的,只需要設置一下安裝路徑,然後一直next就行。
更新軟體庫
按照官方文檔,安裝完成後需要更新MSYS2的軟體庫,最好先將MSYS2的源設置為清華大學的源。打開安裝路徑C:\msys64\etc\pacman.d中的配置文件
修改mirrorlist.msys,在最上面增加一行Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch;
修改mirrorlist.mingw32,在最上面增加一行Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686。
修改mirrorlist.mingw64,在最上面增加一行Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64。
運行安裝路徑根目錄中的mingw64.exe。
輸入命令pacman -Syu更新。
中途按提示可能需要重啟該程序,再次執行該命令,等待更新完成。
然後安裝編譯qmk固件需要軟體,輸入命令pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip。
接著安裝python中的qmk庫,使用命令python3 -m pip install qmk -i https://pypi.tuna.tsinghua.edu.cn/simple從清華大學的pip源安裝。
需要的軟體安裝完了,最後輸入命令qmk setup。這一步會去下載qmk的固件源碼,沒有國內的源可以使用,速度比較慢,在網絡不佳時極可能因錯誤中斷,最好找個月黑風高的夜晚,消消地下完它。
編譯測試
輸入命令qmk compile -kb clueboard/66/rev3 -km default,如果能成功編譯完成,那麼編譯環境就算搭建完成了。
設置VSCode
在VSCode中點擊File->Open Floder打開之前下載的QMK固件。
下載文件,保存到qmk_firmware/.vscode/文件夾中
修改該文件中WIN32部分的"includePath"的頭文件路徑為自己電腦內的對應路徑,一些沒有的路徑,比如Visual Studio 2017等,直接刪除也不影響編譯,因為這裡的頭文件路徑只是提供給插件使用,方便文件解析的。
修改settings.json,添加以下代碼到文件中,
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe", "terminal.integrated.env.windows": { "MSYSTEM": "MINGW64", "CHERE_INVOKING": "1" }, "terminal.integrated.shellArgs.windows": [ "--login" ], "terminal.integrated.cursorStyle": "line",
將當前工程的終端設置為QMK使用的MSYS2。
設置完,VSCode會提示安裝插件等,都是為了方便瀏覽代碼的,安裝完重啟即可。然後就可以在vscode裡修改代碼,編譯固件了。
Ctrl+` 打開終端,可以看到進入了MSYS2終端,輸入qmk compile -kb clueboard/66/rev3 -km default測試一下編譯環境,一切正常。