前の記事はこちら 40%キーボードプロジェクト その24 - Re: The history of "M&Y"
自分でも驚くくらい続いている 40%キーボードプロジェクトです。
今回は・・・折角、QMK MSYS が使えるようになったので、LAYER 毎にLEDの色を変える、という技に挑戦です。
https://docs.qmk.fm/#/ja/
QMK farmware のドキュメントを適当に読んでいて・・・
シラバスの中級トピックに「RGBライト」があったので、リンクをクリックすると英語のぺージに飛んでしまいました。 えっ~ 翻訳されてないの!? それじゃ無理じゃん!
さすがに、翻訳しながら、(しかも訳の分からない)プログラムを作るのは無理そうです。
そうしたら「カスタム関数とキーコード」のところに「レイヤー切り替えコード」というのを見つけました。
https://docs.qmk.fm/#/ja/custom_quantum_functions?id=layer-change-code
そこに・・・
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case _RAISE:
rgblight_setrgb (0x00, 0x00, 0xFF); break;
case _LOWER:
rgblight_setrgb (0xFF, 0x00, 0x00); break;
case _PLOVER:
rgblight_setrgb (0x00, 0xFF, 0x00); break;
case _ADJUST:
rgblight_setrgb (0x7A, 0x00, 0xFF); break;
default: // 他の全てのレイヤーあるいはデフォルトのレイヤー
rgblight_setrgb (0x00, 0xFF, 0xFF);
break; }
return state; }
こんなサンプルプログラムが掲載されていたので、あまり考えずに keymap.c にコピペしてコンパイルしました。
そうしたら、case文にある定数(と思われる)_RAISE、_LOWER、_PLOVER、_ADJUST が未定義と怒られました。
なるほど、う~ん、どうしようか・・・
よし、LAYER番号のようだし、単純に上から 0、1、2、3 に変えちゃえ!
と変更したら、コンパイルもOK、そのままキーボードに書き込んだら・・・
できちゃいました。
通常は背面の RGB-LED が青色です。
FNキーを押して LAYER1 にすると赤色
左のスペースバーを押して LAYER2 にすると緑色
右のスペースバーを押して LAYER3 にすると紫色になりました。
これで、今、どこの LAYER に居るか分かるゾ! と思ったのですが・・・
やってみると、もともと、そんなにキーボードを見ないし(凝視しないし)
(当たり前ですが、背面の RGB-LED をONにしていないと使えない機能です。)
面白い機能だけど、使わないかも・・・(笑)
でも、まあ、実現できたことが大切ですよね。
はい、また一歩前進です。