Keychronのファームウェア更新方法
Keychron V8 Max というキーボードを使っているのですが、時々チャタリングが起きて、スイッチの端子を無水アルコールで拭いたりしているのですが、すぐ再発してきりがないため、ファームウェア対策を行なってみました。
以下はその記録です。
こちらのページが大変参考になりました。
チャタリングをソフト的に解消しよう - 25KEYS
(36) How to Change the Debounce Time on QMK / Keychron Keyboards - YouTube
ビルド方法
Keychron V8 Max はワイヤレス対応しているので、wireless_playground というブランチに、必要なリソースがある。
https://github.com/Keychron/qmk_firmware/tree/wireless_playground/keyboards/keychron/v8_max
このブランチをcloneして、QMKのDockerからマウントすると、ホストマシンからソースも編集できるし、ビルド成果物も取得できる。
git clone -b wireless_playground \
--depth 1 \
--recurse-submodules \
https://github.com/Keychron/qmk_firmware.git
こちらのBlogを参考にしてdocker-composeファイルを書いてみたが、結局 docker-compose exec -it
でシェルで入って作業をしていたので不要かもしれない。
version: '2'
services:
compile:
image: qmkfm/qmk_cli
working_dir: /qmk_firmware
volumes:
- ./qmk_firmware:/qmk_firmware
- ./qmk_userspace:/qmk_userspace
command: tail -f /dev/null
qmk_userspace
は結局利用しなかった。qmk_firmware
は先ほどcloneしたディレクトリをマウントして利用する。
docker-compose up
してから、docker-compose exec compile /bin/bash
してシェルを利用する。
ソースの修正
冒頭にあげた (36) How to Change the Debounce Time on QMK / Keychron Keyboards - YouTube で説明されている通りに、ファイルを修正する。
% git diff
diff --git a/keyboards/keychron/v8_max/config.h b/keyboards/keychron/v8_max/config.h
index 8ce123a..ebe5c31 100644
--- a/keyboards/keychron/v8_max/config.h
+++ b/keyboards/keychron/v8_max/config.h
@@ -14,6 +14,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#define DEBOUNCE 50
+
#pragma once
/* Encoder Configuration */
diff --git a/keyboards/keychron/v8_max/rules.mk b/keyboards/keychron/v8_max/rules.mk
index 4eaf682..52a2529 100644
--- a/keyboards/keychron/v8_max/rules.mk
+++ b/keyboards/keychron/v8_max/rules.mk
@@ -1,4 +1,6 @@
include keyboards/keychron/common/wireless/wireless.mk
include keyboards/keychron/common/keychron_common.mk
+DEBOUNCE_TYPE=sym_eager_pk
+
VPATH += $(TOP_DIR)/keyboards/keychron
キーマップの作成
公式の方法は下記の通り。
Building Your First Firmware | QMK Firmware
qmk new-keymap -kb keychron/v8_max/ansi_encoder
を実行すると、qmk_firmware/keyboards/keychron/v8_max/ansi_encoder/keymaps/muuuuwa
フォルダが作成され、keymap.c
ファイルが置かれた。
これを編集する。
ビルド
qmk compile -kb keychron/v8_max/ansi_encoder -km default
がなぜか実行できなかったが、
https://github.com/Keychron/qmk_firmware/tree/wireless_playground/keyboards/keychron/v8_max のREADME に書いてあるように、make コマンドから実行するとうまくいった。
make keychron/v8_max/ansi_encoder:muuuuwa
末尾の :
以降はキーマップの名前を指定する。
ファームウェアのFlash 方法
QMK Toolbox を起動する
https://docs.qmk.fm/newbs_flashing#flashing-your-keyboard-with-qmk-toolbox
keyboard をDFU モードで接続する
https://github.com/Keychron/qmk_firmware/tree/wireless_playground/keyboards/keychron/v8_max のREADME に書いてある通り
- スイッチを Cable に切り替えた状態でケーブルを抜く
- ESCキーを押しながらケーブルを挿す
- QMK Toolbox上で
STM32 DFU device connected: STMicroelectronics STM32 BOOTLOADER (0483:DF11:2200)
などと表示されるのを確認する - ESCキーを離す
Flashする
Open
ボタンから、ビルドしたbinファイルを指定し、Flash
ボタンを押すと、ファームウェアが書き込まれる
コメント