t-miyajima blog

直したり、作ったりが好きです。

文章をストレスなく打てる理想の自作キーボード Dobrock69 を作っている話<Dovrak配列>

こんばんは、最近キーボード作成に追われて、てんてこ舞いなt-miyajimaです。

今回はタイトルにあるDobrock69という自作キーボードのお話です。

 

「手動目次」

  1. 経緯 (現在使っている自作キーボードDombrick60dへの不満)
  2. 目標
  3. キーマップ
  4. 名前
  5. 設計・実装
  6. 自己評価
  7. 文章をストレスなく打てるってどういうこと???

 ※Dobrock69キーボードのデータはGithubに全て置いてあります。

github.com

1.経緯

2020年の1月2月で作った完全に自分のためだけのDombrick60dという自作キーボードですが、適当に作った割にはかなり使いやすく、それほど不満があったわけではありません。

しかし、親指にエンターキーを割り当てたあたりから、不満が出てきました。

  • 親指キーが2つ(右1つ、左1つ)しかないので、スペースキー・エンターキー・レイヤーキーを割り当てようとすると、重複する。
  • 上記の重複にイラッとしてくると、なんか左手小指のTABがなんだか遠い気がする。
  • 右手でしかBackspaceが打てないので、文字を消すときは右手のマウスから手を離すけれど、それが面倒くさい。

現在のキーボードに不満が出てきたら改善したくなるのが自作キーボード製作者というものです。

2.目標

遊舎工房様で委託販売を開始したChavdai40%のキットを作りつつ、以下の目標でなんとなく次回作の制作に取り掛かりました。

  • Dombrick60dを分割したい → なんとなく次は分割と思っていた
  • 超重厚なキーボードにしたい → 重量信者
  • 左右をつなぐケーブルは全結線にしたい → 人と違うことがやりたい
  • 超静音にしたい → 静音大好き
  • 金属の光沢が欲しい → 今度こそ高級っぽい見た目にしたい

要は、理想を全て詰め込みたいなぁ、ということですね。

しかし、理想を詰め込もうとすると苦戦するのはいつの時代も同じ。

苦労する設計は後回しにして、大好きなキーマップ作成をはじめました。

3.キーマップ

僕はキーマップ作るのが大好きなので、キーマップ作っているとあっという間に時間が過ぎていきます。

なので、ある程度のところでストップしないとなのですが、理想を詰め込もうとしていたので結構時間がかかってしまいました。

最終的に以下のキーマップに決定しました。

f:id:dvorak55:20201017221845p:plain

※普通の人はこれを見て違和感をおぼえると思いますが、僕の使っているDombrick60dは40%配列+最下段に一行追加したキーマップなので、数字キーがないくせに5行あります。変でしょ笑

これはDombrick60dのキーマップをベースに、以下の変更を加えたものです。

  • とりあえず分割した
  • Alice配列風にした (角度が15度で本家より斜め)
  • BSとTabを人差し指で打てる場所に追加した
  • 親指をちょっと開くだけで打てる位置にエンターキーを追加した
  • なんか空いてると寂しいのでBキーの左にキーを追加した
  • 形を左右対称にしたいがために左手にもPageUp・PageDown・Insert・Home・Delete・Endキー等を追加した
  • Dombrick60dに搭載した10個のChocキーは10個もいらないので6個に減らした(上記画像のChocと記載のあるキー)

これらの変更には以下の意図があります。

  • Enter打つときに手首を外に曲げるのが案外辛いので、Alice配列風にすれば辛くないのではないか
  • そもそもEnterキーは親指で打てると良い。しかし親指を開くと斜めに動くので、親指キーはSpaceの隣ではダメ。となると一段下に設置するほうが良いのではないか
  • 分割してTRRSで繋ぐとMCUもう一つ搭載しなきゃだから面倒。いっそのこと全部結線してしまったほうが楽なのではないか
  • 左右の外形を対称にすればプレートの種類が減って安上がりなのではないか(後にプレートの種類は減らないことに気づいてしまったので、単純に左右対称のほうが格好いいということにしたくなっている)
  • 左右両方でBackspaceやEnter、TabやPageUp・PageDownが打てればどちらの手でもパソコンがいじれて楽なのではないか
  • 左右にキーを重複して搭載させて、使わなければ他のキーに割り当てたり、次回作で削ればいいので、キー数をちょっと多めにしても家で使う分には良さげ

ちなみに、Keyboard Layout Editorでどうやって左右対称のキーマップを作ったかと言うと、もちろん、根性で左右対称にしました。

  1. 左右のスクリーンショット撮る
  2. Pagesにスクリーンショット貼り付けて半透明にする
  3. 左右を重ねて比較する
  4. 修正してまた比較する

結構辛かったので次はもっと楽にやりたい……。

4.名前

僕にとって、名前はこだわりたい点の一つです。

なので、いつもかなり悩むんですけれど、今回はTwitterでのとあるやり取りからすぐに決定しました。感謝……!

どぶろくを格好良くDobrockと表記して、Dovorak Oriented Bunkatsu Rock'n'roll Keyboardの略としました。そしてキー数の69をつけて、こちらもロックと読めるからなんか面白いなぁという感じです。

どぶろくでロックなキーボードって意味不明ですけどね笑

5.設計・実装

前回とは異なり、今回のキーボードには理想をたくさん詰め込んだので、設計・実装には大変苦労しました。

5−1.理想を実現するための作業その1 PCBとプレートの積層方法の検討

初号機のDombrick45から最新作のChavdai40%まで、すべてネジを一切使っていないので、今回も同じ様にネジを使わず理想を実現したい。

かつ、重いキーボードを作りたい。

その2点から、最初はChavdai40%のPCB2枚積層構造に加えて更にステンレスプレートを接着積層し、3層または4層にするのはどうだろうかと悩み始めました。

しかし、それはダメでした。

色々と理由はあるのですが、具体的には2点。

 1つは、見た目がチープになりそう

 もう1つは、打った感じがChavdai40%の延長線上になりそう

そこで別の構造を考えるわけですが、これまでマウント方式を独自にしか考えていなかった僕には荷が重い。

色々悩んだ結果、いわゆるマジックテープ(クラレの商標)素材をPCBの上下に配置し、それを更にステンレスプレートで挟むサンドイッチ構造を採用することにしました。

 ※ちなみにこの構造を決定するまでに、かなり紆余曲折あり案外辛かったです笑

Discordにも投稿したのですが、このようなサンドイッチになります。

f:id:dvorak55:20201111214721j:plain

……えっと、ネジ、使います汗

ネジを使うと、将来的にケースを作ろうとした時にネジでPCBとクッション素材をサンドイッチできるので、非常に汎用性があって便利なんです!

この積層構造に決定した理由は以下のような感じです

  1. 打鍵した際に、PCBが少したわむので底打ちが柔らかくなるはず
  2. 上下のプレートに面ファスナーとメカニカルファスナーが押さえつけられているため、PCBの不快な振動を抑えられるはず
  3. トッププレートとPCBをくっつけているメカニカルファスナーがPCBのズレを防止し、スイッチがトッププレートに接触するのを防いでくれるはず
  4. PCBに流れる電流をメカニカルファスナーと面ファスナーが絶縁してくれるはず

この構造のポイントはトッププレートとスイッチが接触しているとダメ、という点です。

なぜかと言うと、トッププレートにスイッチが接触すると、打鍵時の力がPCBではなくトッププレートに伝わり、底打ちが固くなってしまったり、打鍵時の音が固くなってしまったりと、色々意図しない問題が発生する気がするからです。(実際はどうなのかはやっていないのでわからないのですが)

5−2.理想を実現するための作業その2 PCBの厚み検討

普通自作キーボードのPCBの厚みは1.6mmですが、今回は0.8mmにしました。

理由は、その方が底打ちの衝撃が和らぐ(と思う)から。

しかし、0.8mmのPCBを採用するためには以下の課題がありました。

  • PCBマウント方式のスタビライザーがきちんと固定されずに緩くなる
  • PCBソケットをPCBに挿すと、足が出っ張ってしまう

特に、PCBソケットでスイッチを挿そうと思っていたので、ソケットの問題はヤバいなと思いました。

僕は問題を回避するため、ソケットじゃなくてPCB直挿しでいいよね、そのほうが楽でいいよね、と思うことにしました。(これが後に辛い作業の原因となる)

課題が無くなったところで、PCBの設計に着手し、ある程度完成しました。

5−3.理想を実現するための作業その3 トッププレートの設計

トッププレートは、一般的な自作キーボードであればキースイッチをはめるためのプレートですが、Dobrock69ではキースイッチには触れずにメカニカルファスナーとPCBを上から押さえるためのプレートです。

つまり、14mm四方の穴ではダメで、もう少しだけ大きな穴を採用します。

……ただ、あまりに大きい穴になると隙間ができてダサいので、大きいのはほんの少しだけです。

あれこれ考えてプレートの穴のサイズを決め、KiCADでプレートを作成していたところで、僕は一つの問題に気づきました。

Dobrock69のトッププレートの穴に、キースイッチは通りません。

ということは、キースイッチをはんだ付けしてしまうと、もうプレートは取り外しできません。

これは一発勝負!?

いやいや、ミスを修正できなくなるのは流石にまずい。厳密にはキースイッチの半田を全て取り除けばプレートを取り外せますが、それは凄く辛い。

暫く悩んだ挙げ句、やっぱりPCBソケットに対応しようと考えを改めました。

そして、配線や部品配置がほぼ完成していたPCBをソケットに対応するための大修正作業が始まりました笑。

5−4.理想を実現するための作業その4 特殊なパーツ制作

PCBソケットは1.6mmの厚みの基板にはまるようにできているので,0.8mm基板だと2枚重ねないとはまりません。

なので、スイッチの底面と同じサイズのパーツを0.8mm基板で作り、それを全てのソケットに付けることにしました。

どうせスタビライザーにも似たような部品が必要でしたので、部品が1種類増えるくらい大した手間でもないのです。

嘘です、結構な手間でした。

ちなみに、これらのパーツは1.2mmで発注してしまったお馬鹿さん(僕です)のおかげで最終的には一切使わずにキーボードを組み上げられたということをここに記載しておきます笑。

 5−5.理想を実現するための作業その5 メカニカルファスナーと面ファスナーの貼り付け

部品が揃ったら、PCBとプレートにメカニカルファスナーと面ファスナーを貼り付ける作業が待っていました。

  • トッププレートにメカニカルファスナーのオスを貼る
  • PCBのトップ面にメカニカルファスナーのメスを貼る
  • PCBのボトム面に面ファスナーのメスを貼る
  • ボトムプレートに面ファスナーのメスを貼る

プレートでPCBを挟み込むとは言うものの、単純にPCBにメカニカルファスナーと面ファスナーを貼り付けるだけではダメです。

  • トッププレートに空けた穴以外の場所にメカニカルファスナーを貼る
  • PCBのトップ面に貼るメカニカルファスナーも同上で、穴を避けて貼る
  • PCBのボトム面は凸凹しているので凸凹をなくすように面ファスナーを貼る
  • ボトムプレートに貼る面ファスナーは何も考えないで貼るだけで良い

ソケットをはんだ付けすると、PCBのボトム面にソケットが出っ張ります。そのままプレートで挟み込むと、荷重がPCB全体ではなくソケットに集中します。

なので、ボトム面のソケットとダイオード以外の部分に面ファスナーのふわふわしたやつ(メス側)を切り貼りして、ソケットの高さに合わせてあげます。

残念ながら写真がないのですが、面ファスナーを約8mm幅に切ってPCBのボトム面に貼り付ける作業は結構辛かったです。

また、トッププレートに空けた穴を避けてメカニカルファスナーを貼る作業は、どちらかと言えば貼る作業ではなく切る作業でした。

なぜかというと、トッププレートの全面にメカニカルファスナーを貼り付け、穴に沿ってカッターで切り抜いたからです。

スイッチの穴は69箇所、リセットスイッチの穴も2つありました。全部カッターできれいに切りました。この作業も結構辛かったです。辛かったからか、写真はまたもやありません。

5−6.それ以外の作業

電子部品のはんだ付けやHDMI端子・USB-C端子のはんだ付けは、PCBソケット変更作業や、メカニカルファスナー・面ファスナーの切り貼りに比べたら大した作業量ではありませんでした。

また、スイッチのルブ作業は2日かかりました。

懸念していた0.8mm基板へのPCBソケット実装は、スイッチ実装面をツライチにした状態ではんだ付けすることで解決しました。なので、ボトム面は通常の基板より多く出っ張っております。

同じく0.8mm基板へのスタビライザー実装は、足りない基板厚みをマスキングテープで補うことで解決しました。マスキングテープを何重にも重ねてスタビライザーとPCBの間に入れるということです。

今回採用したMCUはSTM32L072シリーズで、QMKの業界ではかなりマイナーです。そのためファームウェアはQMKの重鎮のような方のキーボードを参考にさせて頂きあらかじめ作成していたものを使いました。

5−7.実装完了

こうして、すごく変な名前の自作キーボード、Dobrock69が完成しました。

f:id:dvorak55:20201111233637j:plain

6.自己評価

しばらく使った後、ポイントを絞って自分なりに評価してみたいと思います。<後日追記予定>

  • 打鍵感
  • 静音性
  • 運指
  • 物理的強度
  • 美しさ

7.文章をストレスなく打てるってどういうこと???

自分のためのキーボードを作っていて、今の所、文章を打つ上で重要だと個人的に思うのは以下の点です。

  • Dvorak配列のZとハイフンがきちんと右手小指で押せる場所にある
  • 手首を外に曲げる動作が少ない
  • 親指と人差指に割り当てる仕事量を増やす
  • コピペや定型文入力のためのマクロキーがあると良い
  • 1つのキーに複数の機能を割り当てない
  • 静音性(夜にキータイプしていても隣の部屋にうるさくない)

特に、Dobrock69のキーマップ作成で感じたのは、親指にわかりやすい機能を割り当てる難しさでした。

  • Dombrick45で親指に3キー割り当てたけれど挫折した(作者なのに)
  • Dombrick60dで親指は2キーにしたけどEnterとSpaceとレイヤーを使いたいので1キーに複数の機能を割り当てた。手の動きは楽になったけれど、入力効率が落ちた

僕には親指に3キーとかは無理だろうと感じました。また、親指キーが左右それぞれ2キーだったとして、区別できる位置に付いていないと使いこなせずダメだろうとも思いました。

Dombrick60dではスペースの下段にChocキーを搭載していて、親指で押すマクロキーとして使っていました。

特に親指を開いた位置においてあるChocキーが押しやすいなぁと思っていました。

なら、そこに親指キー(CherryMX互換)を配置すれば良いのではないか?とひらめき、実際に配置したのが今回のDobrock69のキーマップです。

……さて、本当にDobrock69で文章をストレスなく打てるかは、僕が12月末までに書き上げると宣言した小説的な文章で実際に検証することになります。