キーボード作りました

DIYキーボード完成品
DIYキーボード完成品

こんな感じの物を作りました

今まで使っていたキーボードはFILCOMajestouch テンキーレス(FKBN87M/EB)という物で恐らく10年ぐらい使っていましたまだまだ使えそうですがホームポジションとトラックボール間が遠く左寄りになってしまう事やカチャカチャと言う打鍵音等それなりに不満も募ってきたのでそろそろ頃合いかなと

色々調べてみるとコンパクトキーボードはDIYが多くキットや各パーツも手に入りやすくオープンソースのファームウェアもあったりと手軽になりつつある印象特にキー配列を自由に作れキースイッチも気に入った物を使えるとあればやるしかないですよね

ベースはどうしよう

コンパクトキーボードのDIYでよく見る作例は60%でこれが主流のようです

ファイラーやエクスプローラーの操作を考えるとキーボード端にアローキーとPageUp PageDownが無いと不安ですかと言って3列も右に追加するとテンキーレスとほぼ同じなわけで1列追加が精々だろうと探して見つけたのがTada68と言うキーボードコントローラーがAVR ATmega32U4でオープンソースのファームウェアであるQMKが使えます価格もそれほど高くなく入手も容易である事からこれに決めました

KBDfans Tada68
KBDfans Tada68

KBDfans TADA68 MECHANICAL KEYBOARD

Cherry MXか中華スイッチか

現在メカニカルキーボードで主流なキースイッチはドイツCherry社のCherry MXとそのパクリの中華スイッチといった感じですアルプス電気はもうキースイッチを作ってませんアルプス電気はもう…

Cherry MXは軸の色によって特性が違い中華スイッチもそれに倣っていますまたキーキャップもCherry MX(と中華スイッチ)用の物が多いのでこの中から選択するのが無難です中華スイッチで採用例が多いのは本家よりも安い*1GateronとKailhでどちらも悪くないようです

他の中華スイッチも調べていてOutemuと言うメーカーかブランドか商品名かわかりません*2そのスイッチの押下圧62gのタクタイルが気になり候補に入れました現在使用中のMajestouchがCherry MXの茶軸(押下圧50gのタクタイル)でもう少し重くても良いかなと思っていたのでキーをそれほど速く打てないので高速性より感触重視です

候補としてはOutemu 62gかCherry MX クリア軸(押下圧55gのタクタイル)が有力でこの機会にその他のスイッチも一通り試してみたくなりCherry MXが9種類試せるテスターとOutemu 62gをサンプルとして2個注文しました

キースイッチを試してみた

注文したサンプルとテスターが届いたので感想です

青軸 50g (60g Peak Force)

  • 引っかかりの強いクリック感と大きめのクリック音
  • 引っかかるので勢い余って底打ちしやすくキーの戻りもワンテンポ遅れる
  • 単に不良品

白軸 55g (80g Peak Force)

  • やや重め
  • クリック感は弱く小さめのクリック音

緑軸 80g (105g Peak Force)

  • 重い
  • クリック感はしっかりしていて大きめのクリック音

茶軸 45g (55g Peak Force)

  • 軽い
  • タクタイル感は弱めで音も小さい

クリア軸 55g (95g Peak Force)

  • やや重め
  • タクタイル感は茶軸より強く音も茶軸よりやや大きい

灰軸タクタイル 80g

  • かなり重い
  • タクタイル感は茶軸とクリア軸の間
  • 音はクリア軸よりも大きくばねの音らしき金属音もする

赤軸 45g

  • 軽い
  • やや摩擦音があり指でもざらつきを感じ取れる

黒軸 60g

  • 軽からず重からず
  • 摩擦音も小さく静かで動作も滑らか

灰軸リニア 80g

  • 重い
  • 摩擦音が大きくざらついた感じがはっきり指に伝わる

Outemu 62g

  • クリア軸より茶軸寄りの重さ
  • タクタイル感は茶軸よりやや強めでこちらも茶軸に近い
  • 若干の金属音がする

音に関してはなるべくスイッチ単体の音に注目して書いています加えてスイッチの戻り時にも音が出ますカチャカチャと所謂煩いキーボードの音は軽いスイッチの方が出やすいです弱いばねの方が軸がグラつきやすいと推測できます

タクタイル音は打鍵音に消されてしまいますがタクタイルの引っかかりでキーが音を立てます金属音はあまり気にならないと思いますが灰軸リニアの摩擦音に至っては実用上も気になる大きさです

青軸と緑軸はクリック音が大きすぎ灰軸は重すぎるため実用的なのは白軸茶軸クリア軸赤軸黒軸Outemuぐらいでしょうかそこから更に音の気になる白軸と軽めの茶軸と赤軸を除外リニアの黒軸も良さそうだけどこればっかりは実際にキーボードにして入力してみないとと言う感じで決め手に欠け除外

クリア軸とOutemuで考えるとクリア軸の重さは疲れそうで気になりますピークの重さが結構影響してますね一方のOutemuも音に若干の不安はあるものの感触は悪くないためこれを使う事にします

Cherry MX テスター
Cherry MX テスター

キーキャップを探す

キーキャップの素材は主にPBTかABSの2種類です耐久性のあるPBTか二色成型や多彩な色のABSとで分かれますMajestouchがカチャカチャ煩かったのはABSのせいなのかもと思うとABSは選びにくいですいくつか表面がテカテカになっていたりと耐久性もあんまりですし

Tada68を扱っているKBDfansでもキーキャップを扱っているものの選択肢が少ないのでAliExpressで探しますここで問題になるのはキーキャップのセットだとフルサイズやテンキーレスが主流でコンパクトキーボードで使う通常とは違ったサイズのキーキャップが入っていなかったりする事ですまた段によって厚みや表面の角度が違ったりする物だと段を変えての使用が難しくなりますキーキャップの形にはいくつか種類がありますが段による違いのない物はDSAぐらい*3でしょうか

今回は色々ある中からYMDK Dolch 96を選びましたDSAじゃなくてOEM profileとなっていますが概ね同じ配列なので大丈夫なのかなと最下段の1uのAlt Fn Ctrlがありアローキーの位置も同じですしKBDfansにも同じデザインでDSAのキーキャップがありますが組み合わせが帯に短し襷に長しで値段もちょっと高めなのでパスしました

パーツの注文

パーツ 購入先 価格
Outemu 62g Tactile Switch 80pcs AliExpress*4 $21.31
YMDK Dolch 96 Keycap set AliExpress*5 $22.95
Tada68 pcb PLATE+STABILIZER PLASTIC CASE KBDfans*6 $55.00
Cherry Mx Switch Clear 10pcs KBDfans*7 $6.80
Gateron switch 3pin red 20pcs KBDfans*8 $4.00

以上のパーツを注文しました

表記価格は送料込みです円にすると合計12,000円強ですねキーボード単体でこの値段だと高価な部類でしょうがDIYとしては安上がりな方です

Outemu以外のスイッチを購入したのは一部で違うスイッチを使うためですスペースバーはより重いクリア軸小指で押すモディファイアキーは赤軸と言った具合ですOutemuは予備も含めて多めに注文しました他はセットなので1セットでこれだけ入ってます

ファームウェアの準備

各パーツが届く前にファームウェアを作成しておきます作って直ぐに試したいですからね

ビルドの環境構築

まずはファームウェアであるQMKをビルドできる環境構築からですWindows10を使っているのでWSLでUbuntuを利用しその中に構築します

標準的なC/C++開発用パッケージのbuild-essentialAVRの開発用パッケージのgcc-avr binutils-avr avr-libc avrdudeをインストールします

sudo apt-get install build-essential
sudo apt-get install gcc-avr
sudo apt-get install binutils-avr
sudo apt-get install avr-libc
sudo apt-get install avrdude

うっかりさんなのでsuじゃなくてsudoを使うとにかくこれでQMKをビルドできるようになります

ビルドしてみる

QMKを適当な作業ディレクトリに展開しそのディレクトリに移動してmake tada68:default*9とすればQMKに入っているソースからTada68用のファームウェアがビルドされますtada68_default.hexというファイルが生成されますがこれはTada68では使えませんhexファイルではなくbinファイルが必要になりますがその事については後述します

ビルドの確認が済んだので自分用のキー配列を作ります

キー配列を作る

./keyboards/tada68/keymaps/defaultディレクトリを別名コピーしてその中のkeymap.cを編集します私はktnと言うディレクトリにしましたtada68/keymaps下に作ります

[_BL] = KEYMAP_ANSI(...[_FL] = KEYMAP_ANSI(...の中身を編集するだけなので簡単です使えるキーコードはQMK Keycordes Overviewに一覧表があります

defaultからktnに変更になったのでビルドコマンドはmake tada68:ktnです

Tada68にはビルドで生成されるhexファイルではなくてbinファイルが必要になるのは前述の通りですそこでbinファイルの作り方ですがavr-objcopyと言うコマンドでビルド時の中間ファイルから生成できます

avr-objcopy -O binary .build/tada68_ktn.elf flash.bin

これでflash.binが生成されファームウェアの準備が完了しました

組み立て

全て揃ったパーツ
全て揃ったパーツ

材料が全てそろったので組み立てに入りますKBDfansから注文した物だけがやけに時間がかかりました国内に入ってから8日ぐらいでしょうか運悪く通関に時間がかかってしまったようですまあこの運悪くが割とあるようではありますが

Tada68は箔押しされた結構豪華な箱に入っています普通の段ボールで良いから安くして…

スイッチのプレートへの取り付け

基板を見るとmini USBコネクタの取付部分のはんだが盛り上がっていてスイッチに干渉しますなのでコネクタの左右に取り付ける二つのスイッチの端を切り落とす必要がありますプレートに取付ける前に処理しておいたほうが楽です

プレートへの取り付けはただ嵌め込んでいくだけなので簡単ですがその前にピンの折れとスイッチの不良*11を確認しておいた方が作業がスムーズです都度チェックするのは面倒なのである程度束で取ってまとめてチェックしてからが良いでしょう幸い不良はありませんでしたがピン折れは多発しています

Outemu Gateron Cherry MXと3種類取り付けて分かったんですがOutemuはかなりギチギチで場所によっては嵌めるのに苦労しますGateronとCherry MXはゆとりがあるため簡単に嵌りますこっちはこっちで少し心許ない装着感ではありますが

一通り嵌め終えたら裏返してピンの最終確認です後で分かるんですがこの時確認漏れがありましたまた作業手順にも重大なミスがありました

スイッチ全装着
スイッチ全装着

プレートと基板の合体

スイッチ装着済みのプレートを基板と合わせるんですが一気に全体を合わせるのではなく片側から徐々に押し込んでいけば各ホールにピンやスイッチ底の出べそがはまっていきますピンがしっかり出ているか確認します*12

全体がはまったらスイッチが浮かないように基板とプレートをクリップ等で挟み固定してはんだ付けをしますはんだ付け自体は1箇所を除けば難しくないと思います1箇所Enterなんですが大穴の端にはんだ付けするみたいな状態になっていてちょっと気を使います

基板とプレートをクリップ等で挟み固定
基板とプレートをクリップ等で挟み固定

事前の確認を怠るとはんだを付けようと思ったらピンが出ていなかったりしますその場合はスイッチ単体を表から引き抜く事で修正可能です爪があるのでそれを挟みこんで引き抜けます

はんだ付けを終えたらスイッチの動作確認をしますKeyboardTester.comで各スイッチが機能するか試しましたここで異常が無ければ次のステップです

スイッチ単体を表から引き抜く
スイッチ単体を表から引き抜く

そう言えばスタビライザーは

ケースへの取付けなんですがここでふとスタビライザーはどのタイミングで取付けるんだろうとケース取り付け前か後か取り付け前の方が作業はしやすそうです

スタビライザーを見るとパーツが分割されているので組み立てないといけませんKBDfansの画像を見ながら組み立てたところでこれどうやって付けるんだろう

スタビライザーのパーツ
スタビライザーのパーツ
スタビライザー完全体
スタビライザー完全体

スタビライザーと言えばキーキャップを外すと見えるプレートの表側に付いている物と言う印象でしたがどうもこれはプレートの裏側つまりはんだ付け前にプレートに装着してないとダメなわけで…はんだ付けは完了しているわけで…

Cherry MXのスタビライザーは以下の3種類のようです

  • 基板に取り付けるタイプ
  • プレート表側に取り付けるタイプ
  • プレートに取り付けるがバーはプレート裏になるタイプ

今回のは3番目ですねMajestouchのスタビライザーはプレート表側だそうでキーキャップを外してみると確かにその通りいやこれ移植できるんじゃないって思ったものの無理でした

Majestouchのスタビライザー
Majestouchのスタビライザー

ここでそもそもスタビライザーが必要なのかと試しにバーを装着せず土台のみ取り付けてスペースバーを押し下げてみると確かに傾きますしかしタクタイル感はありスイッチ自体は機能している模様しかもスイッチの動きもスムーズです無くてもいけるんじゃない

こまけぇこたあいいんだよ!!

取り合えず無かった事にして組み立てた基板をケースに取り付けますケース取付ネジが非常に小さいので紛失に注意6個必要なところ8個入っているので安心ですが

キーキャップを嵌める

キーキャップはただ押し込むだけなので簡単に嵌ります今回購入したキーキャップはしっかりした作りで厚みは1.5㎜あります一方のMajestouchは1㎜と薄型軽量ですこういった違いが打鍵音に影響するようですMajestouchのキーキャップは何かとカチャカチャ音を立てます

このキーキャップはOEM profileなので段ごとに角度が違いますなので組みあがってみると微妙に出っ張ているキー端っこですし邪魔になるようなら別のキーキャップに換えれば良いだけですが…

微妙に出っ張ているキー
微妙に出っ張ているキー

これで組み立ては完了です…ってゴム足も付けましょうねこちらも予備として2個多めに入っています

いよいよ完成

これで準備しておいたファームウェアflash.binを書き込めば完成です

USBケーブルをつないだ状態でケース裏側からアクセスできる基板上のスイッチを押しますWindowsに記憶デバイスとして認識されるのでドライブを開くとFLASH.BINが存在しますこのファイルを削除してから準備しておいたflash.binをコピー安全に取り外す実行後一旦USBケーブルを外してから再接続KeyboardTester.com等で異常が無ければ使用可能です

使ってみて

一通り使ってみた感じいくつか問題点が浮上してきました

キー配列

  • PageDownしようとしてPageUpを押してしまう直上は相当意識しないと押せない1段上の方が自然かも
  • を押そうとしてEnter誤爆元々アローキーは隣接キーが無いため意識するようにしないと
  • JISキーが機能しないWindowsだとUSキーボードの場合はそういう仕様らしい

キーキャップ

  • 直上が出っ張ってると結構邪魔

感触

  • スペースバーの左側を押しても反応しないことがあるスタビライザー…
  • Shiftが眠たい赤軸に対してキーキャップ自体の荷重が大きすぎるのかもスタビライザー…
  • Ctrlも若干眠たい同じ赤軸同じ大きさのShiftは問題なしスイッチかキーキャップの個体差だろうけどそもそも赤軸に対してギリギリのキー荷重なのかも
  • Backspaceが渋いOutemuは軸に遊びが少ないと思われるスタビライザー…
  • Enterもかなり渋いスタビライザー…

修正

キー配列はPageUp PageDownを一段上げ直上にFnを配置しそれぞれFunction LayerでHome Endを割り当てていたのでそちらも変更しますJISキーは排除して変換F13無変換F14に変更したうえでIMEのOn/Offキーをそれぞれに割り当てましたDeleteBackspaceのFunction Layerに移動になりました

直上は邪魔にならない別のキーキャップにしました

一部赤軸のキーが眠たいのは保留しておきまずスタビライザーの問題を解決します

改めて考えれば何のことはないスタビライザーが必要なスイッチを取り外し組み上げたスタビライザーをプレート裏に滑り込ませるように設置するだけですプレートを見てもそう言った取り付け方を想定しているようです

スイッチの取り外しははんだを除去しプレート表側からスイッチの爪を挟みながらひっぱり上げるだけなのですがこれが意外に大変ですと言うのもスルーホールが大きいため結構な量のはんだが入り込んでいて完全な除去が難しいので多少力業*13も必要になります

またOutemuのスイッチはプレートに対してギチギチなので単純に取り外しにくいです破損覚悟で…と言うか現実に破損させて除去しました予備なら大量にあります

スイッチを取り外した状態
スイッチを取り外した状態

スイッチさえ外してしまえば後はスタビライザーを取り付けてスイッチを付け直して組み上げるだけです

スタビライザーの取り付け
スタビライザーの取り付け

これで今度こそ本当に完成ですスペースバーも傾きません最終的なkeymap.cは以下のようになりました

最後に

まだ配列に慣れない部分はありますが感触等概ね良好です全体のOutemuは程よいタクタイル感とキーキャップの影響でカタカタと小気味よい音がしますCherry MX クリア軸のスペースバーも程良い重さですスタビライザーが無い方が感触は良いですが背に腹は代えられませんGateron 赤軸も滑らか*14で想定した通りの軽さです赤軸に大きめのキーの眠たさも慣れつつあります

キースイッチ

スイッチは今回Outemuを中心に使いましたが少し扱いにくいスイッチだと思いますCherry MX等と違いプレートに対して余裕が無いので交換しにくく軸も遊びが少ないためスタビライザーの無い1.75uのキーだと動きが渋いと思います

スタビライザー

スイッチを正しく作動させるための必要性が実感できましたまた赤軸のような軽いスイッチに大きめのキーキャップを付けるのにも必須ですこれが無いとキーの感触がかなりもっさり眠たい感じになります

プレート

今回ステンレスプレートを使いましたが金属音がすると言った事はありません強度的には厚手のステンレスなので申し分ないです特にスイッチの取り外しにこじったりする場合気が楽ですその場合アルミだとちょっと不安です

使うスイッチがGateronやCherry MXならプラスチックで十分だと思いますPCBプレートなんてのも存在するようですし

ケース

今回プラスチックを使いましたが第一に価格的なメリットが大きいです他はアルミしかなく高価でしたので

強度はプラスチックで十分ですし金属だとそれなりに反響するようです

付属のゴム足は薄くて硬めなので何かしらのマットを敷く場合は音に対しては殆ど機能しないと思います

全体として

自画自賛になりますが良く出来たキーボードだと思います市販品だとここまで満足度の高い物は無いと思います自分で作ってみたのは失敗も含めて良い経験になりました

完成したTada68とトラックボール
完成したTada68とトラックボール