なんせ私も沼の入口に辿り着いたのが最近なもので、QMK Configuratorがそんなに新しいものだという認識もなかったわけなんですが、中華系のベンダーからのPCBの多くは、未だに古いKbfirmwareが使われていることが多いです。えば、KDBFANSやKPRepublicなんかで購入すると高確率でそうなります。
だからといって問題はないんですが、QMK Configuratorと比較するとやや古臭い感じはします。そして実際に使用されているコンパイラのバージョンは2年前くらいから更新されていないしねっていうのもよく目にします。
いえいえ、全然世界の終わりではないので安心してください。結局心臓部にあるのはQMK Firmwareなわけですから、そっちへ持っていけばいいわけです。
そんなこともつゆ知らず、DZ60RGBの2キーだけEGBの向きが違うのか気に食わず、AliexpressでBM60というホットスワップのほぼ同程度のPCBのを見つけてポチりました。で、商品買うときにはQMK compatibleってなっていたので当然Configuratorにあるんだろうなーと思っていたわけですが、見事に入ってなかったわけです。商品ページからのリンクで用意されていたのはKbfirmwareのリンクとそれに対応した設定ファイルだったのです。でも、実はQMK Firmwareにもできない他の機能があったりして、これはこれで面白いので使ってみても全然OKだと思いますよ。はい。
というわけで、Kbfirmwareを使うにしてもそうでないにしても、その使い方などを書いておきたいと思います。困ったときのメモとして。
Kbfirmwareのサイトはここです
ちなみにKBDFANSで販売しているDZ60 Rev3の場合は飛び先が違いました。
BM60の場合はメーカーからダウンロードしたhexファイルを読み込ませ、DZ60の場合は飛んだ先にボタンとしてすでに用意されていました。最初によくわからなくていじりまくっていたのがBM60だったので、そちらで説明していきます。
設定ファイルを読み込ませるとこのようなスクリーンに切り替わります。QMK Configuratorを使っていれば、大体わかりますよね。でも、あちらにはないワイヤリングが見えたり、quantum.hまで書き込みができるようになっているので、勉強には逆にもってこいでした。
↓読み込ませると…
「うぉおおおおっ」って最初に言いました。ほんとに。ワイヤーの配線状態がビジュアルで把握できるってすごくないですか。もう、この時点であがりまくり。下に7つのタブメニューが並んでいて、それぞれクリックで切り替わります。2つ目のPINSでは、プロセッサーの選択、そして行とカラムの設定が確認できます。すごいすごい。
KEYMAPはQMK Configuratorのそれに似ています。ただし、QMKで新たに実装されているものなどは使えないキーコードがあるようです。例えば60%でよく使用されるGESCや、私が個人的に必須になっているIMEトグル用のLM()なども使えません。それでも、一通りの機能はありますので、求めているキーマップが実現してしまうのであれば、このままKbfirmwareのみでコンパイルすれば幸せじゃないでしょうか。
レイヤーの変更はマウスで上下させて行います。最大15までになっています。最初に目的のレイヤーを選び、上に表示されているキーマップをクリックして、変更したいキーコードを画面の下から選択します。
KEYMAPはさらに5つのタブに分かれています。
- PRYMARY
- SECONDARY
- KEYPAD
- LIGHTING
- FN
- OTHER
見れば分かるものは説明を省きますが、OTHERだけすこし特殊です。ここはQMK Configuratorの「Any」とほぼ同じなのですが、ここに打てるのは予め使うことが許されているコードのみです。だったらそれを書いておいて欲しいよねって思いつつ、そういや開発は止まっているんだったので、ここにリストしておきます。コードをコピーして直接Kbfirmware内でペーストすれば使えるようになります。ここでAnyのように使えなくても任意に書かせてもらえれば、もうちょい流用しやすいんですけどね。
コード | 機能 | コード | 機能 | |
KC_HELP | Help | KC_MS_U | Mouse up | |
KC_MENU | Menu | KC_MS_D | Mouse down | |
KC_SELECT | Select | KC_MS_L | Mouse left | |
KC_STOP | Stop | KC_MS_R | Mouse right | |
KC_AGAIN | Again | KC_BTN1 | Mouse button 1 | |
KC_UNDO | Undo | KC_BTN2 | Mouse button 2 | |
KC_CUT | cut | KC_BTN3 | Mouse button 3 | |
KC_COPY | Copy | KC_BTN4 | Mouse button 4 | |
KC_PASTE | Paste | KC_BTN5 | Mouse button 5 | |
KC_FIND | Find | KC_WH_U | Mouse wheel up | |
KC__MUTE | Mute | KC_WH_D | Mouse wheel down | |
KC_MNXT | Media Next | KC_WH_L | Mouse wheel left | |
KC_MPRV | Media Previous | KC_WH_R | Mouse wheel right | |
KC_MFFD | Media fast forward | KC_ACL0 | Mouse act level 1 | |
KC_MRWD | Media Reward | KC_ACL1 | Mouse act level 2 | |
KC_MSTP | Media Stop | KC_ACL2 | Mouse act level 3 | |
KC_MPLY | Media Play | |||
KC_MSEL | Media select | |||
KC_MAIL | ||||
KC_CALC | Calculator | |||
KC_MYCM | My Computer | |||
KC_WSCH | Web search | |||
KC_WHOM | Web homepage | |||
KC_WBAK | Web back | |||
KC_WFWD | Web forward | |||
KC_WSTP | Web stop | |||
KC_WREF | Web refresh | |||
KC_WFAV | Web Favourite |
そんなに悩まないと思いますが、QMK Configuratorのように実際のキーボードは使えず、すべてマウスでの指定なります。大量にやろうとすると結構指が疲れるかもです。
MACROはQMK Configuratorにもない優れものです(たぶん)。
マクロはすみません。ここで使ったことないです。
というかマクロ自体を使ったことないのでほんとすみません。自動記録などもできるようですが、記録したマクロKEYMAPでM()として配置すると、マクロ内容がkeymap.cに書き込まれる仕組みです。この記事を書きつつちらっと試してみるかなーと、TESTとTypeしたマクロを入れてみたんですが、ちょっとうまくいかなかったです。書き出しておいて後で修正かけるとかですかねぇ…。マクロが使いたくなったら考えようかな。
QUANTUMはいじらない方が良さそうです。
SETTINGでは触る必要がほとんどないと思いますが、PCB名、ブートローダーのサイズ(基本4096のままでOK)、LEDなどもすでに入っていると思います。もし数が間違っていたら修正してください。ここで「Save Configuration」を押せば、jsonファイルとしてここまでの設定をダウンロード可能です。Kbfirmwareを最初に開くときにこのjsonファイルを使用すれば、最後に保存したところまで戻って作業を再開できます。
最後のタブがCOMPILEです。押してからコンパイルが始まるので10秒ほどかかるかも知れません。.hexファイルの方はそのままQMK Firmwareを使って読み込み、PCBをへ書き込むことができます。また、.zipファイルの方は、QMK Firmwareの本体でコンパイルするための巨大なファイル群になりますが、このままだと使うことはできませんでした。やはり古いからとかでしょうかね。
QMK Toolboxの使い方は、QMK Firmwareの記事側で説明しています。
とは言っても、もうちょっとマクロいじりたかったり、やっぱり最新のQMKでコンパイルした方が気持ちいいし。っていう場合には、下の方法でファイルをコンバートすることで、最新のQMK Firmwareが利用できるようになります。これが正しい方法なのか分からないですが、分からないなりに自分で調べたらなんとか動いたっていうやつです。っていうか、↓これを見つけただけなんですけどね。
https://noroadsleft.github.io/kbf_qmk_converter/
ようは、kbfirmwareで保存した設定のjsonファイルをQML Firmware用にコンバートしてくれるというWebツールです。ファイルを読み込ませると自動的に変換されます。
qmk側で新規キーボードをローカルのQMKに追加します。Msys2を起動してコマンドを実施。
$ cd qmk_firmware -- QMKがインストールされたディレクトリへ移動
$ util/new_keyboard.sh
次に3つの項目を尋ねられます。
Keyboard Name: -- PCB名
Keyboard Type [avr]: -- このままリターン
Your Name: -- 自分の名前(ローマ字)
Keyboard Nameはコンパイル時にも使用するもの、Keyboard Typeはソースを見るとavrとps2avrgbしか受け付けないみたいですが、avrになっていると思うのでそのままリターンで入力。Your Nameはソースに書かれる名前なので恥ずかしくないやつでひとつ。というか、原則、kbfirmwareでつけた名称と同一にしてください。スクリプトが走ってファイルが書き込まれます。
この例では「testk」という名称のキーボードを追加しています。Windows上でkeyboardsディレクトリを探すと、作成した「testk」フォルダと各種のファイルが保存されているかと思います。
この中にあるファイルで同一のものを、先程Webツールで変換した内容に上書き保存していきます。ここは手動のコピペになります。config.hは他にもKeymaps\defaultの中にも置かれていますが、書き換えるのは上の階層のものだけでOKです。対応は以下の通りです。「testk」を自分の足したいPCB名に置き換えて考えてください。
config.h | \testk | そのままコピペ |
rules.mk | \teskk | そのままコピペ |
<keyboard>.c | \testk | testk.c(PCB名に置き換え) ソース内の%KEYBOARD%.h”をpcb名.hに書き換え |
<keyboard>.h | \testk | testk.h(PCB名に置き換え) |
keymap.c | \testk\keymaps\default | そのままコピペ |
info.json | \testk | そのままコピペ |
これで終わりです。コンパイルできるか確認してみてください。
qmk_firmwareディレクトリに移動してmakeします。
$ make testk:default
「testk」は自分のPCB名にしてください。エラーが出なければグリーンの[OK]がしばらく続いた後にコマンドプロンプトへ戻ります。コンパイルに成功していれば、qmk_firmwareディレクトリにtestk.default.hexなどが出来上がっていると思います。これをQMK ToolboxでPCBに入れるか、あるいはmake testk:default:flashなどでdfuモードにしてPCBをリセットする方法でもOKです。USBを一度抜いてから再接続します。お疲れさまでした。
コメント