taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

Ergo42が遂に組みあがりました

承前↓

taiyoh.hatenablog.com

問題点の絞り込みと対処法について

twitterに細かく情報をのっけて行く形だとちょっとあれだな、と思ったので、一旦ブログに現状をまとめてみたところ、作者のBiaccoさんに読んでいただくことができました。

実際のワイヤリングはどのようにやったか

f:id:sun-basix:20180727171857j:plain

当初はこのようなワイヤリングで導通させていましたが、いざケースのネジを締めて少し使ってみると、部分的にスイッチの半田が圧迫されるのか、キーが効かなくなってしまいました。 あれこれ考えて、もっと簡素化できる方法を思いついたので、バージョン2のワイヤリングをやってみました。

f:id:sun-basix:20180727172202j:plain

これなら圧迫もなく、無事に全部のキー入力が確認できました!因みにこの黄色いワイヤは、元々はブレッドボード用の硬いジャンパーワイヤですね。持っててよかった。

akizukidenshi.com

そして。。。

慣れないながらもちゃんと打つことができて、感動ですね。。。

キーマップについて

デフォルトのキーマップは、初めて分割キーボードに手を出した自分にとっては結構使いやすかったです。
でもやっぱり、自作キーボードに手を出した以上はもっと自分の好みを反映したいな、と思ったので、以下のキーマップを作成しました。

gist957d0e08b81c69d0c1cdda621f7debc4

当初は7列をフルに使うことを想定していて、妄想ではこういうキーマップを当初想定していました

f:id:sun-basix:20180727211141p:plain

が、いざこれを書き出して打ってみると、1列目と7列目のキーを押すのはだいぶしんどいと気づき、あえなく撃沈。
しばらく色々試していて見えてきたのは、特に僕の場合、意識せずに伸ばせる指の範囲は6列分までだということでした。
これを踏まえ、以下のようなルールを作ってみました

  • Tab, Ctrl, Shiftは内側に、そして左側に1つずつあればいい
  • ESC, LGUIは使用頻度が低いか、Tab, Ctrlとの組み合わせで使うことが圧倒的に多いので外側でいい
  • Dvorak配列も試してみたいので、Dvorakで明確に配置されているキーは必ず上3行の中に収める
  • META / SYMBで記号が打てならそちらに任せる
    • 無理にデフォルトキーマップの全キーを埋める必要はないだろう
  • 矢印キーはvimキーバインドに倣って「←↓↑→」の並びに
  • 手首に近いところにはよく使うキーは配置しない

これらを実際の配列に落とし込んだのが上記のキーマップです。
backspaceを右手親指で扱うというのはだいぶイレギュラーかも。でもまあ、しばらく使っていたら段々慣れつつあります。

qwertydvorakを共存させるにあたり、2点ほど気を付けたことがあります。

  • META / SYMBよりレイヤ番号を低くする
  • config.h#define PREVENT_STUCK_MODIFIERS をつける

hrhg.hatenablog.com

の記事より、定数を定義しておくことでmodifierキーのロックを防ぐことができます。また、dvorakのレイヤ番号をqwertyを配置しているdefault layerの次に低くしておくことで、default layerのキーを引き継げるだけでなく、上のレイヤのキーを利用することができます。なお、上記キーマップではqwertydvorakへの変換ですが、dvorakqwertyに戻す際は、METAからソフトウェアリセットをかければいいようにしています。

ファームウェアへの書き込みについて

自作キーボードを組み立ててる方々はMac使いが多く、Windowsでの情報が少ないように感じたので、自分のやったことと所感を載せておきます。
始めに書いておくと、僕はWSL(Windows Subsystem for Linux)とqmk toolboxを併用しています。
なぜMingwでの環境構築がおススメされているかというと、makeコマンド一発で(make ergo42/rev1:<keymap>:avrdude と入力すれば)ファームウェアへの書き込みまで行うことができるからです。
ただ、僕は諸々の開発環境をWSL上で既に作ってしまっているので、今更Mingwで環境を作り直すのが面倒くさく、こういう方式を採ることにしました。
その場合、 make ergo42/rev1:<keymap> とmakeの引数を調整すれば、WSL内でビルドまではやってくれます。あとはqmk toolboxでのhexファイルの読み込み先をビルド先に指定すればよいです。

最後に

特に僕みたいに初めてまともな電子工作をする人にとって、既製品を買うのに比べてだいぶお金も労力もかかってしまうのは間違いないです。
が、作りきった時の達成感は尋常じゃないですし、自分にとって必要なものだけがまとまっているキーボードというのは格別ですね。
因みにこのエントリは当然ながら、Ergo42+上記の自前キーマップで書いております。書いてるうちに少しずつキー入力の速度が上がってるのがなんか面白い。
いやそれにしても、キースイッチの押し心地はいいし、キーキャップの色は自分で好きなように変えられるし、配列に不満があれば変えればいいし、分割キーボードは肩回りの負担が確かに少ないし、これはちょっとハマりそうですね。。。!