Open13

Vialに対応したcocot46plusのファームウェアを作る

Yudai NakataYudai Nakata

一旦できたものがこちら.

cocot46plusの物理レイアウトをVialに表示させたもの

概ねいい感じっぽいが気になるポイントがいくつかあるので,調査・修正する.

  1. KLEと違ってラベルが表示されないのはそれで意図通りなのか
  2. 1.25uのキーをそのサイズで表示させたい
  3. トラックボール下のキーが重なっているのでそれを防ぎたい
Yudai NakataYudai Nakata

1点目は他のvial.jsonを試すかぎりラベルは見えなくてOKでキー位置とマトリクスの対応がちゃんと対応できていれば良いっぽい.残り2点は一旦放置して動作するところまで持っていってから改良する.

次は本格的にファームウェアを書いていく.

https://get.vial.today/docs/porting-to-vial.html

Yudai NakataYudai Nakata

ガイドに従ってqmk doctorを実行するとavr-gccが新しすぎると言われた.

$ qmk doctor
[snip]
Ψ Found avr-gcc version 9.4.0
⚠ We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.
[snip]

9.xだと何か非互換なのかなと思いきやDrashna曰く,生成されるバイナリサイズの話らしい.マイコンを変えて容量も16MBと十分なので今回は無視する.

https://www.reddit.com/r/olkb/comments/zfcme1/comment/izbl3jf/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

Yudai NakataYudai Nakata

vial-qmkにはcocot46plusのコードが含まれていないので本家QMKから持ってきてデフォルトキーマップでビルドすると,前回と同じエラーが出た.これまた前回と同じ修正でお茶を濁す.

$ cp -r ../qmk_firmware/keyboards/aki27/cocot46plus/ ./keyboards/aki27/
$ make aki27/cocot46plus:default
Making aki27/cocot46plus with keymap default

Generating: .build/obj_aki27_cocot46plus_default/src/info_deps.d                                    [OK]
arm-none-eabi-gcc (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24)) 13.3.1 20240614
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[snip]
Compiling: platforms/chibios/drivers/i2c_master.c                                                  In file included from ./lib/chibios/os/hal/include/hal_pal.h:174,
                 from ./lib/chibios/os/hal/include/hal.h:306,
                 from platforms/chibios/gpio.h:18,
                 from platforms/gpio.h:21,
                 from platforms/chibios/drivers/i2c_master.c:30:
platforms/chibios/drivers/i2c_master.c: In function 'i2c_init':
././platforms/chibios/boards/QMK_PM2040/configs/config.h:17:26: error: 'D0' undeclared (first use in this function)
   17 | #    define I2C1_SCL_PIN D0
      |
[snip]
 [ERRORS]
 |
 |
 |
make[1]: *** [.build/obj_aki27_cocot46plus_default/i2c_master.o] Error 1
make: *** [aki27/cocot46plus:default] Error 1
Make finished with errors
Yudai NakataYudai Nakata

ロータリーエンコーダーのサポートはあんまりやることなくて,rules.mkへの追記とvial.jsonにエンコーダーを追加するくらい.

https://github.com/yudai-nkt/vial-qmk/commit/0bf7f298590cc1135b608ae5b86f20ca04b7c914

ライティングはあまり興味ないので,一旦飛ばしてカスタムキーコードの設定に行く.

https://get.vial.today/docs/custom_keycode.html

Yudai NakataYudai Nakata

ちなみにエンコーダー追加したら物理レイアウトもいい感じになった.

Yudai NakataYudai Nakata

だいたい完成したと思うが実際にフラッシュする前にやっておきたいのが以下の2つ.

  • ファーム書き込み時のPCBからのリセット・ブート方法の確認
  • オートマウスレイヤー機能

コンスルーを基板に挿してしまうとProMicroのブートボタンが押せなくなり何回も抜き挿しするのは避けたいので,特に一点目はチェックしておきたい.

Yudai NakataYudai Nakata

昨日時点でVial化は成功

WebブラウザのVialでcocot46plusが認識されている様子

ただ,いくつか出来ていない部分があるので引き続き進める.ここから先はVialをQMKのexternal userspaceで使用できるかの確認も兼ねて進める.

  • auto mouse layerが効かない
  • レイヤーごとにライティングを変えたい
  • OLEDに情報を反映
  • FWを更新したときにキーマップなどは保存されるのか