## サマリー
- [[Chrysalis]] → Kaleidoscope の順がおすすめ
- Kaleidoscope は Arduino IDE → CLI の順がおすすめ
- [[Chrysalis]] → Kaleidoscope に移行するときEEPROM を削除する
## Kaleidoscopeへの移行の背景
[[Keyboardio]] の [[Atreus]] のキーマップをカスタマイズするにあたり、最初は [[Chrysalis]] を利用していた。
[[Chrysalis]] はコードを書かずにキーマップをカスタマイズでき、グラフィカルに結果を見られる、とても便利なアプリ。[[Kaleidoscope]] の主要機能はカバーしており、コードを書くことなく、マウスをぽちぽちしてキーマップをカスタマイズできる。まずは [[Chrysalis]] でカスタマイズするのがオススメ。
ほとんどのカスタマイズは [[Chrysalis]] で事足りる印象。わたしも rev29 までは [[Chrysalis]] でカスタマイズを実施していたが、[[Chrysalisでは実現できない設定]] があったため、 [[Kaleidoscope]] に移行した。
## ChrysailsからKaleidoscopeへの移行のハマりどころ
### Arduino IDEかコマンドラインか
上述のとおり、まずはArduino IDE、次にgit cloneしてコマンドライン、がオススメ。
### EEPROM
[[Kaleidoscope]] でファームウェアをコンパイルしてインストールしても、キーマップが変わらない。この現象でいちばん悩んだ。
結論は、[[Chrysalis]] のPreference > My Keyboard > Advanced Tools & Preferences > RESET EEPROM TO FACTORY DEFAULTS ボタンを押して、EEPROMを消去すること。
> [!hint]- ChrysalisとKaleidoscopeの、EEPROMの取り合い
> EEPROMは、書き込み可能で、電源を切っても消えない記憶領域。
> Chrysailsは、ファームウェアはなるべくいじらず、EEPROM領域にキーマップを書き込むことでカスタマイズをおこなう。
> Kaleidoscopeはファームウェアを書き込もうとする。そのファームウェアは、EEPROMが空いていれば使うが、もし既に書き込まれていたら遠慮してつかわない。
> したがって、ChrysalisをつかったあとにKaleidoscopeでファームウェアをインストールすると、キーマップが変わらないようにみえる。
## Kaleidoscopeを使用するまでの準備(概要)
[[Kaleidoscope]] の[公式ページ](https://github.com/keyboardio/Kaleidoscope?tab=readme-ov-file) に解説があるとおり、[Arduino IDEを用いる方法](https://kaleidoscope.readthedocs.io/en/latest/quick_start.html)と、[git cloneしてセットアップする方法](https://github.com/keyboardio/Kaleidoscope?tab=readme-ov-file#use-git-to-check-out-a-copy-of-kaleidoscope)がある。
オススメは、まずArduino IDEをドキュメントどおりにインストールし、最新版のデフォルトファームウェアのコンパイルとインストールまでは実施すること。
様子がつかめたあとは、git cloneしてコマンドラインから操作するほうがシンプルで運用しやすいと感じた。
## Kaleidoscopeでの作業
キーボードは [[Atreus]] で、git clone先が`~/git`だとして、`~/git/Kaleidoscope/examples/Devices/Keyboardio/Atreus`で作業をする。
```shell
$ ls
Atreus.ino Makefile sketch.json sketch.yaml
```
の4つのファイルがあり、このうち`Atreus.ino`を編集する。
`$ make compile` でコンパイル。
`$ make flash` でコンパイルして [[Atreus]] にファームウェアをインストール。
```shell
$ make flash
Using Kaleidoscope from /Users/user/git/Kaleidoscope
Building in quiet mode. For a lot more information, add 'VERBOSE=1' to the beginning of your call to /Applications/Xcode.app/Contents/Developer/usr/bin/make
最大28672バイトのフラッシュメモリのうち、スケッチが24520バイト(85%)を使っています。
最大2560バイトのRAMのうち、グローバル変数が983バイト(38%)を使っていて、ローカル変数で1577バイト使うことができます。
Used library Version Path
Used platform Version Path
keyboardio:avr 1.6.11 /Users/user/git/Kaleidoscope/.arduino/user/hardware/keyboardio/avr
(中略)
To update your keyboard's firmware, hold down the key in the lower left corner of your Atreus.
When you're ready to proceed, press 'Enter'.
```
インストールする際には上記のようなメッセージが出るので、キーボードの左下のキーを押しながら `enter` を押下。左下キーはもうしばらく押しておくこと。
> [!hint] 左下キーを押下すると、キーボードが「ファームウェア受入れモード」になる
`~/git/Kaleidoscope/examples/Devices/Keyboardio/Atreus` を [[📑Gitコマンドのチートノート|Gitで管理]] すると便利。
## 参考リンク
[[Chrysalis]] と [[Kaleidoscope]] の EEPROM 問題について:
- [From Chrysalis →Kaleidoscope - Help and Getting Started - Keyboardio community](https://community.keyboard.io/t/from-chrysalis-kaleidoscope/4620)
- [Stuck with old custom layout - #3 by boris - Help and Getting Started - Keyboardio community](https://community.keyboard.io/t/stuck-with-old-custom-layout/3504/3)
- [Atreus Firmware Puzzle - Programming - Keyboardio community](https://community.keyboard.io/t/atreus-firmware-puzzle/5084)
Keymap作成にあたって:
- ドキュメント
- 基本手順:[Edit A Keymap · keyboardio/Kaleidoscope Wiki · GitHub](https://github.com/keyboardio/Kaleidoscope/wiki/Edit-A-Keymap)
- 公式ドキュメント:[Kaleidoscope documentation](https://kaleidoscope.readthedocs.io/en/latest/)
- キー名称:[Kaleidoscope/src/kaleidoscope/key_defs · GitHub](https://github.com/keyboardio/Kaleidoscope/tree/master/src/kaleidoscope/key_defs)
- inoファイル例:
- [The Keyboardio Atreus | Felipe Vogel](https://fpsvogel.com/posts/2021/keyboardio-atreus) ★★★
- [keyboardio-atreus · GitHub](https://github.com/JoshuaFern/keyboardio-atreus/blob/main/kaleidoscope/Atreus.ino) ★★★
- [Implementation of the miryoku layout for keyboardio atreus · GitHub](https://gist.github.com/harritaylor/38ec432014dfd0d93e8dbc2b420627cd) ★★
- [dotatreus/fjolne_kbd/fjolne_kbd.ino · GitHub](https://github.com/fjolne/dotatreus/blob/master/fjolne_kbd/fjolne_kbd.ino)
- [GitHub - mrcjkb/keyboardio-atreus-firmware: My Keyboardio Atreus firmware](https://github.com/mrcjkb/keyboardio-atreus-firmware/blob/main/keyboardio-atreus-firmware.ino)
- [Joeys Keyboardio Atreus2 Firmware with modifiers on home row · GitHub](https://gist.github.com/joeynguyen/c09a5f7cfed683e5db9af6c4cc5c0167)
- [Qtys Atreus QWERTY layer v5 · GitHub](https://gist.github.com/QtOnGit/c09ce3b799760f375eef85a8a798d491)
ご参考まで、わたしのAtreus.ino:
- [Atreus.ino · GitHub](https://gist.github.com/hnsol/edaf16fe5d4d679d980561923e048cad)
このページの内容はアレンジしてQiitaに投稿:
- [Keyboardio Kaleidscopeのはじめかた - Qiita](https://qiita.com/hann-solo/items/3d2486116a92b79e80e5)