前編はこちら
ある午後のこと。
注文していたパーツが、中国の関税を無事通過したらしいという知らせを横目に、僕はClojureとYAMLで書かれた「The DMOTE」のソースをぼーっと眺めていました。
すると、意味不明だったその文字列の先に、うすぼんやりと、なにか意味めいたものが浮かび上がってくるのでした。
キーキャップ削らなくていいみたい
さて、前回の記事でキーキャップ削りの苦行の道へと見を投じる覚悟をしましたが、default.yamlをよく見ると、なにやらkey-styleにDSA以外の2種類のキープロファイルが定義されてるようです。(というか先頭にコメント付きで書いてあった…これが苦手意識バイアスか)
minimal-short
- キートップが薄いくて小さいキーキャップ
minimal-tall
- キートップが厚めの小さいキーキャップ
SCADで開いてみたところ
ミニマルという名の通り、ちょっと小さめのキーなので、DSAプロファイルのキーが干渉していたのは完全にこれが原因です。
makeする時にそれぞれscadファイルが吐かれているので、ピッチが狭い部分はこれをプリントして使えという事だったようです。
ということは、逆に全部DSAにしたいときは、これらを全部maquette-dsa
に変更すれば良いってこと?
defaultの設定をカスタマイズしてみる
仕様をカスタマイズするには、optディレクトリの下にyamlファイルを作って、カスタムしたい部分の設定を書いていきます。
今回はdefaultをもとにするので、default.yamlをコピーして編集します。名前はmydmote.yamlとでもしておきましょう。
あわせてmakefileにも、カスタム設定の指定を追加してあげれば
mydmote: target/dmote.jar java -jar target/dmote.jar -c resources/opt/mydmote.yaml
こんなコマンドでmakeできるようになります。
make mydmote
で、さっきのkey-styleを書き換えてmakeしてみました。
干渉するのはまた別の話だった
さて、キープロファイルはDSAになったようですが、よく見てみるとキーの干渉は全然治っていません。キーの並びの調整はまた別の設定だったようです。
とはいえこっちは”YAML完全に理解した”身、その程度のことは恐るるに足りません。
どうやらキーの間隔には、separation:
という項目が関係しているようなので、次のように編集してみました。
separation:
のrow:
がマイナスの値になっていたところを全部0にしてみたcolumns:
の"0":
のseparation:
にcolumn: 1.2
を追加してみた- 同じく
"1":
のseparation:
にcolumn: 0.5
を追加してみた
これでどうか!
MXスイッチ化にもリベンジ
YAMLへの苦手意識を克服した勢いで、前編で挫折したMX化もリベンジしてみましょう。
ふたたびdefault.yamlを眺めていると、なんだかstyle:
と同じ階層にswitch-type: mx
を突っ込めばいいような気がしてきました。
こうすればいいのかな?
keys: styles: maquette-dsa: # A non-printable preview of a DSA profile key. style: maquette switch-type: mx #これを追加 skirt-length: 4.6 top-size: [12.7, 12.7, 3.3]
makeしてみると…
MXスイッチ固定用のツメもちゃんと生えています、よくできてる! なるほど、わかってしまえば簡単な事ですね。
ついでにBlenderでレンダリング
そうして書き出したstlを、Blenderに突っ込んでレンダリングしたのが冒頭の画像です。
蛇足ですが、Blenderはv2.8でUIがめちゃくちゃ使いやすくなってて、レンダリングもEEVEE(2.8から搭載された物理ベースのレンダラー)使うと爆速なので、こういうとき気軽にフォトリアルなプレビューができて最高です。
あ、デフォルトの単位がメートルなので、うっかり設定変えないでミリメートル単位のCADデータつっこむと、寸法が1,000倍されてしまいます。 気をつけて。
そんなことをやっているうちに、無事にスイッチとキーキャップも届いたので、次回はいよいよ完成編! になるといいなぁ。