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)






6 件のコメント:

  1. EmacsのQMK凄く便利に使わせて頂いています。本当に有難う御座います。ただWord2013以降でテキストボックスで使うとレイアウトオプションがアクティブになってしまう問題が発生するのですがこれは解決するのは難しいでしょうか。

    返信削除
    返信
    1. intergray様、コメントありがとうございます!
      試してみましたが、これでは全く使えませんね・・・(汗)
      同様なことが PowerPoint での貼り付け時に起きるので、私もかなり煩わしく感じています。

      解決するには emacs モード用の ctrl と、(マウス操作時などの)本当の ctrl を分けないと難しいのではないかと思っています。

      例えば、C-a を入力したい時に、Ctrl を押した時点で、レイアウトオプションがアクティブになってしまうと思いますので、emacs モード用 ctrl を別で用意して、それが押された段階では、まだ PC には何も送らず、a が押された時点で、初めて Home を送る、という流れです。

      そうすると、ctrl の長押しは emacs モード用、ctrl のタップ+長押しは ctrl の押下を送る、みたいなものは使いやすそうですね。少し検討してみます。

      削除
  2. 早速のご回答有難うございます!なるほど、これは中々難しそうですがご検討頂けるのは大変嬉しい限りです。Wordの仕様が色々おかしいだけだと思うんですけどね。
    あと、こちらのページでもブログが紹介されてましたよ。他の皆さんも期待されてると思います。
    https://w.atwiki.jp/ntemacs/pages/25.html

    返信削除
    返信
    1. 嬉しいコメントありがとうございます!
      実装を少し変えてみました。

      1. Ctrl と Alt キーを押下しても、すぐにはホストに送信しない
      → Ctrl, Alt を押しっぱなしにしない

      2. Ctrl + P が押下されたら Up の押下を送信し、P が解放されたら Up の解放を送信する
      → Ctrl, Alt の押下は基本、ホストには送信されなくなる

      3. Ctrl (Alt) を短く押下・解放(タップ)、すぐに再押下(ホールド)とすることで、Ctrl (Alt) の押下をホストに送信する
      → 主にマウスと合わせて操作する時に必要

      4. Alt+Tab, Ctrl+Tab 時には、特別ルールとして、Alt, Ctrl をホールドする
      → 頻繁に使うショートカットなので、その度にタップ&ホールドするのは煩雑

      特に 3 には少し慣れが必要かと思います。
      数日試してみましたが、僕もまだ忘れている時があります(笑)
      また、画像処理ソフトなどで Alt, Ctrl を頻繁に使う場合は不便かもしれません。
      もしよろしければ試してみてください。

      削除
    2. Orihikarnaさん、こんにちは!
      QMKに慣れてないのでコンパイルに時間かかりましたが、さっそく使わせて頂きました!
      懸案のWordのテキストボックスでも普通に使えるので感動しました!これは凄いです!またこれを作られたスピードにも驚きました!さすがです。コントロールを送信する際の連続タップも慣れれば問題ないです。
      テキスト打ちがメインなので、マウスとの組み合わせは図形をコピーする時ぐらいしか使わないですが、知っていれば全く不便に感じないです。それよりコントロールを同じキーで使えることが嬉しいですね。
      WordのテキストボックスのレイアウトオプションはCtrlを離した時にアクティブになりますが、その時に何か他のキーが押されていると離してもアクティブにならないようです。この特性を活かせばどうにかならないのかなとも思ったのですが、きっとレスポンスが悪くなって使えないんだろうなと思ってました。なので、QMKだからできるこのアイデアは素晴らしいと思います。
      私はhasuさんのコントローラを使ってHHKBで使っているのですが、主にemacsを使うことを前提に作られたHHKBにとって、キーボード本体にemacsキーバインドを実装できるようになったのは歴史的な事件というか到達点ではないかと思っています。
      おかげ様でこの環境は手放せないものになり、今、予備機として旧モデルを買い集めているところです。
      今回はありがとうございました。重ねてお礼申し上げます。そして素晴らしいプログラムを作られたことに感謝いたします。

      削除
    3. intergray さま、早速試して頂いた上に、過分なるお言葉をありがとうございます!
      僕自身も毎日使ってはいるのですが、なかなか改善は思いついていなかったので、今回はとても良い機会を頂きまして感謝しております。
      HHKB を改造されているんですね!
      キーボードをつなぐだけでどこでも emacs は嬉しいですよね。
      まだ実装から日が浅いので、不具合などありましたらお知らせください。
      自分でも見つけたら随時修正します。よろしくお願い致します。

      削除