⌨️

Keyball44の無線化対応メモ

2024/08/20に公開

更新履歴

2024/08/31

  • v1.0.0として、mint149/keyball44-bmpブランチのビルド済みファイルを配置

はじめに

BLE Micro Pro(以下BMPと呼称)を用いてKeyBall44の無線化を行ったので、メモを残します。
手順の詳細までは記載しておりませんので、自力でソースをいじれる人向けです。

バッテリーのことを考えずに無線化したのでちょっとかさばってるのは内緒

やったこと

ukoasisさんの以下記事に記載のあったKeyball39ファームウェアのソースをフォークして、Keyball44用に書き換えました。

https://zenn.dev/ukoasis/articles/34d3050a23441e

書き換え後のソースは以下のリポジトリのブランチ「mint149/keyball44-bmp」に上げています。
上記記事と同じく、本無線化対応時点(2024年8月)でのBMPの最新バージョンである1.2.0に対応しています。

https://github.com/mint149/vial-qmk/tree/mint149/keyball44-bmp

また、ビルド済みのuf2ファイル・binファイルについて、以下のリリースページにあげています。

https://github.com/mint149/vial-qmk/releases/tag/v1.0.0

ビルド・config.binの作成などの手順は上記記事と同様です(丸投げ)。

補足事項

  • 筆者のKeyballについて
    • 右トラックボールで右がmaster
      • 配置を変えたい場合、以下のファイルを編集すればおそらく対応可能(未検証)
        • keymap/bmp/left.config.json
        • keymap/bmp/right.config.json
    • LEDは使用しない
      • 基板にはんだ付けもしていない
      • 使用する場合、via.json・vial.jsonのLED部分の記載を変えればおそらく対応可能(未検証)
    • OLEDは右のみ配置
      • 左にも配置したいがslave側OLEDにレイヤ情報などを渡す方法を知らない
    • Vial・Remapをほぼ不使用
      • Vialでキーマップを修正できることは確認しているが、ほとんどお試し程度
      • そのため、Vial・Remap使用時になにか都合が悪いかもしれない
        • 少なくともVialでトラックボールが左にあるときのレイアウトがおかしいのは確認済み(後で直します…)
      • キーマップの変更を行いたい場合、keymap.cを修正してその都度ファームを書き換えている
        • キー自体にC言語での制御が必要な特殊な機能を持たせることが多いため
  • キーマップは動作確認用の仮のものとなっている
    • BMP用の独自キーもマッピングしていない
    • keymap.cを書き換えるか、Vial・Remapで適宜修正が必要

詰まったところ

  • DFUモードにしてもMacにマウントされない
    sudo mkdir /Volumes/keyball
    sudo mount -t msdos /dev/disk4 /Volumes/keyball
    
  • config.hのSPLIT_HAND_MATRIX_GRIDについて
    • 39ではF6,B5だったのをF7,D4に修正した
  • keymap/bmp/rules.mk
    • LEDを使わない場合でもRGBLIGHT_ENABLE = yesとする必要がある
    • noにした場合、bmp.cでコンパイルエラーが起きる(本来は修正したほうが良さそうだけど面倒が勝った)
    tmk_core/protocol/bmp/bmp.c:10:10: fatal error: rgblight.h: No such file or directory
    #include "rgblight.h"
             ^~~~~~~~~~~~
    
  • 自作カスタムキーの定義用定数について
    • KEYBALL_SAFE_RANGEを使えばOK
    • キーの定義としては、通常のキー(SAFE_RANGEまで)→BMPの独自キー(BMP_SAFE_RANGEまで)→Keyballの独自キー(KEYBALL_SAFE_RANGEまで)となっている
  • オートマウスレイヤが機能しない
    • pointing_device_init_user()が機能していない?
    • oledkit_render_info_user()に起動後1回だけ動作するような判定を用意し、その中でオートマウスレイヤON・スクロールモードオフで対応した
  • QMK版とスクロールの向きが逆?
    • 筆者の環境ではそうなった
    • スクロール方向を反転する機能をもともと用意していたので、その中の判定条件を逆にして対応した

おわりに

筆者はKeyball39と44の差分にあたる箇所を書き換えただけで、トラックボールやOLEDの制御部分については特に修正を加えていません。
このあたりは自分では手出しできない箇所でしたので、そのまま流用させていただけて本当にありがたい限りです。
作者のukoasisさんには改めて感謝申し上げます。

ここのところ無線化されるのはKeyBall39ばかりだったので、もっとKeyball44も事例が増えてくれると嬉しいです。

参考リンク

Discussion