はじめに

コントローラのファームウェア作成前までの手順を書いていきます。フルスクラッチの模型工作+昔の電子工作といった感じかも。

カッターナイフとか接着剤とかヤスリとか使う方の記事です。

製作の流れ

  1. グラフィックツールでキーの物理配置図をかき、印刷して感じをつかむ。
  2. ここでキーの論理配置も考えておく。
  3. キー配置が決まったらA4のシール用紙に印刷。
  4. シールを段ボールに貼り、キースイッチをはめ込めるよう切り抜く。
  5. 前回使ったキースイッチを段ボールにはめ込んで感触を確かめる。
  6. これで良ければプラ板(1.5mm厚)で同じ事を繰り返す。
  7. 同時進行で、キーキャップを製作。
  8. コントローラなど部品を取り付け
  9. キーマトリクスができたら空中配線

材料と工具

材料

筐体

キーキャップ

配線

工具

現状のキーボードと使い方

形状

SMK-8851はよかったのですが、2019年秋になって調子がおかしくなり、ついにはキーボードを認識しなくなりました。多分AT-PS/2変換コネクタ内の断線だと思います。そのため、スペースキーが短めのエレコムTK-FCM104XBKを急遽購入、使用しています。税込みで800円以下で買えました。もうキー1個分短いとよかったのですが。

使い方

KeySwap for XPでキー配置を一部変更しています。

AltENTER、テンキーのピリオドは親指で打てます。IMEのオン、オフもカタカナ/ひらがな無変換に割り当てているので、親指です。

日本語変換はローマ字変換。

物理配置

B02番

物理配置を考えます。キースイッチの並び方です。

前回は、方眼紙に手を置いてそれぞれの指の腹(ホームポジションになる)の位置を書き込み、スキャナに取り込むところから始めました。今回は、すでにあるデータを改良するところから始めます。

ソフトは前回と同じくKritaを使いました。2205×1575ピクセル、200dpiで作成。1mmは7.874ピクセルに相当するので、その辺考えながら描いていきます。本当ならペイント系ではなくドロー系のソフトを使うのでしょうが、ドロー系は苦手なので。

とりあえず描き終わったら、試しに印刷します。左右分を印刷して貼り合わせ、指を置いて感じを確かめます。

キーピッチも前回と同じく17.2mmで作っていたのですが、最後で16mmにしました。キーキャップは改造しまくったために使い回しができず、新規製作する事になっていたので、同じ作るならもうちょい小さめにしてみるかと思いまして。

最終的に決まったのが、B02番目の配置。カーソルキーの十字配置を止め、左右に振ってみました。

テンキーは45度傾け菱形で中央奥に配置しています。前回は中央手前に正方形で配置しましたが、どちらの手でも打ちにくかったので、今回のようにしてみました。

できあがったら印刷し、指を置いて感触を確かめます。次の論理配置ができたらキーの箇所に描いて感じを確かめ、気になるところは鉛筆で修正し、それをみながらCGの方を修正していきます。

論理配置

論理配置も考えます。文字や機能(EnterとかSHIFTとか)の並び方です。一般的なのはQWERTY配列です。

私の場合、キーボードの用途で一番多いのはテキストエディタで日本語を書き込むことです。英単語はあまり打ちません。

ここで先に決定しておくことがいくつか。

ローマ字入力か、かな入力か。
ローマ字入力を使用。
Aキーを左手小指ではなくどちらかの人差し指で打ちたい。
QWERTYやDvorakではなく、別の配列か独自配列を使用。

かな入力にはいろいろありますが、私は1986年のX1turboⅡ以来使ってきたローマ字入力でいきます。

SHIFTControlなどの機能キーはできるだけ親指で押せるようにします。少なくとも最初はそのつもりでした。

文字は何を参考にして配列決めようかと思いましたが、文字の出現頻度を参考にしようかと考えました。よく使う文字ほどホームポジションの段&内側に置き、余り使わない文字は外側に置きます。

――以上は前回も書いたものです。

出現頻度の表ですが、前回と同じものを使いました。自分で書いたここ数年のテキストファイルから29個(手打ちしているHTMLファイル含む)57万4千文字を対象に、漢字交じりから仮名、さらに英数字へと変換したものです。

ただ、配線もファームウェアも全部できてから、間違ってた事に気づきました。漢字を仮名に変換したのはいいのですが、なぜかひらがなだけで数えていました。カタカナを数え忘れていたという……。カタカナの数が入っていなかったため、かなの出現頻度は変わります。アルファベットへはカタカナも変換したようなので、アルファベットの出現頻度は変わりません。

かな上位20字
いうんしのかとるー(長音)すにたきてっこ。はを、
最多の「い」は、最少の「ぬ」の481倍。濁音半濁音最多は「じ」「ぷ」。濁音半濁音最少は「ぢ」「ぽ」。
ローマ字への変換で上位20字
iauoteksnrdhymxg<>pw
最多の「i」は最少の「q」の561倍。
二重母音の上位5個
ou、ai、ei、uu、ui
数字
1023459867
1と0はほぼ同数。最多の「1」は最少の「7」の4.5倍。

これで大まかな傾向が判るので、何か適当な並びを作ってみます。QWERTYから離れるのなら、母音と子音を左右で分け、交互打鍵で日本語を書けるようにしようと思っています。

最初の配置

とりあえずこの配置で、一応の完成まで進めました。

先頭に小文字の「p」が付いているのは、テンキーを示します。ATOKでこれらの文字は日本語入力時でもいわゆる半角で入力されるように設定しています。

数字キーは7以前と8以降で左右に分けました。また、0から始めて右から左へ、8と9は右へと配置しています。記号を含めた出現頻度を考えての配置です。

カーソルキーは十字配置を止め、左右に振っています。これで他のキーを置くスペースができました。

ファンクションキーは、F1F5F11F6F10F12で分けました。今のキーボードでは4個ずつ3つに分けていますが、日本語入力の時F6~F10までが文字種の変換になっているので、こういう分け方の方がいいかなと思いまして。今回のキーボードでは3つに分けるのが難しいというのもありました。

NumLockはShiftMute(消音)で打てたらと思っていましたが、難しそうだったので止め、使わないF11をNumLockに変更しました。この後のキーマトリックスにも書いています。

普通の109キーボードと比べて付けなかったキーは、右SHIFT、右Control、右ALTInsertPauseScrollLock、左右WINmenuです。InsertはShift+テンキーの0で打てるので、何かの拍子に上書きモードになっても挿入モードに戻せます。

普通の109キーボードに付いていないのは、テンキーのピリオドが1個余分にあるのと、Muteです。右下に「p」が付いたピリオドがありますが、テキストエディタのWZ EDITORでアウトライン形式で書くときに使うので、テンキーより近い位置に一つ置いています。Muteは消音で、トグルで音量が0になったり戻ったりします。普段背景ノイズとして昔radikoで録音した野球中継と最近の競馬中継を流しているのですが、電話がかかってきたときに音を消すのに便利です。競馬は興味が無いのでノイズとしていいのですが、時折普通の単語がでてビクッとするのが面白いです。アリストテレスとかラフマニノフとかブラックホールとか……。

これでキーマトリクスも決められます。一応の完成後、配列は半月ほどほぼ毎日変更しています。

段ボールで試作

B02番より前のバージョン。プリンタの箱を使ったので、機種名がすかし文字みたいに見える。

キースイッチの穴は14mm角です。これも前回と同じくアートナイフの刃や、アートナイフプロの平刃を使っています。

TRONキーボードを参考にしているので、中心から左右へ、奥から手前へ傾いています。傾き具合もここで決めます。

奥から手前への傾きは、左右斜めの辺を机の天板と平行にするか、両端の辺を平行にするかも決めます。左右斜めの線を基準にすると手前から奥へ上がっていく感じになりますし、両端の辺を基準にすると逆チルトみたいな感じになります。今回は、左右斜めの線を基準にしています。

キーキャップ作成その1

平行してキーキャップを作ります。

昨年(2019年)作ったキーキャップ試作。

プラ板+プラパイプ+シール+透明アクリル樹脂で作っています。

3Dプリンタ以外でキーキャップを自作する記事を探していた時、Realforce用のキートップ自作記事で外径5.6mmのプラ棒(多分パイプ)を使っている例を見つけました。Cherryの軸と形状は違いますが、ためしにエバーグリーンの外径5.6mm(内径4.2mm)のパイプをCherryの赤軸キースイッチにはめたところ、うまくはまってそのまま押し込めます。そのままだとガバガバなので、パイプの中に半周分(7mmほど)の長さの0.1mm厚プラペーパーを接着しました。

1mm厚と0.5mm厚のプラ板、1mm角のプラ棒を組み合わせてシリンドリカルな面を作ったところ、キーとして使えそうな感じです。別のプラ板では、文字を印刷したシールを貼り、100均で売っているアクリルパウダー(クリア)とアクリルリキッドをかけてみました。硬化後、ヤスリで整えてみましたが、キーキャップ表面として使えそうです。

原型を作って型取りし、レジンキャストで複製する手もありますが、型取りのシリコーン樹脂もレジンキャストも結構な値段がします。シリコーンの気泡をなくす手動真空容器もありますが、今回は止めておきます。

――って、今は透明シリコーン500g3000円弱なんてのがあるのか?

1mm厚プラ板に穴開け。

キーキャップの土台になる部分の製作。軸受けになる外径5.6mmのプラパイプをはめ込むので、中心に穴を空けます。

3mmから徐々に穴を大きくし、キースイッチの軸をはめ込むパイプを挿せるようにします。5.6mmのドリルビットがあればいいのですが、近くのホームセンターには売ってないし、通販でもそこそこの値段になるので、手持ちの5.5mmを使った後は大きめの棒ヤスリで穴を広げました。

プラパイプと穴を空けたプラ板を接着。

軸受けになるプラパイプを5mmの長さに切り、穴を空けたプラ板に挿し込んで接着。プラパイプが垂直にささるよう、ドライバーを治具にしています。接着剤は、タミヤリモネンセメントの流し込みタイプ。

パイプの中に1/4円柱を接着。

キーキャップを固定できるよう、キースイッチ1個を治具にして、パイプの中に1/4円柱を接着します。1/4円柱は5.6mmのプラパイプと同じくエバーグリーン製で、クォーターラウンドの半径1mm。

これも流し込みの接着剤を使用。キースイッチの軸はスチロール樹脂ではないので(ナイロン?)、治具として使ってもくっつきませんが、内部に侵入して故障する可能性はあるかもしれません。

キースイッチの軸は十字型ですが、縦横で太さが違います。クォーターラウンド棒は細い方に合わせて接着し、太い方との隙間は0.14mm厚で1mm幅の細いプラ板(イエローサブマリンのプラストライプ)を貼って埋めています。

完全に接着するまで放置。

完全に固まったら、とりあえずキースイッチにはめて感じをみてみます。

ここは叩けないっていうキーがあったら止め、他にもっといい位置を探します。段ボールだから穴を空けるのは楽。位置が決まったら図面に反映させます。

プラ板筐体製作

カッターで切るとき割れないよう穴開け。

最終図面ができたらシール用紙に印刷し、1.5mm厚のプラ板に貼ります。

穴開けは、基本的にアートナイフプロの平刃を押し込んで切ります。四角い穴はハンドニブラを使うのがいいのでしょうが、持ってないので。角のみは……14mmってあるのか? というか使うの大変そう。

刃の幅は8mm。穴は14mmなので、一辺を2回に分けて切ります。割れるのを防ぐため、辺の両端と8mmの位置に穴を空けておきます。

前回はピンバイスを使い、手で空けましたが、今回はタミヤの電池ドリルを使いました。文明の利器は楽です。音はそれなりにするので、昔住んでいたボロアパートだと使うのは無理でしたが。

穴開けの練習。

プラ板の端材で練習。最初は穴をつなげるという感覚で大雑把に切り、2回目で線に沿って丁寧に切ります。使っているオルファの平刃は片刃なので、断面が垂直になるよう刃の向きに注意します。

組み立て。

プレートに101個の穴を空け、曲げたり貼り合わせたり裏側に端材を貼り付けて強度を増したりといろいろやって形を作ります。底板や側面も作り、ネジ6本で留めてみました。

前面は塞いでいないので中の補強材が見えてますが、これはこれでいいかなと思っています。板を切り出すのが面倒だったのでやってないだけなのですが。

キースイッチを固定。

プレートはラッカー系で塗装。アイボリーにしたかったので、タミヤスプレーのTS-7 レーシングホワイトを使いました。つや消しがあればよかったんですがないので、まぁいいやって事で。

塗装が完全に乾いたら、キーキャップを取り付けました。ゆるゆるのところはなかったのですが、全体的に少しきつめでした。はめ込んだらもう二度と外せないという……。外すにはプレートを壊すしかなさそう。

ウレタン系の方が耐久性ははるかにいいと聞きますが、扱いが大変そうなのと、キースイッチの固定に支障が出るほど塗膜が厚くならないかなというのがあって、止めました。それ以前に高価というのもあったような。

キーキャップ作成その2

キーキャップを完成させます。

1mm厚プラ板で蓋をし、1mm角プラ棒2本を重ねて下駄をかませる。

キーキャップというと真っ平らなのもありますが、段ごとに傾きが違うものもあります。今回作っているものは、テンキーとファンクションキーが平らで、他は段ごとに傾きが違うタイプです。

傾きを作るため、1mm角プラ棒2本を重ねて下駄をかませました。この上にプラ板を付けます。

2mm三角棒で済ませたかったのですが、手持ちに無かったうえ、この頃は新型コロナの不要不急とか三密とか集近閉とかありましたので、買いに行くのもやめておいたのでした。

文字シールを貼り付け。

印刷した文字シールを貼り付けます。文字キーは白地に黒、機能キーは黒地に白で描いています。

フォントは、基本的に機械彫刻用標準書体 Mを使用。数字のゼロのみ斜線を足しました。他、日本語や一部の記号にIPAexゴシック、一部の記号にM+ FONTSのmplus-1mn-regular.ttfを使いました。文字は300dpiで製作しています。

アクリルパウダーとアクリルリキッドでコーティング。

シールの表面に、100均で売っていたネイルアート用のアクリルパウダーとアクリルリキッドをかけ、コーティングします。最初は補修用のプラリペアを使っていましたが、もうちょいコスト的になんとかならんかと思い、探したものです。

今回(2020年)作る際、昨年の残りを使おうとしたら、白のパウダーがピンクっぽく変色していました。アクリルに吸水性がある事をすっかり忘れて、適切な保存をしていませんでした。ためしに使ったところ、なかなか硬化しないわ、固まっても妙な柔らかさがあるわで、結局捨てました。もったいない。

アクリルパウダーとアクリルリキッドですが、2019年は「ワッツ」、2020年は「FLET'S」で購入しています。

硬化したら、半丸のヤスリでくぼませます。昨年試作品を作ったときは、くぼみは曲げたプラ板で作っていたのに、今回削る事でくぼみを作った理由は思い出せません……。削るのは大変だし揃わないしでろくな事にならないので次は止めよう。

表面処理を適当に終わらせたので、かなり汚いです。

キーマトリックス

キーマトリックスを作ります。前回はありものを調べましたが、今回は1から作ります。

キーの物理配置、論理配置が決まったので、コントローラに近いキーから順に決めていきます。

Row\Col 0 1 2 3 4 5 6 7 8 9
0 無変換 カナ 変換 Enter BS DEL p. M
1 半/全 , . Y R N G P ^ J
2 ESC F Z K T H B @ _ 9
3 L W D S 8 F8 F7 F6 F9 F10
4 p0 p, p. p+ p- p* p/ F12 NUM F4
5 p1 p2 p3 p6 p9 F5 F3 F2 F1 Mute
6 p4 p5 p8 p7 0 1 2 3 5 PS
7 \ - I E X 4 C V 7 6
8 PgUP ] [ A U O / Q
9 PgDOWN ; : (空白) Caps Home End TAB ALT
10 CTRL SHIFT

論理配置でも書きましたが、小文字の「p」が付いているのはテンキーのキーです。Muteは消音です。

前に製品のコントローラを調べたときは、CTRLSHIFTALT辺りは、他の文字キーがあまりない列にありました。そのほうが信号的にいいのかなと思い、真似してみました。この後キーマップはいろいろ変わるので、意味は無くなったのですが。

アットマークと9に挟まれているのは、アンダースコアです。普通はShiftキーを押しながらでないと出ませんが、今回はキー一つで出せるようにしたいのでした。

テンキーのカンマがありますが、これもやってみたいのでした。昔のパソコン(X1とかX68000とか)のテンキー部分にはカンマやイコール記号があったし、できるといいなと思いまして。ATOKでテンキー部のは日本語入力時でも半角で打てるよう設定しており、ピリオドなどで便利に使ってますし。

F11がありません。最初はあったのですが、NumLockにしました。最初はSHIFTMuteNumLockが打てればと思ったのですが、どうも難しそうなので止め。しかしNumLockは必要だし、Muteはほしかったので、使わないF11を犠牲にしました。その後、レイヤー機能を導入してF11は復活してます。

空中配線

キースイッチを付け終わったら、プレートを裏返してコントローラを固定。キーマトリクスを決めたら配線を行います。

コントローラは、Arduino Micro 5V 16MHzを使う予定で、2019年初夏にブレッドボードやタクトスイッチと共に購入し、Lチカ等の勉強をしていました。自作キーボードの世界ではArduino Pro Microがよく使われているようですが、キースイッチにつなげられるピンが(たぶん)18個なので最大81個のキーを使えます。私が作りたいのはキーが100個以上あるので、これでは足りません。なので、使えるピンが24個ある(と思う)Arduino Microを選びました。ピンが足りないときに増やす方法があるようですが、私には理解できなかったので……。

ただ、キー入力のテストで描いたスケッチ(プログラム)が面倒な事になって消せなくなり、今の私の技量では放置せざるを得ない状態になってしまいました。「A」が延々と打ち出されるというもので、PCにつなぐとFirefoxはフリーズするわVivaldiは起動しなくなるわOpen Menuは落ちるわで……。これで2019年は終わりました。

2020年になって結局、互換機らしいWhat's Next Pinkを購入、作業を再開しました。大本の公式サイトにつながらないのが気になりますが、少し調べた範囲では純正と変わらないようで、違いは本体にピンの番号が印刷されていない程度みたい。

What's Next Pinkをプレート裏側に固定。

とりあえず買っておいたフリスク基板にWhat's Next Pinkを半田付け。ブレッドボード用の固いジャンパワイヤの被覆を剥いたケーブルを使って、空中配線のコードを半田付けしやすいようにします。後で考えるとWhat's Next Pinkの端子に直接半田付けすればよかったかなとも思ってますが、電子工作の経験が非常に浅いので仕方ないということにします。

プレートへの固定は、フリスク基板の穴に3mm径プラ棒を差し込み、プレートに接着しています。高さを抑えるため、ピンヘッダはニッパで切っています。

右上、マスキングテープを貼っているのは、LEDを接続する3本のピン。左の方、1本長いピンはGNDです。Arduino Micro(What's Next Pink)のピンについては、ソフト編で少し書く予定です。最初はどのピンに何をつなげればいいのか、さっぱり判りませんでした。

microUSB端子にはエポキシ接着剤を盛って、壊れにくくしています。ここはよくもげるそうで、ほとんどデフォルトの作業みたいです。

ダイオードの半田付け。

ダイオードをキースイッチに半田付け。黒線のないアノード側をキースイッチの端子と半田付けします。

COLとROWの配線。

これまた前回と同じく、COLとROWの配線をレイヤー画像にしています。グラフィックツールはKrita、文字はGIMPを使っています。

プレートの裏側なので、キーは左右反転した配置になっています。左右のカーソルキーは間違いやすい(前回間違えた)ので、何度も確認。

一度、全てのレイヤーを表示して、抜けがないか確認。不透明度を調節するとわかりやすいかも。

R0の配線。

配線のレイヤーを1枚ずつ表示し、確認しながら半田付けをします。

ポリウレタン銅線の半田付けは1年ぶりで(今回の作業は全部1年ぶりですが)感じを忘れてましたが、半田ごてに乗せた半田に線をくぐらせ、煙が出て2を数えたところで半田付けをしました。

一つ終わったらピンセットではじいてきちんとできているか確認。1列終わったらテスタで導通を確認。それでも使用中に2箇所半田がとれて、キー入力が不安定になった事がありました。

ポリウレタン銅線は0.2mm×20mを使用。昨年これを2巻買い、1巻きをかなり余らせました。今回はその余り+1.5mくらいで完了。キーボードがもう1台できるくらい余っています。0.2mmはちょっと細かったかもと思っています。

配線完了。

空中配線が完了しました。LEDもとりあえず配線しています。その後、TypeA-microBタイプのUSB2.0ケーブルを接続。途中2箇所をプラ板で止め、引っ張られてもコントローラのコネクタ等に負担がかからないようにしています。

USBケーブルの出口付近。

USBケーブルの出口は結束バンドでこぶを作り、抜けたり動いたりしないようにしています。

インジケータ用LEDはエポキシ系接着剤で固定。カソード側をまとめてGNDにつなぎ、アノード側はそれぞれ470オームの抵抗を付けてピンにつなげています。

点灯したところ。

インジケータ用LEDは緑の四角いタイプ。

少し後の話ですが、3個とも点灯する事を確認しています。ただ、キーに反応して動くのはNumLockのLEDだけなのですが。

文書更新履歴

2020年06月20日
文章の一部を簡易に変更。
2020年06月13日
このページを公開。