分割型キーボードの自作に再びチャレンジ(1)

もともと悪い姿勢が最近さらに悪くなっている気がしています。 なんとかしたいけれど、筋トレ的なことは苦手で続かない。 タイピングがしたくなる分割キーボードを作れば姿勢が自然と矯正されるのではないかと期待して分割キーボードを自作することにしました。

われながら姿勢が悪い!

最近さらに姿勢が悪くなっていると感じている。 姿勢を矯正したいけれど、筋トレなどの修行的な方法は楽しくない。 分割キーボードを使えば胸を開いた状態にできて自然な姿勢を保てる、と巷で言われている。 これがもし本当なら、タイプし続けたくなる打ち心地のよい分割キーボードがあれば、良い姿勢を保つように自分を律しなくても自然と姿勢を矯正できるのでは? そのためにいい感じの分割キーボードが必要だ。

前回自作した分割型キーボード

以前に一度分割キーボードを自作したが全然使っていない。 もともと自作した動機は、それまで分割型に触れたことが無くて興味があったから。

kgnwsknt-chef.hatenablog.com kgnwsknt-chef.hatenablog.com kgnwsknt-chef.hatenablog.com kgnwsknt-chef.hatenablog.com

ほぼ試作のような位置づけで作った。 なので試験的な要素が多い。良かった点が複数ある。

  • 右手でマウスを使いながら左手でDelを打鍵できるようにしたのは使用感が良い
  • 初めて3Dプリントを利用して立体的なケースを作成
  • ケース上面の緩やかな曲面がお気に入り
  • 初めてケース塗装にもチャレンジ、初挑戦のわりにはなかなか良い仕上がり

kgnwsknt-chef.hatenablog.com

一方で反省点も多い。

  • チルト角度を気まぐれで勾配キツめの8度にしてみたが、角度が急すぎて使いづらい
  • 自分は左手の親指をスペースキー手前に置く癖があって、使っているとケースに手の油が…
  • ?キーの右隣りに矢印キーの上を配置し、その右に右Shiftを配置していたが、自分は?キーの右隣りにShiftがあったほうが具合が良い
  • Poronフォームでガスケットマウントにしたが、フォームを潰しすぎて打鍵感はイマイチ
  • PCB~ケース底の間の空洞が大き目で音が響く、打鍵音もイマイチ
  • 3Dプリントケースに小さいへこみがあったりして仕上がりが少しだけ残念
  • 塗装はかなりきれいにできたが、左右でやすりがけ具合や塗装具合が異なるために左右で質感の違いがある

仕上がりは悪くないのだが使用感について不満が多いので結局全然使っていない。 まあこれから学んだことは多いので、いい点は残しつつ反省点を修正して常用できる分割キーボードを作ることにする。

新たに製作する分割キーボードの仕様

前作の分割キーボードの反省から以下の要件を取り入れることにする。

  • チルト角度はつけない
  • 右Shiftは?キーの右隣
  • ケースのスペースキー手前の部分は耐久性の高い素材を使う
  • Delキーを左側に(も)配置する
  • ケースはアクリル以外で作る
  • ウェイトをつけて安定させる

最近はケースをアクリル箱組みで作っていたので、今回は再び3Dプリントでケースを作って塗装することにした。

キー配列

キー配列はあーでもないこーでもないといじって結局以下のようになった。

キー配列

  • Bは右でも左でも打鍵するので両方に配置。
  • 6キーは前作では左右両方に配置したが、結局必要性を感じない。6キーが2つ入っているキーキャップセットは多くない(というかない?)ので片方のみとする。
  • 数字キーはテンキー的な配置をレイヤーに配置して試してみることにする。これに慣れることができると40%キーボードの使い手に一歩近づけるはず(40%サイズの見た目が好みなので使えるようになりたい)。
  • これまでは矢印キーの上矢印はShiftの右隣り、他の矢印キーは一番手前の行に来るよう配置していた。でもそうすると、Delキーと矢印キーの間が空いてケース上面の余白が広くなり、ケースを設計したときにコレジャナイと感じる。Fnの位置のこと(後述)もあって矢印キー4つを右上に移動させた。
  • 常用している自作キーボードでは、矢印キーとFnを組み合わせてHome、End、Page Up/Downにしている。Fnの位置を左矢印の下側に持ってくると、Fnを親指で自然な感じで押せることが分かったのでこのような配置にしてみる。
  • これまで自作してきたキーボードではPage Up/Downを単独のキーとして配置していたが、Fn+矢印キーばかり使っていて単独のPage Up/Downをほとんど使っていないことに気づいた。よって単独Page Up/Downキーを右手側には配置しない。ケースベゼルの余白のバランスをとるために左手側に配置する。

これで左側の幅は8.5u、右側は10.75u幅。左右でだいぶ異なる。 左右対称にできると美しいのだけれど、実用性を考えると矢印キーは譲れない。左手側に余分なキーを増やすのも嫌なので、非対称だけれどこれで良しとする。

キーボードの名前を考える

今回は姿勢を良くしたいというのが自作の動機になっている。 姿勢・体の構えは英訳するとpostureというらしい。 音感も悪くないので、これに左右のキー数をつけてposture3338という名前とした。 名前を思い出すたびに姿勢を正すようにとの願いを込めて。

今回はここまで。次の記事では設計について書く予定です。

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

キーボードの良い打鍵感とは何か?

キーボードにこだわり始めると良い打鍵感を求めるようになります。 しかし「良い打鍵感」とは何なのでしょうか? この言葉について掘り下げてみます。

まえがき

そもそもこの記事を書こうと思ったきっかけはびあっこさんのこちらの記事です。 biacco42.hatenablog.com

「情報を食べていないか?」という言葉が個人的には最も印象的でした。 自分が普段感じている懸念を短い言葉でうまく表してくれたからです。 その懸念とは、「われわれ買い手は、売り手側のブランディングという外的要因に自分の好みを歪められてはいないだろうか」ということ。

例えば静電容量無接点スイッチの打鍵感を至高と考える人がメンブレンのキーボードをこきおろすのをしばしば目にします。 でもあの打鍵感を生み出しているのは静電容量ではなくメンブレンと同じラバードームなのになぁと思うのです。 ラバードームによる独特のクリック感、スライダーやキーキャップの品質の違い、鉄板による安定感などの要因で「良い打鍵感」だ、などと主張してもらえれば、なるほどとなるのですが(これらの要素で打鍵感が決まっているのであれば、メンブレンでも同じ打鍵感を得られそうです)。

「良い打鍵感」という言葉も注意が必要です。 良いというのは結局は個人の好みです。 自作キーボードを嗜み、何台も所持している人は、良い打鍵音=個人の好みであることを認識していると思いますが、(自作)キーボード初心者の方はこれを意識しておく必要があります。 キーボードを使うのはみな人間という種なので好きが共通していることも少なくないでしょう。 しかし誰かが良いと評価したものが必ずしも自分にとっても良いとは限りません。 逆もまた然り。

つまり良い打鍵感を探し求めるということは、自分の好みを探すことと言いかえることができます。 では、あなたは良い打鍵感=自分の好みの打鍵感がどんなものか説明できるでしょうか?

私はうまくできません。同じように言語化できない人は結構いるのではないでしょうか。 原因として、(1)「打鍵感」という言葉がふわっとしていて何のことを指しているかわかるようでよくわからない、(2)自分の好みを実はよくわかっていない、という2つの不明確があると思います。 自分の好みを知るのはいろいろ体験してみるしかないような気がします。 ただ打鍵感というふわっとした言葉はもう少し明確にできるのではないかと思うのです。

そこでこの記事では打鍵感という言葉はどのような感覚を内包するのかを考え、それに関係する要素を挙げてみます。

打鍵感という言葉

わたしは触覚にまつわるものを指すときに打鍵感という言葉を使用するようにしています。 打鍵音と区別して考えたいからです。 一方、五感の感を取って打鍵感とするのであれば、聴覚からくる打鍵音も含めて打鍵感である、と言うこともできるでしょう。

嗅覚、味覚が打鍵に伴うことは無いと思います(あったら面白いけれど)。またキーボード本来の機能である文字入力の場面を考えると、打鍵中はディスプレイを見てキーボードを見ないので、ここでは打鍵感に視覚を含めないことにします。

このように第一に触覚、加えて聴覚にまつわるものを打鍵感の要素とするのがシンプルな定義でしょう。

またタイピングのしやすさも良い打鍵感に含めることもできそうです。 そうすると、キー配列やキーキャップの形状も打鍵感という言葉の範疇と言えます。

もう一点、打鍵感には満足感も裏に潜んでいるのではないかと考えています。 上で例に挙げた静電容量無接点スイッチのように、そのブランドイメージが好きであれば、打鍵時に満足感を感じます。 われわれはその満足感も無意識のうちに良い打鍵感という言葉に含めていないでしょうか? 私が打鍵感という言葉が何かふわっとしたように感じれらるのは、この満足感のためではないかという気がしています。

以上のように打鍵感はいくらでも範囲を拡張できる言葉に思えてしまいます。 それをすべてカバーするのは難しいので、 以降では触覚・聴覚にまつわる打鍵感の要素を挙げて考えてみます。 ただし私は触覚・聴覚にまつわるものと最後に挙げた満足感にまつわるものを完全には区別できてないかもしれません。

打鍵感をきめる要素

キースイッチ

打鍵感にこだわると、まず考えるのはキースイッチのことでしょう。 リニア、タクタイル、クリッキーという分類で、どれが好みなのかを答えられる人は多いと思います。 さらに掘り下げた打鍵感について、再度びあっこさんの別の記事を引用します(そして自分が書くのをサボります)。

www.itmedia.co.jp

「ぐらつきの少なさ」「なめらかさ」「フォースカーブ・バネ」「音」という4つの指標で整理しています。 記事には書かれていない以下のことを補足できると思います(書いてあって私が読み落としているかも)。

  • ステムの押下長(底打ちまでの押し下げ長)
  • アクチュエーションポイントの浅い・深い

これらもフォースカーブで表すことができます。

数多あるキースイッチについて、上の指標を比較しながら自分の理想のスイッチを探すわけです。 しかしこれは簡単ではありません。 「ぐらつきの少なさ」「なめらかさ」「フォースカーブ・バネ」「音」の4つの指標を、数値化して比較することが困難だからです。

フォースカーブは唯一はっきりと数値化しているものです。しかし道具がないと測定できません。 またフォースカーブを手に入れても、感覚と結びつけるのは難しいものです(あなたは自分が理想とするスイッチのフォースカーブを描けますか?)。

音も録音して記録でき、YouTubeなどの打鍵動画を参考にすることができます。しかしマイクの性能などの録音環境によって聴こえ方が大きく異なるので注意が必要です。 おすすめは、様々なスイッチを同一人物が同じ録音環境で同じキーボードにつけて録った打鍵動画を比較することです。 スイッチの打鍵音の相対的な比較ができます。

「なめらかさ」も数値化するのが難しい指標です。 わたしはリニアスイッチの場合はフォースカーブにある程度反映されると考えています(詳細はこの記事)。 ただし系統的に調べてないので仮説にすぎません(誰か系統的に調べてくれないかな~)。

ぐらつきの少なさもあまり定量的なデータがなく、販売サイトではその情報を正確に知ることはできません。 ただ世の中にはすごい人がいるもので、こんなデータがあります。

www.theremingoat.com

Switch Measurement Sheet、Composite Measurement Sheet.xlsx、のTolerancesのシートにステムのグラつきについてのデータがあります。

打鍵音

打鍵音はキースイッチだけでなく、マウント構造やケースの素材など、キーボードを構成する様々なものに影響を受けます。 それについては以前書いたこちらの記事を引用しておきます(そして書くのをサボります)。

kgnwsknt-chef.hatenablog.com

さらに補足すると以下のようなものもあります。

  • ソレノイドで打鍵時に音を鳴らす
  • ピコピコ電子音が鳴る

ソレノイドの音はタイプライターの打鍵音を思わせるので、クラシックさを味わうようなものなのでしょうか? 一方ピコピコ電子音が鳴るのは、電子楽器に近いかもしれません。 自分の好きな音を鳴らすハードがあれば、音を鳴らすことで好みの打鍵音を得られそうです。 ただ公共の場で使用するのは憚られますね。

キーキャップ

キーキャップは本当にいろんな形状のプロファイルがあります。 そしてその形状によっても打鍵感が変わります。

私の好みを例に説明すると、私の好みは天面がスフェリカルな形状(SAやKAT)です。 一方、天面がフラットなプロファイルはなんというか、打鍵したときに指の感触がそっけない感じがして、どうもしっくりきません。 また最近気づいたのですが、私は天面がシリンドリカルになっているcherryプロファイルのキーキャップだとタイピングのしづらさを少し感じます。 またスフェリカルでもMT3のようにホリが深い形状はしっくりこない感じがあります。

このキーキャップの形状のしっくりくる/こない感は、タイピングのフィードバックということかなと考えています。 キーボードを見ずにタッチタイピングしていると、指がキーキャップの真ん中ではなく端を押してしまうこともあります。 その場合にキーキャップの端を指が感じるので、指の位置がずれている、あるいはミスタイプしたことがわかります。 それをもとに打鍵位置を修正することを無意識のうちにしているのだと思います。 そういう点では、天面の面積の大小(隣り合うキーキャップの天面の端同士の距離?)や四角や丸っぽい形状によっても同じようにしっくりくる/こない感が異なりそうです。 実際天面の面積が大き目のMDAプロファイルは少しだけしっくりこない感があります。

ただ、上の私の好みは普遍的では無いようです。 ノートパソコンのキーボードはほとんどが天面フラットになっていますが、特に違和感がありません。 好みのキーキャップの形状は、キーの高さや押下長との組み合わせによっても変わるのでしょうか。 このように私は自分の好みを十分にわかっていません。

材質の違いなどによる表面のサラサラ・ツルツル感(表面の粗さ)などももしかしたら打鍵感に影響するのかもしれません。ただ私は気にしたことがありません。

またキーキャップの形状や素材、厚みなどによって打鍵音が変化します。タイピング時のしっくりくる形状、打鍵音、そして見た目のすべてが自分の好みのキーキャップにめぐり逢いたいものです。

打鍵時の柔らかさ/硬さ

ガスケットマウントなどのスイッチプレート・PCBが沈むような構造のキーボードで意識されいている打鍵の柔らかさなども打鍵感を語るうえで欠かせません。 スイッチプレートをステンレスなどの硬い金属で作ってケースにがっちり固定すると、底打ちしたときの打鍵感が硬くなり、人によっては指が痛くなります。 こういう文脈で柔らかい打鍵感が好まれることが多いと思います。

ただし柔らかければ柔らかいほど良い、というわけではないはずです。 ガスケットマウントなどでプレートが沈みやすい場合には、底打ちしたときにキースイッチの押下長以上に大きな変位が生じます。 変位量があまりにも大きすぎるとタイピングしづらくなるでしょう。

ただし底打ちしない人にとっては、プレートの硬さは関係なさそうです。

柔らかさの均一性

カスタムキーボードでは打鍵感の柔らかさの均一性がしばしば語られます。 多くの場合、均一なものは良く、不均一なものは悪いという評価がされていると思います。

一方でへそまがりな私は、均一な打鍵感が良いというのはどうしてだろうか、と考えてしまいます。 人間の指はそれぞれ長さも太さも異なり、結果として打鍵する力も異なります。 Realforceの変荷重モデルはそのことを意識しているでしょう。 またColumn Staggeredの自作キーボードも指の違いを意識してキーの配置を考えることが多いと思います。 指の違いを意識するのであれば、その違いに合わせた不均一さが理にかなっているような気がします。

まあ好みの問題なので理にかなっている必要も無いのですが、均一性が良いとされる理由は何なのか、自分なりに考えてみました。 一つは打鍵音の均一性ではないでしょうか? 触覚的打鍵感が均一であれば打鍵音も均一になりそうです。 打鍵音にこだわってキーボードを自作してきた自分としてはキーによって打鍵音が違うのは気になっているところです。

別の理由として、不均一なものに比べて均一なものはある種の美しさを感じられるという美的感覚かもしれない、と考えたりもします。 例えば60%サイズのRow Staggered配列は行ごとにずれがあるにもかかわらず、全体での左右の幅は各行で揃っています。この見た目の秩序が私は好きですが、柔らかさの均一性は触覚においての統一感ということかもしれません。

そんなことを考えていると一つの仮説が浮かびます。 それは「打鍵感の均一性はRow Staggeredのカスタムキーボードだけで語られているのではないか」というものです。 Row Staggered配列は指の差異を無視したデザインです。 親指を除くすべての指を平等(?)に扱っているので、打鍵感も平等に、ということかもしれません。 そういう点ではOrtholinear配列も同じです。 一方でColumn Staggered配列ではあまり議論されていないのではと想像します。 (まあ全然見当違いかもしれません)

打鍵時のプレート・PCBの反動(振動)

打鍵時のプレート・PCBの反動というのも打鍵感の指標としてあると考えています。

これはプレートレスPCBマウントのキーボードを自作したときに感じました。 スイッチプレートが無いためにPCBがしなりやすく、打鍵の底打ち時にPCBがバインバインと振動します。 自分は指に感じるこの反動が好きになれなかったので、PCBとケースの間にフォームを入れてこの振動を抑えました。 この底打ち時の板の振動はスイッチプレートを金属で作ったときには全く意識しなかったことです。

これは振動の変位量と関係していそうです。 柔らかい素材のスイッチプレートやPCBにスリットを入れると、板が変形しやすくなるので打鍵時の変位量が大きくなります。金属などの硬い素材を用いたスリットのないプレートであれば変位量は小さいでしょう。 指が感じることができる振動の変位の大きさに閾値があるとすれば、金属プレートでは変位が小さいから振動を感じないということかもしれません。

また振動の周期(周波数)と関係しているかもしれません。 柔らかい素材を使ったりスリットを入れるなどして板を変形しやすくした場合、振動の周期が長く(周波数が小さく)なる傾向があるはずです。 打鍵の速さ(0.1秒程度?)と同程度の振動の周期だと気になるということがあるのかもしれません。 あるいは触覚の感度に周波数依存性があって、振動の周波数が高い金属プレートの振動は感じないということなのでしょうか?

フォームを入れると振動の変位量が小さくなるはずですが、弦楽器のミュートのように振動の減衰時間も短くなっていそうです。 この減衰時間の短い・長いも打鍵感と関係するでしょう。 振動の減衰という指摘は、打鍵音の周波数分析をしていたときにも目にしたことがあって気になっています。 測定・分析できると面白そうです。

良い打鍵感とは心地よいフィードバックではないか?

好みの打鍵感を求めるということは心地よいフィードバックを求めることと言いかえられるのではないでしょうか? 満足感を含めない狭義の意味での打鍵感、つまり触覚と聴覚にまつわる打鍵感はそのように言える気がします。

私は昔からタッチパネルでの入力に苦手意識があったのですが、これは入力時に触覚的なフィードバックが無いためです。 最近スマホを新しくしたのですが、操作した時にわずかに振動する設定ができて、これは悪くないなと思いました。 またほぼ日課になっているタイピングテストを行うときに、キーボードの打鍵音がよく聞こえるときは調子が良いように思います(気のせいかもしれません)。

あとがき

打鍵感についてあれこれ書いてみましたが、考えれば考えるほどフィードバックと満足感をちゃんと自分は区別できているのかわからなくなってきます。 まあでも結局は好みの問題です。そんな区別は必要ないのかもしれません。 キーボードについての「情報を食べる」ことについて批判的に書きましたが、満足できるのであればそれでも良いのだと思います。

ただ、自作キーボードの醍醐味の一つは、良い打鍵感=自分の好きを探求して試行錯誤することだと私は思っています。 過剰広告、情報過多があたり前の世の中ですが、新しいものはインプットしつつ、しかし外的要因に洗脳されることなく自分の本当に好きなものは何かを見極めていきたい、と自分は考えてしまうのです。

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

データ分析が明らかにするタイピングの特徴

キーボード #2 Advent Calendar 2023の19日目の記事です。18日目はPekasoさんの「自作キーボードのケースをアクリル板でいい感じに作る2023」でした。どれも上手いアイデアでとても参考になるし、仕上がりがきれいなのでさすがですね。

さて、この記事で話題にするのはタイピングデータです。 自分のデータを分析してみたら、全く予想していなかった特徴があることが分かりました。 ここでは私のタイピングデータの分析を紹介し、その特徴を考察します。

はじめに

キーボードの配列の最適化問題はおそらくまだ誰も明確な答えを持っていない興味深い課題です。 配列の良し悪しは様々な基準で評価されていますが、 私は個人のタイピングの癖や特徴を把握する必要があると考えています。 そんなわけで自分のタイピングデータを収集するために、自作したWindowsアプリ(Keyboard Typing Analyzer)を作ってデータを集めています。

kgnwsknt-chef.hatenablog.com

使用しているキーボードはrow staggeredのQWERTY配列で、 主なサンプルデータはブログや日記などを日本語(ローマ字入力)で書いているときのタイピングと、英語のタイピングテストです。

Keyboard Typing Analyzerでは入力したキーと時間を記録しており、例えば連続した2入力(以降2連接と呼ぶことにします)にかかる時間や頻度などを知ることができます。日本語の文章をタイプしているときのデータをグラフにしてみると、全く予想していなかった分布が現れました。

日本語入力の時の不思議な分布?

下図の左は2連接にかかった平均時間(横軸)とその頻度(縦軸)の相関です。各点は「su」や「ta」などの各組み合わせを表しています。例えば一番頻度の高い点(132.4, 1646)は「nn」です。 ここでは頻度が極めて少ないものはミスタイプとみなして除いてあります。

(左)2連接の平均入力時間と頻度の相関、(右)2連接の平均入力時間の分布

この図を見ると弱い相関がみられます。 頻度が高い組み合わせは、それを最適化するように自分が適応したためか、入力時間が短い傾向があります。 頻度が高い組み合わせで入力時間が250 msを越えるものはありません。

予想外で驚いたのは入力の速いグループと遅いグループの2つに分離しているように見えることです。これは右図の1次元ヒストグラムをみると、よりはっきりします。 2つのピークの間隔はわずか0.1秒程度しかありませんが、これほどはっきりと分かれているのは何か理由があるに違いありません。 これを明らかにするため、あれこれ調べてみました。

英語のタイピングテストのデータ

英語のタイピングテストだとどうなるのか、という疑問がまず浮かびました。 見てみたのが下の図です。

英語のタイピングテストの場合の(左)2連接の平均入力時間と頻度の相関、(右)平均入力時間の分布

頻度が高いものは入力時間が短い傾向があるというのは、日本語入力のデータと同じです。 しかし入力時間分布が2つのグループに分かれている、ということはありません。

2連接の入力パターンによる分類

さらに調べてみると、どうも子音+母音(下図赤)という組み合わせの場合は入力が速く、母音+子音(下図青)の組み合わせは遅いグループとなっていることがわかりました。

日本語入力の場合の(左)平均入力時間と頻度、(右)平均入力時間の分布。赤は子音+母音、青は母音+子音の組み合わせ。

英語のタイピングテストのデータで同じことを見てみると、子音+母音、母音+子音で入力時間の分布に大きな差はありません(下図)。

英語のタイピングテストの場合の(左)2連接の平均入力時間と頻度の相関、(右)平均入力時間の分布。赤は子音+母音、青は母音+子音の組み合わせ。

ちなみにこれらのサンプルデータは、書く内容を考えながらタイプしているのと、画面に表示されている文字をそのままタイプしている、という違いがあります。 そこで統計量は少ないですが、日本語のタイピングテストの場合も見てみたのが下の図です。

日本語のタイピングテストの場合の(左)2連接の平均入力時間と頻度の相関、(右)平均入力時間の分布

2つのグループに分かれています。 これは日本語の文章を入力しているときと一緒です。 タイピングテストかどうかではなく、日本語と英語で違うようです。

この違いはなぜなのか?

上の入力時間分布の違いは、日本語と英語で入力単位が異なるからと解釈できる気がします。 ここで入力単位は一気に連続して入力する塊とします。

日本語ローマ字入力の場合、ほとんどの文字は子音+母音の組み合わせでひらがな1文字を形成し、多くの場合は子音と母音が交互に現れます(ちゃんと調べていないのでどれくらいの割合かは不明)。 入力の単位がひらがな1文字となっていれば、子音、母音、少し時間が空いて、子音、母音と打鍵される場合が多くなり、母音+子音のパターンの入力時間が遅くなりそうです。

あるいは入力単位が単語や文節ということも考えられます。 日本語では漢字変換のためにスペースキーを押します。 私は比較的短い文節で変換しますが、本分析では"a k"のようにaとkの間にスペースが入力された場合は2連接と判定していません。もし文節の入力中は母音・子音関係なく同じリズムで打鍵できているとすると、上の図のように2つに分離するような顕著な違いは現れないでしょう。 自分としてはスムーズに文節を打鍵しているつもりですが、実際にはひらがな1文字が入力単位になっているようです。

これに対して英語のタイピングテストでは、入力単位が単語になっている気がします。 実際にタイピングしている感覚としては1単語は1入力単位、もしくは2入力単位(例えばinc-rease)がほとんどだと思います。

以上のことは自分が感じているタイピングのリズムとリンクしていると思います。英語をタイピングしていると単語によっては3つ以上の入力を素早く打てるコンボがあり、心地良さを感じることができます。これにより1単語をシームレスに打鍵していると感じることがよくあります。

一方、日本語を打鍵しているときはコンボを感じることがありません。入力単位がひらがな1文字となっていれば、3入力以上がシームレスに打鍵できない、と説明がつきます。そういう点では母音を片手側に集めたキー配列を使えば左右交互に打鍵するリズムが生まれ、体感が良いのかもしれません。あるいはかな入力にすれば、英語打鍵時にあるような心地よい入力コンボを日本語入力時にも得やすくなるのかもしれません。

2連接の列(Column)の組み合わせごとの入力時間

配列の最適化のためには、連続打鍵の指の組み合わせが重要であると考えています。 そこで指に対応している各列(Column)の組み合わせごとの入力時間、頻度を見てみました。 qaz列を0、wsx列を1、…、pを9のように定義し、2連接の最初の入力を横軸に、2番目の入力を縦軸にとって入力時間の平均と頻度を示したのが下の図です。 白い色になっているのはz軸がゼロに対応しています。

日本語入力時の(左)各組み合わせの平均入力時間、(右)各組み合わせの頻度

英語タイピングテスト時の(左)各組み合わせの平均入力時間、(右)各組み合わせの頻度

これを見ると以下のことに気づきます。

  1. 日本語入力の場合、右手右手の入力回数(22,163回)は左手左手(12,755回)よりも多い
  2. 英語タイピングテストの場合、qaz列を連続入力することが無い
  3. 英語のタイピングテスト時は同じ列(=同じ指)の連続入力は明らかに他よりも遅い

2.に関しては、タイピングテストが選択している単語によるものかもしれません。 実際の英文ではpuzzleなどqaz列が連続するものが現れる可能性がありますが、やはり頻度は少ない気がします。

3.の同じ指の連続打鍵が遅い、というのは自分の体感と一致します。 ただし例外もあります。(第5列, 第6列)の入力(yhn列, ujm列)は入力時間が短くなっています。 これは私がnumberなどを打鍵する際、nを右人差し指、uを右中指、のようにnとuに別の指を使って速く打鍵しているからです。 快適なタイピングを求める際、配列や運指を工夫することにより、どれだけ同じ指の連続打鍵を減らせるかが1つのポイントになるでしょう。

2連接の各キーの組み合わせの入力時間

最後に2連接の各キーの組み合わせについての入力時間を示しておきます。 上と同様に横軸が1番目の入力、縦軸が2番目の入力になります。

日本語入力時の(左)各組み合わせの平均入力時間、(右)各組み合わせの頻度

英語タイピングテスト時の(左)各組み合わせの平均入力時間、(右)各組み合わせの頻度

ここまで細分化すると、組み合わせが多すぎて傾向はよくわからないですね…。 よく見ると、cvなどの日本語入力ではありそうもないパターンがあるので、ミスタイプを排除しきれていないようです。 ミスタイプの判定はさらに工夫する余地があります。

これらの図を見ると、データが存在している組み合わせは結構限られています。 アルファベットの組み合わせは26 x 26 = 676通りあるわけですが、実際に使用している(上の図の白ではないマスの数)のは、日本語だと224通り、英語タイピングテストだと225通りしかありません。 入力している文字が偏っている可能性もありますが、配列の最適化を2連接のデータで考える場合、676通り全ての組み合わせを考える必要はなく、せいぜい230通りくらいを最適化すれば十分なようです。

さらに自分のタイピングの癖をある程度知ることができます。 例えば「ぃ」の打鍵の仕方はxiやliなどがありますが、私は「xi」としているようです。 「ぃ」はたいてい(必ず?)子音を前に伴うので、「thi」などのように打鍵することでもっと速くタイプできるはず。

あとがき

自分のタイピングデータを分析してみましたが、言語によって明らかに様子が違います。 予想してはいたものの、ここまで大きく異なるのは意外でした。 言語によって最適な配列が変わるはずなので、レイヤーごとに配列を変えて、入力言語でレイヤーを切り替えるといいのかもしれません。 (かな入力の人は英字入力の時にはそうしている?)

これだけ入力時間分布が異なるということは脳の使い方も全く異なっているんだと思います。 でも日本語の文章でも日本語のタイピングテストでも同じように入力時間分布が2つに分離していました。 文章書くときとタイピングテストは全然違う脳の使い方をしている気がするんですけどね。 これは自分の日本語ローマ字入力のタイピングがまだまだ未熟ということなのか、あるいはキー配列が良くないのか…。

明日の記事は五月雨さんです。

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

格子配列キーボードcool650にチャレンジ

格子配列のキーボードを試したくなったので、自作キーボードキットのcool650を購入しました。自作キーボードは組み立て自体が楽しいものですが、それだけではなく、使ってみることでこれまで全く意識していなかったことを発見したりして面白いものです。今回の記事はキットの組み立てと使ってみて気づいたことについて。

格子配列キーボードが気になってきた

自宅用のキーボードはエンドゲームと言えるものができたので、持ち運び用のキーボードを作ろうと考えている今日この頃。格子配列だと外形を整えやすいし良いかな~、となんとなく妄想している。格子配列はこれまで使ったことはないのだが、2023年7月に行われたキー部5%で触った時には結構タイプできそうだと思った。

そんなわけで格子配列が気になっている。これまで複数キーボードを設計から自作しているので、まあ基板は自分で作れるのだけれど、分割にするのがいいのか?スペースキーの位置はどこがいいのか?2Uとかが良いのか?、と考え始めると色々わからない。そこでキットとして販売されているものを作ってみて格子配列キーボードの使用感を確かめてみようと考えた。

分割できる格子配列のキーボードを探していたら、cool650とcool664というのが候補に挙がる。cool650は片側6u x 4行 + 1キーの分割格子配列。cool664の方は片側6u x 5行 + 2キーで数字行もあるもの。 この命名規則は例えばcool650の6は片側の列数、50はキー数ということかな?  → 6の桁は配列を示していて6が格子配列だそうです(設計者様に教えていただきました)

数字行のあるなしでどちらにしようか迷ったけれど、

  • 最終的に持ち運び用を作りたいのでできるだけコンパクトが良い
  • 5行よりも4行のほうが見た目が好み

という2つの点からcool650にした。BOOTHで購入できる。左右で基板が共通となっているので、片側分x2と組み立て用のオプション部品Bを購入。

booth.pm

cool650の組み立て

キットは基本的に部品が準備されているのでとても楽。自分で設計からやるとすべての部品を調達しないといけないのでこれはありがたい。cool650の基板はダイオードの向きが統一されていて、しかも実装位置が整列しているのでとても分かりやすい。この辺は自分が基板設計する際に見習いたいところ。

またPro MicroをPCBに直載せというのも自分には目新しい。通常はピンヘッダやコンスルーなどを間に入れるが、これを省略することで薄くできる。なるほど~。

はんだ付け時の注意点

このキットで気をつける必要があるのは以下の2点だろう。

  1. 左右共通となっている基板の部品の実装面
  2. Pro Microの向きとPCBへの直付け

1.の左右共通基板は気をつけないと間違えそうになる。基板の端にfront-Right sideなどと記載されているのでそれを何度も確認した。また部品実装位置はBOOTHの写真を何度も見返した。2.のPro MicroのPCBへのはんだ付けするときにも実装面と向きに注意が必要。ビルドガイドは向きについて基本的に文字で説明が書かれているが、完成品の写真も併せて参考にするといいと思う。またピンヘッダのプラスチック部分を取るという少しトリッキーな工程が必要になる。

Pro Microをはんだづけしたところ

逆に言えばこの2点以外で難しい部分はない。キーボードを設計した経験がある人なら、完成品の写真を見ながら上の2点に注意すれば作れると思う。自分は結局完成品の写真を見ながら我流で組み立てた。そのほうがパズルを解いているみたいで楽しい。まあでも良い子の皆さんはビルドガイドをちゃんと読みましょう。

マグネットピン

マグネットピンなるものを初めて触ったけど、これは便利。このキットでは分離している左右を結合、そして通信するのに使っている。少し失敗したのはこの部品の実装位置。左右を結合したときにケースの間に少し隙間ができてしまった(写真)。

ケースを組み立てると、PCBの端とケースの端がちょうど一致するっぽい

組み立てるとケースの端とPCBの端がちょうど一致している設計になっている?このマグネットピンの黒い部分の端もPCBの端にそろえるように位置合わせをするとケース端がぴったりくっつくように左右を結合できる気がする。

ケース組み立て

これも特に難しいことはないが、側面外周のアクリル部品の保護紙をはがすのが一番気をつかう。注意しないとポキっと逝ってしまう。

USBケーブル

久々Type-BのコネクタのUSBケーブルを使うことになったのだが、家にあったいくつかのケーブルは通信ができないものだったのでPCと接続しても反応せず、Pro Microがイカれてしまったかと少し焦った。またコネクタが太いUSBケーブルを使うとPCBの切り欠き部分との遊びが無く、抜き差しするときにPro Microのレセプタクルがモゲそうで怖かった。USBケーブルは選んだ方が良いだろう。

キーキャップをつけて完成!

格子配列用のキーキャップは持っていないが、困った時にはMT3 Extended 2048があれば何とか様になる。本当にこのキーキャップセットは何にでも対応できるので助かる。 贅沢を言えば、親指が担当するキーはかまぼこ型のConvexのキーが良いけれど、まあスペースキー分だけでもConvexにできたので良し。

キーキャップを取り付けて完成

キーマップ

とりあえず初期設定から少しだけ変更して以下のようにしてみた。かなりヤッツケになっているので使いながら変更していく予定。remapが便利すぎるので頻繁に配列を変更するのも簡単にできる。

キーマップ

使ってみて

今回初めて格子配列のキーボードを使ってみた。キー部5%で試した感触の通り、ほとんどのアルファベットキーは違和感なくタイプできる。キー部での体験が無かったら格子配列キーボードにチャレンジするのはだいぶ障壁が高かったので、いろんなキーボードに触れることができるイベントは本当にありがたい。

大体のアルファベットはおおよそ問題なく打鍵できるのだけれど、左手の手前のz, x, cの3キーだけは全然タイプできない。これはraw Staggeredのキーボードの時の自分の癖のため(後述)。 ESC, Tab, Shift, BS, Enterなどは40%サイズのキーボードを使っているときと同じ感覚。これは少し意識すれば一応対応できる。スペースキーの1Uもまあ打鍵できるけれど、まだ慣れないしミスしそうな不安感がある。たぶん格子配列での手の位置が定まっていないことが原因な気がする。 記号や数字などはraw staggeredの40%同様、自分にはまだ難しい。

キースイッチ

スイッチはお試しで色々なリニアスイッチ。5-10個だけ買ったけど全然使っていなかったもの。ルブするのはサボって、どれもストックのまま。

  • Thick Thock Marshmallow
  • Chosfox x JWK Hanami Pink Dango
  • Haimu Raw
  • Geon Yellow
  • XCJZ LUCY Silent Linear Switch
  • Lychee UHMWPE Linear
  • Sarokeys Strawberry Wine
  • Kailh Deep Sea Silent Box Switch
  • WS Aurora Clear
  • Haimu x Geon Linear

取り付けたお試しキースイッチたち

このキーボードはサイレントリニアと組み合わせるのが一番自分の好み。左右の親指のキーにつけたKailh Deep Sea Silent Box SwitchやXCJZ LUCY Silent Linear Switchが良い。他のスイッチもサイレントスイッチにしようかな?

格子配列を使って気づいたこと

自分のタイピングの癖

格子配列を使うと自分はzxcをことごとくミスタイプする。これは自分のタイピングの癖のせい。いわゆる「基本」ではcキーは左中指が担当することになっているが、自分は常に人指し指で打鍵しているということに初めて気づいた。このため、格子配列でcを押そうとすると人差し指が動いてvを打鍵してしまう。

おそらくこの癖は英語でよくある「ce」という連続打鍵を速くするためだと思う。英語ではcenterとかplaceとか、ceという連続打鍵は頻出する(と思う)。いわゆる基本的なタイピングの指の担当はどちらも左中指になる。同じ指で異なるキーを速く打鍵するのは難しい。

raw staggered配列の場合はcとeはそれぞれ人差し指と中指で無理なく同時に押すことができる。無理なく同時に押せる2キーは速く打鍵できるので、そのような最適化を無意識にしていたらしい。日本語ローマ字入力だと自分はcを全然使用しないので、英語の打鍵のためだと考えられる。

じゃあ他のキーはどうなっているか?意識しながら普段のタイピングをしてみると、zは小指、xは中指、cvbは人差し指が担当している(bは右人差し指でタイプすることも)。つまり薬指は使っていない。

なんてこった!長年ほぼ毎日キーボードを使っているし、なんならここ数年は自分で設計までしてキーボードを作っているくせに、今までこのことに全く気づいていなかった。格子配列キーボードを使ったことでこの無意識に初めて気づいた。いやー、面白いものです。

タイピングの基本的な指とキーの対応

自分のタイピングの癖を調べていたら、基本的な指とキーの対応ってどうなっているのかわからなくなったので復習した。 「キーボード タイピング 指」とかで検索すると、丁寧に解説してくれているウェブサイトが多く見つかる。 さて、下の図の指の対応は正しいでしょうか?

指とキーの対応(主要なキーのみ)。赤、黄、緑、青はそれぞれ人指し指、中指、薬指、小指に対応。

世間で「基本」となっている対応は、

  • 慣習的なraw staggered配列に従う
  • 指の負担をある程度均等にする and/or おぼえやすい

という条件から決まっているのだと想像する。ただしこれに従うと左右の指の動かし方の非対称性が大きい。まあ人間には利き手があったりと完全に左右対称ではないけれど、raw staggeredの基本と言われている指の対応は美しくないと感じてしまう。 (でもraw staggeredの見た目は好きです。)

さて、先に示した図は世間で言われている基本的な指とキーの対応と同じもの。ウェブの記事によってはこれを「正しい指の位置」などと記述しているが、この言葉選びは良くない。他は間違いであるという絶対的な印象を与え、物事の見方を狭めて本来はどうあるべきかと考える可能性を奪ってしまう。(こういう批判を書くとそういう自分はどうなのかと心配になる…。悪い表現があれば優しく諭してくださいませ。)

最良のキー配列と指の対応とは?

そんなこんなで最良のキー配列と指の対応は一体どんなものだろうかと考えてしまう。 市販のキーボードよりベター、私の最適解、というのを主張できる人は少なくないだろう(こんなことを書いている私の今の最適解はraw staggeredのQWERTY配列です)。 でもどうせならできるだけ多くの人に対してのベストに辿り着きたいもの。

この問題はキーボードオタクの間で様々な議論があるが、ほとんどの場合は何かしらの制約がかかっている気がする。 物理配列は設計・製作のしやすさに縛られがちだし、論理配列はよくある物理配列に制限されていて、また上に挙げた基本的な指の使い方に縛られていたりする。 競技タイピングをしている人は指の担当を柔軟に考えているけれど、raw staggered配列の場合がほとんどではなかろうか(競技のルールとかあるのかな?)。

最良のものがどんなものか自分には全然想像できないけれど、もしraw staggeredがデファクトスタンダードである現状を完全にリセットできたとしたら、最良な物理配列は別のものだろう。格子配列は左右対称の指の対応にできるし、指の対応を学習する際も素直でわかりやすい。これらの点でraw staggeredよりも最良な物理配列に近いのではないかという気がする。

あとがき

今回は自作キーボードキットのcool650を組み立てました。自作キットを組み立てるといろいろな気づきがあって勉強になります。 またこのキットのおかげで自分でわざわざ設計や部品発注などすることなく格子配列のキーボードを体験することができました。 格子配列のキーボードの存在は知っていましたが、知識として知ってることと体験して感じることはやはり全く別ものですね。

格子配列を使ってみたことで自分のタイピングの癖に初めて気づくことができました。まだ気づいていない癖があるかもしれません。あなたは自分のタイピングの癖を完全に把握していますか?

この記事は自作キーボードcool650で書きました。

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

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

フォースカーブ

基本

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

フォースカーブの例

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

  • 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で書きました。