キーボードスイッチのフォースカーブの読み方

自作キーボードのスイッチは本当にたくさんの種類があります。そのキースイッチの感触を可視化したものがフォースカーブです。ここでは基本的なフォースカーブの読み方と、私が様々なスイッチのフォースカーブ測定から得た知見を加えてこの記事でまとめてみます。

フォースカーブ

基本

フォースカーブとは次のようなグラフであり、スイッチの特徴を表すものです。

フォースカーブの例

基本的なパラメータとして、下記のような項目があります。

  • Total travel (底打ちまでの押下長)
  • Pre-travel / Actuation point (入力点までの押下長)
  • Bottom out force / Actuation force (底打ち時荷重、入力点での荷重)
  • タクタイルのバンプの形 (スイッチのタクタイル感)

呼び方はいろいろありますが、上のことを知っていれば違う言葉が使われていても大体わかると思います。Total travelやActuation point/forceなどは数値だけで示すことができ、キースイッチの販売ページに記載されています。荷重は底打ち時と入力点で異なるのでどちらが記述されているか注意する必要があります。上の図ではTravelを荷重がゼロの点からとしていますが、最初のほぼ90度に立ち上がっている部分は含めるかどうか、その辺のちゃんとした定義はちょっとわかりません。

pre-travelが短いものはスピードスイッチと呼ばれたりします。スピードスイッチついてはサリチル酸さんが最近わかりやすい比較を行っています。

salicylic-acid3.hatenablog.com

フォースカーブはタクタイルスイッチの特徴を示すのに有用です。上にあげた基本的なパラメータのうち、スイッチのクリック感は文字や数値で説明するのが難しいからです。下には例としてCherry MX BrownとDurock Koalaのフォースカーブを示しています。Cherry MX Brownは比較的クリック感が弱いスイッチです。それに対してクリック感の強いDurock Koalaでは、フォースカーブのタクタイルの山の大きさにそれが表れています。

タクタイルスイッチのフォースカーブの例。(左)Cherry MX Brown、(右)Durock Koala

触ったことのないスイッチでも、手元にあるスイッチのフォースカーブと実物の感触からある程度想像できるようになります。

※ただしクリッキーのスイッチは測ったことが無いのでちょっとわかりません。

以上に加えて下のことを知っていると、よりフォースカーブを深く読み取ることができると思います。

スイッチには個体差がある

スイッチはたとえ同じ種類であっても実は個体差が多少あります。明らかにそれがわかることはほとんどありませんが、個体差があることは頭の隅にとどめておいても良いかもしれません。Aqua kingスイッチは、登場したばかりのころは個体差がかなり大きいスイッチでした(最近がどうかは知りません)。その個体差を調べたのか下の図です。

Aqua Kingの個体差

リニアスイッチのはずなのに、ものによってはタクタイルみたいな山のあるフォースカーブになっています。このスイッチは特に個体差が大きいですが、フォースカーブ測定を行う際、個体差を考慮して複数の個体を調べるとより信頼性の高いデータとなります。ただ、このことをはっきりとデータとして示しているのは見たことがないし、私が自分でフォースカーブを測定するときはいつもサボってしまいます…。

究極の打鍵感を目指すなら、フォースカーブ測定で個体差を見極めてスイッチの選定をするといいのかもしれません。

リニアスイッチの滑らかさ

リニアスイッチのフォースカーブは大体どれも同じ形なので、測定してもあまり面白くないと私は思っていました。しかしよく考えてみるとフォースカーブから滑らかさを読み取ることができます。 摩擦が全くない、究極に滑らかなスイッチがあった場合、フォースカーブは下の図のようになるはずです。

摩擦が無い場合のリニアスイッチのフォースカーブ。青が押し下げ、赤が戻る場合を示す。

フォースカーブの荷重の測定が静的に行われた場合の力をのつりあいを考えます。ある距離xだけステムを押し下げるのに必要な力Fは、フックの法則(F=kx)に従い、バネが自然長から縮んだ長さxに比例します。そのため、底打ち位置までは直線的に荷重が大きくなります。これがリニアスイッチと呼ばれる理由だと思います。

摩擦が全くない場合、力のつりあいをとるためにステムを下に押す力は、バネの縮んだ量、つまりステムの位置だけで決まるはずです。なので、ステムを押し下げる時(青)と上に上がる時(赤)は図のようにフォースカーブのグラフ上で同じ経路を辿ります。

さらに細かく観察してみましょう。バネはスイッチの中で少し縮んだ状態で格納されています。なので押し下げ始めの荷重はゼロでないところにあります。直線部分の傾きkはバネの硬さで決まります。Slowなバネはこの傾きが小さい(バネ定数kが小さい)です。

実際にリニアスイッチのフォースカーブを測定してみると、上のグラフとは異なり、下の図のようになります。

リニアスイッチのフォースカーブの例(OA Switch stock)

押下長が短いところではステムを下げるとき(青)と上に戻るとき(赤)で線が一致しません。これはなぜでしょうか?実際には、ステムとリーフスプリング部やハウジングとの間に摩擦があります。下の図はスイッチのステムを押し下げるときと、上に戻るときの力の様子を示しています。

(左)ステムを押し下げるとき、(右)ステムが上に戻るとき

スイッチを押すとき、下からバネがステムを押す力に加えて摩擦力が上向きに働きます。一方、ステムが上に戻るときには、摩擦力は逆向きになります。

このために実際のフォースカーブではステムの位置が同じでも行きと戻りで荷重が異なります。摩擦が大きいほどこのギャップが大きくなるはずです。逆に言えば、行きと戻りの差が少ないほど摩擦が無い滑らかなスイッチであるといってよいでしょう。

実際にこのことを確かめたのが下の図で、OA switchの1つの個体をKrytox GPL205g0でルブする前後で測定したフォースカーブの比較です。

ルブ前(左)とルブ後(右)のフォースカーブの比較。行き(青)と戻り(赤)の線の間隔がルブすると狭まる。

ルブするとスイッチが滑らかになることは体感でわかりますが、これがフォースカーブ前半での行き(青)と戻り(赤)の線の間隔が狭まっていることに表れています。

さらに観察すると、フォースカーブは前半と後半で変化していることに気づきます。フォースカーブの後半部分では前半とは異なり、行きと戻りが一致しています。これは摩擦がほとんどないということを表しています。なぜ前半と後半で違いがあるのでしょうか?

スイッチを分解してよく観察してみると次のことに気づきます。 スイッチの中の電極はリーフスプリング構造をしている電極と、それと接触するもう一つの電極があります。ステムを取り除いて見てみると、リーフスプリング電極は縮んだ状態でハウジングにおさまっており、開く方向に力がかかっていて、もう一つの電極と接触した状態となります。

スイッチの構造(Gateron Box Ink Pink)

スイッチを組み立ててステムが上にある状態では、ステムの腕がリーフスプリング電極を水平方向に押した状態になっており、これによって2つの電極の接点が離れた状態になっています。ステムを下に押し下げていくと、水平に押す力が減ってリーフスプリング電極が開いていき、最終的にもう一つの電極と接触します。さらにステムを押し下げると、(おそらく)リーフスプリングとステムの腕が離れこれらが接触しなくなります。(このページのFigure 2がとても分かりやすい)

つまり、ステムがある程度上がっているときには、リーフスプリングとステムの腕が接触しているので摩擦が生じます。またステムが水平方向に押されている状態なので、ステム側面とハウジングの摩擦もあるかもしれません。この摩擦力がフォースカーブ前半の行きと戻りの差に反映されているのだと思います。

一方ステムを押し下げると、ステムの腕がリーフスプリングと離れるので、この間の摩擦が無くなります。ステムを水平方向に押す力も無くなるので、ハウジングとの摩擦も小さくなっているかもしれません。いずれにせよフォースカーブの後半で行きと戻りが一致するのは摩擦は小さいということを表していると思います。この特徴はリニアスイッチだけでなく、タクタイルスイッチでも同じです。

まだちゃんと理解できていないのは、リーフスプリングのバネの特性です。これもバネの一種なので、フォースカーブ前半にその特徴が表れても良さそうです。螺旋状のバネしかない場合に比べて、リーフスプリングがあると少しステムを下に押す力があるはずです。ただ、その力が弱いのか、押し下げるときにはほとんどそのことはわかりません(ルブ後は見えている気も?)。

摩擦力と滑らかさについてもう少し深く考える

この摩擦力の考察には実は静止摩擦力=動摩擦力という仮定があります。フォースカーブ測定は、移動、静止、荷重測定、移動、…というシーケンスなので、フォースカーブに表れているのは静止摩擦力です。しかし実際のタイピング時にはステムが動いている状態なので動摩擦力が関係するはずで、静止摩擦力ではありません。ただ、大抵の場合は最大静止摩擦力>動摩擦力となるので、行きと戻りで差が小さければ、滑らかなスイッチである、という結論は良さそうな気がします。

フォースカーブの行きと戻りの線の間隔はスイッチの滑らかさを反映しますが、これは螺旋状のバネの強さにも依存しそうな気がします。異なるスイッチの「滑らかさ」を客観的に比べるためには、もう少し工夫が必要です。例えばバネを共通にして比べると滑らかさを公平に比較できそうです。でもとっても面倒…。

別の観点は、バネが重ければ摩擦があっても気にならないかもしれません。たとえば摩擦力が10gfあるのに対してバネの荷重が100gfあったら気にならないかもしれませんが、バネの荷重が10gfしかなかったら摩擦をはっきりと感じそうな気がします。滑らかと感じるかどうかは摩擦力とバネの荷重の比率も関係すると思います。

フォースカーブのギザギザ

上のルブ前後のフォースカーブを比べると、明らかにギザギザ(ガタガタ)具合が変化していて、ルブ後の方が小さくなっています。ガタガタ具合もスイッチの滑らかさを反映していると思いますが、これはステムのぐらつきも影響していそうです。ガタガタ具合で異なる種類のスイッチの滑らかさを公平に比較するのは難しそうです。

これまでに測定したデータ

私は自分の理想とするタクタイル感をキメラスイッチによって手に入れるため、フォースカーブ測定機を自作して複数のスイッチの測定を行いました。測定して記録を取ることで、自分の感覚+客観的な比較が可能になるからです。(きっと普通の人は、ちょっと何を言っているのかわからない、と思うでしょうね…)

そのフォースカーブ測定の結果の一部をまとめたのがこちらのページです。 東プレのrealforceなどの市販品もいくつかあります。 ただし各測定はサンプル数1のみで、スイッチの個体差はわかりません。キメラスイッチが機能しないなどの記述がありますが、個体差でたまたまダメだっただけかもしれません。 このページにまだ載せていないデータがありますが、気が向いたら載せるかもしれません。

sites.google.com

あとがき

フォースカーブを注意深く観察すると実は色々わかります。まだまだ気づいていないことがあるかもしれません。 ステムのぐらつきとかも評価できるようになるといいなぁと思います。スタビライザーのついているキーはステムのぐらつきが少ないスイッチのを使うとカチャカチャしにくい気がしています。でもぐらつきの評価は今のところ、YouTubeの動画とかでピンセットでグリグリしてその印象を比べる、というのにとどまっていると思います。これも測定して数値化し、定量的に比較できるといいですよねぇ。

この記事は自作したオリジナルキーボードunity69で書きました。

キーボード配列の最適化は2連接のデータだけでいいのか?

キーボードの配列の良し悪しを判定するときに、2連続打鍵(2連接)の頻度と入力時間を使うのが一つのやり方だと思います。 これでいいのだろうかという疑問があったので、自分のタイピングデータを使って少し調べてみました。

キー配列の良し悪しはどう考える?

キー配列の最適化問題では、配列の良し悪しを考えることになる。客観的にやりたい場合には良し悪しの数値化が必要だ。最も単純な最適化は、頻度が高い順にホームポジションやそれに近い位置にキーを配置することだろう。

ただしタイピングしていると、キー位置の組み合わせによって速かったり遅かったりすることに気づく。たとえばqwerty配列でのceなどは同じ指で違うキーを打鍵するのであまり速く打てない。連続打鍵の入力速度もキー配列の良し悪しの尺度として取り入れたくなるわけである。

このことを考慮したやり方は2連続打鍵(2連接)の入力速度とその頻度を利用してキー配列を評価することである。欲張ると3連接、4連接なども評価に加えたくなる。でもそうすると、2連接と3連接をどういう重みづけで評価すればいいのかわからない。また、アルファベット26文字の3連接の組み合わせは17,576 通り。4連接だと…。これらすべての組み合わせに対してタイピングデータを取得するのはかなり困難だろう。

だから2連接だけで物事を考えたくなる。さて、このスコアリングはリーズナブルなのだろうか?もし3つ以上のn回連続打鍵の入力時間が、(n-1)回の2連接の入力時間の和と等しければ、2連接だけ考えれば良いはず。そこで2連接と3連接の入力時間の関係を調べてみた。

2連接と3連接の入力時間

2連接と3連接の入力時間は、自作のタイピングデータ解析アプリで取得した。

kgnwsknt-chef.hatenablog.com

データの大部分はMonkeytypeあるいは10fastfingers.comでの英語のタイピングテスト。またブログなどの日本語の文章を書いていた時のタイピングデータも含まれている。 2連接は1秒以内のアルファベットの連続入力、3連接は1.5秒以内のものと定義し、各組み合わせについて平均入力時間を求めた。ただし頻度の少ない組み合わせは除いた。このデータを入力時間でソートし、3連接と対応する2つの2連接の時間の和を比べたのが次の図。

3連接(3gram)と2連接(2gram)x2の入力時間の比較

横軸は入力文字の組み合わせを示してしている。わかりやすいように入力時間の短いもの、長いものだけをプロットすると次の図のようになる。

入力時間の短いものと長いもの

念のため、英語タイピングと日本語入力をそれぞれ見てみたのが次の図。

英語タイピングテストの入力時間

日本語文章の場合の入力時間

もしかしたら入力時間の短いいくつかの組み合わせは頻発しているミスタイプかもしれない。(oweとか、どういう言葉を入力しているときか思いつかない…)

これを見ると、3連接と2x2連接の入力時間は相関しているものの、3連接の入力時間の短い場合、長い場合は大きく異なる。これを見てしまうと、2連接のデータだけでキー配列を最適化するのは十分ではないような気がしてしまう。

眺めているといろいろ面白い。umuはすべて同じ指になるので遅いというのは予想通り。逆に使う指がすべて異なる3連接は速く打鍵できると思っていたが、必ずしもそうではないみたいだ。aerやaenは入力が遅い。これらは小指を使うからだろうか?遅い打鍵のパターンを眺めているとaが多い気がする。aキーを小指から別の指の位置に移動させるだけでも効果が大きいかもしれない。意外なのはoit。これは右薬指、右中指、左人差し指で打鍵するが、別に打ちづらい感じはしない。でもなんでかはわからないけれど、どうやら自分は苦手らしい。

最適なスコアリングとは?

2連接と3連接の比較を見ると、2連接のデータだけでは不十分だと思う。一番マシなスコアリングは、十分な長さの入力をスペース入力や長い時間入力が無いという条件で区切ってn連接の塊を作り、その塊の入力時間の和を用いることだと思う。つまり人間の思考時間を除いた打鍵時間。

この評価のやり方の問題は、次の点。

  • どうやって入力ミスを判定するか?
  • キー配列のスコアを計算するのに時間がかかる

入力ミスの判定はBackspaceの入力からある程度はわかるとして、問題は後者。qwerty配列Dvorak配列など、すでにあるキー配列の評価をするのは容易い。でも、適当なアルゴリズムを使ってスコアの最も良いキー配列を探索する場合には、スコアの計算速度は重要になる。

あとがき

ここでは入力時間を最小化するという方針で考えてきたが、入力ミスが少なくなるように、という考え方もあると思う。でもこれと入力時間の重みづけはどうするのが良いのだろう?考えれば考えるほどわからなくなっていく。キー配列、沼過ぎる…。

この記事は、自作したオリジナルキーボードunity69で書きました。

ホットスワップで打鍵音エンドゲームのキーボード自作

打鍵音エンドゲームを目指してキーボードを自作し続けてきました。2台ほど気に入ったものができましたが、いずれもPCBにスイッチをはんだ付けするものだったので、スイッチを気軽に取り外せないという不満がありました。それを解消するためにホットスワップのキーボードを製作していましたが、ようやく打鍵音に納得のいくキーボードを自作することができました。今回はそのことについての記事です。

これまでの歩み

打鍵音の心地よいキーボードがあるといつまでも打鍵したくなってしまうもの。 これはパソコンに向かって作業することが多い現在、最高の打鍵音は自分を作業にいざない、進捗を生み出す魔法(麻薬?)となり得る。

これまで自作してきた中で、最も好みの打鍵音はこれ。

www.youtube.com

スイッチプレートレスでスイッチがPCBにはんだ付けされているこのキーボードは、自分的には最高の打鍵音を奏でてくれるのだが、これには問題がある。 長く使っていると打鍵音が変化してしまう。 どうもルブの具合が劣化しているのが原因みたい。 スイッチをひとつだけルブし直してみるとちゃんと自分の好きな打鍵音に戻る。 でもスイッチがPCBにはんだ付けして固定されているために、すべてのスイッチを外してルブをやり直す、というのが非常に大変でちょっとやる気がしない。

そこでホットスワップで心地よい打鍵音にならないかと考え始めた。 それを目指して作ったのが、unity69と名付けたこのPCB・スイッチプレート一体型ホットスワップキーボードである。

kgnwsknt-chef.hatenablog.com

このおかしな発想を最終的にはちゃんと形にすることができたのだが、残念ながらこれは静音すぎる。音は控えめが好きだが、静音ではなくある程度底打ち音が鳴って欲しい。

次の一手

PCB・スイッチプレート一体型は打鍵音的には失敗だったが、あれこれ試したことにより収穫はあった。FR4のスイッチプレートはかなり柔らかいので、おそらく打鍵音に与える影響は限定的であること、またスイッチプレートが柔らかい場合はスイッチ底面に接している板が底打ち音に大きく影響を与えることがわかった。自作したスイッチプレートレスのキーボードでは程よい底打ち音なので、FR4スイッチプレート+PCBで同じような打鍵音が得られる期待がある。そこでこの組み合わせでキーボードを作ってみることにした。

レッツ自作

キー配列

キー配列は65%のRow Staggered。基本的にはunity69と一緒なのだが、分割したスペースキーの境界の位置に不満があった。自分は主に右親指でスペースキーを打鍵するのだが、unity69の配列だと時々の境目近くを打鍵して左隣のキーの端を親指がかすめる。誤って左スペースを押してしまうことは無いものの、隣のキーをかすめる感覚は気持ちよくはない。そこで境界を0.25u左にずらし、その文右Ctrlを1.25uから1.5uに変更した。

キー配列。改良前(左)と改良後(右)。

スイッチプレート・PCB

ケースはunity69用に作成したアクリル箱組ケースを流用する。一応もう一つあるアクリル箱組ケースでも対応できるようにスイッチプレート・PCBを小さめのサイズにしておく。 Elecrowに発注し、届いたものがこれ。

Elecrowから届いたスイッチプレートとPCB

これらにはM1.4スペーサ用のネジを多数空けておいた。 ホットスワップにするとスイッチはPCBにしっかりと固定されるわけではない。もしスイッチがPCBから浮いていると、おそらく底打ち音はスイッチだけで決まり、高音寄りの音になる気がする。

そこでできるだけスイッチがPCBに密着するように、スイッチプレートとPCBにねじ穴を空けておき、これらを3.5mm長のM1.4のスペーサーで固定できるようにしておく。こうすれば、間にフォームやシリコーンシートを入れた場合でも間隔が3.5mmとなり、スイッチがPCBから浮いた状態になることを防げるだろう。本当は1.6mm厚のPCBでスイッチプレートを作ると3.4mm長のスペーサーが良いが、そんなのないので0.1mmの違いは目をつぶることにする。 どの位置で、また何箇所をスペーサーで固定するのがいいのかはわからなかったので、とりあえずたくさん穴を空けてある。

MCUといくつかのチップ素子をはんだ付けし、USBのドーターボードをつないで動作確認する。MCUは古い基板から引っ剥がしたものだったので少し心配だったが、無事認識された。ファームウェアーを焼いてスイッチ回路の動作もOK。ここまで確認できると致命的なミスがないということなので一安心(時々スイッチの位置がずれてしまっているとかあるけど…)。ダイオードとソケットをはんだ付けしたらいよいよ組み立て。

まずはスタビライザー。 スタビライザーはGateronのPCBマウントのものを使用した。今回初めて使ってみたが、ワイヤーとステム、ハウジングの寸法がかなりぴったりでワイヤーのブレが全然ない。いつもはバンドエイドをステム内側に貼るHolee Modを施しているが、かなりぴったりだったのでこれは省略。PCBにはKBDfansのフォームを貼り付ける。

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

Gateronのスタビライザーには2種類の長さのワイヤーがある。2U用だと23.80mmと24.00mmがあって0.20mmだけ違うのだけれど、これはなんでだろう? いまだにわからない。まあでも通常スタビライザーセットには2Uのワイヤーが4本しかなく、この配列は2Uが5個あるので足りなくなるが、Gateronのスタビライザーセットは1セット買うだけで賄えるので助かる。

フォームとシリコーンシートのカット

スイッチプレートとPCBの間には3mm厚のポロンシートを入れる。スイッチプレートとPCBの間は3.4mmの隙間が空くので、3mm厚のポロンシートだけだと少し隙間が空いてしまい、フォームとプレート・PCBが密着できない。そこでシリコーンシート0.5mmも入れることにした。

ポロンフォームのカットを以前はハサミやニッパーなどを用いてカットしていたが、平刃でやるのが良いというのを学んだのでこれに倣う。

notheme.me

余っているスイッチプレートをフォームにあてた状態で固定し、スイッチ穴の辺に沿って上から平刃を押しつけてカットしていく。ハサミやニッパーでカットしていた時はだいぶガタガタだったのに比べ、このやり方ならきれいに四角く切り取れる。

スイッチプレートに合わせてフォームとシリコーンシートをカット

同じ要領でシリコーンシート0.5mmもカット。こっちの場合は普通のカッターナイフを使用した。 カットしたシリコーンシートとポロンフォームをセットする。シリコーンシート0.5mmは薄くでだいぶ変形するので、位置を合わせるのが結構面倒だった。

シリコーンシートとフォームをセット

スイッチはPCB・スイッチプレート一体型ホットスワップキーボードunity69で使用したBanana Splitを使用する。このスイッチは打鍵音が控えめで滑らか。もちろんルブ済み。

今回使用するunity69のケース内寸はプレート・PCBに比べて少し大き目になっているので、シリコーンゴムシートを使って前後左右の位置がずれないようにする。切り出したゴム片に切り込みを入れてそこにPCBのタブを入れる。簡易ガスケットマウント見たいな感じだが、PCB下にフォームを入れてケース底板で軽く潰すのでガスケットマウントとはちょっと違う。

シリコーンゴムでPCBの前後左右の位置を固定

ケース裏面から見た写真はこんな感じ。PCBとケース底板の間には黄色のアクリル発泡体の衝撃緩衝材を敷く。これはケース底板を取り付けると少し潰された状態になる。

ケース底面

スペーサーでスイッチプレートとPCBを固定してみる

スイッチプレートとPCBの間にポロンシートとシリコーンシートを入れたが、これらが密着していてほしい。そこでスイッチプレートとPCBを3.5mmのM1.4スペーサーで固定する。

スペーサーで固定すると、そのそばのスイッチの打鍵音は明らかに変化する。底打ち音が硬い印象に変化する。これは自分の求めているものとは異なるので、PCBの四隅に近い穴4つだけ止めることにした。

スイッチプレートとPCBの端に近い位置(Tabキーの左上とShiftキー右下)をスペーサーで固定する

この結果、端のキーの打鍵音は硬い印象になってしまったが、他のキーは少し改善したような気がする。ただし周波数スペクトル(後述)を見るとあまり違いはないので、これは気のせいかもしれない。

真鍮ウェイトをつける

組み立てると、PCBがケース底面のフォームの上に軽く押しつけられている状態になる。そうすると打鍵時の振動がケース底板に伝わる。ケース底面はアクリル板3mmで剛性は高くないので、これが振動して低音が鳴る。そこで以前作った5mm厚の真鍮ウェイトをつけることにした。これでだいぶ低音の響きが抑えられたと思う。後述の打鍵音の周波数スペクトルにもそれが現れている。

以前作った真鍮製のウェイトをケース底板に取り付ける(真鍮ウェイトが汚い…)

キースイッチを変える

以上の構成で組み上げたものは悪くはないのだが、打鍵音エンドゲームではない。ケース側をあれこれいじっても目指す打鍵音にはたどり着けそうにない気がしたので、スイッチをBanana Splitから、以前合成したGateron Ink Black + UHMWPEステム(415keys, rev4)に変更してみた。

415keysのrev4はキーキャップにはめる十字の部分が太めなのか、キーキャップによってはかなりキツくて破損してしまわないかと心配になる。そこでGeon Trimmerを使って少し削った(変形させた?)。

スイッチを変更したら自分の求めていた打鍵音になった!Banana Splitもだいぶ底打ち音やステムが上に戻ってきたときの音が抑えられていたが、UHMWPEステムだとさらに音が控え目で柔らかい印象になる。またBanana SplitのハウジングにUHMWPEステムを組み合わせたものも試したところ、Ink Blackのハウジングを使った場合とほとんど同じ打鍵音が得られた。このステムが打鍵音エンドゲームの鍵だったみたいだ。

いまだになぜUHMWPEステムだと底打ち音がまろやかになるのかわからない。今考えている仮説は、このステムは通常のスイッチのステムに比べて少し柔らかいのではないかということ。 素材が柔らかければもちろん打鍵音も柔らかくなる。 Gateron Yellowも打鍵音が柔らかい印象があった。乳白色のトップハウジングはポリカーボネートのものにくべると柔らかい気がする。

タイピングの打鍵音

タイピング打鍵音の動画を雑に取ってみました。

www.youtube.com

いやー、このコトコト、しっとりとした音がタイピングしていて最高に気持ちいい。求めていた音はまさにこれです。

周波数スペクトル

下の図は打鍵音を整えるために試行錯誤していた際、タイピング打鍵音を録音してその周波数スペクトルがどのように変化するかを比較したもの。1分間の英語のタイピングテストを録音した。

タイピング打鍵音の周波数スペクトルの比較

プレートとPCBの間にフォームを入れると10KHz超のピークが下がる。ウェイトをつけると音が変わったが、これがどの周波数帯で効いているかはちょっとよくわからない。最も効果の高かったものはやはりスイッチの交換。UHMWPEステムは底打ち音がマイルドになる。周波数スペクトル的には、10kHz周辺、6kHz周辺、2-3kHzのピーク、1kHzあたりのなどが顕著に変わっている。この変化が打鍵音の印象を大きく変えている。以前録音音源にローパスフィルターを通して遊んでみたときに高音が減ると好みの音になる傾向があったので、特に10kHz周辺、6kHz周辺の減少が重要ではないかと思う。

心地よい打鍵音を得るためのレシピ

というわけで自分の好きな打鍵音を得るレシピを確立できた気がします。

  • FR4のスイッチプレート+ホットスワップのPCB
  • PCBの上下にフォーム
  • UHMWPEステムを入れたルブされたスイッチ

加えてSAプロファイルのような背の高いキーキャップを組みわせると更に自分の好みな音になりそう。

あとがき

ようやくホットスワップで打鍵音がエンドゲームと言えるキーボードが完成しました。これでルブの具合が劣化してもメンテナンスする気になります。

打鍵音が気持ちいいので暇があると何度もタイピングテストをしてしまい、この打鍵音の依存症になってしまわないかちょっと不安です。

今はスイッチの在庫が不十分なのでアルファベットキーとスペースキーしか打鍵音エンドゲームになっていません。Banana SplitとUHMWPEステムの組み合わせもほぼ同じ打鍵音が得られているので、これをつけようかな? あるいは別のハウジングの素材でより柔らかい打鍵音にできるかもしれません。気が向いたらUHMWPEステムと他のハウジングの組み合わせを試してみるかも。

また、今はスイッチプレートとPCBの間に入れているポロンフォームとシリコーンシートは合わせて3.5mmとなっています。さらに0.5mmのシリコーンシートを加えてすこしポロンフォームを潰した状態で打鍵音がどう変化するか少し気になります(でも面倒…)。

さて、自分の好みの打鍵音を得る方程式を見いだした気がしているので、打鍵音の気持ちいよい分割キーボードでも作ろうかな?



この記事は自作した打鍵音エンドゲームのオリジナルキーボードunity69で書きました。

ChatGPTを利用してタイピング解析アプリをつくってみた

ちまたで話題のChatGPTを使って自分も遊んでみるかと思い、何をしようかと考えていたのですが、以前タイピングデータを取得・解析するソフトが欲しかったのを思い出しました。ChatGPTとプログラミングの相性はとても良さそうなので、この助けを借りて自作してみることにしました。今回はそのことについて。

タイピングデータの統計が欲しい

最近ChatGPTが注目され、話題となっている。自分もこれで何かして遊ぼうかなと考えていたら、ふとタイピングの統計を取るアプリが欲しかったことを思い出す。以前キー配列の最適化についてブログを書いていた時に、キー配列の最適化は人に依存するだろうから自分のタイピングデータの統計が欲しい、と思ったのだった。

kgnwsknt-chef.hatenablog.com

既存のツール

タイピングの統計を見ることのできるツールはいくつかある。自分がこれまで使用していたのは、このウィンドウズアプリ。

www.vector.co.jp

キーボードを自作し始めた頃にお世話になった。使わないキーを排除するという方針でフルサイズキーボードからテンキーレス、自作キーボードの独自配列とキーボードが移り変わっていった。 自作キーボードの配列を決める際、どのキーの頻度が低くて除けるかを知ることができたのでとても助かった。ありがたやありがたや。

ちなみに自分の統計はこんな感じ。

タイプ数カウンターの統計

このアプリはシンプルで良いのだけれど、タイピングデータの複雑な解析はできない。

これ以外にも、タイピングテストのwebサイトが複数あり、タイピング速度などを表示してくれる。でもこれだとタイピングテストのデータに限定されてしまう。普段の文章打ちのデータも取得したい。

もっとあれこれ分析してみたい

既存のツールではできないもう少し凝った分析をしたい。 なぜならキー配列の最適化について考えていた時に自分が重要ではないかと思ったのが連続打鍵したときのキーの組み合わせだからだ。 連接(英語だと連続する文字列はbigram, ... n-gramらしい)と呼ばれるこの連続打鍵のデータの取得・解析ができれば自分が納得できる答えに辿り着けそうな気がしている。 ただ、連接の統計をとれるアプリを見たことが無かったし(知らないだけかもしれない)、自分で作ろうとすると何から手を付けていいかちょっとわからなかったので放置していた。

そこでChatGPTである。(1)タイピングデータの統計を取るアプリが欲しい、(2)ChatGPTで遊んでみたい、という2つの目的を達成できる気がしたので、アプリ開発を始めることにした。

自分の家のPCはWindowsなのでWindows上で動くGUIのアプリにする。ChatGPTを学習に利用することがどれくらい有効なのか興味があったので、目的(2)は「ChatGPTを学習ツールとして試してみる」と捉えなおし、使用するプログラミング言語はあえて名前しか知らないC#にすることにした。

これに加え、よく目にするけど使ったことが無かったVSCodeも初めて利用してみることにした。ただし開発している途中でWindowsアプリのインストーラーやチャートについてChatGPTに相談してみると、Visual Studioのほうが親和性が良さそうに見えたので、途中からVisual Studio(これも初体験)を使って開発した。

アプリの仕様

取得するデータ

連接の統計を見ようとすると、入力されたキーとその入力時間を取得する必要がある。データは以下のようにした。

  • 入力キー(キーコード)
  • 入力した日時、時間
  • カテゴリー(日本語入力、英語入力など)

入力キーは文字列にするとEnter or Return?とかで悩んでしまうのでキーコード(整数)をデータとする。対応はここに一覧がある。

加えてカテゴリという項目も入れておく。入力している文章の言語(日本語、英語、プログラミング言語)や種類(タイピングテスト、ブログ執筆など)によっても傾向が違うだろうから、あとで分類するために用いる。

データ量はたかが知れているので、これらをいったんファイルに保存し、そのデータを解析して統計を表示することにする。そうすればデータを取得しなおすことなく後から解析の追加が可能となる。データはSQLを利用してファイルに保存する。

機能

せっかくなので自分が欲しいなと思った機能を全部のせ。

ヒートマップ

各キーのタイプ数の頻度を色で表示する。

ヒートマップ表示

自分の使っているキーボードの配列上に表示させたいので、Keyboard Layout Editorが出力するjsonファイルからキー配列を描画するようにした。

入力ミス頻度

Backspaceから誤入力を推定し、エラー率をヒートマップ表示と同じように色で表示する。 これこそ人や入力言語によって違うはず。これがわかると自分のタイピングを改善するのに役立つかも?

ミスタイプの分布、=の苦手具合がひどい

ミスタイプの検知方法

Backspaceの入力からミスタイプを検知している。その判定方法を自分のメモ代わりに書いておく。

  1. アルファベット、記号、数字、スペースのどれかが入力されたらBackspace入力の監視をスタート
  2. 監視中の入力にBackspaceが現れたら、連続で何回入力されたかをカウント

    • EnterやModifierが入力されたら1に戻る
  3. その後Backspace以外が押されたら、数えたBackspaceの入力回数だけ履歴を遡ってどのキーを間違えたかを判定

  4. キー入力間の時間差が一定(今は1.5sとしている)以上になっている場合は1に戻る

日本語入力時ではほとんど正しくない。また今はミスした物理キーでカウントしている。たとえば「!」は1としてカウントされている。これは区別したほうが良いかもしれない。

連接打鍵の入力速度

2連接、3連接の入力時間と回数を表示する。アルファベット26文字の連接を考えると、2連接は26x26=676通り、3連接は17576通りにもなる。4連接以上も見ることはできるけど、3連接でも全てのパターンについて十分な統計を得られる気がしないし分析も大変。3連接までにしておく。

連接のデータ(頻度の多い順に表示)。

ミスタイプで2つ以上のキーの同時押しされたりすると3連接でも10ms以内になったりする。今はこれを上手くこれを除くことはできていない。もう少し何とかしたいところ。

キーチェッカー

入力されたキーが色付けされていってキーが反応するかどうかをチェックできる。PCBをチェックするときに利用するviaの機能の真似です。自分はこれまでviaをちゃんと動かすことができていないのでこの機能も入れることにした。これすごい便利ですね。

キーチェッカー

タイプ数のチャート

タイプ数カウンタ―のようにタイプ数のトレンドをグラフ表示。横軸の範囲の調整がまだ未実装。

タイプ数のチャート

表示するデータの選択

キーチェッカーを除く以上の表示は、カテゴリやキーの種類、またデータのタイムスタンプの期間を選べるようにした。

その他

テキストファイルをインプットして、データベースに変換する。このデータベースから入力した文章について、ヒートマップ表示や連接の登場回数を表示させることができる。ただし英文のみ。

ChatGPTを利用してコーディング

最初はアプリのコードを全部ChatGPTさんに書いてもらえないかとあれこれやってみた(おい、学習はどうした!)。 でもちょっとできそうにない。自分の指示の仕方が上手くないのか、そもそも無謀なのかもしれない。そこで部分ごとにコードを生成、あるいは例を示してもらう、というやり方で進めた。

プログラミングで何か新しいことにチャレンジするときには、これまでであれば入門的なことが書いてあるネットの記事を探すことから始めていた。 ChatGPTを利用すると「C#VSCodeでウィンドウズアプリを作成しています。XXXを行うためにはどのようにすればいいか教えてください。」みたいな質問をするだけで自分が求める情報に行き着くことができる。これはかなりありがたい。

1週間くらいで動くものができた

作業を初めてだいたい1週間(といっても平日は1,2時間程度)でキー入力を取得し、それをSQLでファイルに保存、キーレイアウトのjsonファイルを読み込んでヒートマップを表示するところまでできた。これには自分でも驚いた。プログラミングの経験はあるけれど、ChatGPTを利用せずにネット検索で調べながら進めた場合にはおそらく1か月くらいはかかっていたと思う。なるほど、ChatGPTは確かに作業時間を桁違いに減らしていて、世の中がこれだけ騒ぐのもうなずける。

自分的に助かったのはSQLのコマンド文。タイプミスやちょっとした打ち間違いで以前苦労した記憶があり、すごい苦手意識があった。今回はChatGPTがコマンド文ごとコード生成してくれるのでSQL部分の実装でハマることはなかった。これはありがたい。

ヒートマップ表示は1週間くらいでできたが、ここから他の機能を実装したり、そのためにコードを整理したりして、最終的にまあこんなもんかな、と思えるものができるのには結局1か月くらいかかった。これは自分にWindowsGUIの実装についての知識・経験が不足していて、ChatGPTが例を示してくれても自分がすぐに文脈を理解できていなかったのが主な原因だと思う。特にWindowsでのGUIの実装にはWPFWindows Formがあり、とっても紛らわしい。この2つの違いを認識せずに混在させると、型が合わずにコンパイルできなくて混乱する。

ChatGPTが一瞬のうちにプログラムを示してくれても、自分が理解していなければ組み込んでコンパイルすらできない。結局自分が理解する時間が最終的な作業時間の律速となる気がする。

入力時間の精度

どれくらいの精度で入力時間を測定できているものなのか調べてみた。下記はキーを長押ししたときの入力時間。

キーを長押しして計測された入力時間。一番右の数字が前の入力との時間差(ms)。

大体30msくらい。これはシステムが決めている時間かな?時々15-20msくらいバラつく。入力時間の間隔が変化するのはPCの処理が原因だろうか。まあこれくらいの時間の精度で測定できていれば問題ないでしょう。

ちなみにjを人差し指で連打すると100msくらいであるのに対し、890を右手の人指し指、中指、薬指で連打した場合はだいぶ速い。

jを人差し指で連打した場合と、890を人差し指、中指、薬指で打鍵した場合の入力時間

同じ指の連続打鍵はそれほど速くならないという自分の感覚をはっきりと確認することができて嬉しい。ただしホームポジションから移動する時間は測れていないので、公平な比較かどうかは何とも言えない。

セキュリティ的にはイマイチ

このアプリの欠点はセキュリティ的に危ういところ。はじめは常駐ソフトにして常時データ取得することを考えていたが、そうするとパスワードなども記録されてしまう。どういう統計を取るのか、どういう分析をするのか決めてしまえば入力文字をすべてファイルに保存する必要はないけど、そうするとあとから別の解析をしようとしてもできなくなってしまう。

このジレンマを解決したくてChatGPT先生に相談してみたらこのような示唆をいただいた。

ChatGPT先生に相談してみる

これ、PCにインストールされている何十もあるアプリケーションをすべて把握しないといけないということだろうか…。 やってられんので結局手動で記録の開始・停止をするようにした。それでもうっかり記録していることを忘れると、パスワードや個人情報がファイルに保存されてしまう。取扱注意。

2023年4月22日に開催されたKeybaord Input Hackathon (KIH) 2023の配信を見ていたら、偶然にも連接について調べるアプリを開発されている方がいた。連接データを得るならこちらの方が安全かもしれない。

ChatGPTを使ってみた感想

今回のテーマは(1)タイピングデータを取得・解析するアプリを作る、(2)ChatGPTを学習ツールとして試してみる、ということだった。(1)についてはとても有効であったと思う。(2)についてもう少し考えてみる。

最初はChatGPTを利用して使ったことのないプログラミング言語を学ぶというような漠然とした捉え方をしていた。ただ振り返ってみると、学ぶとはちょっと違う気がする。 プログラミングの学習は

  • プログラムの文法
  • アルゴリズムやモデル
  • コードの設計
  • ライブラリの使い方

等の項目がある。このうち、C#の文法について新たに学んだことは少なかった。これは、他の言語のfor, if文などを知っていることや、クラスの知識もあったから。クラスの設計のやり方を学ぶという点では少し参考になったかもしれない。ChatGPTに要求を伝えるとコードを示してくれるが、この例によって典型的なクラスのメンバ・メソッドの書き方を学んでいる気がする。ただ今回のChatGPTの主たる使い方は、Windowsアプリ開発用のライブラリの使い方を調べる、ということになっていたと思う。これはコードの設計とも関係するけれど、やっていることはweb検索とたいして変わらない。

学習という点でChatGPTがウェブ検索よりも優れている点の1つは言葉を教えてくれるところだと思う。プログラムにXXXをさせたいんだけど、それをどう実装すればいいかがわからないというのがよくある。ネット検索で調べる場合、キーワードがわからないとほしい情報に辿り着くのに苦労する。これは外国語で会話しているときに語彙が不足していて言葉が出てこず、全然しゃべれなくなってしまうのと似ている。ChatGPTに質問すると、キーワードを含んだ実装例を示してくれるのでとても捗る。プログラムを言語の一種であると捉えれば、大規模言語モデルのChatGPTはプログラミング言語の語彙を増やすために有用であるということだろうか。

アプリ開発でChatGPTにはとても助けられたが、一方で一筋縄ではいかないことも。

  • 何回か質問をすると、最初に前提としていた「VSCode」が無視されて、Visual Studioでのやり方を示される。これはネット上にある情報がこちらの方が多く、回答にバイアスがかかっているということだろうか?なんだかこっちの言っていることには聞く耳を持たず、「みんなやってるから」と都合良くそそのかされているような気になる。
  • GUIの実装はWindows FormとWPFという2通りの方法があり、最初WPFで作ろうとした。ChatGPTにWPFでという条件を指定しているのに、しばらくやり取りしているとそのことを忘れてWindows Formでの例を示す。これもWindows FormのほうがWEB上に情報が多いということだろうか?あまりにも煩わしくなったので、途中からWPF固執せずにどっちも混ぜこぜのコードになった。
  • ビット演算は苦手らしく、間違った演算結果を示す。"^="の意味が分からなくてChatGPTに聞くとXOR演算だとわかる。これはいいのだが、示された例の演算結果が間違っていた。これでだいぶ混乱させられた。
  • 英文の文章の各文字が登場した回数を表示させたときも間違っていた。

まあ以上の問題はフリー版を使っているのも原因かもしれない。

ChatGPTを利用した学習

ChatGPTを学習に利用すべきかという議論をしばしば耳にするが、間違いをあたかも本当のことのように説明してしまうのは困ったものだ。本当と嘘が混じっていると人は騙されやすい。こうしたツールはまだ黎明期で自分が疑いを持って使用していること、自分がある程度年齢を重ねていることから誤りに気づけていると思う(騙されていることに気づかないだけかも?)。でも、例えば小学生が学習に利用したときにこうした誤りに気づくことができるだろうか?

こういうネガティブな見方をすることができるが、一方で、AI研究で有名な東大の松尾豊教授がテレビで言っていた言葉がとても印象に残っている。

「僕が小学生なら、チャットGPTにいろんなことを聞きたい。空はなぜ青いのか。光の屈折のためだと答えてくれる。屈折とは何か教えてくれる。波長というものがあるとか、人間の目がどう色を認識するか、など広がっていく。その可能性を閉じないで欲しい。」 (Yahooニュースの記事からの引用)

確かになぁ。好奇心無限大の子供の疑問に親が答えられることには限りがある。AI技術があれば、親が教えるよりも遥かに豊かな知識を得ることができるだろう。

ChatGPTで学ぶとは?

とまぁ、こんなことを思っていると、あらためて学ぶとは何だろうかと考え始めてしまう。あっ、それ知っている、という雑学レベルの知を得るのにはChatGPTはうってつけのツールだ。質問して返ってきた文を読むというインプットをすればいい。

今回自分はChatGPTが生成するコードを継ぎはぎして欲しかった機能を持つアプリを手に入れたという感じ。 ChatGPTで学んだかと問われれば、Windowsアプリ製作を体験したとは言えるけど、これは「あっ、それ知っている」というレベルに毛が生えた程度。 理解は浅く、そのためにまだWindowsアプリを自在に作ることはできない。

プログラミングは算術と似ている。かけ算の概念は複数回の足し算としてすぐに理解できるが、それを使いこなせるようになるためには九九を覚えたり算数ドリルでの訓練が必要になる。同様にプログラミングも何度もコードを書くというアウトプットが無ければ使いこなせるようにはならない。最近見たツイートで、反復練習をすることで文法にかかる認知コストを下げることができ、そうすると脳のリソースを応用にまわせるようになる、というような趣旨の記述を見た(だいぶ勝手な解釈をしているかも)。ChatGPTは新しいことを学ぶ入り口としてはかなり良いと思うが、それだけでは深い理解はできないような気がしている。

今後さらに生成AI技術が発達していろんな場面で活用されるだろう。作文やコーディングを自分でしないのが当たり前の生成AIネイティブ世代と呼ばれる人たちがそのうち現れそうだが、生成AIを使うだけで深く理解したと錯覚してしまわないかと想像して心配になる。

もしかしたら自作キーボード界隈でときどき目にする「手を動かせ」というのがこれから重要なキーワードになるかもしれない。

あとがき

というわけでChatGPTさんのおかげで自分が欲しかった機能をもつタイピングデータ取得・解析アプリを手に入れました。まだ色々修正したい箇所はありますが、とりあえずデータの蓄積はできるのでしばらく自分のデータを取っていこうと思います。

Keybaord Input Hackathon (KIH) 2023で、データがあれば最適な配列を導けるという話(YouTubeのリンク)がちょこっとだけあった。まだ調べていないけれど、データをためて試してみたら面白そうです。

しかし、フォースカーブ測定機つくったり打鍵音録音したり、タイピング速度測ったり、なんだか自分は測定してばっかりだな…。

この記事は自作したオリジナルのキーボードunity69で書きました。

自分が魅力的に感じるキーボードの見た目について考えてみる

あなたにとって理想的なキーボードはどんなものですか?

自分はこの問いの答えをずっと追い求めてキーボードを自作しているように思います。ケースについて考えると、立体的な形状や打鍵音への影響、質感という点でアルミ削り出しが良い気がしています。でも個人的にアルミ削り出しケースを製作するのはハードルが高い。なので、見た目が好みなカスタムキーボードを購入してPCBだけ自分で作り変え、見た目・質感・使い勝手すべてが好みのキーボードを手に入れることを妄想しています。これ、間違いなく最高になるはずです。

ただ、私はこれまでカスタムキーボードを購入したことがありません。自分はケチなので、お高いカスタムキーボードの購入は抑制的にと考え、キー配列と見た目の好みのANDという条件でふるいにかけることによって、何とかこれまで散財を免れることができています。

ではどのような意匠がいいのでしょうか?こう問われると、実はよくわかりません。私の好き嫌いなんて論理性も合理性もないですが、これを完全に把握できれば(そして技術とお金さえあれば)自分で設計・製作することもできるかもしれません。そこで、自分がいい!と思ったキーボードを列挙し、自分の好みを分析してみます。これはそんな私の好みをただ垂れ流すだけの記事です。

目次

魅力的に感じるキーボードたち

Nomu30

このキーボードは何度見ても本当に素敵。上面からPCBが見えないようにしているこのミニマルなデザインはやっぱり格好いい。一目惚れする人も多いのではないだろうか? こちらは設計者のrecompile keysさんの記事。

recompile.net

Nomuという名前は濃霧からきていたんですかね。

キーボードの外形は四角になりがちだけれど、あえてなのか結果的になのか、非対称な外形になっている。またキー数の少ない配列でISOエンターを使っているのは他には見ない気がする。これらの特徴によって他のキーボードには無い独特の佇まいとなっている。Twitterでnomu30と検索するとたくさんの素敵な画像に出会えて幸せになれます。

twitter.com

見た目はすっごいドストライクなんだけれど、このキー数で使いこなせる気が全くしない…。キーボードには第一に機能性を求めているので、見た目は最高だけど間違いなく飾るだけになってしまうので手が出ない。

Moment

Cannon keysのMomentはカスタムキーボードでこれは!と思ったキーボード。ケース側面の曲線がとても美しい。キーボードを左右で持つときに手にフィットしそうな形状に機能美を感じられる点もプラス。

Moment Keyboardcannonkeys.com

GBに参加しようかと思ったけれど、お値段がお気軽ではなかった…。だいぶ迷ったけれど60%サイズであったこと(65%サイズが欲しい)からぐっとこらえた。

Ripple TKL

もう一つCannon keysから。このキーボードは底面のウェイトに波紋が立体的に表現されている。この曲面がとても美しい。さらにウェイトとケースを合わせるところも曲面になっていて、設計・製作もすごい。この業物感も非常に惹かれるポイント。ただテンキーレスは自分はもはや大きすぎると感じているので見送った。

Ripple TKL by Upascannonkeys.com

7V

このキーボードはなんと言っても右上のロゴがクール。ロゴ自体に高級感を感じるし、ケース上面にロゴのバッジをはめ込むという構造も凝っている。名前も短くシンプルでいい。また側面からウェイトが見え、単純な台形のシルエットではないもの良い。このロゴを見る毎に機動戦士Ζガンダムを思い出すのは私だけ?

www.gok.design twitter.com

dissatisfaction30, disorder30

自分はマクロパッドの見た目に魅力を感じることがないのだが、これには惹きつけられた。

kbd.news kbd.news

かわいい、という言葉が最もしっくりくる。普通のキーボード配列に似せてキーレイアウトを作っていて、これが子供向けキーボードに見えるからだろうか。子供向けのおもちゃとか、かわいいですしね。

自作したキーボードケース(自画自賛

これまで自分で設計・製作した自作キーボードの中にも一部が自分の好みの意匠に仕上がったケースもちょっとだけある。

鏡面ステンレスを利用したケース

初めて見た目にこだわって作ったケース。

アクリル積層の最上面に鏡面仕上げのステンレス板を使用したもの。レーザーカットされた板の角を削ってRをつけ、切断面も頑張ってヤスリがけして磨いた。すごい大変だった...。この頑張りのおかげで手触り感がいい。外形も単純な四角にするのではなく微妙に曲線にした。デザインセンスがない割には結構いい感じに外形の曲線を作れたと思う。

ケース上面は狙い通りでかなり満足度が高い。しかし側面はアクリル積層で横から見ると上面との質感のギャップが大きい。全体として統一感がないので改善の余地がある。

自作した分割キーボードのベゼルの曲面

自作した中でもう一つのお気に入りは分割キーボードケースのこのベゼル部分。

3Dプリントケースに自分で塗装したケース

ケースはJLCPCBで3Dプリントしてもらったものを自分で塗装したもの(詳細はこちらの記事)。広めのベゼルの緩やかな曲面、塗装したメタリックブルーの落ち着いた色と質感は、我ながらいい仕事している(自画自賛)。ただこのケース奥側の広いベゼルは他の箇所とバランスが悪いし、自分はどうも広いベゼルは好みではないらしい。さらにチルト角をつけすぎて打鍵しづらいのでこのキーボード全然使用していない…。

40%サイズのキーボード

40%サイズのキーボードは全然使いこなせないくせに見た目に惹かれることが多いように思う。

MiniVan

40%キーボードで検索するとよくヒットする。右下は十字キーではないキー配列のほうが個人的には好み。キーの境界が十字になるところがなくなり、配列が完全Raw staggeredという感じがするから。でも自分は矢印キーが無いと使いこなせる気がしない…。

romly.com drop.com

Vortex CORE

これは市販品の40%サイズのキーボード。カスタムキーボードを知る以前で唯一見た目に惹かれたもの。Nomu30と同じように上面からはキーキャップ以外見えないようなミニマルなデザイン。また、キーキャップの印字が小さめなのもキーボードのコンパクトさとマッチしている感じがして良い。これに憧れて自分でキーキャップに昇華印刷したほど(詳細はこちらの記事)。今は販売終了となってしまっていて寂しい。Vortex Keyboardから購入できる。

自分が魅力を感じるキーボードの意匠とは?

ここまでに挙げたキーボードの意匠について魅力を感じる要素・キーワードをリスト化してみる。

  • ミニマル感
    • 外形の大きさ、(縦横比?)
    • キー数?
  • 曲線・曲面
  • 非対称性
    • OrtholinearではなくRaw staggered
  • 質感と色
    • 金属光沢
    • 金属の鏡面仕上げ
  • ベゼルの広さ
    • Nomu30のようにケースの存在がわからないくらいのもの
    • あまりにベゼル幅(>30mm?)の広いものには惹かれない

上に挙げたキーボードを見てみると、ミニマル感のある小さいサイズのキーボードに惹かれる傾向がある。特に40%サイズのキーボードはたいていどれも魅力的に見える。これ、いまだに何故だかわからない。

40%くらいのサイズだと片手で(楽に)持てるようになり俺のキーボード感がある。 外形の縦横の比率や片手で持てるサイズ感が要因かと思ったけど、同じサイズでも狭ピッチでキー数が多いと惹かれない気がする。携帯用のコンパクトな市販品のキーボードはキーサイズが小さいくキー数も40%に比べると多く機能性が良いのだが、見た目に惹かれたものはない。外形とキーの大きさの比率も重要かもしれない。

あるいはキー数が少ないと、機能的なミニマルさを感じられるのが理由なのだろうか?キー数が少ないのは不要のものを除いて必要最小限だけ所持するミニマリストの文脈という気もするし、無駄を省いた質素・シンプルさが禅に通じているような気さえする。でも、もしかしたらこんなに少ないキーでも使いこなせるんだぜ、とドヤりたいだけかもしれない(実際には使いこなせないのでドヤれない…)。

別のポイントとして、曲線・曲面に惹かれる傾向があるように思う。なんとなくこれは自覚があるので、これまで設計・自作してきたキーボードケースにその要素を取り入れようとチャレンジしてきた。ワンポイントでは成功例があるものの、トータルでいい感じにはできていない。まだまだ修行が足りない…。特に3次元的には自分でいい感じに作れる気が全くしないので、やはり心に刺さるカスタムキーボード(ケース)を手に入れるのが近道な気がする。

もう一つのキーワードは非対称性な気がする。Numu30は外形が非対称になっていて、一般的なキーボードの四角い外形とは違うことでユニークさを感じられる。またキー配列についても非対称な見た目が好みな気がする。これまでOrtholinearのキーボードの見た目に惹かれたことがない(使ってみたいとは思っている)。普段使いのためにも慣れているRaw Staggeredのキーボードばかり自作してきたが、Raw Staggeredのキー配列で一部にOrtholinear感があると見た目がイマイチだなと感じる。実際自分で40%キーボードを設計・製作したときは、一部キーの境目が十字になる箇所ができたが、どうも見た目的にはこれが好みではない。MiniVanを美しいと感じるのはそういう箇所がないキー配列だからかもしれない。

金属というのもキーワードだろう。おそらく金属光沢やずっしりとした重量から高級感を感じられるというのが理由な気がする。また、耐久性が高い(これは塗装によるかも)、重量により打鍵音が好みになりそう、などの機能的な面もあるかもしれない。

わからないのはベゼルの広さ。例えばVortex COREはベゼルを最小にして上面から見た場合のケースの存在感を消している。逆はどうか?以前自作した分割キーボードはかなりベゼルを広く取ったが、曲面は気に入ったけれど広すぎるベゼルは好みではないことがわかった。いまだにどれくらいの幅を取るのが良いのかわからないが、いくつか自作したキーボードのケースを眺めていると、5-15mmくらいのベゼル幅は違和感がない。ただ意匠という点ではある程度幅がないと何かを表現するのは難しくなる。ある程度の広さあったほうが表現の幅が広がる気がするけど、何mmくらいが自分の好みにマッチするかはキー配列やキー数とのバランスとかがありそう。

欲しいカスタムキーボードケース

自分は今のところの使い勝手の点から65%サイズのキーボードを常用している。このサイズのカスタムキーボードはたくさんあるけれど、どれも矢印キーの隣にブロッカーがある。これがちょっと自分は受け入れられない。

自分は左矢印の隣にModifierを配置して、これと矢印キーを組み合わせてPage Up/Down、Home/Endに割り当てている。この割当ては直感的なので学習コストがなく、使い勝手がいいので気に入っている。以前このModifierを左矢印キーから1u離したところに配置したときにはかなり使いづらかったので、0.5uのブロッカーがあるのはかなり躊躇する(試していないので実は問題なかもしれないけれど…)。

またケースにブロッカーがあるとキー配列にかなり制約をかけることになり、キー配列をいじる可能性を消されている気がしてしまう(まあ多分いじらないだろうけれど)。ブロッカーいらないので、キーボード部分が四角い私好みのカスタムキーボード(ケースだけでもいい)を誰か作ってくれないだろうか?(他力本願)

あとがき

今回の記事では自分の好みを垂れ流してみました。好みの要素はある程度整理できた気がしますが、これらを含んだケースがどんな形なのかいまいち想像できません。ただ、美しい曲面を持つ40%サイズのカスタムキーボードとかあったら一目惚れしてしまう気がします。custom keyboard 40%のキーワードでGoogle画像検索して探してみましたが、幸か不幸か見つけられませんでした(まあ40%サイズは市場が大きくなさそうだし誰もやらなそうではある)。ただ私が知らない&見つけられないだけかもしれなくて、出会ったら使いもしないのに大枚はたいてしまいそうで恐ろしい…。知らないほうが良いのかもしれない。

この記事は自作したオリジナルキーボードunity69で書きました。

キーボード打鍵音についての考察

これまで複数のキーボードを自作してきたことから、自分の好きな打鍵音、好きになれない打鍵音がけっこう明確になってきました。この記事では私の打鍵音の好みを言語化し、それを得るためのいくつかの知見をまとめてみようと思います。

私の好きな音、好きになれない音について記述していますが、優劣をつけたり好みでない音を否定するものではありません。私と真逆の嗜好をもつ人には、私の好みはアンチパターンになるのではないかと思います。

いろいろな音色

まずは私が好きな打鍵音、好きになれない打鍵音を整理しておきます。 私の好みの打鍵音は擬音で表現するなら次のような音になります。

  • コトコト
  • ポコポコ

一方、私の好みでない打鍵音は次のような音です。

  • カチャカチャ
  • カツカツ
  • ドンドン
  • カサカサ
  • ピチピチ
  • パチパチ
  • キンキン

おわかわりいただけただろうか…。

好きになれない打鍵音はかなり明確なので、以下に例を示しながら説明します。

カチャカチャはスタビライザーの調整を失敗したときのような音。カツカツはステムのセンターポールが長いスイッチの良く響く底打ち音です。これを好む人も多いと思うのですが、私は底打ち音が控えめなほうが好きです。ドンドンというのは低音が響いている感じ。サイレントスイッチを使うと気になることが多いです。

カサカサはスイッチが滑らかでなく、ステムがハウジングに擦れているような音。ただ、もしかしたらこれは触覚から来ているかもしれません。擦れるような音はASMRなどで好まれる傾向のものだと思います。私はASMR好きですが、滑らかでないスイッチは好みではありません。カサカサ音が好きになれないのは音というよりは滑らかでない感触が好きになれないということかもしれません。(滑らかな感触だけどカサカサという打鍵音のスイッチはあり得るのだろうか…。)

ピチピチ、パチパチは、平面同士が当たったときのような音です。cherryプロファイルのキーキャップを使うと、背の低いF行のキーなどでは私にはそのような音に聴こえます。これが好きになれないので、最もキーキャップの種類が豊富なcherryプロファイルのキーキャップを使い続けることができません。(おかげで散財を避けられていますが、ときどき気の迷いで購入してしまう…)

キンキンは金属音。スイッチプレートを金属にすると聴こえたりする音です。ものによっては高級感があるので好きな人も多いと思います。ただし私は柔らかい印象の音を求めているので、硬い印象の金属音は目指しているものとは異なります。

書き出してみると、好きになれない音のなんと多いことか…。改めて自分がとっても面倒くさい人間だなと再認識しました。一方、好みの音はうまく言語化できないのですが、私が理想とする打鍵音はきっとこの動画のような音です。この音はローパスフィルターで高音を低減しています。

www.youtube.com

ではこの自分の好みの打鍵音を得るためには一体どのようなアプローチをとるのがいいでしょうか。

打鍵音の原則

キーボード打鍵音には次の原則があると思います。

  • 最も大きな音を鳴らすものが打鍵音の印象を決める
  • 振動するものが音を鳴らす

なんだかとっても当たり前のことを書いていますが例を挙げます。

サイレントスイッチを使用した場合はスイッチ打鍵時の高音が低減されます。そうすると低音がよく聞こえるようになります。一方、同じキーボードでセンターポールの長いステムのスイッチに交換すると、底打ち音がカツカツと響くようになります。そうすると他の小さな音は目立たなくなり、サイレントスイッチのときに聴こえていたような低音はほとんど気にならなくなると思います。もちろんスイッチによって低音の鳴り方が違うはずですが、スイッチプレートやPCBの振動からくる低音成分は共通のはず。つまり底打ち音の大きなスイッチを用いると、その音が打鍵音の性格を決めます。

もっとわかりやすいのはスタビライザーです。この調整がうまくないとカチャカチャという耳立つ音が鳴ります。この音を嫌っている人は多いと思いますが、そういう人はカチャカチャ音がなっているだけでキーボード全体の打鍵音を残念に感じてしまうでしょう。

上の原則をふまえると、好みの打鍵音に近づけるための処方箋は大きな音が鳴る要素から音色を整えていく、ということになります。キーボード沼にどっぷり浸かっている人はスタビライザーの調整に時間をかけたりしますが、このことをよくわかっているのだと思います。耳の良い人は小さな音も聴こえて気になるかもしれませんが、一番大きな音が好みの音色にならない限りは打鍵音エンドゲームにはなり得ません。

ではキーボードの部品で音を鳴らしているものは何でしょうか?音の源は動くもの(振動するもの)です。そういう点ではキースイッチとそれと一緒に動くキーキャップはキーボードの中でもっとも動くパーツであり、これが打鍵音を決める重要な要素です。

次に重要な要素となるのは、キースイッチと密着して振動が伝わりやすい部品です。これはスイッチプレート、PCBになります。

ケースの与える影響について、私はまだ良くわかっていません。ケースの剛性が高くなければケースが振動して音が鳴ります。マウント方法によって打鍵音は大きく変化しますが、それは

  • PCB・スイッチプレートの振動をどのようにケースに伝えるか
  • PCB・スイッチプレートの振動の支点が変わり音が変化する

ということだと思います。

ガスケットマウントなどでキーボード部分(スイッチ、PCB、スイッチプレート)の振動をケースに伝わりにくくし、かつケースの剛性が高い場合には、どうやってキーボード部分の音を整えるか、という問題に帰着します。なのでキーボード部分の音をどう整えるか、というのを私は最優先に考えます。

以降ではこれまで自作してきたキーボードの体験から得た知見と所感を、キーボード部分のいくつかの要素について述べてみます。

キースイッチの戻り時の音

まずはキースイッチについて。スイッチによっては、押下後、戻ってきたときにパチッというような音が鳴ったります。自分はこの音をできるだけ抑えたものが好みです。

最近はセミサイレントスイッチという戻ってきたときの音をほぼ消している面白いスイッチもありますが、これやサイレントスイッチでなくても戻り時の音が静かなスイッチが存在します。

その共通点はステムが上に戻った状態の時にスプリングが自然長に近いもの。実際に音の大きさを測定したわけではないけれど、物理法則的には納得できます。ステムが上がっている状態のときにスプリングが自然長に近ければ、ばねによるステムを上に押す力は小さいはずです(フックの法則)。押下後にステムはスプリングに押されて上に戻りますが、その力が小さいほどハウジングにあたった時の衝撃は小さくなり、音は小さくなるわけです。

自分がこれまでに出会ったスイッチでこれに該当したのは以下のスイッチ。

  • Banana Split
  • Gateron Box Ink Pink

バネの長さは測ったことはないけれど、スイッチを分解したときのスプリングの飛び出し具合で感覚的にはわかります。下の写真はBanana splitを分解したときのもので、上ハウジングがそれほど持ち上げられません。

Banana Splitを分解したときの写真

逆のことを考えると、長いばねが縮められた状態でおさまっているスイッチは、ステムの戻り音が大きい傾向にあるのではないかと思います。 ただし、ステムやハウジングの素材・形状にも左右されるのでバネだけでは決まりません。

ルブによるキースイッチ戻り音の低減

キースイッチのステムが上に戻った時の音はルブで低減させることができます。ステムが上に戻るときには、ハウジングとステム左右の上側があたります(下図の赤丸の部分)。

ステムの赤の部分にルブを盛ると戻った時の音を低減できる

この部分にルブを厚めに塗ると、当たった時の音をかなり低減させることができます。私は使用するスイッチは必ずルブしますが、この位置に多く盛ります。

ただしルブはできるだけ薄くというのをしばしば拝見するので、私のやり方は邪道なのかもしれません。一方で底打ち時に当たる箇所は厚くならないようにします。やりすぎるとヌチャ、ネチャッとなってしまうからです。

スタビライザー

おそらく多くの人の悩みがスタビライザーの音。私は以下でだいたい自分の好みの音にすることができます。

  • Holee Mod
  • PCBにフォーム(KBDfans Stabilizers foam sticker)を貼る
  • PCBにネジ止めするスタビライザー
  • スペースキーはよくある6.25uではなく、分割して3u未満にする

最初のModはステム内のワイヤーが当たるところにバンドエイドを貼るというもの。これに加えてルブを行います。2番めに挙げたPCBに薄いフォームを貼るというのは、底打ち時にステムがPCBに当たる音をマイルドにする効果があります。フォームを貼るとPCBにスタビライザーをはめるのがタイトになるので、スタビライザーはPCBにネジ止めするタイプのものを使用します(スナップインのスタビライザーとフォームを組み合わせたことがないだけなので、別にスナップインタイプでも問題ないかもしれません)。

最後のスペースキーを分割するというのは、アルファベットなどの1uのキーの打鍵音とバランスさせるためです。6.25uだとどんなに調整してもキーが大きいために打鍵音が大きくなってしまいます。底打ち音のカツッという音はシリコーンシートを使うなどして消す方法があるのですが、そうすると低音が目立つようになり、これもやはり私にはバランスが悪いように感じられてしまうのです。

3u以上だとキーキャップやスタビライザーのワイヤーの入手性が悪いので、2.75u以下の幅のキーに分割する、というのが現在の私のスタンダードになっています。2.75u以下の幅だと、打鍵音がそれほど目立たずに1uのキーとのバランスが良いと私は感じます。でもたまに6.25uのスペースキーのキーボードを使うと、打鍵音が響いてでなんかやってる感がするので、これはこれでいいかなと思ったりもします(気まぐれ…)。

フォームの効果

最近は打鍵音のためにケース内にフォームを入れる、というのがよく行われます。この効果の説明として以下のことが言われていると思います。

  • 吸音
  • 空洞を埋めて音の反響をなくす
  • 振動のダンパー

ケース内に入れられるフォームの厚さはせいぜい3mm前後です。そんなに厚くはないので、吸音効果は限定的な気がします(もちろんゼロではないですが)。空洞を埋めて、というのも確かにありそうですが、フォームだとどうだろうという気がします。もっと密度の高いものだと実感できそうな気がします。 この中で一番効果が大きいのは振動のダンパー、あるいは制振ではないかと思っています。これについては後でも触れます。

未だに全然わからないのはテープModです。PCBの裏柄にテープを貼って打鍵音を変化させるというものです。テープの糊がPCBに移りそうなので常用するキーボードではやりませんが、これははっきりと効果を感じることができます。薄膜による吸音が効いているのか、PCBに密着することがポイントなのか、その両方なのか…。

Poronフォームとシリコーンゴム

ケース内にPoronなどのウレタンシートやシリコーンゴムのシートなどを入れることがありますが、Poronとシリコーンでは音色が異なります。

同じ厚さで比較した場合、Poronに比べると、シリコーンのほうが高周波数に対して振動ダンパーとしての能力が高いと思います。これは2つのプレートレスPCBガスケットマウントのキーボード、5mm厚のPoronをつけたものと、同じ厚さのシリコーンシートを貼り付けたものを作成した経験からです。 スイッチもケースも違うので公平な比較ではないのですが、後者の方が高い音を低減していると感じました。結果として静音な印象の打鍵音に近づきます。

シリコーンシートのほうが効果が高いというのも、一体どういう説明が正しいのかはわかりませんが、以下のようなことが考えられます。

  • シリコーンの方が密度が高い(=重い)ので制振の能力が高い
  • 密度が高いので遮音能力が高い
  • 振動の吸収に対して周波数特性が異なる

ただし1番目の効果を得るには、PCBやスイッチプレートにシートを密着させることが肝要な気がします。

フォームのつぶし具合

PCB底面とケースの間にフォームが入れられることも多いですが、このフォームのつぶし具合で打鍵音が変化します。PCB・スイッチプレートのケースへの固定方法にも依存しますが、フォームを潰さないときには音が軽く軽快な印象になります。一方PCBをケース底面に押しつけてフォームを潰した場合には低音側に寄る(あるいは低音がよく鳴る)ようになります。これはこの記事で書いている自作キーボードの体験からです。

これは未だにどういう説明が適切なのかわかりませんが、以下のようなことが考えらます。

  • フォームを振動するPCBに密着させて制振・振動ダンパーとしての効果を向上させる
  • PCBの振動をケース底面に伝え、ケース底面の音を鳴らす

なんとなく両方の効果が合わさっているような気がします。これは私がアクリルでケースを製作していることが原因かもしれません。 金属製などの剛性の高いのケースだと2番めの効果は薄く、1番目の制振の効果を高める気がします。

スイッチプレートとPCB

上で述べた打鍵音の原則から以下のような法則があると思っています。

  • スイッチプレートの硬さ>>PCBの硬さ → スイッチプレートが打鍵音の印象を決める
  • スイッチプレートの硬さ<<PCBの硬さ → PCBが打鍵音の印象を決める

つまりスイッチプレートとPCBのうち、硬い素材のほうが打鍵音の印象を決めるということ。硬い音は高い周波数成分を含んでいるはずです。人の耳は数kHzくらいの音が最もよく聴こえますが、このことが関係しているかもしれません。ただし金属のスイッチプレートでもスリットやリーフスプリングなどで柔らかくなっている場合はまだよくわかっていません。

また、最近自作したPCB・スイッチプレート一体型ホットスワップのキーボードは、スイッチプレートがFR4で柔らかく、通常のPCBに対応する板が無いので、この場合にはケースとキーボード部の関係によって音が変わります。

  • キーボード部分の振動がケース底面に伝わりやすい場合 →  スイッチとケース底面が打鍵音の印象を決める
  • フォームなどでケースに振動が伝わりにくい場合
    • 通常のスイッチ → スイッチの打鍵音が印象を決める
    • スイッチの音が静かな時 → 静音

これについては、こちらの記事が参考になるかもしれません。

以上から最も硬い板が打鍵音の印象を決める重要な要素だと考えています。ただし、板の硬さが同程度のものが複数あると単純ではなくなります。どの板が鳴っているか区別できなくなるので、切り分けが困難になります。

打鍵音エンドゲームを得るためには

2022年に作成したPCBガスケットマウントのPCBにシリコーンシート5mm厚を貼り付けたキーボードや、PCB・スイッチプレート一体型キーボードでは、自分が求める以上に打鍵音が抑えられたものとなりました。これはシリコーンシートの制振and/or振動ダンパーとしての能力が高いこと、FR4でスイッチプレート+Poronフォームはやわらかすぎることを反映しているのだと思います。

一方、PCBガスケットマウントのPCBに5mm厚のフォームを組み合わせた場合は、少し底打ち音がシャープ過ぎる気がして、もうすこしマイルドな音にしたいと思いました。

なのでこれらの間に求める打鍵音がありそうです。FR4でスイッチプレートを作り、PCBと組み合わせ、5mmよりも薄いシリコーンシートをPCBに貼り付けると自分の求める打鍵音を手に入れられるような気がしています。

あとがき

とまぁ、ここまでキーボード打鍵音について語ってきたのですが、未だに打鍵音エンドゲームに至っていません。結構いい線いっているものはいくつか作れているし、ここで書いた考察はそんなにおかしくはないと思っているで、あともう一息な気がしているのですが…。

キーボード打鍵音は様々な要素からの音の重ね合わせで決まりますが、組み合わせ方によって各要素の振動=音も変化するのでとても複雑です。打鍵音完全に理解した、という境地に達することはまだまだ遠そうです。楽器を作っている人って本当にすごいですよね。

この記事は自作したオリジナルキーボードunity69で書きました。

自作キーボードの打鍵音をいろんなセットアップで調べてみた

打鍵音エンドゲームを目指して製作した自作キーボードunity69は、狙い通りにはならずにほぼ静音キーボードとなってしまいました。悪くはないのですが、自分の求めていた打鍵音ではなかったので、あれこれいじって打鍵音がどのようになるかを調べてみました。今回の記事はそのことについてのまとめです。

PCB・スイッチプレート一体型ホットスワップ自作キーボードunity69

unity69と名付けたこの自作キーボードはPCBとスイッチプレートを一体にしたもの。 スイッチに接している硬い物質を最小化し、柔らかい印象の打鍵音になることを狙った。 またスイッチのメンテナンスや交換がやりやすいようにソケットを使用してホットスワップが可能となっている。

PCB・スイッチプレート一体型ホットスワップ自作キーボードunity69

ケースはアクリルで箱組し、ケースの中ではスイッチプレートが3mm x 3枚のフォームの上に乗っかっている構造となっている (製作についてはこちらのブログ)。 キースイッチに接している硬い物質を最小化したことによってかなり打鍵音が抑えられたのだが、自分が追い求めているものとは異なる。 求めているものはこんな感じの打鍵音。 www.youtube.com

これは録音した打鍵音にローパスフィルターを通すことによって高音を低減させたもの。 この「コトコト」と籠った感じが目指している打鍵音。 unity69を改造することによってどうにかこれに近い打鍵音にできないだろうかとあれこれ試行錯誤してみた。

打鍵音の比較

8つのセットアップを比較した。キースイッチはBanana splitをKrytox GPL205G0でルブしたもの。キーキャップやケース内のフォームの量を変更したり、あえて音を鳴らすためにPCBの板を入れたりしてみた。打鍵音を録音して比較した動画はこちら。

www.youtube.com

下記にそれぞれのセットアップの詳細を記す。

セットアップ1

もともとのデザイン。キーキャップは品質が良いと評判(をどこかで見かけた)IFK 4800K。 キーボード回路部分を含むスイッチプレートが3mm厚のポロンフォームシート3枚の上に乗っかっており、これがアクリル箱組のケースの中に納まっている。 スイッチプレートの上面側を抑えるものはなく、ただ乗っかっているだけ。

セットアップ1

セットアップ2

セットアップ1ではキーボード部分がフォームを挟んでケース底板に乗っかっているだけ。これに対し、スイッチプレート上面とケースの間にシリコーンゴムシートとポロンフォームを挟んだものがセットアップ2。スイッチプレートが上から少し圧力を受けている状態となっている。

セットアップ2

セットアップ3

もともとのデザインではポロンフォーム3mmが3枚スイッチプレートの下側にある。このうちの一番下のフォームを薄い1mm厚のものにした。 これよりセットアップ5まではキーキャップがMT3 Extended 2048。

セットアップ3

セットアップ4

一番下のフォームをなくしたもの。つまりホットスワップ用のソケットがケース底のアクリル板の上に直接乗っかっている状態。

セットアップ4

セットアップ5

一番下のフォームを1mmとし、ケース底面のアクリル板に真鍮5mm厚のウェイトをねじ止めしたもの。

セットアップ5

セットアップ6

セットアップ5からキーキャップをMT3からSignature plastic製のSA-Pプロファイル(industrial)に変更したもの。ただしスペースキーはMT3のまま。 以降ではすべて同様のキーキャップのセットアップ。

セットアップ6

セットアップ7

音を鳴らすために使っていないPCBをわざわざケース内に入れたセットアップ。ホットスワップ用ソケットとの間には1mm厚のフォーム、ケース底面との間には3mm厚のポロンフォームを入れた。

セットアップ7

セットアップ8

音を鳴らすために入れたPCBとホットスワップ用ソケットの間の1mm厚フォームを除いた。ホットスワップ用ソケットとPCBが直に接している状態。

セットアップ8

まとめ

変更しては打鍵音を録音するという若干面倒な作業だったが、なかなか面白かった。この中ではセットアップ3のカラコロと鳴るのが新鮮だった。これまで自作したものにはなかった打鍵音となっていて、これはこれでありかもしれない。皆さんはどの打鍵音が好みでしょうか?


どのセットアップも自分が求める打鍵音には遠いが、このスタディで得られたことは結構多かったと思う。

  • cherryプロファイルのキーキャップの打鍵音は、品質が高い(という評判のある)キーキャップであっても自分は好きにはなれない
  • SA-Pプロファイルにすると音の圧力が大きい(気がする)
  • キーボード部を上から押さえつけると(フォームを潰すと?)音が変わる
  • キーボード部とケース底板の間のフォームの厚さによって打鍵音が大きく変わる
    • フォームの厚さが薄い場合は、ケース底板の剛性によって音が大きく左右される


フォームでキーボード部(スイッチプレート、PCB)とケースを音響的に分離するとキーボード部の音が支配的になる。セットアップ1がまさにこの状態で、使用したBanana splitもかなり底打ち音が抑えられているスイッチなのでほぼ静音キーボードになる。


ソケットと音が鳴る板(ケース底板やあえて入れたPCB)の間には1mm程度の薄いフォームを入れるのが自分の好みな気がする。入れないと音が鳴りすぎと感じる。


自作キーボードunity69ではスイッチプレートが柔らかいFR4であり、さらに通常の自作キーボードでは存在するPCBがない。加えて、使用したスイッチのBanana splitは静音スイッチではないもののかなり音が抑えられている。このような状況ではケース底板が打鍵音を決める重要な要素となる。


キーボード部を上から抑えてフォームを潰すと自分の好みの音に近いような気がする。これは制振の効果が高まるからなのだろうか?はたまた空間を埋める物質の密度が高くなるからだろうか?後者については少し試してみたいことができたので、そのうち(少しおかしな構造の)キーボードを作るかもしれません。


この記事は自作したPCB・スイッチプレート一体型のホットスワップキーボードunity69で書きました。