twiiterもチェック!! 15億画素カメラ自作企画進行中!

キーボード自作してみた【40%分離+タッチパッド搭載】

パソコン
この記事は約10分で読めます。
mrubyファミリー Advent Calendar 2023 の5日目の記事になります.

どらびです.

ブログ更新は半年ぶり,自作関連記事に至っては2年ぶりの投稿になってしまったようです.

プライベートで色々あって趣味の方にあまり手を出せていない今日この頃です.

 

さて,前置きはこの辺にして久々の自作案件としてキーボードを自作しました.

以前も一度作成したのですが,自作というにはちょっとお粗末だったので…それに対して今回は初の要素と自分なりのこだわりがそこそこあるので,ちょっとブログとして残しておこうかなと思っています.

キーマップはgitにアップしていて,ビルドガイドやHW周りに関してもある程度別途公開予定なので,ここでは細かい話を備忘録というかあくまでブログとして残しておく場とします.

※名称募集中なのでなにか妙案がある方がいらっしゃればコメントでもXのリプorDMでも何でもいいので教えてもらえると嬉しいです.

概要

何はともあれ,まずは今回作成したキーボードの概要になります.見た目はこんな感じ

ざっとした特徴としては

  1. 分離型40%
  2. カラムスタッガード
  3. タッチパッド
  4. prk_firmware
  5. LCD

って感じでしょうか.

5.とか積んでるキーボード多いじゃんって思われるかもしれませんが,prk_firmwareに先日(2023/11/23)実装された最新機能を活用して割と簡単にほかのキーボードにも転用できる形でコード書いてます.一番頑張ったのはそこかもしれない.

タッチパッドに関しても他の人が導入しやすいというところまで一応加味したつもりで,市販のタッチパッドモジュールを利用していて,LCDと同様に転用可能なコード構成にしています.

 

経緯

作製に至った経緯なのですが,会社で使用しているノートPCの矢印キーははじめとしたいくつかのキーがぽろぽろ取れるようになってしまって,ストレスマックスな状態になってしまったのを機に,「タッチパッド付のキーボード作ったろ,家と会社用に計2台作って環境揃えたらショートカットとかバリバリ増やしても会社でも利用できて快適なキーボード生活が送れる!!」というのがスタートです.

ちなみに元々タッチパッド派です.

今はまだタッチパッドの使い心地が完璧じゃないのとタッチパッドを利用したショートカットその他諸々を設定しきれていないので,今まで使っていたトラックボール君も机にいますが,最終的にはこのキーボードだけが机に置いてある状態にして,できるだけ机をスッキリさせたいという意図もあります.

あと,分離型キーボードの方が肩周りが楽というのはおおむね同意なのですが,TRRSケーブルで接続するタイプのガチの分離型は定位置を決めておかないと位置が毎回変わって落ち着かないという状況が発生するのが個人的にはイヤでした.

なので基板一枚で分離型にして,余ったスペースにポインティングデバイスを仕込むというのが個人的な最適解なんだろうなあとは薄々思っていました.

後は最近はやりのraspberry pi picoをいまだに使ったことがなかったので使ってみたかったというのと,qmkは多機能かもしれませんがソースがあまりにもごちゃついていて根本的な改造やデバッグ,そして公式未対応のデバイス等を自分で組み込むのが難しい印象があったので,そこに関してもprkの方が自分には魅力的に感じました.

 

工夫した点とか

HW面

これに関しては大きい部分は経緯で述べちゃっているので細かいところが多くなってしまいますが…

 

左右のキーボードがそれぞれ10°傾いている

これは正直パクリです.というかこのキーボード自体,キッカケとしては堕落猫さんのieneko42Cを見て自キーでもタッチパッドのキーボードって作れるんだ!ってなって作り始めているので,その影響をもろに受けています.

上述の通り,分離型にしたい理由は肩周りが楽になるという理由ですが,この時完全な分離型で左右の腕の開き具合を調整できない場合は多少角度が付いている方が自然なポジションになると思います.一般的な肩幅の人ならこのキーボードで不自然な角度だと思うことはない気がしますが,違和感がある人はいるかもしれないですね.

 

タッチパッド付近に2個レイヤー用のキーを配置している+クリックもキーとしている

パッと見36キーのキーボードの構成で,基本的にはキーボードだけを使う場合は丸まんまその構成を移植してこれます.

ただ実際は40キーのキーボードになっています.それがタッチパッド部の物理クリックボタン(左右)とタッチパッド下部のキー×2です.これらは基本的にタッチパッドをより効果的に使うためにタッチパッドのジェスチャーと組み合わせてショートカットなどを起動するのに使えるかなと思って設置しています.

ちなみに自分は今のところ全く使いこなせていないので,キー割り当てのアイデア絶賛募集中です.

更に言うとサイズ上は1.75uまで設置できるスペースがあるのですがスタビ設置を全く考えてなかったので,多分足した方が使い勝手いいです.地味にfuncレイヤみたいな2キー同時押しで入るレイヤでここのキー押したくなるのですが,1uだとちょっと遠いです.1.75uならもう少し押しやすいかも.

 

基板全体が隠れるように筐体設計する

正直筐体は全くと言っていいほど納得していないのですが,自分の中で絶対に順守したいルールが一つだけあって,それが「基板側面を露出させない」というものでした.自キー界隈だと結構当然のようにやられるのですがどうしても個人的にはこれが許せず…

今の筐体はアクリル6層構造で作ってます.これは今の私の環境でもっとも扱いやすかったのがアクリルというだけで,そこにものすごいこだわりがあるわけではありません.

ただ所謂「市販」されているキーボード,もっと言うとほとんどの製品において基板が露出した状態で販売されるものはほとんどないと思います.なので自分が作るものもそうしたいなあという,特に深い意味はないこだわりです.

このキーボード,販売するかもしれませんが,基板のみの販売でケースはご自身でご用意いただこうかなと思っているのでこのこだわりが不要な方は各々好みのケースを作るとよいと思います.そっちの方がよさげだったらしれっと自分もそっちに乗り換えるかもしれませんw

 

基板を支えるためのビス穴は多めに開ける

これも特に明確な根拠はないのですが,支えが沢山ある方が良さそうじゃん?という思想の下,穴はたくさん開いております.おかげさまかわかりませんが個人的には打鍵の感覚に今のところ不満はないです.代わりに底打ちの音が高めな気がしているので,単純にこれはキースイッチのせいな可能性もあるということで静穏軸買い増してみました.

参考までに、形の参考にさせていただいたキーボードの一つであるnowt36は15個のビス穴が空いているみたいですが、このキーボードは25箇所空いています。それがいいか悪いかは正直わからないので気分の問題です。

そんなにいらんやろって人は放置してもらえれば特に悪い影響はそんなにないかと思います。

これ見てわかるか怪しいですが,CADのスクショ載せておきます.

 

raspberry pi picoの採用

これは主にSW面でのご利益を期待してこれを選んでいるので,詳細な理由に関してはそっちで記載します.

 

SW面

prk_firmwareの採用

まずはこれですね.これ以外のこだわり?ポイントも大体これと連動します.

そもそもタッチパッドのモジュールを採用しようとなった時,使おうと思っていたタッチパッドがI2Cでやり取りをするものだったので,I2Cでオリジナルのプラグインというか,追加機能を書きやすいFWを選択するということが今回の数少ない必須要件の一つでした.そこで着目したのがprkです.

まだ発展途上のFWということもあって(というのと意図的に作者がHW依存のスクリプトをFW本体に入れないように工夫していたので),prkはI2Cに関して低レイヤ部分の実装のみで,あとはお好みで自分の必要な内容を書いてくださいというスタイルだったのが個人的には非常にマッチしてました.

タッチパッド周りのデバッグ.動確をするだけならpicoと中華の格安ロジアナとタッチパッドさえあればほぼ事足りるので,開発に必要な費用が2000円以内くらいに収まるというのが,「失敗してもいいや」という気持ちにさせてくれるので非常に気楽に作り始められました.

prk+OLED

今のところネットで自分が調べた範囲だと,この組み合わせを実行した人は自分以外には一人しかいません.そしてその先人はかなりHW依存なコードをプルリクに出していて,FW作者によって却下されています.

今回,自分が再チャレンジ?できるようになったきっかけは冒頭に記載したとおりprkについ最近導入された新機能によるところが非常に大きいです.

非常に簡単に書くと,「自作のライブラリを読み込んで使えるようになる機能」です.python使ってる人専用の表現ですが,自作ライブラリのimportが使えるようになったという感じです.

当然もともとFWに入っている,所謂組み込みライブラリは使用できるのですが,今までのprkでは自作ライブラリを動的に組み込む方法がなく,keymap.rbというキーマップを定義しているファイル内で独自実装は全部完結させる必要がありました.今回,そこが独立したスクリプトにできるようになったのでスクリプトの可読性が向上する他,各モジュールの機能だけを書いたスクリプトを用意しておけば他のキーボードで同じモジュールを利用する際に簡単に流用できるようになりました.

これでより変態なキーボードをみんな作って布教しやすくなったんじゃないかと思います.

ということで,その機能を活用してOLEDの制御スクリプトを書いています.

よくキーボードで使われているちっこいOLEDを今は対象にしていますが,皆さんが改良を加えていけば色々複雑な動作にも対応できるようになると思いますので是非参考にして頂ければと思います.

未完成でまだロゴ表示しかできないので機能追加に関しては絶賛募集中です.

 

タッチパッドのスクリプト

これに関しては上記OLEDのメリットと同じ部分は省きます。追加ライブラリが簡単に書き換えられる構造をしているので、それを活かしてご自身で好きなようにジェスチャーなどに対応するキーを決められるようにしています。

公式にはジェスチャーは2本指までしか対応してないことになるのですが、同時5本までの指は識別できるようになっており、3〜5本指でジェスチャーモーションをすると、2本指ジェスチャーのフラグがONになりつつ指の本数のフラグはそれぞれ指の本数に合わせて変化してくれるので、実質5本指までジェスチャーは対応できます。

ということで5本指分までのテンプレは用意しておいて、中身だけお好きにどうぞのスタイルで行こうと思っています。

その辺はまだ作成途中なので、このキーボードに興味がある人がいたらお手伝いいただけますと幸いです。

最後に

久々のモノづくり記事は今流行りの自作キーボードでした。

ちょっと変なキーボードに仕上がってるとは思いますが、個人的には「これ一本で他に何もいらない(マウス等含めて)」を目指して作っているので、刺さる人には刺さるんじゃないかなあとは思っています。

ちなみに今Xでいくつか良さげだと思っている自作キーボード関連のアイデアがあるので、もしかするとマクロパッドは作るかもしれません。

コレ↓積むとか

SpaceMouse® Module | MEGATRON
Intuitive control of complex 3D movement with one hand only - an industrial module for easy integration ★ compact ✓ reliable ✓ ► top advice | top quality

CO2センサ積むかとか

リアクションくれるとやる気が出る可能性があります。

ではまた。

コメント

タイトルとURLをコピーしました