PCB・スイッチプレート一体型ホットスワップキーボードの自作

打鍵音エンドゲームを求めてキーボードを自作していますが、スイッチプレートとPCB(キーボードの回路部分)を一体化したらどうだろうか、という考えが浮かびました。その考えに至る経緯や設計・製作について記事にまとめました。

最高の打鍵音を求めて

底打ち時の高音が抑えられた柔らかい感じが自分の好み。打鍵音に影響を与えるのはスイッチの選定やルブ、キーキャップの選択が大きく影響するが、打鍵音を柔らかくするには加えて以下がポイントではないかと考えている。

  1. スイッチプレートやPCBの素材はスイッチの位置を固定するためにある程度の硬さが要求されるが、この硬い物質の量を減らしたり、できるだけ柔らかくする。
  2. フォームの量を増やす。
  3. スイッチを固定している素材にフォームを密着させる。

1番目の項目はスイッチプレートの無いPCBガスケットマウントで実現できる。さらにガスケットマウントにしてケースと音響的に分離することでスイッチと一体となっている硬い素材の量を減らすことになる。

 

また2の要素は吸音の効果もあるかもしれないが、振動する物質のダンパーとしての効果が大きいように思う。そのためには量だけでなく3にあるように密着させることが重要ではないかと思う。

 

これらの要素を取り入れて自作したキーボードのタイピング音はこちら。

www.youtube.com

これこそまさに自分が求めていたもの。2022年に最も使ったキーボードだった。

 

最高の打鍵音の維持にはメンテナンスが必要

打鍵音エンドゲームのキーボードの完成から数か月後、どうも完成したての時の打鍵音と印象が違うと感じ始める。自分の音の好みが変わったのかとか思ったりもしたが、いやいや、バネ鳴りも聞こえる。自分が成長して違いの分かる人になったのかとも考えたが、ルブをし直すと明らかに打鍵音が変わり好みの音になる。これは自分の感覚が変わったのではなくて、ルブの具合が変わっているのだと思う。

 

これらのスイッチはだいたい1年前くらいにルブしている。1年くらいでルブ具合が劣化するということか?あるいは使用頻度かもしれない。実際打鍵音が気持ち良すぎてタイピングテストやりまくっていたし…。いずれにせよルブ具合が劣化したものは、もはやエンドゲームにはなり得ない。

 

最高の打鍵音を維持するためにメンテナンスが必要ということみたいだ。でもこのキーボードはスイッチをPCBにはんだづけしている。その状態でスイッチをあけるのは市販されているオープナーではできない。さてどうしたものか…。

 

こうなると心地よい打鍵音でホットスワップなメンテナンス性の良いキーボードが欲しくなる。ホットスワップなら簡単にスイッチを外すことができるのでルブしなおすのもやる気が起こる。また気になるスイッチを試すのも気軽にできる。

 

柔らかい打鍵音を得るためのアイデア

そこで以前思いついたこのアイデアを真面目に考えてみることにした。

スイッチプレートとPCB一体化のアイデア

 

スイッチプレートとPCBのキーボード回路部分を一体化することによって硬い物質の量を最小化できる。この時はMillmaxソケットを使うことを考えていたが、これだとスイッチを交換するときに裏側からソケットをスイッチピンに抜き挿しすることになる。ケースからPCBを取り出さないといけないので、これではメンテナンス性が悪い。

 

そこでKailh製のスイッチソケットを使用して空中配線する。これがある程度強度を持つ導体で基板にはんだ付けされてあれば良い。家にあったキーボードパーツで試しに作ったのが下図。

ゼムクリップを細工して試作

 

ソケットにはんだ付けされているのはゼムクリップを細工したもの。強度は問題なさそう。普段使いとして65%くらいのサイズのキーボードが欲しいのだが、このやり方だとゼムクリップの細工を100個以上しないといけない。2個作るだけでも長さや角度などの調整が面倒だったので、65%サイズはちょっと現実的ではない。何か既製品で代替できるものはないかと頑張って考えたけれど、良案が思いつかずにしばらく放置していた。

 

テスト基板

2か月くらい経ったころ、ふとL字型のピンヘッダ―が使えそうであることに気づく。これなら強度も行けそうな気がする。やっぱりアイデアは一生懸命考えた後に時間を置くと降りてくる。KiCadで作業を始めるとパーツの干渉などいろいろ心配になってきたので小さめの基板を作ってチェックしてみることにした。

 

さて、こういう作業をする前にまずキーボードの名前(=ファイル名)を決める。スイッチプレートとPCBを一体にしているところから、unityという名前にすることにした。

テスト基板の設計

下図はKiCadで設計したテスト基板。

テスト基板

ここではいくつかのことをテストする目的があった。

  • ピンヘッダー用スルーホールを含むフットプリントが問題ないか
  • プレートマウントのスタビライザーの穴の寸法や打鍵音のチェック
  • ピンヘッダーの強度
  • FFCコネクタ・ケーブルのテスト

ピンヘッダーのピンの長さとソケットの寸法でスルーホールの位置が決まるので、データシートにある寸法を参考にしてフットプリントを作成した。ピンヘッダは秋月電子で売っている細ピンヘッダーを使用。スルーホールを小さくできるので、配線スペースを稼げる。一方で細めなので強度が少し心配。基板の端にあるキーやスタビライザーがあるキーでは基板のスペースの問題からスルーホールの位置を変えた。これらが問題なければ本番用の基板設計で同じフットプリントを使えばいい。

 

はじめはUSBレセプタクルと一緒にMCUをのせたドーターボードを作って、キーボード回路が載っているスイッチプレートとFFCケーブルでつなぐことを妄想していた。このテスト基板ではそのコネクタのフットプリントがある。ただ、ドーターボードにMCUをのせると場所を取ってケース設計がやりづらいので本番の基板では採用しないことにした。

 

テスト基板で試しにはんだづけしてみる

テスト基板が届いたら早速試しに作ってみる。もともとピンヘッダーの黒い四角いやつ込みで設計していたが、ピンはこれから抜きとることができることに気づく。余計なものはないほうが良かろうと思い外すことにした。ラジオペンチを使えばピンを抜くことができる。失敗して曲げてしまうこともあるけれど慎重にやればほぼミスなくできる。

ピンヘッダのピンをラジオペンチで抜く

はんだ付けをするときは適当なスイッチを基板にはめ、ソケットもスイッチにつけておく。この状態でピンをはんだづけしてソケットを固定したいのだがこれが難しい。このときほど3本目の手がほしいと思ったことはない。あれこれ試行錯誤して何とかはんだ付けしたものが下の写真。

テスト基板での試作(左)基板表面(右)基板裏面

 

少し心配していた細ピンヘッダーの強度は大丈夫そう。前後方向の力に弱いが、丁寧に扱えば問題ないだろう。

 

試作してみるといろいろ気づくことがある。キースイッチの上面側にはスイッチプレートの14mm角の穴よりも少し大きい箇所がある。左の写真に写っている左の2キーはその部分とスルーホールが少しだけ干渉してしまう。またスタビライザーのところもスルーホールが干渉している。これらのスルーホールの位置は修正する必要があることがわかった。試作って重要!一部はピンヘッダーをそのまま使うと長さが足りなくなるが、ピンをラジオペンチで少し曲げて対応することにする。

 

また試作しているときにTwitterでKailhソケットの形状が新しく変わるという情報を得る。新しいソケットでははんだ付けする電極の形状が変わって、横からみた形状がコの字からロの字になるらしいのだが、ロの字になったらはんだづけ作業がすごい困難になる。コの字形状のやつを慌てて入手した。

 

キーボードunity69の製作

テスト基板による試作で原理的には大丈夫そうであることが確認できたので実際に使用するつもりのキーボードの製作にとりかかる。

キー配列

普段使いとして慣れているRaw staggeredで矢印キーがあるのが基本。そのうえでこれまでいくつか自作したキーボードの体験から以下のようにする。

  • 四角いケースにおさまるようなレイアウト(ケース設計を楽にする)
  • 矢印キーの左の隣にFnを置いて、これと矢印キーでHomeやPage Upなどとする
  • 右Shiftは矢印の上キーよりも右にあると打ちづらいので/キーのすぐ隣に配置
  • スペースキーは打鍵音を好みにするために分割、キーキャップが入手しやすそうな2.25uと2.75uにする
  • DelをDefault layerに配置する
  • 右Altは全く使っていなかったのでなしで良い

この条件の下で手前のRowを調整すると以下のようになった。

キー配列

最前列のModifierや右端のPage Up/Downは全然真面目に考えていないが、スペースを埋めるためにとりあえずで配置しておく。全部で69キーとなったので名前はunity69とする。

 

基板の設計

USBコネクタはいつものようにドーターボードとして別基板にする。これにMCUも実装してしまおうかと考えていたが、ケース内での収め方が難しかったので結局スイッチプレートに実装することにした。そうするとスイッチプレート上である程度スペースを取ることになる。右上の1キーの位置にMCU(ATmega32U4)を配置し、ケースにブロッカーorバッジなどを配置してこれを隠すことにする。

基板

基板設計では上面のスイッチ穴の前後すぐの位置には配線しないようにした。スイッチプラーでスイッチを引き抜くときに引っ掻いて配線を切ってしまう恐れがあるからだ。そのためにRowの配線は裏面を通す。そうすると自然とCol側はおもて面になる。

 

このようにするとColの配線をMCUまで引くためのスペースが必要になる。ビアをたくさん使えばRowの配線と同じようにスイッチの間に通すことはできるが、それはなんだか美しくない。PCBの外形を前後方向に大きくし、Colの線を通す。

 

ケースとの兼ね合いで、USBコネクタのドーターボードを固定するためのアクリルをつけるスペースが必要だったので、その部分に切り欠きを入れる。

 

今回はElecrowに基板を発注。ケース用の一部のアクリル部品(後述)は透明で良いので、そのレーザーカットも合わせて依頼した。

 

ケース設計

ケース設計は以前自作したPCBガスケットマウントキーボードのrelief64と同じようにアクリル箱組ケースにすることにした。ただしスイッチプレートにガスケット用のタブを伸ばしてそこで支えるというよりは、スイッチのついたプレート全体を下からフォームで支えるようにする(スタックマウントって言うのかな?)。下図はケースの構造。

ケース断面図

実際はPCB底面側のダイオードやソケット部分は少しフォームを潰さないといけないとか細かいことがあるが、それは気にしないことにする。加工の都合上フォームは3mmを3枚とした。図ではキーボード部分がケース底板に乗っかっているだけだが、PCB上面を抑えるためのフォームはあとから現物合わせで入れる。チルト角度は5.7度。

今回は背面の板厚を2mmにし、USBレセプタクルのコネクタがぴったり通るサイズの穴を空ける。USB Type-Cケーブルのコネクタ外装の寸法は様々だが、レセプタクルの先がケース面とほぼ一致することになるのでどんなケーブルでもつなげられるはず。USBコネクタがついたドーターボードを固定するためにアクリル部品をケース背面の板に接着する。

 

ケースの底板はアクリル3mmとし、ケース側面に接着したアクリル部品でネジ止めできるようにする。このアクリル部品は分割キーボードを自作したときに思いついた構造を採用。ネジが通る穴は後ほど自分で空けることにし、M2ナットを入れる穴をレーザーカットで加工してもらう。上のドーターボード固定用のアクリル部品と合わせてElecrowに発注した。

 

エンドゲームを目指しているので、ケース外観もこだわる。以前製作したrelief64ではケース手前の上面をアルミ板で作ったが、きれいな鏡面にはできなかった。今回はステンレスにしてピッカピカの鏡面を目指してみる。ただ、以前アクリルとステンレスを接着して作った別のキーボードケースの接着剤が剥がれて残念な感じになっていたので、それをできるだけ避けるためにのりしろを大きく取る。そのためにステンレス板の下にもアクリル板を入れる。これはケースの剛性を高める効果もあるはず。

 

なんとなく曲線・曲面が自分のツボのような気がしているので、側面の板はカーブをつける。これはキーボードを左右で持ち上げやすくするという意図もある。レーザーカットならきれいな形になるけれど、費用が高くなりそうなので台形に切ってもらってそこから自分で加工して曲線を作ることにした(でもこれは大変で後悔した)。

 

ケース外観

見た目にこだわると、右上のMCUを隠すブロッカーorバッジもなんかいい感じにしたい。アルティザンキーキャップをつけられるようにとか、ロゴを考えて入れるとかあれこれ考えたけれど、いいアイデアが浮かばなかった。とりあえず両面テープを駆使して適当にバッジを作ってつける。これなら後で変更できるので未来の自分がきっともっといい感じにしてくれるはず。

 

Elecrowに頼んだ部品以外のメインのアクリルパーツはいつものようにはざいやに依頼した。手前のステンレス板はシャーリング切断だと変形して面が出なさそうなので、レーザーカット加工できる業者を探し、かねよしに依頼した。

 

基板の組立

まずはMCUとその周辺をはんだ付けし、ドーターボードを接続してPCで認識されることを確認。ファームウェアーを書き込んですべてのキーが問題ないことを確認したら、いよいよソケットのはんだづけを行う。

 

これが地獄だった…。やり方をいろいろ模索したが、一度ピンをソケットに仮ハンダし、そのあとピンセットでつまみながら位置を微調整して固定、その後基板側をはんだ付け、というのが最適解になった。はんだづけ作業がとっても大変だったが、地獄を乗り越えて出来上がったのが下の写真。

完成したPCB・スイッチプレート一体基板

 

フォーム

フォームはスイッチ部分の四角い穴だけでなく、ピンやソケット部分もカットしないといけない。これは手作業でまともにできる気がしないので遊舎工房のレーザカットサービスを利用することにした。図面引くのがとても煩わしかったので、Keyboard Layout Editorから得られるjsonをもとにdxfを半自動生成するスクリプトを作った。それについてはこちらの記事

 

65%サイズなら、遊舎工房のレーザーカットサービスのフォームカットで一番大きな500x300から3枚取れる。ただし一部は分割する必要があるけれど。テンプレートに3枚のフォーム+αを入れたのが下の図。

フォームカット依頼用図面

テンプレートでカットする順番を色で示せとあり、どうするのが良いかわからなかったが、図のようにスイッチの穴などを1番目、外形部分を2番目としておいた。これでいいのか不安だったが後日チェックが通ったと連絡がきたので問題ないみたい。

 

フォームはスイッチ、ソケットの部分を切り取るだけでなく、ソケットにはんだ付けされているピンを通すための切り込みを入れておいた。おかげでかなりぴったりになった。下はスイッチのついた基板に取り付けた図。このぴったり感が気持ちいい。

完成したフォーム

 

ケース組立

はざいやでアクリル部品のほとんどをカットしてもらうが、一部は自分で加工することにしていた。USBコネクタが付く背面の板は、あらかじめ空けてもらっていた丸穴x2をつなげてやすりで形を整えるということをした。これは厚さ2mmということもあってそれほど苦労しなかった。

 

最も苦労したのは側面の板。レーザーカットで外注すると高くつくだろうと思って、はざいやでノコカットできそうな形状(下図左)で調達し、それを削って下図右のように整形した。アクリルだし削って形を整えるのは大したことはないだろうと高を括っていたが、これは大きな間違いだった…。

 

初め、ヤスリだけで形を整えようとしたが、永遠を感じたのでドリルを使うことにした。電動ドリルで穴を空け、それをニッパーで切断して大まかな形を作ったら、あとはやすりでひたすら削る。この作業を左右両方の板で同じにできるように2枚をマスキングテープで貼り合わせて行った。修行のごとくヤスリがけをしてようやく右図のような形状に整形。手で持つ曲線の部分は、手に馴染むような3次元的な曲面にしようかなとぼんやり考えていたけれど、やすりがけ作業に嫌気がさしたので頑張らないことにした。

 

ケース側面の板、(左)加工前(右)加工後

形が整ったら、他のアクリル板も含めて面取りするとともに目につくところのカット面をきれいにする。600、1000、2000番のやすりをかけた後、ピカールケアーで仕上げる。

 

レーザーカットされたステンレス板のカット面は結構粗いので鉄ヤスリできれいにする。また前面となる部分は角を落とす。RをつけるというよりはC面取りに近い感じで角を丸めた。ステンレスくらい硬いと、削りすぎになりにくいので結構思った通りの角の落とし方ができたと思う。その後、320、600、1000、2000番のやすりで磨いていき、仕上げにピカールケアーで磨いてピカピカに。

 

この研磨の作業を楽にしたいがために、電動ドリル+フェルト+赤白緑棒を試してみたが、いまいち上手くできなかった。緑棒で研磨しても、研磨跡が結構残る。これは緑棒に移る前に削りカスをきれいに除去するとかをさぼったせいかもしれない。結局ピカールケアーで手で磨くのが一番きれいになった。

 

ケース底板やドーターボードを固定するためのアクリル部品はElecrowに基板と一緒に事前に発注していたが、後日ケースの設計に問題があることが発覚。

 

PCBに切り欠きを入れておけばよかったが、気が付いたときにはPCBとアクリルのナットホルダー部品はすでに発注済み。PCBは配線もあって削れる箇所が限られているので、底板固定用のナットホルダー部品を変更する。これはもともと8mm厚で設計していたが、これを5mm厚にするとぎりぎりPCBを取り外せることがわかったので、のこぎりでカットして対応することにした。カット後、φ2.4mmの穴をドリルであけた。8個加工するのはだいぶ面倒だった。

 

アクリル部品の下準備が終わったら接着。セロテープで箱状に仮組みした状態でアクリル接着剤で接着する。背面の板を2mmと薄くしたために仮組み時はちょっと不安定かもという不安があったが、接着したら割としっかりした箱になった。

アクリル接着後

接着後、パーツ接合部の面が出ていない部分をヤスリで平らにしようとしたが、きれいにできる気がしなかったので諦めた。表側にアクリル接着剤が垂れて見た目が悪くなってしまった部分を磨いて目立たなくする。

 

上のナットホルダー部品8mmから5mmの修正のためにケース底板の穴も自分で空ける羽目になった。これは穴位置が端に近すぎるため業者ではやってくれない。底板をケースにはめた状態でケース側の穴位置に合わせてピンバイスで少しだけ穴空け、それをセンターポンチ代わりにして電動ドリルでφ2.4mmの穴を空ける。1か所だけ少しアクリルが割れてしまった。業者が端に近い穴を空ける加工をやりたがらない理由がよくわかった。

 

いまいちなところはあるが、最終的には問題なく組み立てられるケースとなった。残念なのはナットホルダーの8mmから5mmの変更のために、組立時にナットが落ちやすい。また頭の大きいネジだとケース側面と干渉してしまう。メンテナンスがちょっと億劫になってしまうかも。

 

ケースを組み立てられることが確認できたら、最後にステンレスの化粧板を接着する。以前同じ構造のケースを作った時には、側面の板との間に少し隙間ができてしまったり、接着剤がはみ出してしまったりと、ちょっと残念な仕上がりとなってしまった。今回はその反省を活かし、下の写真のように固定することで隙間なくぴったりに接着できた。また接着剤も少なめにしたのではみ出なかった。強度がどうかはちょっと不安だけれど、仕上がりは完璧。

ステンレス板の接着

その後、足となるアクリル部品を側面の板に接着し、ウレタンクッションを貼り付ける。最後に右上の1キー空いている部分にとりあえずで作ったバッジを両面テープで固定してケースが完成。

 

キースイッチ・キーキャップをつけて完成

あらかじめ購入してルブしておいたBanana Splitを基板に取り付け、IFK 4800Kのキーキャップを取り付けたら完成。キーキャップの白地+太めの印字のはっきりくっきりな印象とケースの組み合わせでモダンな雰囲気となった。いい質感に仕上がったけれど、この色の組み合わせはなんだか機動戦士っぽさがある。

完成!

ケースの他の部分の写真はこちら。普段目につかないケース底面は手作り感満載。

ケース側面、背面、底面

 

完成したキーボードの打鍵音

完成したキーボードの打鍵音はこちら。

www.youtube.com

 

打鍵音エンドゲームを目指して作っていたのだが、ほぼ静音キーボードが完成した。高音がかなり抑えられているのに対し、打鍵時の低音が少し気になる(録音音源ではよくわからない)。これは木製の机のせいかもしれないし、あるいはケース底板のアクリルの剛性が低いためかもしれない。

 

使用したスイッチはBanana Split。このスイッチははなり打鍵音が抑えられている。底打ち音が抑えられているだけでなく、戻ったときの音もおとなしくて静音化に大きく貢献している。多分ステムが上に戻ったときのスプリングが自然長の状態に近い(=上に押す力が小さい)ので、戻ったときの音が抑えられているのだと思う。

 

悪くないのだが、自分の求めていた打鍵音とは少し違う…。

 

打鍵音エンドゲームに向けて

打鍵音エンドゲームを目指してPCB・スイッチプレート一体型ホットスワップキーボードを製作しました。その結果ほぼ静音のキーボードが完成しました。悪くないのですが、求めていた打鍵音ではありません。もう少し音が鳴る感じが好みなので、今後いろいろいじって打鍵音をチューニングできないかなと考えています。考えいているのは以下のこと。

  • キースイッチを変更
  • キーキャップを変更
  • フォームのつぶし具合で打鍵音が変化するのか
  • ケース底板の素材を変える?
  • ケース内のフォーム3mmx3を一部別の硬い素材などにしてみる?

音を消すのは難しいですが、音が鳴るようにするのはそれよりは易しいと思います。上の要素をうまく調整して組み合わせることで、いい感じの打鍵音にできないか試してみるつもりです。

 

この記事はunity69で書きました。

2022年の自作キーボード活動を振り返る

今年もいろいろキーボードを自作したりいじったりしました。2022年の自作キーボード活動を振り返ってみます。

 

 

ほぼプレートレスキーボードの製作

2022年はなんと元旦からキーボード自作している…。厚いシリコーンシートをスイッチプレート代わりにし、手配線でほぼプレートレスを目指したキーボードにチャレンジ。でも最終的にはうまくいきませんでした。

 

その悲しい過去の詳細はこちら。

kgnwsknt-chef.hatenablog.com

キーボード打鍵音の録音用マイクを導入

2月になると打鍵音の探求のためにマイクを購入しています。購入したのはTASCAM DR-07XというASMRとかで使われたりするもの。これまで使用していた安価なマイクに比べて格段に録音音源がまともになりました。もちろん実際の打鍵音とはやっぱり違うけれど、打鍵音の違いを記録すのには十分。あとはこれで録音しながら試作を繰り返して改良を重ね、最高の打鍵音のキーボードを作るだけ。

 

Youtubeデビュー

マイクでましな打鍵音が録音できるようになったので、タイピング音の録音音源をYoutubeにあげるようにしました。これで私もユーチューバー。まあ自分で録音した打鍵音を整理して比較する目的なので、音だけで画は静止していますが…。

 

これまで使用した市販品のキーボードや自作したキーボードのタイピング音をアップロードしています。

www.youtube.com

 

スタビライザー打鍵音を整音するためのPCBのテスト

次に着手したのはスタビライザーの打鍵音。打鍵音を意識するようになってからは、アルファベットキーとスペースキーの打鍵音の大きさのアンバランスさに不満を持っていました。スタビライザーつきのキーの打鍵音をなんとか低減させたいとずっと思っていたので、PCBにいろんなパターンの切り込みを入れたテスト基板を作って打鍵音に影響があるかを調べました。

 

これはダメかなと思っていたパターンが予想外に良く、嬉しい発見でした。スタビライザーの底打ち音を消したい&キーキャップの半挿しを許せる人はお試しあれ。

 

kgnwsknt-chef.hatenablog.com

 

打鍵音エンドゲーム(今年1回目)

シリコーンシートのプレートレスキーボードの失敗、スタビライザーのテストを経て辿り着いたのが2022年の打鍵音エンドゲーム1号。

kgnwsknt-chef.hatenablog.com

kgnwsknt-chef.hatenablog.com

 

このキーボードのスイッチは静音のものではないですが、シリコーンシートが効いていて打鍵音がかなり抑えられています。シリコーンシート5mm厚はダンパーとしてかなり有能みたいです。狙い通りの柔らかい打鍵音を得ることができました。ただ、音が控え目すぎて最近では少し物足りなさを感じます。

 

初めての分割キーボード自作

打鍵音に満足のいくキーボードができたので、ここで別の要素にチャレンジしてみました。分割キーボードです。日本の自作キーボードといえば分割と言っても過言ではないくらい多くの分割キーボードがあります。自分も日本で自作キーボードを嗜んでいるのだから、一つくらいは分割キーボード作らないといけないという気がしていたので作ってみました。はじめはどなたかが設計した自作キットを作ろうかと思ったけれど、やっぱり自分で使い勝手のよさそうな配列にしたくなったので設計からやりました。

kgnwsknt-chef.hatenablog.com

 

キーボードを設計・自作するたびに何か新しい要素にチャレンジする、というのがなんとなく自分ルールになっており、今回は分割という要素に加えて3Dプリントケース&その塗装にチャレンジしました。3Dプリント+塗装が上手くできると、ケースの形と色(質感)を自分の思い通りにできます。これは自作キーボードケースのエンドゲームに大きく近づくのではないかと思っています。

kgnwsknt-chef.hatenablog.com

 

塗装は奥が深く、難しいことを思い知らされる一方で、結果的には満足度の高いケースに仕上がりました。ケースをこだわりたい人は3Dプリント+塗装おすすめです。

 

ただし残念だったのは打鍵音。打鍵音エンドゲームと思えたキーボードを手にした後では、この分割キーボードの打鍵音はちょっと使う気になりません。おそらくケース内の空洞が大きく、ガスケットのフォームを潰しすぎているのが原因な気がします。それに加えてチルト角度が急すぎたこともあってどうも打ちづらい。今では飾りになっています。もったいないけど、経験値を積んだということで良し!(と自分に言い聞かせる)。

 

キー配列についてあれこれ考えた

今年はキー配列についてもあれこれ考えた事がありました。キー配列は沼中の沼だと思っていて、自分はこの沼にだけは入るまいと思っていましたが、Tomisukeさんの記事に感化されていろいろ考えを巡らせてしまいました。

kgnwsknt-chef.hatenablog.com

 

考えるほどやはり沼中の沼。自分には底なし沼に見えます。この深遠さが人を惹きつけるキー配列沼の魔力なんでしょうか。

 

打鍵音エンドゲーム(今年2回目)

以前製作したプレートレスPCBガスケットマウントのキーボードrelief64のスイッチを変更したくなったので、複数のスイッチを試して最適解を探しました。そのおかげで今年2回目の打鍵音エンドゲームに辿り着きました。その打鍵音はこちら。

この打鍵音はかなりのお気に入りで、これこそ自分の求めていたもの。あまりに打鍵音が心地よくて、一時期タイピングテストをそれまでの1.5倍やるようになったほどです。

 

PCB・スイッチプレート一体型ホットスワップキーボード

打鍵音エンドゲーム(今年2回目)のキーボードの打鍵音がかなり気に入ったので、しばらくこれで満足していました。実際もうキーボード自作しなくてもいいかなと考えていたくらい。しかし数か月使っているとどうも打鍵音が変わっている気がする。気のせいかと思いましたが、調べてみるとどうもルブの具合が劣化しているのが原因みたい。

 

そこで再ルブがやりやすいように何とかホットスワップで打鍵音が心地よいキーボードを作れないものかと考えました。あれこれ考えて出てきたアイデアがPCBとスイッチプレートが一体となった下記のような構造。

 

このアイデアを実際に形にするまでに時間がかかりましたが、試作を経て何とか年内に完成させることができました。心地良い打鍵音を目指していたのですが、結果としてほぼ静音キーボードができあがりました。

www.youtube.com

 

2年前の自分であれば間違いなくエンドゲームと思っていたはず。ただ、現在の自分が求めているものとはちょっと違う…。悪くないんですけどね。

 

unity69と名付けたこの自作キーボードについてはそのうち詳細を記事にしようかなと考えています。

 

よく読まれたブログ記事(2022年12月)

半分は自分のメモとして、半分はほかの人の役に立つかも、という動機でブログを気まぐれに書いています。昨年の12月によくアクセスされている記事を調べてみると、キーキャップに関連することがよく読まれていたようで、みんなキーキャップが好きなんだなーと思ったものです。一方、今年の12月にGoogleからアクセスされている記事の割合を見てみると、「プレートレスPCBガスケットマウントの自作キーボード2作目」がトップでした。これはなんでだろう?

 

タイピングテスト

ほぼ毎日Monkeytypeでタイピングするのが習慣になってしまいました。毎日5分くらいでもやり続けると、タイピング速度はじわじわと向上するようです(まあ特定の単語だけですけど)。下の図はその成長の記録と自己ベスト。

MonkeyTypeでの成長の記録

increase、interest、peopleとかまともにタイプでないことがほとんどですが、最近increaseについてはコツを掴んだ気がします。あともう少しで130WPM(ただし30 seconds or 50 words)を突破できそうなのですが、今年は突破できませんでした。来年こそは!

 

まとめと来年の展望

2022年はずっと打鍵音を追求していた年でした。打鍵音エンドゲームと思えるキーボードが賞味期限付きですが自作できたので、2021年の終わりに掲げていた目標は一応達成しました。また分割キーボードや3Dプリントケースの実績も解除しました。しかしそれで満足して終わらないのが人間という生き物。2022年の間にはメンテナンスがしやすいホットスワップの打鍵音エンドゲームのキーボードを手にすることはできませんでした。

 

そんなわけで今年も「打鍵音なんもわからん」を何度もつぶやいた年でした。でも今年製作したキーボードから、ぼんやりと打鍵音エンドゲームへの道筋が見えた気がしています(気のせいかもしれない)。来年こそは「打鍵音完全に理解した」となりたいものです。

 

この記事は自作したオリジナルキーボードrelief64、unity69で書きました。

キーレイアウトのjsonをもとに図形を複製するdxf自動生成スクリプト

この記事はキーボード#2 Advent Calendar 2022の11日目の記事です。昨日の記事はDaihukuさんの「2022年に組み立てた自作キーボードと携わったイベントについて」でした。1年で21個ものキーボードを組み立てて紹介動画まで制作・公開するなんて、いやー、すごいですね。

この記事ではキーボード自作で役立つ(かもしれない)小技を紹介します。キーボード打鍵音を心地よくさせるために、フォームシートをケース内にいれる人も多いのではないかと思います。最近では遊舎工房のレーザーカットサービスでフォームも対応可能となっており、オリジナルの自作キーボード用のフォームを作ることができます。ただしカットを依頼するためには図面を作成する必要があり、キー数が多かったり複雑な形状だったりすると結構面倒です。そこで図面を半自動的に作成するスクリプトをつくってみました。

目次

フォームカット用の図面の作成がしんどい

キーボードの打鍵音を意識するようになってからはフォームは必須と考え、キーボードを自作するたびに道具を使って手でフォームをカットしていた。これはキー数が多いとなかなか辛い。まあでもスイッチプレートのように四角い穴を空けるだけなら辛抱強くやればできなくはない。

現在は打鍵音エンドゲームを目指して自作キーボードを製作中。このために欲しいのはホットスワップ用のソケットとキースイッチの位置決めピンの部分を切り抜いたフォーム。曲線がありサイズが小さいので、これを手でカットするのは難しい。最近では遊舎工房のレーザーカットサービスでフォームもカットしてくれるので、それを利用するために図面を作成していた。

図面はAutodesk fusion 360とKiCad、Inkscapeを利用して次のような手順で作成していた。

  1. ソケット単体の3Dモデルを図面を参考にしながらFusionを使って作成、KiCadのフットプリントに3Dモデルを取り入れる
  2. KiCadのレイアウトエディターで基板のstepファイルをエクスポート、Fusionに取り込む
  3. スイッチを基板のボディに合わせて並べる
  4. スケッチを作成、それにスイッチ、ソケットを射影(プロジェクト)
  5. スケッチ上の不要な線を消し、外形線を加える
  6. 押し出しでフォームの3Dモデルを作る
  7. フォームの3Dモデルをスケッチに射影して加工依頼用のdxfを作成
  8. Inkscapeでdxfを取り込む
  9. 遊舎工房のテンプレートにしたがって色やレイヤーなどを編集し、svgで保存

この作業で最も面倒なのはスイッチを並べる作業。矩形状パターンを利用するとましにはなるが、Row staggeredだと1行ずつやることになる。また様々なキー幅が混ざっているとあまり楽にはならない。間隔を19.05*0.25/2mmにして「抑制」をすれば一応いっぺんにできるけれど、たくさんの数を抑制するために何度もマウスでポチポチやらないといけない。

矩形状パターンを利用して複数のスイッチを並べる。右図は間隔19.05*0.25/2mm+抑制を利用した例。たくさんクリックしないといけない…。

後になって気づいたけれど、たぶんもう少し賢いやり方はスイッチの3DモデルもKiCadのフットプリントに取り込んでしまえば並べる手間は省ける。ただし、スケッチ上に射影したあとに余計な線を消したり、あるいは線を追加するなどが必要になるので、ここは全然楽にならない...。皆さんこういう作業ってどうやっていますか?

とっても面倒な作業だったが、エンドゲームのキーボードを手に入れるための試練だと自分に言い聞かせて辛抱強く続けてできたのがこれ。

フォームのモデルができた?

ふー、と思って眺めていたらソケットのモデルにRをつけ忘れていることに気づく。ナンテコッタ…。

打鍵音にたいした影響はない気がするけれど、エンドゲームを目指しているのでピッタリになるように作り直したい。でも上の面倒な作業をもう一度したらきっと頭がおかしくなってしまう。それに1度修正したものというのは、そのあと2,3回修正を繰り返すことになる場合が多い。3回とか繰り返したら間違いなく狂ってしまう。

狂人化は避けたいのでこれはもう自動化するしかない。

どうすれば自動化できる?

キーボード自作を設計からやる人はKeybaord Layout Editor (以降KLE)を利用してキー配列を考えている人も多いと思う。本当にいつもお世話になっております。

www.keyboard-layout-editor.com

KLEが出力するjsonをファイルをPlate GeneratorPlate & Case Builderなどにインプットするとスイッチプレートのdxfが簡単に作成できる。このおかげでスイッチプレートの図面作成がすごい簡単に出来る。こちらにもいつもお世話になっております。

要するにこれと同じことを違う形でやればいい。KLEが出力するjsonを(雑に)解析するコードは昔pythonで書いたことがあったので、後はdxfの出力部分をコーディングするだけで実現できる。dxfは基本テキストファイルだし線と円とか書くだけなのでそこまで複雑ではないはず。

ちょっと調べてみるとezdxfというpythonのパッケージがあり、これを使えばすぐにdxfの読み書きができるみたい。自分でやれそうな気がしてきたのでコードを書いてみることにした。

自動化プログラムの概要

プログラムを書き始める前に概要を整理しておく。やりたいことは以下のこと。

  • KLEが生成するjsonファイルをインプットし、キーの中心位置を取得・計算する
  • さらに1キー分のdxfファイルもインプットする
  • 全てのキーの位置にインプットしたdxfファイルの図形を複製して配置し、dxfファイルを出力

はじめは複製する図形の形状をプログラム内でハードコーディングしてしまおうかと思ったけれど、修正したいと思ったときにやや面倒になる。少し頑張って複製する図形をインプットするようにしてチョットだけ汎用性を持たせることにした。

KLEのjsonファイルの構造

jsonファイルの中身はそれほど難しくはない。以下はKLEで作ったキーレイアウトとjsonの例。

KLEのjsonファイルの構造

一見したところ呪文のように見えるが構造は簡単。[ ]でくくられているのが各rowに対応している。各キーは" "で囲ってあってカンマで区切られ、キーの印字の入れ方によって\nが複数現れたりする。

キーの色が変わる場合やキー幅が1uでないと直前に{ }が現れる。c:"#ffffff"などは色、wはキー幅が何uであるかを示している。またキー同士が離れている場合はxが現れて離れ具合がキー幅の単位で与えられている。 ダウンロードしたファイルでは、上に加えて最初にname, authorなどの情報を含む{ }で囲まれたブロックがある。

以上はKLEのドキュメント見なくても簡単に推定できる。(コードが完成しただいぶ後にドキュメントを読みました。まずドキュメントをちゃんと読むのが正しいアプローチです。よい子はまねしないでね。)

このルールさえ分かってしまえば解析するのはそれほど難しくない。pythonjsonパッケージを利用するとファイルの読み込みが簡単になる。

dxfファイルの構造

dxfファイルも人が読めるものである。ファイルの中を覗けばLINEやCIRCLEなどをの文字列を見つけることができる。2次元ならLINEは始点、終点のx,y座標があれば描けるはずだし、CIRCLEは中心の座標と半径があれば良いはず。その文脈のもとで線や円を1個だけ描いたdxfファイルの中を見てみると理解しやすい。この記事が参考になる。

qiita.com

構造がわかれば1行ずつテキストを解析していけばいいけれど、ezdxfライブラリを利用して読み書きするほうがもちろん楽。簡単な例を書いてくれている人のwebの記事やezdxfのTutorialsを参考にすれば、dxfファイルを出力するコードはすぐに書けるようになった。

最も苦戦したのはpythonのバージョン更新。この記事を書いている時点ではezdxfはversion0.18.1。これにはpython3.7以降が必要らしい。私の自宅PCはWindowsでWSL1(Ubuntu)、pythonは3.5。これでは使えないのでより新しいversionのpythonを入れないといけない。なんやかんややって最終的にWSL上でversion3.9.14をソースからコンパイル・インストールした。

このpythonの環境構築が一番大変だった。pythonは複数のバージョンが共存することを許容するらしく、初めはそれがわからずにインストールやアンインストールなど試行錯誤していたらaptコマンドが一時使えなくなるなど混乱した。最終的には動かせるようになったけれど、検索するとpythonのバージョン管理の方法は複数あるっぽくて未だにどれが正解なのかわからない。使い慣れていない自分にとっては魔境過ぎる…。

python環境を構築した後ezdxfはpipコマンドで簡単にインストールすることができた。

dxf自動生成スクリプトの完成!

上記のpythonパッケージを利用したおかげでdxf自動生成スクリプトを作成できた。下図は実際にスクリプトを使用した例。

(左)インプットした1キー分のdxfファイル。(右)出力されたdxfファイル

左図はインプットとなる1キー分のdxfファイル。ホットスワップ用のソケットの外形とキースイッチ(5pin)の位置決めピンに加え、細すぎて加工が断られそうなところをカットするための線を加えたもの。

これをjsonファイルとともに入力して得られた出力dxfが右図。自動化って素晴らしい!

誤って位置を動かしてしまわないようにすぐに位置を固定し、外形線などを加えれば図面のできあがり。

ダウンロードはこちら

実際に作ったスクリプトこちらに置いておきます。自己責任でご自由にお使いいただければと思いますが、その場合は下記にあげた点にお気をつけください。

必要なパッケージ

注意点

  • 必ず出力が正しいかを確認してください。
  • インプットする1キー分のdxfではスイッチの中心が原点になるようにしてください。
  • 縦のキー幅が1uでない場合やキーが回転している場合には対応していません。
  • キーピッチを19.05mmとしています。
  • 出力dxfの単位はmm。
  • dxfの図形でLINE、CIRCLE、ARC、LWPOLYLINEに(たぶん)対応。

まとめと展望

Keyboard Layout Editorから得られるjsonファイルをもとに図形を複製してdxfを自動生成するスクリプトを作りました。おかげで頭がおかしくなることなくフォームカット用の図面を作成できるようになりました。めでたしめでたし。

こうした自動化は楽というのもあるけれど、それだけではなくてヒューマンエラーを減らす効果もある。似たような作業を2,3回やっている場合はきっとこの先でも複数回やることになるので自動化すると良さそうです。

Autodesk fusion 360の座標を拾うのもスクリプト化できるみたい。

これを利用すると他にもいろいろ自動化できそう!

今回作ったスクリプトは自分用に雑に作ったので汎用性はいまいち。多分一番良いのはPlate GeneratorやPlate & Case Builderで使われているコードを拝借あるいは参考にして改造するのが良いと思います。

自分はプログラミングが本業ではないのでとりあえず動く程度のものしか作れない。得意な方が汎用性を持たせて、さらにKLEみたいにwebフォームを作ってくれるのをお待ちしております。あるいはどこかの誰かがすでに作っていて、自分が見つけられていないだけかもしれない。もしご存じでしたら教えて下さいませ。

そもそもなんでフォームの図面なんか作っていたかというと、打鍵音エンドゲームに到達するために現在ちょっと変わった構造のキーボードを製作しています。本当はキーボードアドベントカレンダーの記事としてそのキーボードを題材にしたかったのですが、間に合わなかったので今回のような、ん?キーボード?な記事になってしまいました。そのうち製作中の自作キーボードのことを記事にできたらと思います。

このブログは自作したオリジナルキーボードrelief64で書きました。

キーボードの配列最適化についてあれこれ考える

自作キーボードのふか~い沼の一つはキー配列。多くの人が究極のキー配列を求めて日々研究しています。途方もない感じがして底なし沼に見えるので避けていたのですが、最近読んだブログ記事にすっかり影響され、ああでもない、こうでもないと色々考えを巡らせてしまいました。ここでは考えを巡らせたキー配列の最適化ついて書いてみます。

この記事を書くことになったきっかけ

キーボード配列はQWERTY配列が標準的となってしまっているが、これは最適ではないと感じる人も多い。その強い不満から究極のキー配列を求めて日々研究を進めている猛者がいる。

 

この記事はまさにそんな探求から生まれた一つの成果であり、著者の並々ならぬ情熱を感じることができる。

tomisuke.hatenablog.com

 

この記事の良いところは、情熱だけで突っ走ることなくデータを示してそれをもとに議論しているところである。説得力があるし多くの人がこの記事に影響を受けたはず(私もその一人)。人を感化させるほどのこんな文章を書けるようになりたいものです。そしてこれが高校生の手によるものであるというのだから脱帽する。

 

キー配列の評価に使用しているのはこのサイト。

patorjk.com

いやー、よくできてるページですね。スコアは

  • 指の移動距離(33%)
  • 特定の指の使用頻度(33%)
  • 指と手を切り替える頻度(34%)

を考慮した加重計算ということらしい。

 

こういう研究を見ていてしばしば思うのは、どういう評価基準が良いのだろうかということ。評価し、点数化するというのはどんな場合でも難しい。

 

自分は深い沼であるキー配列には手を出すまいと思っていたが、上の記事に刺激を受け、キー配列の評価基準について、ああでもない、こうでもないと考えを巡らせてしまいました。この記事ではそのことについてつらつらと書いてみます。以下では物理配列はRaw staggeredとし、日本語、英語の文章の入力を想定します。日本語はローマ字入力としてかな入力は考えないものとします(かな入力の経験がないので全然わからない...)。

 

自分が考えるキー配列のスコアリング項目

キー配列を評価するときに打鍵するキーの位置やパターンによってスコアリングする方法がよくとられている。ここでは打鍵が速いパターンと逆に遅くなるパターンについていくつか項目を挙げてみる。

打鍵が速いパターン

ホームポジションのキー

QWERTY配列での教本的なタイピングではasdf、jkl;がホームポジションとなる。指はこの位置に待機しているわけなので、ホームポジションのキーは指を前後左右に移動させることなく打鍵できる。文字の頻度を考えるとjや;がこの一等地にあるのことに我慢ならない人は多いはず。

指の移動が少ないキー

これもキー配列の探求でよく言われていること。極端な例を挙げればアルファベットよりも数字のほうがホームポジションから遠くて打ちづらい。あるいはr,t,gは左手人差し指が担当だが、多くの人はtよりもホームポジションに近いrやgのほうが打ちやすいと感じるだろう。

片手で指が異なるキーを連続して打鍵する場合

たとえばpointは慣れるとだいぶ速く打鍵できる。poinはすべて右手が担当で片手で連続して打鍵することになるのだが、すべて指が異なるのである程度慣れるとだいぶ速く打てる(pを右薬指で打鍵する人はそうではないだろう)。

 

片手での連続打鍵でも指が異なれば左右の指で交互に打鍵する場合に比べて速く打てると思う。実際にfjfjfjと左右交互にタイプするのと、jkjkjkと片手でタイプするのを比較してみるとよくわかる。多くのキー配列の研究ではこの点が考慮されていない場合が多いように思われる(自分が知らないだけかも)。

 

実際このパターンを評価するのは難しい(もしくは面倒)。片手で指が異なればいつも速くタイプできるわけではない。たとえばbeとかは教本的にはbは左手人差し指、eは左手中指なので、片手で指が異なる。しかし自分はこれを速くタイプできない。これは人によるのかもしれない。他の人はどうなんだろうか?

 

速くタイプできるパターンかどうかは、キーの同時押しが無理なくできるかどうかで判断できると思う。poinは同時押しすることができる。一方beの場合、自分は人差し指と中指がそんなに開かないので同時押しは無理しないとできない。

 

この議論は格子配列や挟ピッチになると変わるだろう。キー配列の最適化を考える際にRaw staggeredとそれ以外を比較しようとすると、片手連続打鍵の場合の評価値も変える必要があるだろう。

 

打鍵が遅いパターン

同じ指で異なるキーの連続打鍵

同じ手の同じ指で異なるキーを連続して打鍵するのはどうしても遅くなる。たとえばdeとかは左手の中指で連続して打鍵することになる。これを速く打つのは難しい。

同じキーの連続打鍵

bookのooなどの同じキーの連続打鍵は場合によってはタイピングを遅くするかもしれない。これはある程度打鍵スピードが速くなると煩わしく感じることがある。どれくらい打鍵スピードが速くなるとそう感じるかは何とも言えないが、例えばMonkeytypeで90wpmくらいを出せるくらいだとそう感じる。

 

ただしこれはタイピングテストなどの場合に限られるかもしれない。普段文章を書いているときにはあまりストレスを感じていないような気もする。ただ日本語の「ん」を打鍵するときにnnと打たないといけないときがあって、それは煩わしく感じる。他の人はどうなんだろうか?

 

この同じキーの連続打鍵はキー配列をいじるだけでは改善できない。キーマップで打鍵速度を向上させるならマクロなどを上手く割り当て、それに慣れるための訓練が必要になる。

小指での打鍵

多くの人は小指を器用に動かすのは苦手だろう。pは教本的には右手小指の担当だが、薬指で打鍵する人は結構多いのではないだろうか?

 

薬指も自分はあまり器用に動かせない感じがするが、タイピングでそれを感じたことはない。他の人はどうなんだろうか?

これらのスコアの優劣

キー配列の優劣を議論する場合、ある文字列を与え、上の項目で打鍵の打ち易さ(辛さ)をスコアリングして比較するのが良く行われている。難しいのはこれらの項目の優先順位付けだろう。

 

上に挙げた項目でわかりやすいのはキーのホームポジションからの遠さ。例えばホームポジションはキーが速く打てるので+10点、ホームポジションの隣は+5点、yなどは少し遠いので加点無しと仮に設定してみることにしよう。

 

次にわかりやすいのは同じ指で違うキーを連続打鍵する場合。これは打鍵を遅くするので減点。じゃあどれくらい減点すべきだろうか?ホームポジションの隣を打鍵して得する打鍵時間に比べると失う時間のほうが多い気がするのでー5点よりは大きい減点という気がする。じゃあホームポジションのキーの打鍵で得する時間に比べて損する時間はどうかと問われれば、どうなんだろう?よくわからない。そもそも最初に設定したホームポジションとその隣のキー打鍵の加点が2倍違うというのは妥当なのだろうか?

 

考えだすとこんな具合に各項目の尺度をどうすべきかすぐにわからなくなってしまう。自分ではスコア基準をリーズナブルに決定できる気が全然しない…。

Carpalx

あれこれ考えを巡らせながらこの記事を書いていたら、こんなサイトにたどり着いた。

mkweb.bcgsc.caこのサイトのtyping effortの項目で評価値について詳細が説明されている。すべてを理解できていないけれど、これは自分が考えていたことにかなり近く、より深化させたものとなっている。自分が大変そうだなと考えていた打ちやすい、打ちづらい文字列の組み合わせを3つの連続する文字(triad)で分類している。すごい!

 

なんか見覚えがあるなーと思ったらだいぶ前にTalpkeyboardさんがTwitterで紹介していた。さすがです。

 

Carpalxはキー配列の評価モデルとしてとても良くできている。ただし、それぞれの重みづけを決めるパラメータの値は任意性がある。実際subjecteive(主観的)という語をしばしば目にする。たとえばrowごとにペナルティーを設定していて、1.5を数字行、0.5をQ行(top row)、0をA行、1をZ行(bottom row)に割り振っていたりしている。自分ではQ行とZ行の打ちづらさは大差ないように感じるので、2倍も評価値が違っていいのだろうかと感じてしまったりする。

 

どうやってこれらパラメータの重みを決定するのがいいのだろうか?

 

タイピングデータの取得が必要では?

ある程度客観的に決めるなら、タイピングのデータを取り、各項目でタイピング時間がどれくらい短く、あるいは長くなるかを評価(測定)するのが良いだろう。これはデータさえ取れれば実現できる。またデータがあれば、どういうキーやキーの組み合わせのときに打鍵が速くなる・遅くなるというのも評価できるので、上にあげていない項目も見いだせるかもしれない。

 

ただし、日本語なのか英語なのか、はたまたプログラミングなどかで全然違うだろう。タイピングする文章の内容にもよるし、人によっても違うはず。結局究極のキー配列を選定するためのスコアリング基準は誰の何のタイピングを対象にするかで変わるだろう。万人受けするキー配列はきっと難しいと思うが、”俺の最強のキー配列”にはたどり着けるのではないかという気がする。とても興味があるので自分のタイピングのデータが取得できればなぁと思う。そんなソフト誰か作ってくれませんか?(他力本願)

 

以下ではちょっと違う観点からキー配列の最適化について考えてみる。

言語でのタイピングリズムの違い

日本語と英語のタイピングテストを交互にやってみるとよくわかるが、これら2つの言語の場合で打鍵のリズムが全然違う。英語のタイピングテストでは単語の後にスペースを打鍵する。実際の英作文でも似たような状況になる。単語の間のスペース入力が打鍵のリズムを作っている。

 

一方日本語のタイピングテストでは単語の切れ目でスペースを押すことがない。10以上のアルファベットキーを連続してタイプしたりする。息を止めて水の中に潜るのになんとなく似ている気がする。これに対して実際の日本語の文章を書くときでは漢字変換のためにスペースキーを押すので、作文時とタイピングテストのときでリズムが異なる。これが原因なのか自分は日本語のタイピングテストがちょっと苦手。

 

またQWERTY配列で英語をタイピングしているときは、格ゲーのコンボ技みたいに気持ち良く3文字かそれ以上の文字列を速く打てる組み合わせがある(上述のpointなど)。日本語ではこのコンボはあまりないような気がする(自分のタイピングの練度が低いせいかもしれない)。英語は表音文字で決まった音節の文字列が頻出するからだろうか?

 

上に述べた打鍵のリズムと最適なキー配列というのは何か関係があるのではないかという気がする。日本語の打鍵では子音と母音が交互に現れてある程度の長さの文字列をタイプするのがほとんど、というのを前提とした場合(これはどこまで正しいのだろうか?)、Tomisuke配列のように母音と子音を左右に分け、左右交互に打鍵するようなキー配列は打鍵のリズムを良くする最適解の一つという気がする。

 

キー配列の最適化は指8本でいいのか?

キー配列の研究では左右の親指を除く8本の指の最適化の議論がほとんどだと思う。これはステレオタイプなのかもしれない。

 

タイピング女王のmiriさんの打鍵動画(例えばこれ)とかを見ていると、教本的なホームポジションやキーと指の対応に捕われていないのに気づくとこができる。これは示唆に富んでいて面白い。とてもタイピングが速いので運指を追うのは大変だが、右親指をアルファベットの打鍵に使用していたりする。そのためなのかホームポジションasdf、jkl;ではないように見える(母音のキーをホームポジションにしている?)。

 

多くの人はスペースキーは左親指だけで押しているのだと思うが、そうすると右親指は使われていないわけだ。この指もアルファベットの打鍵に参加させればタイピング速度を向上させることができるだろうし、タイピング女王はまさにそれを行っている。

 

自作キーボード界隈ではほとんどの人は親指にModifierを担当させていると思う。これはもちろんわかりやすい。ただタイピング女王の運指を見ていると、親指の役割はもっと柔軟に考えても良いのかもしれない。

 

キーへの指の割り当てを固定するのが最適なのか?

教本的なタイピングではそれぞれのキーに対してある1本の指を割り当てる。これはたぶん初心者の混乱を避けるためではないかと思う。このルールに従うと、例えばnumberとタイプする場合、numは右人差し指で3連続してタイプすることになり速く打つのは難しい。

 

自分はすでに基本からズレてしまっていて、numberをタイプするときにはどうもnを右人差し指、uを右中指、mを右人差し指でタイプしている(ことにこの記事を書いていて気づいた)。underをタイプするときのuは基本通り右人差し指なので、文字列によって切り替えているらしい。自然と物理配列に適応した結果なのだろうが、ある程度ブラインドタッチができるくらい熟達した人ならキーと指の対応は固定しなくてもいいのかもしれない。

 

別の例はb。教本的な指の割り当てだと左人差し指の担当である。だたbeやbaなどの組み合わせの場合、自分はbを右人差し指でタイプしている。一方bi,、bu、boという場合はbは左人差し指を使っているみたい。bキーはちょうど左右のホームポジションの真ん中に位置していて左右から等距離にあるので、原理的にはどちらの手で打鍵してもいいはず。

 

これらのようにタイプする単語によってキーを担当する指は柔軟に変えてもいいのだと思う。こういうことを言い出すと、キー1個に対して文字が1つである必然性もない。究極はやはりステノタイプだろう。憧れるけれど、学習コストがハンパないので一般人には手が出ない。

 

あまりに発散的に考えるとキー配列の最適化をどうしたらいいのかわからなくなるので、

  • 日本語の入力方法(ローマ字入力、かな入力)
  • 物理配列(raw staggered、ortholinear、column staggered)
  • 親指は文字入力に参加させるかどうか
  • 使用する指とキーの物理配置との対応

等の項目は決めたうえでキー配列の最適化に取り組み始めるのが妥当だろう。raw staggeredとortholinearの比較とかもできたら面白いと思うけれど公平な比較は簡単ではないだろう。

 

あとがき

キー配列の最適化はやっぱり沼ですね。深遠で考えるほどわからなくなってきます。実際この記事を読み返すと?がたくさんある…。

 

独自の配列とか作ってみたいと思いますが、今のところは自分が納得できるようなキー配列の評価基準を決定できる気がしません。タイピングデータを取得ができるようになったらぜひチャレンジしてみたいですね。

 

この記事は自作分割キーボードopyc3437で書きました。

3Dプリントで作った自作キーボードケースの塗装

3Dプリントで作った分割キーボードケースの塗装にチャレンジしてみました。

 

3Dプリントサービスを利用して作ったケース

最近自作した分割型のキーボードopyc3437ではJLCPCBの3Dプリントサービスを利用してケースを作った。3Dプリントサービスを利用すると、立体的なケースを作成することができるけれど、そのままだと白くて味気ない(素材のそのままの質感を味わうというのもあるかもしれないけれど)。ケースの見た目が良いとやっぱりテンションが上がるし、だからなんかこう良い感じにしたい。そんなわけで全く経験のない塗装にチャレンジしてみることにした。

 

どうやって塗装すればいいの?

これまでの人生では塗装と全く縁がなかったので、どうしたら良いか右も左もわからない。調べてるとプラモデルの塗装について情報が多く見つかる。3Dプリントされたものの塗装について例をあまり見つけられなかったが、一番参考になったのは下記のサイト。

www.form2.shop

www.form2.shop

こんなふうに綺麗に塗装できるようになりたい。

 

手順はこのページに従うことにして、どうやってスプレーを吹くのかをYouTubeで調べる。丁寧にやり方を説明しつつ実演してくれている動画がたくさん見つかる。いや~、いい時代ですね。ポイントは

  • 使用前にスプレー缶よく振る。
  • 10cmくらい離して吹く。
  • 吹き始め、吹き終わりの時は対象物から外す。
  • 吹き足りないくらいで止める。後で足せる。吹き過ぎてはダメ。
  • 塗装、乾燥を繰り返す。

という点かな。

 

さて、どんな色にしようか?上のクワガタの塗装の例のようにメタリックな色に憧れる。メタリックで明るい色だとうるさい感じになるかなと思い、暗めの色にする。結局ディープメタリックブルーにすることにした。またトップコートも落ち着いた仕上がりにすることを意図して艶消しを用いることにした。

 

使用したのは以下のスプレー。

www.mr-hobby.com

www.tamiya.com

www.mr-hobby.com

※2022/07/23追記

サリチル酸さんは数年前にMJFの3Dプリントしたケースの塗装をしていたようです(この記事を見つけられなかった我が検索力よ…)。3Dプリントされた自作キーボードケースの塗装をしてみたい方はこちらも参考になるかと思います。

Colosseum44のビルドログ(準備~塗装編) - 自作キーボード温泉街の歩き方

 

塗装の予行練習

いきなり本番は怖いので、適当なプラスチックに吹き付けてみて練習。練習台にしたのはケーブルを束ねるコイル状のプラスチック。試しに塗装して練習&仕上がりの色や質感を確認。つや消しのトップコートを吹くとかなり落ち着いた感じになる。ぼんやりイメージしていた質感に近かったのでこのスプレー缶の組み合わせで良さそう。

適当なもので練習&色や質感の確認。真ん中の部分にはマクキングテープを貼ってマスクのテスト。

 

塗装の準備

塗装する分割キーボードはしばらく使用していたので塗装前に洗浄したい。でも3Dプリント素材のLEDO6060の耐水性が気になる。調べてみるとWenextのページにはwaterproofとあったので大丈夫そう。本当は脱脂とかするべきなんだろうけど、何が使えるかがわからない...。結局水洗いだけにして中性洗剤とかを使うのはやめておいた。

 

塗装するときに持ち手を用意する必要がある。練習したときに使ったワニ口クリップが先端に付いた竹串みたいなやつは、プラモデルの塗装によく使われているみたい。ただしキーボードケースは大きいし重量もある程度あるので同じものは使えない。

 

どうしたもんかと少し考えたが、割りばしをケースねじ穴に結束ワイヤーを利用して固定し、それをダンボールで作った三角の柱に固定した。簡易的に作った割には悪くない。

割りばしと結束ワイヤー、ダンボールを組み合わせて塗装用台&持ち手を作る

マンション住まいなので塗装はベランダで。ベランダを塗装してしまわないようにダンボールで簡易的な塗装ブース(という名のただの箱)を作ってその中で塗装をすることにした。

ベランダに塗装用ブースという名のダンボール箱を準備する

 

まずは左手側ケースの塗装

サーフェイサー

サーフェイサーを吹く。最初に薄く吹き付け、20分ほど待って乾かす。その後さらに吹き付け、素材の元の色が見えず、表面全体がグレーになるまで吹いた。下の写真は2回目の吹き付けの後。

サーフェイサーを吹き付けた後

カラー塗装

サーフェイサーが乾いたらカラー塗装。練習で結構な量を消費していたためか、1回目のケース塗装中にスプレーが切れた。切れる直前はドバっと霧が大きくなることがあり、ケースの一部に大きな水玉ができてしまった。

 

スプレー缶を補充して別の日に2回目の塗装。表面が一様に濡れるくらい吹き付けた。あまりやりすぎると水たまりみたいになってしまうので、その手前でやめるイメージ。結構厚塗りかもしれない。完了したら20分くらい乾燥させる。

トップコート

2回のカラー塗装のあとはトップコート。まず側面の4面が一様に濡れるくらい吹く。その後上面を吹き始めるが、吹き始めたところでスプレーが切れる。次の缶を2分程度振って再開。上面が一様に濡れるくらい吹く。その後20分程度乾燥。

 

2回目はキーキャップのすぐそばになるケース内壁も塗ることを意識して吹き付ける。スプレー缶が切れてしまったので終了。だいたい全体に吹きかけたが、一部ドバっと吹き出て玉になってしまった。とりあえずこれで左側ケースの塗装は終了。

 

左手側ケースの塗装の反省点

やってみるといろいろわかる。

  • 全体が一様に濡れる程度に色の塗装・トップコートの吹き付けを行うと仕上がりが良い
  • ケース左手側の塗装に必要な量はだいたい以下の通り
  • サーフェイサー170ml缶 x 1本
  • カラー 100ml缶 x 1.5本
  • トップコート100ml缶 x 1.5~2本

初めてやったこともあって、どちらかというと反省点が多い。

塗装前でケース全体が白い色の状態では気にならなかった3Dプリントの積層痕や小さな窪み・傷などは、塗装後だとはっきりとわかるようになる。これはサーフェイサーを吹いた時点でよくわかるのだが、1000番のサーフェイサーでは番手が細かすぎて消すことはできない。良い仕上がりにするためには塗装前に十分にやすりがけをしておく必要がある。

塗装すると傷や積層痕がよくわかるようになる

 

また、積層痕が見えない面でもサーフェイサーを吹いただけだと表面がざらざらしている。仕上がりにこだわるなら参考にしたページにあるようにサーフェイサーを吹いた後に爪磨きややすりなどで表面をつるつるにしたほうが良いだろう。

 

ダンボールの柱は少し不安定で何度か転倒させてしまった…。転倒させるとゴミがついたり傷ついて塗装が剥げたりして、良いことは何もない。もっと低くていいし、安定性が大事。あるいは塗装後の乾燥は室内のほうが良いかもしれない。

 

良い仕上がりのためには、スプレー缶が切れる直前を見極めるのが非常に重要であることがわかった。切れる直前は塗料の出が少なくなったりして安定しなくなる。もったいなから使い切りたいと思ってさらに続けるとドバっと出て霧の球が大きくなり、これが対象物に乗ると大きな(といっても1mmくらいの)玉になってしまう…。

 

スプレー缶はケチらずに、切れかかったら多少残っていても新しいものに交換したほうが良い。缶の塗料の量が減ってくると、缶の中の撹拌玉のカラカラとした音が良く響くようになる。これとスプレー時の塗料の出具合からスプレーの交換タイミングをよく見極める必要がある。

 

最も難しいと感じたのはトップコートの吹き方。出来上がったものの表面は若干白化しているように見えなくもない。雨の日のような湿度が高い状況だと白化するというのは事前に調べたときに目にしたのでこれが原因かと思った。ただ窓全開状態の部屋の湿度計は50%程度だったので、湿気が問題ではなさそう。吹き付けすぎなのだろうか?

 

右手側ケースの塗装準備

いろいろしくじった左手側の反省を活かし、まずはサーフェイサーを軽く吹いてケース表面の凸凹を見えやすくする。そしてやすりがけ。グレーのサフが削られて元の3Dプリントの素材が見えるくらいで積層痕がはっきりと見える。これがなくなるまで320番のやすりで磨いた。

 

いくつか小さな凹みや傷があるが、すべて除去しようとするとだいぶ削る必要がありそうなので諦めた。そういう場所はサフを集中的に吹いてもいいのかもしれない。積層痕が見えなくなったら600番でやする。さらに1000番くらいでやすったほうが良い気がするけれど、それはサフが埋めてくれることを期待して省略。

 

やすりがけが終わったら水洗い。粉が角に残ったりするので綿棒で削りカスを取り除いておく。その後、左手側と同じ要領で塗装用の持ち手を作る。今度はダンボールの柱の背を低くして安定性が良くなるように丁寧に作る。

 

右手側ケースの塗装

塗装準備が整ったらサーフェイサーを吹く。1回軽く吹いた後20分程度乾燥。その後2回目のサーフェイサーを吹く。2回目は表面が全部覆われて3Dプリンタの素材が見えなくなるくらいまで吹く。吹き終わったら1時間くらい乾燥させた。

 

乾燥後表面を指でなぞってみると、やっぱりザラザラしている。今度はここで磨きの工程を加えてみる。あらかじめ準備しておいた爪磨き#1000で表面を軽くやする。数回磨いたら指でなぞって感触を確かめる、というのを繰り返して表面全体がつるつるになるまでこれを行う。トップコートがつや消し仕上げなので目立たない気がするけれど、光沢のあるトップコートであればこの工程は重要だろう。磨き終わったら水洗いして粉を落とす。

サーフェイサーを吹き付けただけだと表面が少しざらざらしている

 

次はカラー塗装。これも2回に分けて吹く。1回目に軽く吹き付けて15分乾燥。その後もう一度吹き付ける。面が一様に濡れるくらい吹き付ける。ただしやり過ぎないように。今回はスプレー缶が切れるのをちゃんと見極めたので、塗料がドバっとでることもなくきれいに塗装できた。

 

さて、次は問題のトップコート。左手側ケースの時を反省して吹き付けすぎないことを意識してみる。1面ずつ一様に濡れるくらい吹き付ける。乾燥後割といい仕上がりだが、トップコート1回だと耐久性は大丈夫だろうか?心配なので乾燥後にもう一度吹き付けてみることにした。

 

ただ、吹き付けすぎて左手側のように仕上がりが白っぽくなってしまう心配がある。そこで一番目につかない背面側だけ2回目の吹き付けを行い、様子を見てみることにした。1回目と同様に面全体が一様に薄く濡れるくらい吹き付けた。これを行っているときに、吹き付けていない上面側が白い粉が吹いているみたいになっているに気づく...。そこで上面も吹き付けることに。ただ、ここでトップコートが切れかけてきたので中断する。

 

この時に一つの仮説が浮かぶ。塗装ブースという名のダンボール箱の中でスプレーしていると、対象物にかからなかった霧が結構長い時間ダンボール箱の中を漂う。これが塗装していない乾燥した状態の面に付着すると、白い粉が吹いた状態になるのではなかろうか?

 

だとすると、ケース全ての面が一様に濡れる状態になるように素早く吹き付ければいいのではないかと考えた。さらにダンボール箱のような半分閉じた空間だと霧が長時間漂うので、比較的換気の良いところで吹くほうが良いはず。

 

そこでもう一度トップコートを吹くことにした。これはダンボール箱の中では行わず手に持った状態で行う。トップコートは透明なので、ベランダに多少付いてもわからないし。全体が薄く一様に濡れる程度に素早く吹き付ける。その後乾燥。ベランダに置いておくと風で転倒させそうだったので室内で。

 

結果としてこれが正解みたい。左手側にあったような白い粉が吹いたような様子はなく、いい感じの仕上がりになった。

 

左手側ケースの修正

左手側ケースは特にトップコートでのしくじりが残念。ドバっと出たところが白い塊になっていたり、一部は吹き付けすぎ(?)で白いポツポツができている。この修正を試みる。まずは薄め液をつけてみた。使用したのはこれ。

www.mr-hobby.com

薄め液を少しだけ紙コップにとってそれを綿棒につけ、白い塊のところをトントンしてみる。多少目立たなくはなるが、完全には除去できない。さらに少しゴシゴシ擦ってみる。これも大差ない。どちらも乾いた後の質感が他と違う…。薄め液での対処はいまいちのようだ。

薄め液をつけた綿棒でトントンしたりこすったりした後

 

次にやすりをかけてみる。トップコートの白いポツポツを取ることができるが、見た目が変わってしまう。トップコートの層が除去されたからかな?

 

薄め液ややすりをかけた場所の質感がだいぶ値がてしまっているので、最後にトップコートを一部に吹く。乾燥したのを見るとだいぶ目立たなくなった。ヨシ!

 

ケース内壁にトップコートを追加

塗装の作業をして気になり始めたのはケース内壁の部分。ここはキーキャップと接近するところ。ここをしっかり塗装するのはちょっと無理。キーキャップをつければほとんど見えないのだが、気になるのはトップコートの塗り。これが不十分だとキーキャップが少しあたった時に色が移りそう...。それは絶対に避けたい。

 

そこでトップコートをこの内壁部分に追加することにした。スプレーでこの狭い領域を狙って吹きかけるのは無理なので筆で塗る。トップコートを紙コップの中に少量吹く。これを筆で取って内壁に塗る。粘度が高いので塗りづらい。後で思ったけど上の薄め液を少し足せばよかったかもしれない。塗りが難しいために少し失敗して上面側にはみ出してしまった…。

 

完成!

塗装してから2日程度乾燥させた後、基板とキーキャップを再び取り付けて完成!初めて挑戦した割には悪くない仕上がり。2回目に塗装した右手のほうが表面の質感が良い。多分サーフェイサーの後に磨いたのが効いているのだと思う。やっぱり手間をかけるほどいいものになりますね。

左右で少し色の深さが違う

色の選択はばっちり自分のイメージしていた通り。暗めの青だけれどメタリック感がでしゃばることなく主張していていい感じ。写真だとわかりづらいけれど左右で色の深さが少し違う。右のほうが少し明るくて左は少し暗くて濃い。これはカラー塗装の厚さが違うせいだろうか?やっぱり塗装は難しくて奥が深い。こういうのやってみるとキーキャップで色を均一にするのとかすごいなと思う。

出来が良い右手側ケースの違う角度からの写真

一つだけ心配なのは色落ち。これはしばらく使ってみないことにはわからないけれど、今のところ手が青くはなっていない。

 

あとがき

3Dプリントしたケースの塗装にチャレンジしてみました。試行錯誤しましたが、結構良い仕上がりになったと思います。これができると、3Dプリントで任意の形状のケースを作り、塗装で好きな色・質感にできるので、キーボードケース製作の可能性がぐんと広がります。

 

この記事は自作分割型キーボードopyc3437で書きました。

 

分割型キーボードの自作(4)

今まで触ったことすらなかった分割型キーボードを自作しました。今回は組み立てて完成まで。

 

キーボード基板のはんだづけ

まずは右手分のPCBにMCUセラロック、抵抗や10μF, 1μFのコンデンサなどをはんだ付け。セラロックはFA238などの水晶振動子と比べると手はんだしやすいのでいいですね。さらにUSBコネクタ基板とリード線でつなぐ。VCCが他と導通していないことをテスターで確認後、PCにつなぐ。ちゃんとMCUが認識されたらファームを焼く。

 

ファームはQMK firmwareで作成。左右のMCUに同じものを焼くことになるらしい。自分が作ったのはMasterが右。QMKは左Masterが標準と思って作ってあるっぽい(アップデートしてないので最新版は知らない...)。

#define MATRIX_ROW_PINS_RIGHT { <row pins> }

はあるけど、_LEFTはない。最初そのことに気付かず少し混乱した。ファームを焼いたらUSBコネクタを接続して右手のスイッチ部の配線を導通させて入力を確認。

 

問題ないことを確認出来たらダイオードをはんだ付けする。今回は配置を一列に並べたのでとっても楽なはず!と思っていたのだが、やってみるとそうでもなかった。少しでも位置がずれているものがあると目立って気になってしまうのです。そのため、ずれないように位置合わせにとても神経を使うようになり、結果疲れる。まあでも頑張ったおかげでダイオードは綺麗に並んだ状態にできた。

 

右手ができたら同様に左手も。左手側の動作を確認するためにはPCBとTRRSコネクタをリード線でつなぎ、左右を接続する必要がある。コネクタのどのピンにVCC, GND, Dataの線を繋ぐかを考える。挿入時にVCCと他の電極が導通してしまう可能性は避けられないので、TRRSを繋いでからUSBで繋ぐということにする。そう思うと何をどうつないでもいい気がする。

 

foostanさんの自作キーボード設計入門によれば、3極のケーブルを挿しても問題ないようにしておくと安心とある。これは頒布するなら考えていたほうがいい。ただし自分しか使わないのでやっぱりどうでもいい気がする…。

 

TRRSコネクタを良く観察してみると、ピンの1つだけ色が違う。データシート見ると1つだけ金メッキしてある。オーディオで使用するときに信号線を繋ぐことを想定しているのだろうか?とりあえずこれにシリアル通信のData線をつなぐことにする。VCCとGNDはピンが変形しても導通しないようにピンが対面になるようにした(だったら熱縮チューブで保護すべきだが...)。VCCがスリーブ(コネクタの入り口側)に来ると少し気持ち悪いのでGNDをスリーブにした。

 

TRRSコネクタのピンにリード線をはんだ付けしたら、自作した固定用アルミアングルにコネクタを固定してリード線に熱縮チューブを通す。その後、リード線をPCBにはんだ付け。PCBのスルーホールの間隔が狭すぎた。はんだ付けの難易度が高い…。心配なのでテスターで各電極が導通していないことを確認。

(左)TRRSコネクタをアルミアングルに固定、(右)TRRSからの線をはんだづけするスルーホールは間隔が狭すぎた

TRRSコネクタもつけて左右を接続できるようになったので、左側基板の動作確認を行う。

ダイオードまでつけて動作確認

特に問題ないのでスイッチをはんだ付けする。いつもなら組み立てを始める前にキースイッチの選定をしておくのだが、今回は完了できていなかった。すぐに使いはじめてみたかったので、とりあえず家に大量に余っているスイッチをつけることにする。ルブの有無で滑らかさが全然違うので最低限ルブされたスイッチを使いたい。ただし面倒なので、過去に使用したルブ済みのスイッチを使いまわす。これに加えていくつかのスイッチを新たに購入して試す。

今回新たに購入したのは以下のリニアスイッチ。

  • Green snake switch
  • JWK JWICK white linear

これらを右手の頻度が高いアルファベットのキーに配置する。残りは家で余っているルブ済みの以下のスイッチをつけた。

  • Everglide aqua king
  • Gateron pro yellow
  • Gateron Box Ink Pink

スタビライザーはDUROCK V2, Tecsee, Mekanisk Ultramarine stabilizer v2を使用。Holee Modを施し、PCBにはKBDfansのStabilizer foamを貼り付ける。スタビライザーが2Uサイズの場合にはこのModで結構好みの打鍵音になる。Stabilizer foamをつけると、1.6mm厚のPCBの場合はスタビライザーの取り付けが結構きつくなるが、そのためかスタビライザーのハウジングの爪が折れてしまった。スタビライザーって割と高級なのに…。一応使えるのでしばらくこのまま使ってみるけど、キーキャップを交換するときが不安。

スイッチをはんだ付け。スタビライザーのひっかけるところが折れてしまった…。

 

アクリルのボトムプレートの組み立て

ケースのボトムプレートは、アクリル板にガスケット受けとなる3つの板を接着剤で固定して作る。アクリル接着について調べると、セロテープで固定せよ、というのが出てくるのでこれまでセロテープで固定していた。ただセロテープが作業中に無くなってしまったので代わりにメンディングテープで固定した。ちょっと心配だったが特に問題にはならなかった。セロテープを使え、というのは粘着力が強くてテープの強度があるからかな?

 

接着は一発勝負。ズレた状態でくっつけてしまうわけにはいかない。接着を行う前に、テープで固定したボトムプレートを3Dプリントケースとキーボード基板と組み合わせ、位置を確認する。ズレていれば位置を修正して、再度組み合わせて確認をする。これを複数繰り返し、調整が終了したらアクリル接着剤で接着。すぐにくっつくけど念のため1日程度置いておく。完成したボトムプレートは下の写真。

アクリル製のボトムプレート

キーボード基板をケースに取り付ける

PCBの両面にキースイッチ部を囲うように3mm厚のPoronシートを貼り付ける。基板にシルクで貼付け領域を描いておいたので位置合わせがやりやすかった。

PCBの両面にPoronシートを貼り付ける

その後、キーボード基板を3Dプリントケースに収めて、コネクタをねじ止め、ボトムプレートをケースに固定する。フォームの粘着シールの厚さを考えていなかったためか、結構Poronフォームを潰した印象がある。また手前側のフォームは少しハサミでカットするなどして体積を減らした。そうしないとキーボード基板がケース背面側に寄ってしまい、キーキャップをつけたときにケースと干渉してしまう。

 

組み立て後の裏側の写真はこんな感じ。

組み立て後のケース裏面の写真

完成!

最後にキーキャップをつけて完成!とりあえずBキーが2つある(そういうセットを購入した?)MT3 Extended 2048のキーキャップを装着した。

完成!

一番のお気に入りポイントは側面から見たときのケースのシルエット。幅の広いベゼルの緩やかな曲線が良い感じ。またケース上面のキーキャップとケースの隙間を小さくしたので、その隙間からケース内部(PCB)が全く見えない。これも自分的には満足度が高い。

 

TRRSケーブルは、左右のキーボードを目いっぱい離して配置しても大丈夫なように2mを用意しておいたのだが、これはあまりにも長い…。1mでも十分な気がするけどまあ使えるからよし。

 

ちょっと煩わしいのは、USBでPCとつないだ状態でPCを起動するとキーボードが反応しない。右側だけでも同じ症状が起こるので無駄に長いTRRSケーブルや左側基板が原因というわけではないみたい。再起動の場合は大丈夫。何が原因だろう…。まあUSBコネクタ抜き差しすれば使えるのだけれど。

 

あとがき

初めての分割型キーボードが完成しました。完成したら早速使ってみようとするわけですが、いろいろわかりません。どれくらい離しておくのか?前後の位置は?角度は?そもそも普段から姿勢が悪いウルトラ猫背人間なので姿勢の良い状態が感覚的にわからない…。分割キーボードはどのような配置で使うのがよいのか、いろいろ試してみる必要がありそうです。

 

また3Dプリントケースは真っ白い色でこのままでも悪くないですが、せっかくなので塗装にチャレンジしようと考えています。塗装の心得が全くないので見た目を劣化させてしまうかもしれませんが。

 

分割キーボードの配置や使用感、塗装のことなどについてもそのうち記事を書くかもしれません。

 

この記事は自作ガスケットマウントキーボードchex68で書きました。

分割型キーボードの自作(3)

今回はケースの設計について。いろいろな寸法の遊びとかがちょうど良かったので自分のメモ代わりに無駄に細かく書いています。

3Dプリントのケースに挑戦

キーボードを自作するたびに、何かしら新しい要素を取り入れたり、やったことのないことに挑戦するのが自分ルールになりつつある。今回は分割というのが自分にとっての新しい試みなのだが、ケースについても何かしら今までやったことないことをやりたいなと考えていた。木をくりぬいたりして木製の立体的なケースが作れたらいいなとぼんやりと思っていたけど、分割だと左右2つのケースがいるのであまりに手間がかかるのはしんどい。そんな中このブログの記事に出会う。

kurihara.hatenadiary.jp

3Dプリンタはとっても魅力的ではあるけれど、積層痕が好きになれなくて選択肢にはならないなとずっと思っていた。ただ、このブログの画像を見ると積層痕は全然見えない。これは光造形だからだろうか?しかもだいぶ安く製作できるみたい。これだったら仕上げに塗装すればいい感じの立体的なケースができるのではないかと考えて、初めて3Dプリントサービスを利用したケース製作にチャレンジしてみることにした。

 

外形

前回の記事の通り、USBコネクタ基板やTRRSコネクタのスペースを確保するためにケース奥側のベゼルを広く取ることにする。いつのもように設計はAutodesk Fusion 360で行う。まずはPCBとキースイッチ描き、それに合わせてざっくりとケース外形を描いてみる。

 

できるだけPCBやキースイッチを見えないようにするのが好みなので、キーキャップ底面の高さがケース上面よりも低くなるようにしたい。これは見た目だけではなく、打鍵音の点でも重要ではないかと思っている。音がケースの中に閉じ込められるからだ(ちゃんと調べたことないけど...)。自分はたいてい背の高いプロファイルのキーキャップを使うので、キースイッチの位置は結構低めにしても問題ないはず。

 

今回は側面から見たときにキースイッチのステムが半分くらいケース上面よりも下に来るようにしてみる。最悪ガスケットのフォームの厚さで調整すれば1,2mm程度は修正できるはず。チルト角度は6度くらいにすることが多いけれど、今回は8度とややキツめにしてみることにした。

ケース外形をざっくりと作る

 

さて、ベゼルが広くてただの角ばった形だと面白味がない。あれこれといじりながら模索した結果、広いベゼルの面を緩やかな曲線にすると柔らかい印象になっていい感じがするという結論に至った。側面のスケッチでスプライン曲線を描いて切り取ると2次元的な曲面を作れる。どのくらいの曲率にするのかは勘だけど、曲面であることがぎりぎりわかるくらいの緩やかさを狙った。

ケース奥側のベゼルを緩やかな曲面にする

手前側のベゼルも奥側と同じように緩やかな曲面にする。はじめは大きなRをつけてまるっとした形状を考えていた(下図)。ただ、どうせ手前にはアームレストを配置することになる。そうすると曲面の半分くらいが隠れてしまう。ケースの前面でケースとアームレストの高さがだいたい合うほうが良いかなと思って手前の面は平面にし、上面は緩やかな曲面にした。

最初に考えていた手前側ベゼルの形状

 

上面を曲面にしてみると、他が平面なのはなんだかしっくりこない。側面と背面もちょいと細工してみることにする。せっかく3Dプリンタでケースをつくるので、統一感はあまり気にせずに板材の加工では作るのが難しいような形状にして遊んでみる。背面はデコボコな形。適当に書いた台形っぽい形を5mm切り取ってへこませる。柔らかい印象にしたいのでフィレットをつける。凹んだところにUSBとTRRSコネクタがだいたい左右対称になるように配置する。

ケース背面の形

 

側面はちょっと違う作り方をしてみる。3度傾けたスケッチ面に楕円を書いてそれを射影して切り取ると下図のような形ができる。ただ、この切り取りは浅すぎてレンダリングで確認するとこの形はぱっとわからない。実際も浅くてほとんどわからなかったのでレンダリングでの凹凸感は結構現実に近いのかもしれない。

ケース側面。傾いたスケッチ面に楕円を書いて切り取るとこんな形が作れる。

 

それにしても立体的なケースのデザインは難しい。曲面があると特に難易度が高い。曲面を上手に使って恰好いいカスタムキーボードとか設計している人の頭の中は一体どうなっているんだろうか?どんなふうに設計しているのか一度お手本を見てみたいものだ。

 

あとは細かい部分。キーキャップの端が来るところのそばまでケース内壁を内側へ伸ばす(下図)。できるだけキーキャップとケースの間の隙間は小さくしたい。1Uのキースイッチのピッチは19.05mmになっているので、キーキャップは19.05x19.05mmの四角に収まるようになっているはず。その四角の辺のところまでケースの端を持ってきてもいいような気がする。一方でガスケットマウントで多少キーボード基板の位置がずれる可能性があるので、余裕を持たせたほうが良い気もする。そんなんを考えながらいつもこの遊びをどれくらいとるか迷ってしまう。

キーキャップの端が来るところに合わせてケースの形を整える

これまで自作してきたキーボードでは0.5mm以上の遊びをとっていた気がする。今回はもう少し攻めて19.05mmの四角から0.2mmのところにケースの端がくることにした。3Dプリントの公差が0.1mm~0.2mm or 0.1%~0.2%となっているので、これ以上は攻めないほうがいいかなと。結果としてちょうどいい寸法だった。

 

コネクタの固定部分

選定したパネルマウントのTRRSコネクタは、取り付け板厚が最大2mmまでとなっている。ケース背面の板厚を2mmにしてコネクタを通す穴を空けておけば取り付けられるのだが、3Dプリントの強度が全然想像できず、あまり薄いとパキッといったりしないだろうかという心配があった。そこでTRRSコネクタを19mmx19mmx1mmのアルミアングル(これは自分で加工する)に取り付け、それをケースに固定することにした。

 

アルミアングルのケースへの固定はM2ネジとナットを使用する。逆さにしたケース内部にアングルをのせる台座を作り、台座の側面に4.2mmx2.0mmの四角い穴をアングルが接する面から2.5mmの位置に空ける。この穴にM2のナットを入れることになる。JLCPCBの3Dプリンタのデザインガイドでφ2mmの穴の深さは2.0-6.0mmにすべしとあるので、これに準じてナットの四角穴の深さは6.0mmとしておく。ねじを通すための穴を底面側、側面から3mmの位置に空ける。

ケース内部を底面から見た図。パネルマウントのTRRSコネクタをアルミアングルに固定し、それをケースに固定する。右は断面図

実際のケースは結構がっちりした印象なので、アルミアングルはなくても強度は問題なさそうな気がする。アルミアングルを使う利点としては組み立てしやすいということ。もしパネルマウントのTRRSコネクタを直接ケースに固定するのであれば、基板とケーブルの接続ははんだづけではなく着脱可能なコネクタにするのが良いだろう。そうしないと組み立てが大変になる。

 

USBのコネクタ基板についても、TRRSコネクタと同様に台座を作って穴を空けておきM2ネジ・ナットで固定することにする。基板固定のためのねじを締めるときに、ケースの底板を受ける部分が邪魔してドライバーが使えなかったりしないかが心配。

USB基板を固定するための台座とねじ穴を空ける

 

キーボード基板の固定方法

キーボード基板はガスケットマウントでケースに固定する。基板のキースイッチ部を四角で囲うように上面・底面両面にポロンシートを貼り付けて、ケースで上下から挟んで抑える。上面からは3Dプリントケースでおさえ、底面側は下図のような支持する部品をケース底板につける。これをアクリルで工作することにした。底面の板を3Dプリントで作るのは強度が心配だったのと、アクリルだったらある程度安くできるかなという考えから。

(左)ケース底面と(右)ガスケット受け部の断面図

底面側からガスケットフォームを受ける左右の三角形の部品は、手前まで伸ばすととても鋭くなる。そんな部品だとパキッと折れる未来しか見えない。三角形のパーツの先端は角を削り、キーボード基板の手前側は3Dプリントケースで上下を咥えるようにする。

 

キーボード基板は手前側を先にケース内に入れてから背面側をケース内に入れていくことになる。Fusionで基板の手前側を軸に基板を回転させて、ケース背面と干渉せずにちゃんと入れられることを確かめておく。

 

ガスケットはポロンシート3mm厚を使用する。上下のガスケット押さえの間隔は6.6mm(右図)、基板の厚さは1.6mmなので上下のフォームは0.5mmずつ潰すという計算になる。あとで気づいたけれど、使用するフォームは粘着シール付きでこれの厚さがそれなりにあるはず(0.5mmとかあるのでは?)。なのでフォーム潰し過ぎかもしれない。

 

アクリル底板は3Dプリントケースの切り取った部分にカポッとハマるようにする。こうすれば側面から見た場合でも底板は見えなくなる。底板は3mm厚のアクリルを用いることにし、その板厚の分だけ3Dプリントケース底面を切り取る。切り取る部分と底板の寸法を一緒にしてしまうと嵌められるけど取れない、ということになりかねないので、前後左右に0.2mmずつ遊びを取っておく。

 

3Dプリントケースに底面のアクリル板を固定するための穴をケースに空ける。固定方法はコネクタと同じ。四隅と前後中央の計6か所に穴を空ける。前後中央はそのためにケース内側に柱を追加する。

ケース底面から見た図。四隅と前後の中央に底板固定用の穴を空ける。

 

ケースの肉抜き

JLCPCBにstepファイルをアップロードすると見積もりが出る。設計している途中に価格が気になって数回アップロードして見積もりをチェックしたが、なんとなくプリントする対象の体積で価格が決まっているのではという仮説がたった(ちゃんと調べたわけではない)。

 

ケースはそれほどコンパクトではないし、左右分の2個つくることになるので、1個当たりの価格はできるだけ抑えたい。そこでケース手前の部分などの肉抜きをして体積を減らす。実際これをやると価格が少し下がる。

 

打鍵音の点では空洞を作らないほうが良いだろうし、空洞が無いほうがケースの剛性が向上していいだろうけど、今回は打鍵音よりもできるだけ安価にすることを重視する。ケース設計が複雑で失敗しそうな気がしていたので…。ただし肉抜きをやり過ぎてあまりに薄くしてしまうと強度や変形が心配なので、コネクタがつく背面を除いて3mmは厚さを取ることにした。断面図は以下のような感じ。

ケース断面図

 

ケースの発注

右側のケースデザインのコピーをもとに左側もデザインする。左右のケース外形を共通にできたので、大きな修正が必要なくて作業がだいぶ楽だった。ケースの設計が終わったらいよいよ発注。

 

JLCPCBのSLAだと3種類の選択肢がある。一番安価なのは9000Rだけど、Heatproofが46度。真夏に直射日光があたった場合の暑さに耐えられるのだろうかという不安からレジンの中でも最もHeatproofの温度が高い(56度)LEDO 6060を選んだ。

 

オーダーするとまずチェックが入る。10分ほどでメールが帰ってきた。早い!複数のパーツがあって問題があるよとの指摘。しかしパーツは1個のつもりなので、あれ?と思ってstepファイルをFusionで開いて確認してみる。チェックのために描いたナットがあったり、一体と思っていたケースが一部だけ別のパーツになっていたのが原因だった。オーダーする前にファイルをちゃんと確認しないといけないですね…。

stepファイルをFusionで開いてみるとボディが複数ある…

 

修正・確認してもう一度オーダー。システムの都合で最初にオーダーしたものはfailedとして、もう一度新しくオーダーする必要があったため。担当者にお礼を添えてメールを返信。40分後くらいにapprovedの連絡を受けた。早っ!!

 

アクリルパーツはいつもお世話になっているはざいやに発注。オーダー発注なのに安いしカットの精度も良いので助かる。ただ部品数が片側4個あるので、もしかしたらガスケット受けの部分だけ3Dプリントで作ったほうが安かったかもしれない(けどこれは未確認)。

 

3Dプリントケースが来た

JLCPCBに発注したケースはApproveされてから28時間後くらいに発送された。すごい早いっ!!!まあ輸送で8日くらいかかったけれど。下図は届いたケースの写真。

(左)ケース底面側。(右)ケース上面は模様が見えて少しデコボコしている。

総評としては結構精度が出ていて変形などはなく良い感じ。面によって表面の粗さが違う。人間の手は感度が高くて小さなデコボコが結構わかるものだが、背面はつるつる。一方で側面や上面はデコボコを感じる。側面はよ~く観察すると斜めの積層痕が見えるがとても細かい。この積層痕は、ケースをデスクの上に置いて部屋の照明でふつうにみるだけなら全然わからない(光を反射する白色だからかもしれない)。

 

上面は少しデコボコしていて少し模様がある。プリント時にサポートがついていたのかな?どうせなら背面よりもこの上面をつるつるの仕上がりにしてくれたほうが良かったのだけれど…。ただしこれも目立たないのでそれほど気にならない。側面の丸く切り取った形状はだいぶ薄っすい感じでうまく光を当てないとわからないくらい。今後このような模様をつけるなら要改善ですね。

(左)ケース側面、(右)底板固定用のねじ・ナット穴の確認

 

一番心配だったのは固定用のねじ・ナット穴など。USB基板のねじ止めの際にケースが邪魔でドライバーが使えないかもしれないという心配があったが、ぎりぎり固定できたのでケースを削らずに済んだ。またナット穴の寸法はきつ過ぎずゆる過ぎずでちょうど良くて完璧。ヨシ!

 

唯一の後悔は梱包に入っていた緩衝材(写真のケースの下の白いやつ)を捨ててしまったこと。これ厚さがあって加工しやすいので今作のキーボードのケースの中に仕込んで空間を埋めるのにちょうど良かったのだけれど…。

 

何箇所か心配なところもありましたが、幸運なことに致命的な設計ミス無く3Dプリントケースが完成しました。それにしても3Dな形状のケースの設計は難しいですね。プラモデルの設計している人とか超人に思えてきました。次回は組み立てについて書こうかなと思っています。

 

この記事は自作分割型キーボードopyc3437で書きました。