QMKのcrkbd/rev1/commonではRGB Matrixの右手が光らない件
QMKのCorneシリーズ用のファームがrev1/commonだとRGB Matrixの右手側(=USBに接続していない方)のLEDがまったく光らない。しかしrev1/legacy(デフォルト)を使えば光るようになる。その理由を知りたい。あわよくばcommonでRGB Matrixの右手を光らせたい。
commonはquantum(自作キーボードのOSみたいなもの)を使ってcrkbdの多くの機能を実装している。VIAに対応するkeymapはcommonベースである。一方でlegacyは一部の機能を自前で実装している。そのためメンテナンス性を考えるとcommonベースで自分用ファームを作りたい。
そのためにlegacyで何をやっているのかを読んでみた。
極論legacyは左手分のmatrixを右手側にシリアルで転送しているに過ぎない。右手側はこれにより完全なmatrixを手に入れており、RGB Matrixはそれを利用することで独立して右手側のLED点灯パターンを生成できるはずだ。
対してcommonは左手側は完全なmatrixを持っているのに対し、右手側は半分しか持っていない。これはRGB Matrixが左手側のLEDが右手側の操作に反応して点灯するのに、右手側は左手側の操作に反応しないことから裏付けられる。一方で右手側は右手の操作にも反応しないことには説明が付けられない。そもそも常時点灯パターンにしておいても右手側は点灯しないのは不明。
たぶんRGB Matrixには分割キーボードに対応するコードが入っていない。legacyにはそれを誤魔化して一体キーボードに見せるようなことをしているんじゃなかろうか。
RGB LightはSPLIT awareであることがquantum/rgblight.cを見るとわかる。
一方でRGB Matrixのquantum/rgb_matrix.cにはsplit
という単語すら登場しないのでそもそも考慮していないのだろう。しかしcommonで一切光らないのは解せない。
RGB Lightは自身の設定をEEPROMに書くのと同時に右手側にも同期していた。一方でRGB Matrixではその欠片も見当たらない。
とはいえ、commonでまったく光らない=デフォルトの設定がないこと、およびlegacyで光る&モード切替が機能する理由にはなっていない。
これ、今なら調査すればちゃんとわかりそうだが…なんかそこまでする気力はない。
また最近の新しいQMKでは動いてるかも。