2022-07-30

自作キーボード沼へ、その4:6x3コンパクトキーボードのキー配置をOLEDで動的に表示できたら

自作キーボードの設計で、あれもこれもと欲張ってキー数を増やしてしまうと、手間も時間も、何よりパーツの費用が余分に必要になります。
無理にキー数を減らしてかえって使いにくくなったら本末転倒なのは当然ですが、かっこよさからもやはり少ないキー数は一つの目指すところだと思います。
カラムスタッガードやオーソリニアで左右の配列を対称にしておけば、基板をリバーシブルにしてさら節約できます(PCBの発注は最低5枚から)。
6x3配列は、ホームポジションを完璧にすっと守って入力できるメリットもあります。
そんな中にあって、foostanさんの6x3+親指3キーのcorne (crkbd) は世界中で使われているもっとも有名な自作キーボードと言って間違いないでしょう。

以下、わたしがcrkbd等の6x3キーボードに踏み切れていない理由です。

  • 標準キーボードでも英字キーはブラインドタッチできますが、記号はどうしてもキー刻印頼ってしまいます(Shift+6 が ^ は記憶があやしい)。標準配列じゃないとなおさら大変そうです。
  • crkbdのようにキー数が少ないと、足りない記号キーは、レイヤを複数使ってキーマップに押し込んでやる必要があります。
  • キートップにシールなどで刻印して、目で見てすぐに探せるようにするのが記憶の負担を下げるのに一番効果的だと考えています。標準キーボードであっても刻印がある方がとっさの時に安心で結局は早く入力できます(意外とキー刻印に頼っていると思います)。
  • しかしながら、自作キーボードではキーマップを日々カスタマイズするのが常です。シールを頻繁に張り替えることもできません。また、既成のキーキャップだと記号などが自分のキーマップに合いません。結局、無刻印キーキャプで記憶に頼って使っているのが現状だと思います。

これはもうなんともならず、自分にはcrkbdにご縁が無いと諦めかけていたのですが、今週、パッとアイデアがひらめきました。
それは何かと言うと、crkbdにも付いているOLED(有機ELディスプレイ)の活用です。
スマホのソフトウェアキーボードは、フリップ入力のテンキースタイルであれ、フルキースタイルであれ、キー数は少ないです。
動的にキー表示を行うことで、ユーザの文字入力を助けくれていて、実際、日常利用に耐えられる形になっています。
これに似たようなことが6x3のような自作キーボードでもできれば、と考えました

  • まず、crkbdのOLEDは縦長なのでキーマップの表示のためには使いにくいのですが、そこは自作キーボードの利点を生かし、PCBまでカスタマイズしてしまえばよくて、OLEDを横長(ランドスケープ)に配置してやることもできるはずです。
  • 6x3のキーマップを、レイヤ毎に切替えて動的に表示してやれば、物理キーボードのキートップに文字を刻印や、ソフトウェアキーボードに、近いメリット、すなわち目で見てどこにどの文字があるかが分かり、たまにしか入力しないうろ覚えの文字でも入力できるようになります。
  • OLEDのピクセル数は32x128です。6x3配列の3行の文字を表示してやろうとすると文字の高さは10pixelになり、これは試してみないと良いか悪いか分かりません。

そこで、10pixelの文字がどんな感じになるか、視認性はどうか、を検証してみたくて、ビットマップ職人の真似事をしてみました。
32x128 pixelのエリアに6x3で文字を配置したのが今回の図です。
行間が1pixelしか取れなくてそのままだと縦方向がゴチャッとしてしまうので、少しずらしてロースタッガードの表示しています。
もしかすると、文字の高さは11 pixelにしたほうが良かったかもしれません。

わたしの手元にOLEDの現物がないので、このアイデアをすぐに実機に表示してみることができなくて残念なのですが、それほど悪くないのではないでしょうか。

今後のチャレンジは、次のような順になると思っています。

  • OLEDの実機で表示具合を試してみる。まずはSU120でやってみる。
  • 定義したキーマップを動的に反映してOLEDに表示する仕組みを考える。VIAの定義を取得したり、ビットマップフォントをOLEDに配置したり、の処理になると思っています。
    これはできなくても、キーマップ定義を変えたらOLEDの表示用ビットマップをお絵描きツールで書き換えればいいんですがね。
  • crkbdのPCBをカスタマイズして、OLEDを横配置にする。

いかがでしょう、crkbdのコンパクトさを活かしつつ、使い勝手をかなり高めるのではと思っています。

この投稿はSparrow62 v2+[Kailh choc Pink+Brown spring] を使って書きました。

 

[2022-08-01] 過去にも(当然ながら) 同じような事を考えて実行している方がいらっしゃいました。
retkekさんが一体型のAtreusキーボードに64x128のOLEDを付けてキーマップを表示しています(ブログ記事 https://www.kmr.me/posts/atreus_oled/、ちなみにこの方はAtreusキーボードを最初に2018年2月に組み立てて、2020年9月にOLEDを取り付けたようです、相当使い込まれていらっしゃいますね)。
(Atreus自体も、すごく歴史がありますね、2020年にKeyboardioが製品化、そこの2014年のブログにはTechnomancyのオリジナルがもう登場しています。
游舎工房と、数字行と小指列を追加して6x4にしたAtreus64がTALP Keyboardで販売されていますね。)

実際に公開されている表示画像を32x128に合うように再編集したのが右の画像です。
OLEDは両手側に付けてそれぞれで表示しないと入りきらないだろうと思っていたのですが、crkbdくらいのキー数であれば、OLED 1枚だけで全キーを一括で表示できそうですね。
これ、良いんじゃないでしょうか。

それと、表示フォントに関して、QMK Firmware内蔵のものでも良いのですが、Arduino向けのライブラリの中でいろいろ提供されています(実際の画像付き一覧 https://github.com/olikraus/u8g2/wiki/fntgrp)。
10pixelとか11pixelのフォントはなかなかないのですが、ざっと見てみたところ UW-ttyp0 の中の、ボールドの t0_11b_tf かレギュラーの t0_11_tf が見やすそうです。

2022-07-19

自作キーボード沼へ、その3:Kailh chocスイッチのスプリング交換

自作キーボード沼の一つ、キースイッチ選び、更にはスイッチカスタマイズに足を踏み入れてしまいました。

わたしの最初の自作メカニカルキーボードSparrow62 v2では、タクタイルが良いと思いKailh choc Brown(茶軸)を選びました。
2番目のプロトタイプキーボードでは、もっと軽く、いっそ3倍軽いものと思い、Pink(ピンク軸)を選びました。

  • 茶軸:タクタイル、押下圧45gf、タクタイル動作圧60gf
  • ピンク軸:リニア、押下圧20gf

茶軸はちょうど良くて満足と思っていましたが、1ヶ月間使っていくうちに、決定的に悪いわけではないけれども、なんとなく重く、指が疲れているのではと思うようになってきました。

そこで新しいキーボードでは別のスイッチをと思い、選んだのが一番軽いピンク軸です。
手に入れて、スイッチ単体では茶軸とそれほど違いがないかもとも思いましたが、実際にキーボードに付けてみると、力を入れずに指を少し下げただけで動作してしまうほどの軽さです。
乗用も不可能ではないですが、押そうと思っていないキーに触れただけで入力されてしまうことがあり、それがゆえに不用意にキーを押し下げないように意識して疲れるような感じが、3日間使ったピンク軸の感覚です。
3倍軽いのは(赤い色ではないですが)やはりやり過ぎで、とてもピーキーな感じです。

どうにかならないかと、一度両方のキースイッチを分解押して内部を見てみることにしました。
Kailh chocのケースの上下を止めている爪はそれほど固くはなく、ピンセットで少し押し広げてやるとすぐに外れました(スプリングがどこかに飛んで行かないように注意は必要)。
発売時期がピンク軸の方が新しいので、茶軸にはあるスタビライザ無しで軸を安定させるガイドの突起があるなど、形状が微妙に違います。
どちらも、軸と接点操作パーツのすれあう溝にはグリスがしてありました(ファクトリ・ルブと言うのでしょうか)。
その中で、スプリングは、明らかに素材の太さが違いますが、サイズ(太さと長さ)は同じように見えました。
これは入れ替えられるんじゃない、と思い、テスト的に1つやってみたところ動作には問題なさそうです。
軽すぎるピンク軸のバネに、茶軸のタクタイルの抵抗感が合わさってちょうど良い塩梅になりそうな予感がしました。

これはやってみるしかないと、手持ちそれぞれ70個のスイッチのスプリングの入れ替えを敢行しました。
入れ替え作業にはおおよそ3時間を費やしました。

改造ピンク軸の方はスムーズな入力感覚でいい感じですが、茶軸の方は改善はされましたがまだ少し軽すぎる感じが残っています。

  • 茶軸+ピンク軸スプリング:タクタイル、押下圧20gf、タクタイル動作圧は感覚的に25gfくらい、ピンク軸スプリングのピーキーさのある程度の軽減に成功しました
  • ピンク軸+茶軸スプリング:リニア、押下圧45gf、おそらく人気のRed Pro軸(35gf)やCrystal Silver軸(40gf)相当でしょうか、しっとりしたいい感じです

茶軸は元々タクタイル感が少なすぎると言われているので、今回のような小手先のやり方ではこれが限界なのかも知れません。
折良く、遊舎工房で新型Kailh choc Sunset Tactileのグループバイをやってます。
この際なので応募してみようかなと思います。

とは言え、しばらくは今回の改造茶軸を使ってみようと思います。
わたしは今のところロープロファイル縛りを設けているので選択肢はこれくらいなのですが、MXスイッチにも手を出してしまうとスイッチとキーキャップが無数にあって恐ろしいですね。

この投稿はLilith proto+「choc茶軸+ピンク軸スプリング」を使って書きました。

2022-07-17

自作キーボードの沼へ、その2:自作第一号Lilith proto - Alice配列、左右分割、薄型、ジョイスティック

下がジョイスティック付き自作プロト1号

作りました、本当の意味での自作(本人が作った)キーボードの第一号です。
前回の投稿の、カラムスタッガードと十分な追加キーを備えた74thさんのSparrow62 v2(ご本人の紹介記事)で、すっかりメカニカル自作キーボードの魅力の虜になりました。
既存のキーボードで満足できればよかったのですが、個々人のクセや好みを満たせない面がどうしても出てきてしfまいます。

そこで、わたしとしてやりたいことを整理して進めることにしました。

Sparrow62から取り入れたい利点:

  • フルキーボードの、矢印キーとFnキーを除くすべての文字をレイヤ切り替えなしで入力できるだけの十分なキー数
    (6x3をSparrow62上でシミュレーションしてみましたが、どうにも頭と指がついていけませんでした)
  • ロープロファイル
  • 左右分割で、気分に合わせたタイピング

追加したかった機能、特性:

  • カラムスタッガードだと、人差し指でCを押す癖にどうしても対応できず(Fのすぐ下をCを置いてしのいでいるほど)、Aの段とZの段が横に0.5uズレた標準キーボードに近い配列を兼ね備えたモノを実現したい
  • 小指が短い方なので、左右端の小指担当キーはカラムスタッガードでももっと下にズラして届きやすくしたい(たとえばRemapの共同作者YoichiroさんのLunakeyのように)
  • この2つをちょうど併せ持つAlice配列が良さそう
  • 左右分割キーボードはMagic Trackpadを中央に置けますが、大きいので、キーボード自体にポインティングデバイスが一体化されているのが理想かも
    ゲーム機(Nintendo Switchなど)のアナログジョイパッドの部品が潤沢に手に入るので繋いで試してみたい

第一号なので、配線やレイアウトが、簡単にカット&トライができるのが重要と考えました。
これにうってつけのキットがe3w2qさんのSU120です。
事前にPowerPointなどでレイアウトを練り、アナログジョイスティック部品(例えばAmazonのこれ)も取り寄せてテストした上で、実際の組み立てに取り掛かりました。
このレベルのものは、いわゆる動作検証用のプロトタイプですね。

組み立ては1日2〜3時間のペースで進めて、3週間ほどかけて、一通り組み上がって使える状態になりました。
写真が現在の姿です。

  • キー数は、左側25+親指5+追加3と、右側30+親指5+マウスボタン2の、合計70キーです。自作キーボードとしては少し多めになってしまいました(たぶんキー数は少なくするのがコツなのかもしれません、部品も手間もかかりました)
  • アナログジョイスティックがいい感じの薄型で、サイズがほぼピッタリ1uなので、収まりが非常に良いです。ブランク基盤の1コマに結束用の針金で縛っているだけですが、意外とグラつきません。0.5㎜ピッチのFPCリボンケーブルから標準ピッチへの変換ボードもテープで張り付けています
  • 左右クリックや、クリック・ホールドしてドラッグ、縦横スクロールにも対応していますが、遠くへ素早く移動したい時のために加速度をつけるチューニングが必要と思っています
自分の取り組みのご紹介としてまずは投稿しました(工夫した点やファームウェアに関しても整理したいと思います)。

この記事はLilith proto(仮称)を使って書きました。