Previous Post | Top | Next Post |
TOC
状況
AVRで作ったQMKキーボードでは、タップとホールドを上手く利用した使いやすいキーマップができました。
ARMで作ったQMKキーボードにこれを移植するとともに、追加ハードのアナログJOYSTICKをマウスの機能を提供するデバイスとして有効利用しました。
JOYSTICKデバイスの追加とMCUの機能設定
「JOYSTICK」という言葉に引かれて、よく分からないままマニュアルの「Hardware Features」の「Joystick」をフォローして、ゲーム用のコントローラーとしての「JOYSTICK」デバイスを導入しました。
ここで、ARM系のハードの初期化のカスタマイズ法を学びました。ARMではOS立ち上げコードがチップ機能の初期化をしているようです。マクロを定義することで、コンパイル時に設定が導入されます。ある意味AVRのfuseの感じです。
ChibiOSは、デフォルトのhalconf.h
やmcuconf.h
を提供しているので、デフォルトでは無効化されたADCを使う等の場合には、設定をオーバーライド変更する必要がありました。
最初に、platforms/chibios/boards/keyboard-config-templates/
内のファイルを、プロジェクトフォルダー内にコピーしたファイルをベースに、オーバーライド変更のみを設定します。
デフォルト値は#include_next "... .h"
で読み込みます。(この辺の仕組みがが分かる前には、コンパイラーエラーに苦しみました。)
ゲーム用のコントローラーとしての「JOYSTICK」デバイスの動作検証は、Gamepad Tester
でしました。この環境での安定動作には、config.h
に以下の追加が必要でした。(参考情報源)
#define JOYSTICK_AXES_RESOLUTION 8
#define USB_POLLING_INTERVAL_MS 4
ゲーム用のコントローラーとしてのJOYSTICKデバイスを提供するソース
ゲーム用のコントローラーにマウスの機能を提供する設定は、OSの環境設定でできなくはないです。ただこれでは本末転倒です。 ストレートにマウスの機能自体を直接提供すること目的なので、これはここまでにします。
JOYSTICKのハードによるマウス機能の提供
JOYSTICKのハードによるマウス機能の提供には、マニュアルの「Hardware Features」の「Pointing Device」をフォローします。
Mouse keyよりは快適に動いていますが、ThnkpadのTrackpointが得意でない私には決して使いやすいとは言えない状態でした。
本物のMouseは使いやすい。
反省点
キー入力できない原因を調べたところ、UEW線の被覆熱削除不足による不良が2点、ダイオードの極性方向間違い1点が見つかった。
- UEW線は事前両端カットしてプリ半田して使う (結線不良となりやすい巻付法は使わない)
- ダイオードの極性の視認チェックは大事
- MCU付きのボードをスイッチマトリクスにつなぎ込む前に、結線・ダイオード極性をテスターで電気的にもチェックすべき。
気づいたこと
結局joystickやトラックボールはマウスより使い勝手が良くない。
QMKでは意外と多くのハードを利用してマウス機能の提供ができるようです。また、マウスの中身はほぼ似たデバイスのようです。 キーボードだけでなく、ポテンシオメーター、ロータリーエンコーダー、オプティカルセンサー等で作るポインティングデバイスででも遊べそうです。色んな事をみんなしていますね。
ただMCU内臓でI2C等で出力が出てないと、KBへの組み込みには向かない気がする。
まあ、トラックボールはあってもいいが一体化する必然性が低い。古いPS2のトラックボール のUSB化や、光学素子の高解像品への載せ換えは面白いかもしれない。
ポインティングデバイスのソース
既存の組み込み製品・ジャンクから外すのも一案:
- ダイソーの300円ワイヤレスマウスを分解して回路図と部品表を書いてみた話 (2019-03-14)
- トラックボールを作ってみた【試作編】
- アナログスティックを使ってcrkbdをマウスとしても使えるようにした話 2
- 自作トラックポイント1
部品ソース例と価格:
- 通常トラックポイント新品製品 ~$50 (工業用はもっと高い)
- ADNS-9800 optical sensor parts ~$12 光学センサーAssy
- BlackBerry Trackball 系?部品やモジュール
- Trackball Breakout by Pimoroni ~$22 (w/MCU, I2C, address=0x0A/0x0B)
- Grove - Mini Track Ball ~$20 (w/MCU, I2C)
- BlackBerry Trackball Hall Effect Sensor board (w/o MCU) ~$5
- Bare parts: Trackball Hall Effect Sensor ~$1
- Roller dial wheel parts ~$7
- Roller dial wheel parts ~$7
- Aliexpress – trackball
- アーケードゲーム修理部品(?) $10~$20
- Logitech 交換部品 ~$3
- 白銀ラボ – Trackball custom KB
Previous Post | Top | Next Post |