2020年5月17日日曜日

ErgoDash を組み立てて Emacs キーバインドにしてみた

組み上がった直後の ErgoDash

新型コロナの影響でテレワークになったのだけど、自宅にはノートパソコンしかなく、小さな画面で目を酷使してしまう日々。2週間程で目の痛さが限界になり、これはイカン!と、環境を整えることにした。作業環境は大切だよね!

まずは、27 インチモニタを購入。お値打ち品は入荷待ちも多く、今回は早く入手したかったので、在庫もあって、色々安心の EIZO を選択した。

次に、MacBook のトラックパッドだけではなかなかつらいので、大きめのトラックボールを購入。

そして、満を持しての初自作キーボードキット購入だ!作業環境は大切だからね!!

え〜っと、じゃあ、どれにしようかな〜(ルンルンらしい)


数字キーは必要でしょう?!


改めて色々自作キーボードのキットを見てみると、数字キーのない 40% ものが多いことに気付く。でも、数字キー無しは玄人過ぎて、ど素人の自分には到底使いこなせるようには思えない・・・。

実際、今度作るとしたらこれ、と思って考えていたキー配置はこんな感じだ。

次作ろうと妄想していたキーボード:数字キー+方向キー

カラム スタガードは外したくなかったので、そうなってくると、Iris か ErgoDash かの2択で最後は迷った。

そして、決めては真ん中の第7列目の存在。片手6列では、どうしても足りないキーがあるよな〜、と思っていたので、人差し指のところに追加列のある ErgoDash に決定!

キースイッチはリニアが好みなので、この際だからと奮発して、滑らかだと書いてあった Turquoise Tealios を買ってみた。今だとお店で触れないから、説明だけ読んで思い切ってみた。

組み立て♪


遊舎工房さんの通販で購入。翌日到着〜♪

ErgoDash キットとキースイッチ

最初は PCB の端を #400 の紙やすりで滑らかにする。PCB が届くといつもやっていることなので、それほどバリは残ってなかったけど、今回もやってみた。

バリ取り完了〜

スイッチ マトリックスのダイオードと、バックライト LED の制限抵抗は、どちらも表面実装のものにした。

最近覚えた、両手でハンダゴテを持って、リフロー風にハンダ付けをする。

予備ハンダを盛って、ペーストを塗って、部品を置いて、両側からジュワッと溶かすと、部品がスルッと収まる。

これを使って、ダイオードと抵抗とフルカラー LED をどんどん付けていく。

両手ハンダごてでリフロー風ハンダ付け

スイッチ マトリックスのダイオードとバックライト LED の制限抵抗のハンダ付け後

ErgoDash の PCB はパッド中央にビアが打ってあるので、裏面にもハンダが出て行く。綺麗に流れて行けばいいんだけど、中途半端なものも多いので、裏面のパッドにもハンダを盛り直す。この作業に意味があるかは分からない。

裏面。パッドのスルーホールから中途半端にハンダが出ている

裏面にハンダを盛り足す

フルカラー LED のハンダ付けも、両手ハンダゴテで行う。マステで仮止めしなくても、大体の位置に入ってくれるので、作業が少し楽、のはず。


こうして、フルカラー LED のハンダ付けまで終わったところで、ピンセットでキースイッチのところをパチパチつないで、動作確認。LED の点灯まで無事 OK だった!

最後はキースイッチとバックライト用 LED のハンダ付けだ。しかし、キースイッチ用のスルーホールは径が大きくて、ハンダをもの凄い勢いで吸い込んでいきますね。

ホットスワップ用のパーツを見てみると、

スイッチ用PCBソケット(10個入り)

端子を挟むところは横穴になってるので、今度 PCB を作る時は、細い横穴にしてみたい。

また、先に右手分を組み立てたのだけど、キースイッチの端子と、バックライト用 LED の端子が出っ張っていて、フラックスの除去掃除がしにくかった。

そこで、左手分を組むときには、キースイッチの端子とバックライト用 LEDの端子を基板表面ギリギリで切断してからハンダ付けしてみた。

キースイッチの端子の切断後(左)と切断前(右)

ゴツゴツが気になる右手側

ハンダ面がなだらかな左手側

あんまり意味無さそうな作業だけど、最後のフラックス除去はしやすかった。


完成!?


アクリル板も取り付け、いよいよ完成かと思って横から見てみると、アクリル板が斜めになっている?よくよく見てみると、スタビライザーのところでスイッチが浮いている。

PCB と上側のアクリルプレートの間隔が一定ではない。

スタビライザーが浮かないように気を付けてハンダ付けしたつもりだったけど、まだ若干浮いていたらしい。

と思っていたら、見ている前で、急に右手側のフルカラー LED の1つの緑が点灯しなくなった!?

不意に LED の1つの緑が壊れた(汗)

早速交換するものの、LED の取り外しにも、ハンダゴテ両手持ちは重宝!

その後1週間ぐらいして、今度は左手側のフルカラー LED がハンダ不良?らしい・・・。

今度は左手側の LED がちゃんと光っていない

でも意外に、フルカラー LED は普段はオフにしているので、まだ直してない(爆)


もげ対策


あと、ProMicro のもげ対策も初めてしてみた。こちらのマステ使う版でエポキシ接着剤を盛る。

マスキングテープを使って、安全にProMicroのモゲ対策をする

マステのくっ付きが不十分で、エポキシが若干コネクタ内に盛り上がっていて、最初 USB コネクタが刺さらなかったけど、1.2φの細い丸ヤスリで削って対応。

これだけ盛っておけば、大丈夫でしょう!?

使ってみて


左右分離型 70 キー


最初に驚いたのは、手首をそれほど動かさなくても、全部のキーに指が届くこと!これは衝撃的だった。

左右分離型であることも、背筋が丸まらず、肩への負担が減ってよかった。

手首をあまり動かさずに、手の中で指をカタカタするだけで打てることに歓喜してくると、今度はもっと小さくしたくなってくる・・・。40% キットが多いのは、こういう理由だったのだろうか!?

それなら、今度自分が設計する時のために、今からどんな配列がよいか試しておこうと思い、試行錯誤中の現在の様子はこんな感じだ。

44キーとトラックボール(と、高さ調整用の定規w)


親指キー


親指が忙しい。それに痛い。親指キーは、おそらく省スペースのために残りのキーに寄っている。しかし、それだと親指の指先でキーを押すことになる。ところが、親指は横に向いているので、押下時に第一関節に力がかかる。仕事で1日もキーボードを叩いていると、第一関節が痛くなってくる。なので、親指キーは少し下に離して、第一関節でガスッと押せるようにしたい。

真ん中の人差し指用の2キー(Del と Enter)は、無しにもしてみたけど、無いとやっぱり結構不便。Ctrl-M で Enter にしているので、Ctrl-Enter が押せない。

う〜ん、Lower+M も Enter にするか?いや、そこは ¥ マークか。結局、この真ん中の2キーが記号にも要るし、Fn にも要るんだよな。ブツブツ。


狭ピッチ?


そしてなにより、数字の入力がまだまだ慣れない。余裕のある時は、Raise や Lower を押しながらホーム列で数字入力、というのは楽で全然良いのだけど、大文字や記号や中かっこが混じったものを入力する時は、Lower と Shift と Lower+Shift で頭の中が大混乱(汗)

でも上段に数字キーを置いても、指が遠いしなぁ。SA をさらに推し進めて、指ごとに形の異なる 3D キーキャップにすれば、遠さは軽減するか?

さらに、キーキャップを 18x17 などの狭ピッチにすれば、もっと軽減出来るかな?

以前、クレバリーさんで触ってみた μTRON キーボードは、「キーちいさっ!」と思ったけど、あれは 17x17 だったようだ。慣れたらなかなかよいかもしれない。でも、市販のキーキャップが使えなくなるのも、それはそれで色々大変そうだなぁ。

というところで、現在うだうだ中〜。


リニアスイッチ


今回使った Turquoise Tealios というリニアスイッチがすごく滑らかで、キーキャップを SA 風に置き換えた(DMM.make で印刷したキーキャップでシリコン型を取ってみた)後の打鍵感が正直たまらない。打鍵音と打鍵感にコトコト重みが出るだけでなく、数字行も近づいて押しやすくなった。

これまで RealForce の打鍵感が最高と思って、静電容量無接点スイッチ キーボードの製作をしていたけど、今のところの自作キーパッドでは、どうにもこの Tealios スイッチには敵わない。円錐バネがビョンビョン鳴るのと、軸がカシュカシュしていて、ガタつきもある。なので、次は MX スイッチで作ろうと方針転換を検討中・・・。


QMK で Emacs キーバインド


学生時代に Emacs に慣れてしまったばかりに、いまだに抜けられないでいる。当時は「窓使いの憂鬱」というソフトで、Windows 上でも Emacs のキーバインドにしていた。現在もその後継の yamy を使っている。

でも、そもそもキーボード側で Emacs のキーバインドを実現してしまえば、毎回こういうソフトを使わなくても、いつもの自分の設定に出来る。

そこで QMK での Emacs キーバインド実装を探してみたけど、ありそうで見つからなかったので、自分で書いてみた。

https://github.com/orihikarna/qmk_ergodash_emacs_keymap

書いてみて意外だったのは、例えば C-a C-e C-a C-e ... と打ち続けているとき、直前の a キーが離れる前に、次の e キーを押している時がある。最初うまく動かない時があって、あれ?と思ったら、こういうケースに対応が必要だった。

あと、Windows では、Alt を単独で押下すると、メニュー項目にフォーカスが移ってしまう。そのため、M-f などを拾って代替シーケンスを送っても、まだメニューにフォーカスがあるままになっていて、うまく動かない。

この Windows の Alt メニューを抑制するために、AutoHotKey を使って、Alt 押下時に存在しない仮想キーコードを送るというテクニックがあるようだ。

しかし、QMK では仮想キーコードは送れないので、色々試してみた結果、Ctrl を押しながら Alt を押下して Ctrl を離すと、Alt メニューにフォーカスが行かないようだった(Windows10)。そこで、今のところは Alt 押下時にそういうキーシーケンスを送るようにしている。

これで現在のところは、yamy を使わずに Emacs ライフ?を過ごしている。欠点としては、cygwin のようなもともと Emacs キーバインドのソフトには、むしろ逆効果なところもある。これを yamy のように、プロセスごとにキーバインドを切り替えるということは出来ない。


感想


自作キットは使わずに全部自分で作りたい!って思っていたけど、自作キットを作ってみると、すごく参考になり、色々と考えも深まり、作業も進んで、とてもよかった。

しかし、重め滑らかリニア軸+SA、よき(また言っているw)






2020年5月6日水曜日

DMM.make で印刷したキーキャップでシリコン型を取ってみた

右端の4個が DMM.make で印刷したキーキャップ。その左側の着色キャップが UV レジンで複製したもの

KeyV2 をカスタマイズして逆 SA 風のキーキャップを作成し、3Dプリンタで印刷して、型を取ってUVレジンで複製し、キーボード1つ分のキーキャップを作ろうとしている。前々回

おゆまるでキーキャップを作ってみた

では、3D プリンタで出力したキーキャップの型取りをしてみた。だけど、FDM 方式の 3D プリンタだと、そもそもキートップ部分に積層痕が残ってしまい、指ざわが凸凹してしまう。側面はかなり綺麗に出来上がるんだけどね。

そこで DMM.make の出品を検索してみると、キーキャップセットもそこそこ出されていて、「MJF の PA12GB ブラック磨き」という素材がお薦めされていた。・・・と思っていたら、2020年の 3, 4月は、DMM.make で MJF の 20% オフキャンペーンが行われていたので、今がチャンス?!と思って試してみた。


1.親指用鞍型キートップ+いつものサイズで出力


KeyV2 では、キートップを凸に盛り上げるか、凹にくり抜くかを選べる。人差し指から小指までの4本については、キートップを凹ませておくと、指の位置が指先の感覚で分かってちょうど良い。

一方で、親指キーについては、キートップが凹んでいると、親指の横側面がへりの角に当たって、長時間使っていると少し痛くなってくる。そこで、親指キーキャップには、凸に盛り上げたものも試してみた。でも実際に使ってみると、親指への当たりは確かにかなり柔らかくなったんだけど、今度は、親指がキーの上でどこにいるのか、横方向の位置が分からなくなってしまった。

う〜ん、両者のいいとこ取りをして、鞍型がいいんじゃないか?!と思って OpenSCAD のドキュメントを探してみたけど、そのものズバリの関数はないようだ。


鞍型キートップ


そこで、鞍型面は二次曲面なので、円を並べて 凸包を取ることで、近似的に鞍型を実装してみた。

鞍型キートップ
OpenSCAD のソースコードはこちら。
https://github.com/orihikarna/KeyV2/blob/master/src/dishes/saddle.scad

gist-it.appspot.com の埋め込みでは綺麗に入らなかったので、コピペ(汗)

module saddle_dish(width, height, depth, inverted) {
    $fa = 4;
    direction = inverted ? 1 : -1;
    hdepth = depth / 2;
    radius = height * height / (8 * hdepth) + hdepth / 2;
    xdivs = 16;
    dx = 1 / xdivs;
    intersection() {
        translate( [-width, -height, depth * (direction - 1)] )
            cube( [2 * width, 2 * height, 2 * depth] );
        translate( [0, 0, - direction * radius] )
            union() {
                for (nx = [-1:xdivs-1+1]) {
                    x0 = -0.5 + dx * nx;
                    x1 = -0.5 + dx * (nx + 1);
                    hull() {
                        translate( [width * x0 - 0.01, 0, direction * hdepth * ((x0 * x0) * 4 + 1)] )
                            rotate( [0, 90, 0] ) cylinder( dx / 8, radius, center = true );
                        translate( [width * x1 + 0.01, 0, direction * hdepth * ((x1 * x1) * 4 + 1)] )
                            rotate( [0, 90, 0] ) cylinder( dx / 8, radius, center = true );
                    }
                }
            }
    }
}

これは何をしているかというと、まず Google Calculator で \(z=x^2-y^2\) という鞍型面を表す関数を描画してみる。

z=x^2-y^2 の鞍型面

ここで各 \(x=x_0\) を固定して y-z 面で見てみると、\(z=x_0^2-y^2\) という放物線になっている。

この放物線を円に置き換えて、x 軸方向に dx 間隔で並べて配置し、隣同士を hull() で閉じている。100円玉のような円板をたくさん重ねて、放物線の形に少しずつずらして並べたようなもの。あえて式で書くなら、\((z-x^2)^2+y^2=1\) となる。この上半分を同じようにプロットすると、

z=sqrt(1-y^2)+x^2

と、ここだけ見れば、鞍型面に近いものになっている。

あとは、幅と奥行きと高さの設定に合わせて、円の大きさや放物線の係数を調整すると、先ほどの scad コードになる。


DMM.make へ発注!


普段の 3D プリントでは軸のプラス穴のサイズ決めに一番苦労したので、DMM.make でも、まず、1.25mm、1.35mm、1.45mm の3種類で出してみた。違いが分かるように、キートップに、無印、○、ー、の刻印を入れておく。

発注した STL

PA12GB ブラック磨きで、1uが8個と1.25uが3個で3,403円。送料込みの固定費を除くと、1キー当たり100円前後のようだ。

1週間ちょいで到着したけど、到着前に、細いところが再現出来ませんでした、とのメールを受け取る。ふむ?と思ったら、普段の 3D プリンタ用のサポートが残ったままだった。でもこれはニッパーで切れば、問題なし!というより、こういう風に再現されるのかぁ、という感じ。細くてもそこそこ強度がある。

細すぎてクニャリと曲がったサポート

そして、出来上がりの全体像。

逆SA風なので、左側が上段キー

鞍型面の仕上がりはこんな感じ。

親指用 1.25u 鞍型キートップ

既に試していた通りの形だけど、キートップに積層痕がないので、より滑らかな指触り。


軸穴のサイズ


さてさて、では、キースイッチに取り付けてみると!?

どれもこれも軸穴がガバガバのスカスカで、まったく使い物になりませんでした(涙)

だけど、硬さがあり、重みもあり、肌触りも悪くなく、これで1つ当たり 100 円なら、全然アリだと思える仕上がり。この素材感には大満足!

ちなみに、軸穴のサイズをノギスで 0.05mm 単位で測ってみると、こんな感じだった。R0 と書いてあるのは親指キー。プラス穴の縦横幅を3パターン変えている。

  • 4.3mm x 1.25mm

キー長幅短幅
R04.401.35

  • 4.4mm x 1.35mm
キー長幅短幅
R04.501.40
R14.451.45
R24.501.45
R34.501.45
R44.451.45

  • 4.5mm x 1.45mm
キー長幅短幅
R04.551.50
R14.551.50
R24.551.55
R34.601.50
R44.601.50


軸部分は薄いからか、穴のサイズは常に広がる方向で、最大でも0.1mm 程度の広がりのようだ。


2.軸穴を攻める


ということで、次は軸穴サイズを変えてやり直し。プリンタが変わると調整やり直しなのは、まぁ仕方ないですね。

前回、1.25mm でも結構緩かったので、今回は、1.05mm、1.10mm、1.15mm、1.20mm の4パターンで出してみた。違いが分かるように、キートップに、無印、ー、=、≡ の刻印を入れておく。

上下向かい合わせにして空間費を節約(刻印は見えない)

今回も1週間ちょいで到着。

軸穴4パターン

軸穴はどうかと言うと、1.20mm と 1.15mm は、前回の1.25mm 程ではないけど、やはり緩い。1.10mm だとちょうど嵌るけど、若干緩いかも。1.05mm だと、ぐぐっと力を入れて押し込まないと入らない。

意外にも、1.10mm まで軸穴を細くしないと、緩かったようだ。スイッチによっても違いがあり、手元の Gateron の静音赤軸にはきつ目で、Kailh 系のスイッチには緩めのようだ。


初シリコン型取り!


そして今回は、このキーキャップを使ってシリコンで型取りし、UVレジンで複製を試してみた!初シリコンで、ブロックとか精密スケールとか真空容器とか色々手間取って面白い。

でも、その結果は・・・。

「PA12GB ブラック磨き」のブラック塗装がシリコン型にもレジンにも色移りして、薄紫色のキーキャップになりました(涙)

左下が DMM.make、上が黒が色移りした透明シリコン、中央下は緑着色レジン、右下はクリアレジン

あと、軸穴は 1.10mm で出したものを使ったのだけど、最終的にレジンで複製したものだと、かなり緩々の軸穴になってしまった。型取りには 1.05mm ぐらいが良さそうだ。


2.5.3月中にもう一つ!


MJF の 20% オフキャンペーンは、最初は3月だけだったので、駆け込みで 2u 親指キーキャップを作って発注してみた。(実際は、4月もキャンペーン継続になった。)

KeyV2 では、2u 以上だと、スタビライザー用の軸も出るようだ。スタビライザーの間隔はちょうど 12mm になっている模様。

普段使い用に実用品として駆け込み発注(2uは右奥)

でも写真撮るの忘れていた・・・。キーキャップ自体は職場のキーボードに付いていて、ただいま新型コロナのリモートワーク中なので、実物が手元にない・・・。


3.それなら塗装無しナイロンで!


そして、諦め切れない型取り用キーキャップ。いやしかし、DMM.make で出したモデルなら、複製に耐えうるだろうと思って始めたのに、まさか塗装でこけるとは・・・。

う〜ん、それなら次は、塗装無しを試そう!

と言うことで、より安価のナイロン素材を試してみた。型取りにしか使わないのなら、軽い素材で出しても問題ないしね。

こちらの素材での軸の出方も分からないので、1.05mm から 1.12mm まで、0.01mm 刻みで8バリエーション作ってみる。刻印はドットとコロンで点の数を入れてみた。

ナイロン40キー

届いたもの。

キートップに積層痕・・・。

キートップに積層痕がある?!

ガツカリ・・・(よく調べてから注文しようね)

振り出しに戻る。

キーキャップ自体は軽い感じで PA12GB のような重厚感はない。だけど、とりあえず普段使いして、高さや傾きを確認するのには使えそう、といった感じ。

軸穴サイズについては、1.05mm、1.06mm、1.07mm の辺りはきつくて入らない。1.08mm から使える感じだった。

MJF ほどのトキメキは無かったので、早々に次へ・・・。


4.そしてグラファイトへ


さらに他の素材と言っても、やっぱりナイロンと MJF が一番お手頃っぽい。それなら、最後に PA12GB で、塗装無しのナチュラルと、グラファイト磨き、というのを試してみることにした。

シンプルに8キーを、ナチュラルとグラファイト磨きで発注

軸穴は 4.05mm x 1.05mm に設定。

ナチュラル

ナチュラルは、表面がザラザラとしている。あまり型取りには向かなそうだ。

グラファイト磨き

一方のグラファイト磨きは、表面はブラック磨きとあまり変わらない滑らかさ。色はブラックからダークグレーになるけど、自分としてはあまり気にならない。

ただし、軸穴の中に鉛筆の粉みたいなもの(これがグラファイト?)が残っていたので、実際に使うには、まず、つまようじとかで軸穴内を掃除した方がよさそうだ。今回のように型取りするならなおさら。

そして、グラファイト磨きの方をシリコンで型取りし、UV レジンで複製してみた。

シリコン型の硬化後

太陽光で硬化中〜

硬化完了〜

右手分量産完了〜

感想


グラファイトでも、多少の黒い粉がシリコン型に入り込む。それでもブラックの塗装が移り込む度合いよりはかなりましだった。あらかじめキーキャップにシリコン離型剤を塗っておくと、グラファイトの入り込みがより少ない。また、同じキーキャップで複数回型取りすれば、2回目以降はより入り込みが減った。

あと実は、毎回キーキャップの高さとか角度を微妙に調整していたのだけど、今回の最後のを使ってみると、最上列はもう少し高めにして、角度も急にした方が指が届きやすくて押しやすそうだと分かった。

しかし、カチャカチャいわずに、コトコトした感じの、

この重めの打鍵感と打鍵音、よき。