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 が見やすそうです。

No comments:

Post a Comment