マサコの知らない自作キーボードの世界　クリスマスSP

[自作キーボードアドベンドカレンダー3枚目](https://adventar.org/calendars/3208)の5日目、ginjakeです
前回、[マサコの知らない自作キーボードの世界](https://qiita.com/sirojake/items/8c60148c03c248fc6a6e)を投稿したところ、
予想以上の反響をいただきました。
あれから約3ヵ月。様々なキットが発売され、自作キーボード界は日々飛躍的に発展しております。
前回書けなかった内容や新登場のキットについて触れていこうと思います。
(Qiitaなので、後半はプログラミングに関係する話にもなります)

# イ　カ　れ　た　キ　ー　ボ　ー　ド　紹　介　す　る　ぜ！
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">見て！<br>オタク色のZINC！ <a href="https://t.co/9XXJNW07aL">pic.twitter.com/9XXJNW07aL</a></p>&mdash; 声豚⌨ (@sirojake) <a href="https://twitter.com/sirojake/status/1068901836470403072?ref_src=twsrc%5Etfw">2018年12月1日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


以上だ！

# 自作キーボードの良さとは？
・自由なキー配置
・自由なキースイッチ
・なんか凄い事やってる感がある

# 様々なキット達
前回もいくつか紹介しましたが、この3ヵ月の間に様々なキットが登場しました。
ざっと紹介していこうと思います。
また、液晶やLEDに対応しているキットがありますが、不要ならつけなくても問題ありません。

### Helix、Helix pico
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/2f6d2522-101e-cc7f-2bbb-2ac08df20ea5.jpeg"  width=30%>
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/6f845aaa-cdf9-a9dc-f3ba-f97f8770b14e.jpeg" width=30%>
日本の自作キーボード界に多大な影響をもたらしたキットです。

Helix自体もロープロファイルスイッチに対応しているので薄く出来ますが、
HelixPicoならさらに薄くなります。

[Helix 販売ページ](https://yushakobo.jp/product-category/keyboard/)
[Helix Pico　販売ページ](https://yushakobo.jp/product-category/keyboard/)

### Corne Cherry
前回の記事でも紹介したキットの最新版。
キースイッチがソケット化しており、後から自由に付け替える事ができます。
プレートの色や素材も変わっており、とてもカッコよくなっています。
手前が前のバージョンCorne Classic、奥がCorne Cherryです。
(私は両方とも組み立てました。)

技術書典5にて販売した[「四⼈の知らなかった⾃作キーボードの世界」](https://riconken.booth.pm/items/1044793)
で取り上げたのはCorne ClassicとCorne Cherryになります。
ちなみにHelixPicoもそうですが、ダイオードが米粒より小さいためまともなピンセットが必要です。
ダイソーの毛抜きをピンセット代わりにするのはおすすめしません。
[販売ページ](https://booth.pm/ja/items/869375)

### Zinc
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/1bc5d886-9e40-73b3-593d-9829532257d2.jpeg" width=30%>

冒頭で紹介したキーボードはこのZincです。
ラブライブ！サンシャインの4thライブに感銘を受け、そこで購入したオタク棒の光り方を再現しています。
本当はとてもおしゃれなキーボードで、インスタ映え間違いないでしょう。

キー配置が真っすぐなキットが多い中、Zincは斜めにズレている為
従来のキーボードに近い感触で打てると思います。

[販売ページ](https://booth.pm/ja/items/1076720)

### Mint60
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/3c3926ed-e3b6-cc12-02d5-f8a1aa2b2c0b.jpeg" width=30%>
従来のキーボードに近い為、
「左右分割はしいけどキーの位置が違うのは……」
という方におすすめです。

スターターキットならば必要なパーツが全て含まれており、
なんとファームウェアも書き込み済み！
パソコンが家にない人でも組み立てられるので安心ですね
[Mint60公式](http://eucalyn.hatenadiary.jp/entry/about-mint60-01)

### Ergo42 Towel
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/80f67aaf-ccae-a404-f6d9-671dfb848f89.jpeg" width=30%>
横が一列多いため、「bは両手にほしい」みたいな場合はおすすめです。
機能性重視のためデフォルトでLEDはつけれるか不明ですが、特別仕様のunderglow版なるものもあるようです。
フルセット版ならキースイッチ、キーキャップ以外のパーツが全て揃っており、
ファームウェアも書き込み済み。ありがたい限りです。

[Ergo42 Towel](https://tanoshii-life.booth.pm/items/952695)

### Lily58
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/84b4d934-9bff-ecbf-640d-92d3b98c8f16.jpeg" width=30%>
使いやすいキー数のままコンパクトに抑えたキーボード。
キー数が少なすぎるのは嫌だけど、まっすぐなキー配置+斜めってる親指キーはいいな、という方におすすめ。
現状はEarly Birdのため、今後出る正式版では少し変わる可能性もあります。
[販売サイト](https://liliums.booth.pm/items/1079687)

### Fortitude60
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/cb51bd9e-271f-c414-c99f-9ccc560c3c3a.jpeg" width=30%>
とにかく強くて頑丈がコンセプトなキーボード。
自作キーボードでは「USBを抜き差ししているうちに口がモゲる」という現象が良くあり恐れられています。
グルーガン等で補強するという対策もありますが、Fortitude60ではUSB Type-Cを採用することで華麗に解決。
基板に埃がつかないよう横のスペースもプレートで覆っています。
マイコンのfirmwareも書き込み済みのため
「コマンド？なにそれ筋肉モリモリマッチョマンの事？」
なんていう人でも安心して作れます

ロゴまでパワフルな拳の絵になっているのは、強さを求めすぎた結果でしょうか？
[販売サイト](https://booth.pm/ja/items/1071554)

### ErgoDash、ErgoDash mini
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/c198e6f9-29fd-dce1-65fa-58c8cdbf27d6.jpeg" width=30%>
`「ErgoDoxはキー数が多いけど、自作キーボードはキー数が少ない」と感じている方におすすめです。`
 と公式が言っている通り、ErgoDoxというキーボードと、自作キーボードを合わせて良いとこ取りをしたようなキット
親指キー有り無しも選べるようです。
最上段をカットしたErgoDash mini というのもあります。
[ErgoDash 販売サイト](https://booth.pm/ja/items/1011978)
[ErgoDash mini 販売サイト](https://booth.pm/ja/items/1077755)

### Rhymestone
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/cf6952d0-5de6-ecf8-5b39-9949745a1d3a.jpeg" width=30%>
公式サイト曰く
`Helixとcrkbdをベースに、薄型設計、キースイッチ毎のフルカラーLED対応、OLEDによる表示対応、MX Socket対応などの機能を詰め込んでいます。
MX Socketにも対応しているためスイッチを自由に取り外すことが出来ます。
このあたりはCorne Cherryと同じですね。
[販売サイト](https://marksard.booth.pm/items/1123535)

### Treadstone48
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/ca51c9cc-ac17-dbeb-ae8e-879a8f7fa46a.jpeg" width=30%>
国内自作キーボードには珍しく、割れていないキーボードです。
上で紹介したRhymestoneを接続して使うことも出来るという面白いコンセプト。
写真のは接続済みの状態のようです。
まだ販売開始されたばかりなのでしょうか。
気になっているのですがRhymestoneと合わせ、情報があまりなく良く分かっていません。
[販売サイト](https://marksard.booth.pm/items/1123627)


### Mini Axe
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/efadc1a3-d6c0-4f01-288d-bd77108930b9.jpeg" width=30%>
実用ギリギリのサイズに抑えたキーボード。
Corne Cherryより一列少ないだけでなく、使うパーツまで小型に拘りぬいた異色のキーボード。
横幅が下で紹介するnamecard 2*4とあまり変わらないのだから恐ろしい。
MXソケット対応のため、キースイッチを自由に付け替えられる。

基板設計も組み立て方法も独特であり、凄いキットだと思う。
小型化最優先のため、若干組み立て難易度が高くなってしまっているが魅力的な事には変わらない。
[販売ページ](https://booth.pm/ja/items/1094860)

### namecard 2*4
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/c6cdab32-2651-18ba-9b6e-6d1b587bcf2e.jpeg" width=30%>
2×4の名刺サイズのキーボード。
主な用途としてはショートカットキーや鞄に付けるアクセサリー、電子工作の練習等。
キーキャップやキースイッチ全部入っている上、キー数が少ないため失敗時の原因も分かりやすい。
部品もどこで買えるか書いてある為、自作キーボード初心者に最適なキーボードかもしれない。
namecardを組み立てた後Corne Cherryを作ったが、基本は同じだったのですんなりいけた。
(写真は手前からnamecard 2*4、Blockey、寿司。キーキャップはイベントで購入したモノの為、本キットの付属品とは別である。)
[販売ページ](https://booth.pm/ja/items/1042076)

### Attack25
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/872ee1e7-6263-22be-3d35-d86264d1719f.jpeg" width=30%>
テンキーより少し多い、片手用の25keyキーボード。
数字や+-のほかにエンターやBackSpaceなどを設定すれば片手だけで経理作業が出来る。
もちろんゲームのショートカットキーとかを入れても良い。

[販売ページ](https://booth.pm/ja/items/1092806)

### universal16
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/f51929fc-27c7-ec22-13b5-08c1f253df12.jpeg" width=30%>
キーマトリクスのみを実装した基板。
ユニバーサル基板になっているエリアがあるため
電子工作の知識があればジョイスティックや音量つまみなどを実装出来るかもしれない。
[販売ページ](https://booth.pm/ja/items/1093485)


# イカれたキット達
### Blockey
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/2fc684a8-2f71-56fe-2993-9f008315c3a6.jpeg" width=30%>
Mini Axeとは違うベクトルで小ささを実現したキーボード。
namecard 2*4のように鞄に付けてアクセサリーにしたり、スマホ用キーボードにしたり。
しかも無駄にLEDに対応している。

作者はスライドの操作に使っていたので、作ってみたら結構使い道はあるのかもしれない。
パーツが小さいだけでなく基板への実装密度も半端なく高いため、腕に自信のある方は挑戦してみてもいいかもしれない。
[販売ページ](https://booth.pm/ja/items/968925)

### Colosseum 60 (with 無限の可能性)
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/cb3ff09a-5941-81ab-87e1-70c605c5cfe6.jpeg" width=30%>
まさかの3Dキーボード。
どんなキーボードかは作者のツイートを見てほしい。


<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">戦士たちよ…闘いの幕開けだ。<br>今こそ情報化社会を勝ち抜く剣を取れ！<br>フルカラーLED円形闘技場型キーボード「Colosseum60」<br>最後に生き残るのは誰だ…？<a href="https://twitter.com/hashtag/Colosseum60?src=hash&amp;ref_src=twsrc%5Etfw">#Colosseum60</a> <a href="https://t.co/ehaOZt3X4i">pic.twitter.com/ehaOZt3X4i</a></p>&mdash; しろとり@無限の可能性 (@swan_match) <a href="https://twitter.com/swan_match/status/1057252559193223168?ref_src=twsrc%5Etfw">2018年10月30日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


「無限の可能性」という1キーずつ切り離して使う事のできる基板を組み合わせた上、
DMM.makeでケースを3Dプリントする必要がある。これだけで3万円くらいするらしい。
いろんな意味で難易度が高いが、英雄になれること間違いなしの円形闘技場キーボード。
[無限の可能性](https://booth.pm/ja/items/1073225)
[ケース3D印刷](https://make.dmm.com/item/982721/)

完全にネタだと思っていたが、普通に使いやすいから困る。
### キー配置をカスタマイズしてみる
前回の記事でも少し触れましたが、プログラミングの知識があれば自由にカスタマイズすることが出来ます。
namecard2*4というキーボードを例に出すと、

[keymap.c](https://github.com/qmk/qmk_firmware/blob/master/keyboards/namecard2x4/keymaps/default/keymap.c) の

```
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DF] = LAYOUT(
		KC_1,KC_2,KC_3,LT(LW,KC_4),
		KC_5,KC_6,KC_7,LT(RS,KC_8)
		),
[LW]= LAYOUT(
	
		RGB_VAD,RGB_VAI,RGB_HUI,RGB_HUD,
		KC_TRNS,RGB_MOD,RGB_RMOD,KC_TRNS
		),
[RS]= LAYOUT(
	
		KC_MYCM,KC_MAIL,KC_VOLU,KC_MUTE,
		KC_WSCH,KC_CALC,KC_VOLD,KC_TRNS
		)

};
```
という部分を書き換えることで好きに変更することが可能です。
マクロはもちろんの事、「一瞬だけ押すとB、長押しするとレイヤー(後述)」　
というのも`LT(レイヤー,KC_B)`のように設定が可能です。


上記のコードで`[DF] = LAYOUT(` `[LW]= LAYOUT(` `[RS]= LAYOUT(`
とありますが、これがレイヤーと呼ばれる機能です。
デフォルトでは`DF`に書いたキーが適用されます。
`LW`や`RS`についてはそれぞれのレイヤーが有効になっているときに適用されます。
レイヤーの切り替えについては、あるキーを押している間のみだったり、
一度押したらそれ以降ずっと有効になったりと、好きにカスタマイズすることが可能です。

私は猫がキーボードの上に乗っても大丈夫なように、キーを設定していない「CATLOCK」レイヤーを作り、
特定のキー同時押しで有効/無効　になるようにしています。

イベント展示時、参加者がキーの感触を試しているうちにパソコンが操作されるなんて事例はよくありますが、
この機能のおかげで課題が解決され、すごく助かっています。


### キースイッチ

少しキーボードに興味のある方なら「赤軸」「茶軸」という言葉を聞いたことがあると思います。
世の中には数多くのキースイッチが存在します。自分が触っただけでも100種類以上あります。
「押しはじめが少し硬く、途中からストンと入る」
「とても軽く、音もほとんどしない」
など打鍵感は様々です。

既製品だとある程度種類が限られてしまいますが、自作キーボードなら自由にカスタマイズできます。
小指や薬指は軽いスイッチにして、人差し指は重くする　等も可能です。
自分のお気に入りはBOX Royalスイッチです。


## 自作キーボードで遊びながら、技術を身に付ける

### OLED(液晶)で遊ぶ
前回はキャラがただ表示されるだけだったので、今回はアニメーションするようにしてみました。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="und" dir="ltr"><a href="https://t.co/sD4XZjwjZU">pic.twitter.com/sD4XZjwjZU</a></p>&mdash; 声豚⌨ (@sirojake) <a href="https://twitter.com/sirojake/status/1069969653726932993?ref_src=twsrc%5Etfw">2018年12月4日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

bmpなんて画像形式は当然使えません。
画像データはコード化されており、ピクセル毎に白か黒かが格納された8bitのデータが配列になっている感じです。
また、マイコンのフラッシュメモリも全然足りない為、適当にやってるとすぐ容量が超過します。
容量超過した事に気づかず書き込むとマイコン自体が死んでしまいます。
警告が出るので普通は気づきますが、何百回と書き込んでるとたまにやってしまいます。
直すためにProMicroを使って自作のAVRライタを作る程度には壊しました。

前の記事でも軽く触れましたが、灰色を表現できない為「■□■□」と「□■□■」を交互に描画することでそれっぽく見えるようにしています。
灰色部分を白黒で打つのは骨が折れるため、まずはそういうツールを自作しました。
[OLED用ドット絵コンバーター](https://ginjake.github.io/gray_convert_for_oled/)

画像データからコード化するために@zk_phi氏作成のツールを改造したものがこちらです。
[glcdfont-tracer](https://ginjake.github.io/glcdfont-tracer/)

アニメーション自体は3種類ですが、白黒交互表現のため6枚分の画像データを保持しています。
1枚の画像データに6つの画像を入れ、描画範囲を切り替えるというのがこの手だと一般的だと思いますが
6つ分の描画範囲の配列を作ると容量が死ぬため、fontデータを3*2の配列にして1つの描画範囲で済ませています。
一応、参考までにfirmwareのコードも載せておきます
[github](https://github.com/ginjake/qmk_firmware)

こんな感じで、webプログラミングだけでは普段気にしない事を学べて面白いです。

### LEDで遊ぶ
冒頭のオタクZincのように、ピカピカ光るのは良いものです。
beatmania IIDXだって光ると嬉しいですし、クリスマスだってディズニーランドだってとにかく光っています。

輝くというのは素晴らしい事です。
輝きを見つけたときの高海千歌氏[^1]の嬉しそうな顔を今でも鮮明に覚えております。
[^1]: ラブライブ！サンシャイン!! の登場人物
LEDについては、自作キーボード #3 Advent Calendar 2018の21日の記事で題材にする予定です。

### キーキャップで遊ぶ
次の写真を見てください。
<img src="https://qiita-image-store.s3.amazonaws.com/0/261659/d019e5ac-eb09-8fd6-a5d0-2287bb806eef.jpeg" width=30%>

親指の位置にハマっている1.5Uのキーキャップ、何の変哲もない金属キーキャップに見えますよね。
なんとこれ、3Dプリントで作ってもらった銀製キーキャップです。
@zk_phi氏がモデルを製作し、DMM.makeに公開してくれている為、
素材を選んで注文するだけで勝手に出来上がります
(ナイロンやMJF用に作られている為、銀の場合はスイッチ側の軸を少し削る必要はあります)

実際に[こちら](https://make.dmm.com/item/983842/)で印刷することが出来ます


OpenSCADという関数型言語を使ってモデルを作ってるらしいです。
というわけで明日は@zk_phi氏による、
[自作キーボードアドベンドカレンダー1枚目](https://adventar.org/calendars/2954)の6日目、「3Dプリントキーキャップの話」です。

この記事はZincを光らせつつCorne Cherryのハンドスピナーを回しながらCorne ClassicとLibertouchで書きました