ぽよメモ

ファッション情報学徒の備忘録.

自作キーボードに手を出した

沼だってわかってはいたんだ……

f:id:pudding_info:20181008005134j:plain

最高に可愛い

きっかけ

Twitterを眺めてたらMint60っていうキーボードの予約が始まったっていうツイートが流れてきたのでちょっとググってみた.

eucalyn.hatenadiary.jp

なにこれ可愛いインターン終わりの夜で疲れ果てていたので記憶が曖昧なのだけれど,気が付くとご予約完了のメールが届いていたのだ…

到着〜組み立て

参考までに今回の発注は下記の様な内容でした.

  • スターターセット
    • アクリルカバー:マットクリア
    • 軸:Gateron Silent Red
    • キーキャップ:ABS Cubic

公式のブログが非常に丁寧なこと,他の方のブログでも紹介されていることからここは割愛します*1

eucalyn.hatenadiary.jp

syonx.hatenablog.com

以下自分のツイートから抜粋.

個人的注意点

ほとんどの部分ではつまずくことは無かったし,半田付けを日常的にやっているわけではない身でもそれほど難易度が高いとは感じませんでした.ゆかり屋さんに感謝.

テープLED

Mint60では裏面にテープLEDがついており,いろいろな色やパターンで光らせることが出来ます.大変かわいらしい

ただこれを貼る列(左シフト〜Bのある列とN〜Enter下の初期ではFnになっているキーの列)の半田付け後の突き出たピンと干渉することがあるようです.これは公式にも書いてあり,この部分の突き出たピンをしっかり切るよう注意書きがされています.実際に手元でその列だけ死ぬという事案があり,確かめてみたところテープLEDを離すと正常に動作しました.

最初はテープLEDの裏紙を剥がして普通にくっつけていたのですが,どうも不安定になってしまうため,裏紙を貼り直しました.アクリルボードと基板の間で挟まれているため張り付いている必要は無いと判断してこうしたのですが,もう少し安全にしたいなら絶縁テープ等を咬ますべきでしょう.

また,そもそも最初からここはピンを切り詰める等しないとテープLED挟んだときに厚みが出過ぎてアクリルボードが少し反るようです*2

スタビライザー

eucalyn.hatenadiary.jp

公式に組み立て方が載っています.「金属のパーツを固定する爪を持っている樹脂パーツ」と,「そうではない小さい方のパーツ」を組み合わせるときは底面に切り欠きがあるためそれが合うようにしないといけません.写真が無くて申し訳ないのですが一回失敗してしまい折れそうになりながら外しました.

また,右側キーボードの最下段のShiftキーの位置は3箇所から選べるのですが,このとき最も右側に寄せてスタビライザーを付けると,残り二つのキーはスイッチを通常と逆向きに付ける必要があります.これは基板を見ると分かるのですが,みんなSpaceキーを分割した形を好むのかあまり作例が無く戸惑ってしまいました.自分を信じて半田付け.

ファームウェアをカスタム

せっかくProMicroが載った自作キーボードを手に入れたのだから配列を自分好みにしないともったいない!というわけで自分でファームウェアをカスタムします.

環境は以下

  • MacBook Pro 2017 (Touch Bar有り)
  • Homebrew 1.7.6
  • Docker for Mac 18.06.1-ce, build e68fc7a
  • avrdude 6.3

カスタマイズ

Mint60で初めてキーカスタマイズに手を出すみたいな人が居るのかはわからないのですが下記によくまとまっていました.ただリポジトリが移転してたり2年前の記事であることから結局公式ドキュメントなどを参考にすることも多かったです.

キーコードまとめ :: ErgoDox | Refills

基本的にはデフォルトのキーを入れ替える程度かとは思いますが, LT()ALT_T()CTL_T()などのような単押しと長押しで異なるキーを使用する設定を使う場合,僕はデフォルトの設定ではかなりタップの時間が厳しく,思っていたような動作が出来ませんでしたので対抗策を紹介します.

qiita.com

keyboards/mint60/keymaps/YOUR_KEYMAP_NAME/config.hを編集します.

// 長押しと判定するまでの時間(ms).デフォルトは200.
#undef TAPPING_TERM
#define TAPPING_TERM 200

// 他のキーを押さなければ長押し判定になるタイミングでも単押しにする
#define RETRO_TAPPING

// 単押し判定のタイミングでも他のキーを一緒に押したら長押し判定にする
#define PERMISSIVE_HOLD

このあたりは打ってみて気に食わないとか誤動作する等あれば良い感じにすればいと思います.

ビルド

できるだけ環境依存を減らしたいので,Dockerコンテナでビルドします.

docs.qmk.fm

上記公式ドキュメントにありますが,やり方は以下の通りです.YOUR_KEYMAP_NAMEを自分のカスタムした名前に読み替えてください.

$ KEYMAP_NAME=YOUR_KEYMAP_NAME
$ git clone https://github.com/qmk/qmk_firmware
$ cd qmk_firmware
$ cp -r keyboards/mint60/keymaps/default keyboards/mint60/keymaps/$KEYMAP_NAME
# 編集する
$ vim keyboards/mint60/keymaps/$KEYMAP_NAME/keymap.c
$ docker run --rm -e keymap=$KEYMAP_NAME -e keyboard=mint60 -v $PWD:/qmk edasque/qmk_firmware

これで.build以下にmint60_YOUR_KEYMAP_NAME.hexというファイルが出来ます.

僕はqmk_firmwareをフォークしましたがこれは好みかと思います.またビルド時にそれなりに時間がかかるため,ちゃんと完了するまで待ちましょう

フラッシュ

buty4649.hatenablog.com

ビルドした.hexファイルを書き込みます.上記ブログを参考に,Dockerコンテナではできないそうなので*3avrdudeをインストールする

$ brew install avrdude

後は

  1. キーボードをUSBでPCと接続
  2. 裏面のリセットボタンを押す
  3. 7秒以内に下記コマンドを実行する
$ sudo avrdude -p atmega32u4 -c avr109 -P /dev/tty.usbmodem* -U flash:w:.build/mint60_$KEYMAP_NAME.hex

左右どちらも書き込めば完了です.

個人的に微妙な点

不満が全くないわけではないのでいくつか書きます.

スタビライザー

せっかくGateron Silent Redで通常のキーは静かなのにスタビライザーを使用しているキーではかなりカチャカチャ言います. またこれは個体差なのでしょうがたまたまEnterに使っているスタビライザーがちょっと擦れるキーキー言う音が鳴ってしまいます.そのうち潤滑油を塗ろうかな…

自作キーボードには詳しくないのですが,静かなスタビライザーというものは金を積むだけで手に入る物なんでしょうか?買えるなら欲しい…

バックスペースの位置

矢印キーがあるのは望んでいる人も多いので構わないのですが,普段HHKBを使っていた身からするとバックスペースの位置が遠いです. 親指で押せる位置に単押しバックスペースを配置していますが,今度は左上がバッククォートなのが気になってきます,右上のキーを1u二つにしてバックスラッシュとバッククォートを割り当て,バックスペースを一つ下に持ってこれると個人的には完璧だったなぁと.HHKBに慣れすぎて指がバグっているだけという気がしています.

左サイドの最下段キーの配置

右側では長いキーの位置を選択できたのに対して左では選べません.ここも親指をもうちょっと多用できると良かったなぁと思います.ただの好みという気はしますし,あんまりやる人も居なさそうです.

まとめ

機能性だけでなく見た目に大きく惹かれたため,綺麗に出来上がって大変満足です.ゆかりさんに感謝…!

身の回りでもこれを期にやってみたいみたいな声はいくつか聞こえているので再販是非頑張って頂きたい… 個人的にも今回買ったのは研究室用だったので家用にもう一台欲しい気持ちはあります.よろしくおねがいします!!!

HHKB用のパームレストが良い感じの長さなのでこれをぶった切れば…とか考えています.自作界隈の方々はパームレストどうしてるのでしょう.

f:id:pudding_info:20181008005018j:plain

*1:気が付くと手元でほとんど組み上がっていたので写真がほとんど無いなんて言えない……

*2:これは僕の半田付けが悪い可能性が高い.

*3:ほんまか?特に何もしなくてもリセット押すと/dev/tty.usbmodemXXXXXは生えた気がするのでコンテナにavrdudeをインストールして権限付けて/dev以下をマウントするだけではダメなん?という気がしている.avrdudeをインストールした後にアンインストールして試しただけなので依存関係でなにかインストールされていないといけないといういオチかもしれない…気が向いたら試す.