ページ

2019年2月16日土曜日

遅ればせながら自作キーボードデビューしました

最近自作キーボードが熱いですね!技術書典でキーボード島の熱気を横目に見ながら、面白そうなことやってるなぁと、つい最近まで傍観に徹していました。

というのも、自分は10年以上Thinkpadのキーボードを使い続けていているせいでTrackpointがないと生きていけないと思っていましたし、何よりJIS配列が手に染み付いているので英字配列のキーボードにはどうにも抵抗があってなかなか手が出せずに居ました。

そんな中、先日キーボード沼に一足先に浸かっていた @hecomi さんから自作キーボードについて熱く語られた上、断る理由を全て論破されてしまったので、ここはひとつデビューしてみることにしました。

Trackpointは後付可能だし、基板を起こせばトラックボールやタッチパットだってつけられる!
※キーマップはQMKで自由自在にいじれるし、基板を起こせばキー配置だって自由自在、キートップだって既成品の108キートップにバリエーションがないなら作ってしまえば良いじゃない!

--

で、先日ついに初めての自作キーボードを完成させました!



初めての自作キーボードに選んだのは、@omkbd さんの、ErgoDash(親指あり)です! 

もともと左右分割キーボードに興味があり、親指シフトなどの親指に仕事を割り振るようなキーボードも触ってみたいと思っていたのでセパレート型のキーボードで良いのがないかを探していました。また、Ortholinear配列は親指周りが窮屈そうな見た目だったので、親指部が独立しているColumn Staggered配列なキーボードに狙いを絞りました。

探し始めた当初は慣れ親しんだThinkpadのパンタグラフ式キーボードに近いLow Profileのスイッチが使えるキーボードを物色していたのですが、


と、Low Profileのセパレートキーボードは手に入るものがありませんでした。
また、Corne Chocolateはキー配置が同じCorne Cherryを遊舎工房さんの店頭で試し打ちしたところ、存在しない数字キー行の文字をタイプしようとして指が空を切ることに衝撃を受け(特に'-'キー)、いきなり40%キーボードはハードルが高すぎるのではないかと考えなおしてしまいました。

また、Kailhロープロファイルスイッチは全高こそ低いのですがストロークは3.0mmと通常スイッチと比較して0.5mmしか変わっておらず、また動作点は1.5mmとなっておりKailh Speedスイッチのほうが動作点は短くなっています。

実際に遊舎工房さんの店舗で触ってみた感じでも、そこまでロープロファイルスイッチにこだわらなくても良いかな?と思ったので、結局その場で在庫のあったErgoDashを購入しました。

--

組み立て


組み立てにあたって購入した部品のリストは以下のような感じになります。ErgoDashのキットにはPro Microは同梱されているのですが、Type Cのコネクタが良かったので最近出たPro Micro互換のElite-Cを店舗で同時に購入し、それを使って組み立てを行いました。


購入場所品名値段備考
遊舎工房ErgoDash 親指あり14,040円初めての自作キーボード
遊舎工房Kailh Speed Copperスイッチ 70個3,010円パンタグラフっぽい打ち心地を目指してこれにしてみました
遊舎工房Elite-C 2個5,184円ちょっとお高いですが、USB Type-Cのためです…
遊舎工房BigBang キーキャップ7,020円見た目が気に入っているのでこれにしました
千石電商3mm LED 電球色 80個3,200円キーキャップの色味に合わせるならこの色かなぁと
千石電商200Ω チップ抵抗(3216) 100個400円ビルドガイドでは470Ωですが、明るくしたかったので…
千石電商1kΩ チップ抵抗(3216) 10個50円
千石電商TRRSプラグ 2個600円見た目で選びました
秋月電子Nch チップMOSFET 10個240円
秋月電子WS2812B 30個1,080円※注
合計34,824円Elite-Cがちょっと高かったですね… それを除けば30,000円に収まります 

※似た名前のWS2812Sという製品を千石で取り扱っていますが、互換性がないので注意してください!!

バックライト用LEDの抵抗は公式のパーツ表では470Ωとなっていますが、これだと購入したLEDには4mAしか電流が流れず暗い気がしたので、抵抗を200Ωにして流れる電流を10mAまで増やしました。
※消費電力的には全てのLEDを点灯した状態で両手で1A程度なのでまぁ良いかという程度なんですが、バックライトLEDのドライブ用FETが非常に小型なのでちょっと心配です。常時運用するのであれば少しバックライトLEDの輝度を下げた状態にしておいたほうがよいかもしれません。

組み立てにあたっては、まずElite-C取り付け時にType-Cコネクタが干渉する部分の基板を削ります。組み立てた時の厚みが増えても大丈夫な場合はスペーサーを延長しても良いですし、Elite-Cを本来付ける位置と逆側に表向きに取り付けて、アクリル板側を削ることもできると思います。


PCBを削った場合には、この部分に右手のRGB LEDのシリアルが通っていますので、そこの部分の配線もなくなってしまいます。ただ、左手マスターで組む場合には右手のRGB LEDはTRRSジャックから来たシリアルで光るので、左手マスターで組む場合には特に何もする必要はないと思います。右手マスターで組む時だけ、以下のようにD3ピンをジャンパで繋ぐ必要があります。



また、Elite-Cにもともと付いているリセットスイッチは組み立てた時に裏側に取り付けるキースイッチと干渉してしまうので、予め剥がしておきます。剥がしたスイッチを再利用する必要はないと思いますので、パターンを剥がさないように注意しながら、鋭いニッパーでスイッチを破壊して、最後にはんだごてでランドを外せば簡単に剥がすことができます。

 


その他の点については、公式のビルドガイドに沿って組み立てればOKです!

組み立てが終わったらqmkのファームウェアを書き込みます。
Elite-Cへの書き込みの際には、`rules.mk`のBOOTLOADERのところを


BOOTLOADER = atmel-dfu

に変更して、基板をUSBでPCに接続した状態で、基板に付いているリセットボタンを押したら

make ergodash/rev2:default:dfu

で書込みできます。

※個人的にハマったこととしては、せっかくLEDを頑張ってつけたのでバックライトLEDのほうも明るさを自動で変更したりしたかったのですが、残念ながら`BACKLIGHT_BREATHING`はマスター側のバックライトの明るさしか変更することができないようです… 
※仕方ないので、今はRGBライトの方のモードをBREATHINGにして我慢しています

少しだけ残念だったのは、保護紙を剥がした際に両手ともここの部分のアクリルにヒビが入っていたところでしょうか…
※どの段階で入ったものなのかは分かりません…


まぁ力がかかる部分ではないのでアクリサンデーで接着した上で組み立て、もし見た目が気になるようであればレーザーカッターで切り直すことにしました。

--

キーマップの設定


キーマップは日本語JIS配列に合わせて、以下のように作成しました。
keymap_jp.hをインクルードしてわかりやすい識別子で日本語キーを定義しています

  /* Qwerty
   * ,--------------------------------------------------------------------------------------------------------------------------------------------------.
   * | ZHTG(GUI) |   1  |   2  |   3   |   4  |   5       |   ^   |                      |   \   |   6       |   7  |   8   |   9  |   0  |  -          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Tab       |   Q  |   W  |   E   |   R  |   T       |   [   |                      |   ]   |   Y       |   U  |   I   |   O  |   P  |  @          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Esc(Ctrl) |   A  |   S  |   D   |   F  |   G       | PrtSc |                      |       |   H       |   J  |   K   |   L  |   ;  |  :          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Shift     |   Z  |   X  |   C   |   V  |   B       | Raise |                      | Lower |   N       |   M  |   ,   |   .  |   /  |  \(Shift)   |
   * |-----------+------+------+-------+------+-----------+-------+-------+------+-------+-------+-----------+------+-------+------+------+-------------|
   * |           |      |      | LOWER |||||||| Bksp(Alt) | Space |  LClk ||||||||  RClk | Enter | Del(Ctrl) |||||||| RAISE |      |      |             |
   * ,-------------------------------------------------------------------------------------------------------------------------------------------------.
   */
  [_QWERTY] = LAYOUT( \
    GUI_T(JP_ZHTG) , KC_1   , KC_2   , KC_3   , KC_4   , KC_5           , JP_CIRC,                         JP_YEN , KC_6           , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS        , \
    KC_TAB         , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T           , JP_LBRC,                         JP_RBRC, KC_Y           , KC_U   , KC_I   , KC_O   , KC_P   , JP_AT          , \
    LCTL_T(KC_ESC) , KC_A   , KC_S   , KC_D   , KC_F   , KC_G           , KC_PSCR,                         XXXXXXX, KC_H           , KC_J   , KC_K   , KC_L   , KC_SCLN, JP_COLN        , \
    KC_LSFT        , KC_Z   , KC_X   , KC_C   , KC_V   , KC_B           , RAISE  ,                         LOWER  , KC_N           , KC_M   , KC_COMM, KC_DOT , KC_SLSH, RSFT_T(JP_BSLS), \
    XXXXXXX        , XXXXXXX, XXXXXXX, LOWER  ,          LALT_T(KC_BSPC), KC_SPC , KC_BTN1,       KC_BTN2, KC_ENT , RCTL_T(KC_DEL) ,          RAISE  , XXXXXXX, XXXXXXX, XXXXXXX          \
  ),  


自分がハマった注意点としては、MT_マクロ(キーの長押しと短押しでキーアサインを変える設定)は、Modifierキー(Ctrl, Shift, Alt, GUI)にしか使えないというところでしょうか…
特にエラーは出ずにビルドが通ってしまうので、勘違いしたまま`俺が考えたさいきょうのキーマップ`を作成してしまうと、後で動かないことに気づいて考えなおすことになります。※なりました

なるべく親指に仕事を割り振りつつ、MT機能を使ってなるべく多くのキーをJIS配列から崩さずにデフォルトレイヤーに入れたつもりです。他のレイヤーについてはマウスキーを入れたぐらいで、ほとんど変えておらず、あまりLower/Raiseキーは使いこなせていません…

正直、組み立てにかけた時間よりもキーマップをいじくり回している時間のほうが長かったかもしれないです。まだ自分の中でしっくりきてない部分もあるので、試行錯誤中ですね… これはの予感がします…

--

EndGameに向けて


今使っているのはMDAプロファイルのBigBangですけど、やっぱりもう少し高さが低いキーキャップが欲しいと思っています。いくつかMDAより薄いプロファイルのものもあるようなので、いくつか買って試してみますかね…()
※もしくはやっぱりLow Profileで組んで、射出成形で好みのキーキャップを作るとかでしょうか…

Thinkpadのキーボードと併用しているとどうにも、キーのStaggerd方向が違うので指が混乱しがちで、キーの間をタイプしてしまうことが結構あることがわかってきました…
ただし、親指キーは実際に使ってみて非常に便利なので、もしかするとRow Staggeredな親指キーボードが次のEndGame候補になるかもしれないですね…()

後はやっぱりThinkpadトラックポイント愛用者としてはキーボードから指を離さずにマウス操作ができるようになりたいです… 今はマウスキーを使ってHJKLでマウスカーソルを動かしているのですが、どうにもしっくりこないので、ダメそうだったら小さいトラックボールかタッチパッドを付けたいですね… ただ良いデバイスが見つかっていないので、継続的に探していく必要がありそうです()

--

この記事はErgoDash (親指あり; Kailh Speed Copper)で書かれました。

0 件のコメント:

コメントを投稿