目次
前回のブログのまとめに書いたように、セパレートタイプのキーボードであるCorne Light v2を作成したのでそのビルドログです。DIYキーボードとしては2つ目になります。
まとめで書いていたお店が開店したので、購入してみました。 購入したのはこちらのKOCHI KEYBOARDさんです。 ついこの間オープンしたばっかりのお店です!
なんで作ったの?
スプリット型(セパレートタイプ?どっちが正しいんだろう?)のキーボードに興味があって、KOCHI KEYBOARDさんで買えたのがこれだったというのが大きな理由です。こういうのってタイミングだと思うので。 あとは、組み立てていくのがプラモデルみたいで面白いというのもあります。 基本的にここのところ自宅で仕事をしているので、ノートPCのキーボードにこだわる必要もないなというのも理由ですね。今後も当面は自宅で仕事になると思いますので。
Corne Light v2
foostanさんが設計された(って言い方であってるのかな?)、3x6のサイズに親指の3キーが配置された分離型のキーボードの一種です。 シリーズ?の名前としてはCorne Keyboardと呼ばれています。 (そういえば、由来は何だろう?自作キーボードがどうやって設計されていくのかという流れがまとめられた作者の方のブログがおもしろいです。) また、基板の設計などがGitHub上でMITライセンスで公開されています。 オープンソースなハードウェアというのも面白いです。
ビルドログ
作者の方がビルドガイドを公開してくれています。ですので、こちらに沿って作業をしていきます。 ちなみに、私は今回Gateronのクリア軸を選択してみました。さらさらと入力できるのが好きなので。 サイレント軸にも興味はあるのですが、今回は実際にスプリット型のキーボードを早く触ってみたいというのが勝ちました。キーキャップについては後述します。 ツイートに都度、写真をアップしていたので組み立ては画像でお楽しみください(時々取り忘れてるけどw)。
— Jun Ohtani (@johtani) October 21, 2020
刺して曲げる pic.twitter.com/M0jfQJg2k8
— Jun Ohtani (@johtani) October 22, 2020
両方できたと。ハンダまでやって今日はおしまいにすっか pic.twitter.com/HgsSrxqpcg
— Jun Ohtani (@johtani) October 22, 2020
写真取り忘れたけど、ProMicroつけた pic.twitter.com/RS4z0lqsUZ
— Jun Ohtani (@johtani) October 22, 2020
OLEDもついたと。今日はここまで pic.twitter.com/p6Z8MMP0Xz
— Jun Ohtani (@johtani) October 22, 2020
ここまでは順調です。
OLEDがつかない?
ビルドガイドに従って、この後キースイッチをつけちゃうと問題の切り分けが難しくなるということで、 ここまでの段階でQMK Toolboxを使ってProMicroにファームウェアを書き込んで、それぞれのキーのソケットの取り付け部をピンセットでショートさせつつ、キーが入力されるかどうかを見ていきます。 QMK Toolboxについてはサリチル酸さんのブログがわかりやすいので参考にさせていただきました(わかりやすい記事をありがとうございます)。 で、ビルドガイドにあるように動いてるかを確認しようとしたのですが。。。
さて、ファームウェア書き込んだけど、OLEDがつかないな。どっかつながってないのか?
— Jun Ohtani (@johtani) October 24, 2020
ビルドガイドのようにはいかず。。。 USBでPCとつないだ状態で、QMK Configuratorをサイトで開いて、キーボード入力テストを開くと、ショートさせたキーがPC側で認識されているかのテストができます。 これで、一通りキーは認識できていそうだというのはピンセットでショートさせながら確認しました。 ただ、OLEDには何も表示されないんです。。。
前回Dozen0を組み立てた時に、ソケットのはんだ付けが甘かったというのもあったので、 OLEDやソケットのはんだを温めなおしたりしてみて、何度か確認してみたものの特に進展がなしです。 (ちなみにうまくいかないのもあって、ぼけたツイートしたりもしてます。)
まぁ、OLEDはビルドガイドを見てもオプション扱いなので、それよりも触ってみたい衝動に駆られて、 キースイッチをはんだ付けしていきます。
ちなみに昨晩、OLEDはとりあえず置いといてって感じでキースイッチつけてた。キーキャップはまだない pic.twitter.com/SzLmzNg60Y
— Jun Ohtani (@johtani) October 26, 2020
それも終わって、問題点の切り分けに何かできないかな?と思ってやったのがOLED単体でArduinoと接続してみて動くかどうかです。 Qiitaにちょうどいい感じの記事を見つけたのでこれまた参考にさせていただきました(4本のジャンパー線を一人で持ちながら確認するの大変だったw)。
はんだでの修正にしっぱい
で、自分の中での結論として、「OLEDソケットのはんだ付けが怪しい」となりました。 そこで、まずは外してみようかと思ったのが間違いでした。 はんだごてとはんだ吸い取り線で何とか外せるだろうと思っちゃったんですよ。 OLEDピンソケットは足が4本あって、とりあえずとれるところまではんだ吸い取り線で吸い取ってみましたが、 さすがに基盤の穴に流れ込んだはんだまでは吸い取れず、頑張って温めながらソケットを抜こうとがんばって、 ラジオペンチでピンソケットを引っ張りながら引き抜きました。かろうじて引き抜きはできたのですが、ソケットは足が折れてしまいました。
作者登場(OLED問題の解決)
そんなところにCorneの作者の方がツイートを拾ってくれたみたいで以下のような返信を頂きました。
OLEDが点かないのはファームのせいかもしれません(最近以前のファームで動かない新しいタイプのOLEDモジュールが出回るようになりました)。お手数ですが、https://t.co/vfSBfIeeJX のブランチのものを試して頂けますか?(ただいまPRレビュー中でまだマージされていない状態です)
— foostan (@foostan) October 25, 2020
暗闇に光明とはこのことです。 教えていただいたブランチを手元でビルドしてファームウェアを書き込むと、
すごい、出ました!右側のディスプレイにロゴが。ありがとうございます(左側のOLEDはソケットのはんだ付け直し失敗したのでもうちょっと先になりますが)!
— Jun Ohtani (@johtani) October 26, 2020
なんと、ファームウェア書き込んだ瞬間にOLEDが点くじゃないですか。 感謝感激ってやつです。お礼を言うのに便乗してOLEDの問題の切り分けの方法についても聞いてしまいました。
OLEDリベンジ
片側は無事だったのですが、もう一方は修復が困難になったので救世主を発注します。 自作キーボードの作成に便利なものリストとして、いくつかのブログに上がっていたのですが、必要ないだろうと見送っていたツールです。
本当にすごく使いやすかったです。 OLEDのピンソケットが修復不可能だったのですが、ProMicro用に付属して余っているピンヘッダがちょうどいい長さでした。 なので、これを4本分切り取り、OLEDモジュールにつけてしまったOLEDヘッダピンを抜き取って、代わりに切り取ったピンヘッダをつかって、OLEDと基盤を直接はんだ付けすれば修復できそうだと判断しました。
はんだシュッ太郎君を使ってOLEDについてるヘッダピンをまずは除去。 そのあとはこんな感じで繋げました。
見にくいかもだけど pic.twitter.com/YAHoxjgppN
— Jun Ohtani (@johtani) November 5, 2020
取り外しにくくはなったけど、無事両方のOLEDが点くのも確認できました。やったー。
ヤッター、両方のOLEDがついたよー pic.twitter.com/6KLDWvnaEC
— Jun Ohtani (@johtani) October 28, 2020
キースイッチがご機嫌斜め
キーキャップは別途、AliExpressで発注をかけたのですが、ここまで来たら待ちきれないですよね? ということで、手元にあった上海問屋のキーボードのキーキャップが同じMXキースイッチ用のものだったので移植しました。キーキャップ付けてみないとわかならいものですね、1つだけキースイッチがうまくはまっておらず、斜めについているのがこの時点で判明しました(ボトムプレート付けた後だったので、プレート外してから、はんだで修正)。
ちなみにキーキャップはめてる途中で、一箇所キースイッチが斜めにはんだ付けされちゃってるのを発見して慌てて直しました。 pic.twitter.com/qofHp3o4Pc
— Jun Ohtani (@johtani) October 30, 2020
無事使えるようになりました。
アンスコが打てない&Escどこ?
キーキャップ付けたので仮運用ということで、まずはデフォルトのキーマップをもとにどんな感じで入力できるのかを試してみました。 ここにも罠がw ブラウザでQMK Configuratorを開いてデフォルトのキーマップを確認しながら試し打ちをしていたのですが、どうも思ったのと違う動きをしているキーが。
まずBASEレイヤー(レイヤー0)の右側のシフトと、LOWERレイヤーやRAISEレイヤーのEscです。
入力しているとどうも、右のシフトがEscで、レイヤーを切り替えてもTabのままだなと。
しょうがないので、OLEDが出なくてもいいのでQMK Toolboxでダウンロードしてきたものを利用したら想定通りなのにと。
きちんとqmk_firmwareの構成を理解しないままやってたつけでしたね。
結論としては、OLED用に教えてもらったブランチではキーマップが書き換わっていたようでした。
make crkbd:defaut
でビルドした時に利用されるkeymap.cがキーマップの定義が書いてあるファイルです。
qmk/qmk_firmwareのリポジトリにあるkeymap.cとfoostanさんにもらったブランチでは差分があったみたいでした。
おかげで、qmk_firmwareのkeymap.cの仕組みがわかったし結果オーライです。 問題があって調べるとどんな作りになってるかとかちゃんと確認できますしね。 手順通りにやってるだけで問題が起きないと、どんな仕組みになってるのかがわからないので人に聞きまくるしかできなくなっちゃいますしね。
これでEsc問題は解決したのですが、アンスコがどうしても入力できません。 自作キーボード以外はすべて日本語配列のキーボードを使用しているのもあり、 日本語配列のキーボードだとどうもキーのマッピングが異なるようだと。
ググって参考にしたのはこの辺でした。
そのほかにもVIAのファームなども試したのですが、どれもうまくいかず。 色々ググってみて最終的な解決策はkeymap.cでkeymap_jp.hというファイルが読み込まれていないので、日本語用の設定とかを読み込んでみたつもりがうまく反映されていないという感じでした。
JISにする場合、keymap_jp.hっていうヘッダファイル読み込んだほうがいいです
— Yoshi Yamaguchi (@ymotongpoo) November 3, 2020
今の時点ではこんなキーマップにしてあります。 今後も日本語配列のキーボードをベースに考えていくつもりです。
#include QMK_KEYBOARD_H
#include "keymap_jp.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x6_3( \
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_MINS,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, KC_QUOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT
//`--------------------------' `--------------------------'
),
[1] = LAYOUT_split_3x6_3( \
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, _______, KC_SPC, KC_ENT, MO(3), KC_RALT\
//`--------------------------' `--------------------------'
),
[2] = LAYOUT_split_3x6_3( \
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_TAB, JP_EXLM, JP_DQUO, JP_HASH, JP_DLR, JP_PERC, JP_AMPR, JP_QUOT, JP_LPRN, JP_RPRN, JP_CIRC, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_MINS, JP_EQL, JP_LBRC, JP_RBRC, JP_YEN, JP_AT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_UNDS, JP_PLUS, JP_LCBR, JP_RCBR, JP_PIPE, JP_TILD,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT
//`--------------------------' `--------------------------'
),
[3] = LAYOUT_split_3x6_3( \
//,-----------------------------------------------------. ,-----------------------------------------------------.
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT\
//`--------------------------' `--------------------------'
)
};
キーキャップが待ちきれなくて
この右下のトンガリがちょっと気になる pic.twitter.com/W0A0z67cns
— Jun Ohtani (@johtani) October 30, 2020
キーキャップが待ちきれなくて上海問屋のキーキャップを付けてみて、いろいろ試行錯誤してみました。
あー。上下関係ないのか。だからみんなこんな感じにしてるのか? pic.twitter.com/KTBlPLespr
— Jun Ohtani (@johtani) October 30, 2020
どのくらい離すのが良いか実験中 pic.twitter.com/ozK4WyBXY8
— Jun Ohtani (@johtani) November 2, 2020
キーキャップもいろいろあるのね
届いた。 pic.twitter.com/jccNW1ZcEM
— Jun Ohtani (@johtani) November 2, 2020
もう一個 pic.twitter.com/9y6qat4JiN
— Jun Ohtani (@johtani) November 2, 2020
とりあえずセミコロンの位置につけてみた。 pic.twitter.com/TDk5213IHi
— Jun Ohtani (@johtani) November 3, 2020
今はこのDSAプロファイルの青いグラデーションのキーキャップを使っています(Dukeはここにはいないですw)。 キーキャップのプロファイルはこれまた、サリチル酸さんのブログがわかりやすく書かれています(ほんとすごいなぁ。)。
高さ調節
そのまま使っていたのですが、やはりもうちょっと奥側に高さがほしいなと。 ダイソーなどで打っているケーブルクリップがお試しには良さそうだったのでこんな感じで内側がちょっとだけ高くなるような感じにして使っています。
こうなった。とりあえず仮運用 pic.twitter.com/VkhjawdhLM
— Jun Ohtani (@johtani) November 4, 2020
まとめ
ということで、駆け足ですがCorne Light v2のビルドログでした。 いきなりフルキーボードから40%キーボードかつ異なる並びにしたので、 混乱しっぱなしですが、いい頭の運動になっているし、なにより作って動かすまでの間に いろいろと調べたり試行錯誤できたのがすごく楽しかったです。
あとは、スプリット型+Column Staggeredになったので「c」や「b」を間違えまくっていますが、 いい気付きでした。まだまだ記号とかの入力に慣れていないですが、ちょっとずつ身に着けていけたらなと。
ただ、もう次のキーボードをDIYしたい気持ちも出てきているので困っているところです。
書ききれてないこともあるかと思うので、ここはどうしてるの?これはどうやったの?などあれば、Tweetなりコメントなりを頂けたらなと思います。いやぁ、DIYキーボード楽しいわ。
comments powered by Disqus
See Also by Hugo
- Corne Chocolateを組み立てた #DIYキーボード
- Dozen0を作成した #DIYキーボード
- Sofle v2を組み立てて、BLE+LPME-IO化してみた #DIYキーボード
- 今年のDIYキーボードとコントローラーラック
- Lunakey Miniを組み立てて、BLE+LPME-IO化してみた #DIYキーボード