見出し画像

mtk64erpの紹介とファームウェアカスタマイズ

自作キーボードマニアの皆様は、どのようなキーボードをお使いでしょうか?
最近はkeyballシリーズ、特にkeyball39、またkeyball39から派生したkeyballish、moNa等々といった応用発展機が人気であるため、64キーはある意味ニッチではありますが、トラックボールは当然のこと、ロータリーエンコーダを2個、さらにフットスイッチ拡張も可能なめんたこ屋さん(@MentakoYが開発した「mtk64erp」について、私が魔改造したファームウェアと併せてご紹介します。



(1) mtk64erpの紹介

Keyballシリーズと同じくトラックボール付き分割キーボードです。最近昨今は無線薄型が流行りですが、mtk64erp(以後は略してmtkさんといいます)は男らしく有線オンリー。でも、ロープロ化すると非常に薄型になり、手首への負担を軽減して快適に打鍵が楽しめます。詳しくはShinpiさんのブログやXをご覧いただけると、より魅力が伝わると思うので、ぜひチェックしてみてください。


(2) 優れた点&欠点

優れた点はいろいろありますが、思いつくところを列挙します。

  • MXスイッチとロープロファイルスイッチが両方はんだ付け済。

  • トラックボール位置が下にオフセットされているため、誤作動が少ない!

  • レイヤ数が8枚(ベース1、拡張7)ある。すごい!

  • レイヤ状態確認用LEDが両OLED横にあるのでわかりやすい!

  • リセットスイッチがOLED横にあるのでファームウェア入れ替えが捗る。

  • サムズキーが8個あるので、サムズキーのみでレイヤ遷移が完結!

  • 本体自体が薄いので、パームレストいらない。

  • ロータリーエンコーダが2個ある(ここ重要!)

  • ロータリーエンコーダがホームポジションのまま回せる!

  • ロータリーエンコーダの回転負荷が低いので指一本で回せる!

  • レイヤ毎にロータリーエンコーダを割付できるので無限の使い方が可能!

  • スレーブ側OLEDに生息しているめんたこさんたちがキュート!

  • フットスイッチ拡張キットが付属しており、拡張性ばっちり!

  • OLEDの縦サイズがKeyballシリーズに比べ少し大きめのため、やりようによってはいろいろ表示できなくもない。

  • ケースが標準で付属している。(これが買うまでわからなかった。販売ページ明記してある方がいいかな。)

  • 予備部品が付属している。(3Dプリンタない人は助かるね!)

  • ケースデータ(.stl)が無償公開されている!

  • 有線接続であること。フットスイッチ接続などを考えると有線で十分便利です。当然、外出時を想定して無線化も有用だと思いますが、私の社用PCはBluetooth接続不可のため、有線がありがたいです。有線と無線を状況によって選べるといいですね。

一方で、欠点と思うところも少なからずあります。

  • トラックボールのオフセットに影響され、ケース底面が平行でない。最初びっくりしました。急遽ホームセンターに走ることになりました。最初からゴム足が付いているか、ケース自体がガタつきのない構造であってほしいです。

  • トラックボールにゴミがたまりやすい(これはmtkさんに限らない)

  • 打鍵音がスイッチに左右されますが良くはない印象。少なくとも、アルミ筐体で聞かれるようなコトコト音ではないです。

  • LEDがアンダーグロー12個+レイヤ表示2個のみ。ちょっと寂しいし、底面表示のアンダーグローはあまり活躍の場がない気がします。

  • サムズキーが多いので迷う時がある。(慣れの問題)

  • OLEDの横サイズはKeyballシリーズに採用されているものより、少し短い。

  • キーボード間接続用TRRS接続口とフットスイッチ接続用TRRS接続口が近くにあるため、キーボード間接続用TRRSケーブルをL字端子にすると、フットスイッチ接続用TRRSはストレート型しか使用できません(干渉の問題)。

  • 無線ではなく、有線限定です。カフェなど外出先での使用を考えると、無線接続ができると便利かもしれません。

  • 本体が軽すぎてゴム足をつけていてもちょこちょこ動く場合がある。(デスクマットを敷いていれば動かない)

  • テンティングはちょっと厳しい。10度程度の傾きが限界のような気がします。


(2) Keyballシリーズに劣る点

私がmtkさんを購入するまではKeyball44を使用していました。トラックボール付きという点は共通しており、さらにロータリーエンコーダーが2個も付いていることから、優位性は完全にmtkさんにある!と思っていました。しかし、デフォルトのファームウェアには、私的に明確に劣る点がありました。
Keyballシリーズは多くの人が開発に関わっていることもあり、ファームウェアが非常に洗練されていると感じます。一方で、mtkさんはめんたこ屋さんが単独で開発されているため、劣る点があるのも仕方ない話です。
何かっていうとスクロールスナップ機能。スクロールしているときに水平側に動くのが我慢ならなかったです。私としてはどうしても欲しかったので、ファームウェア魔改造計画を発動する契機となりました。

Keyballとmtk64erpのディフォルトファームにおけるカスタムキー実装差


(3) ファームウェア魔改造内容

主にカスタムした内容は以下の通りです。当初はスクロールスナップ機能だけをKeyballシリーズから移植するつもりでしたが、手を付け始めたら「あれもこれも」と次々に改修を進めてしまい、最終的にはほぼ全ソースを改修することになりました。
正直なところ、無駄機能もかなり盛り込んでしまっています。その中でも特に気に入っているのがOLED表示のカスタマイズです。見た目がとても良くなりましたが、メモリ、MCU、そして電力を無駄遣いしている点は否めませんね。

①スクロールスナップ機能

mtkさんディフォルトではスクロールモード時には「自由スクロール」しか選択肢はありません。そのため、Keyballシリーズに実装されている以下のスクロールモードを追加(Keyballシリーズから移植)しました。

  • 垂直スクロールモード:移動方向を垂直方向に限定。

  • 水平スクロールモード:移動方向を水平方向に限定。

これにより、用途に応じてスクロール方向を明確に制御できるようになりました。さらに、カスタムキーとして以下の機能を追加し、後述するVialを使ってキー割り当てが可能です。

  • SSNP_VRT:スクロールスナップモードを垂直にする。

  • SSNP_HOR:スクロールスナップモードを水平にする。

  • SSNP_FRE:スクロールスナップモードを無効にする(自由スクロール)。

vial編集画面におけるスクロールスナップ機能

②カーソル速度非線形機能

omni CS 47という超カッコいいキーボードを開発されているmassさん(@mass_0X00。天下一キーボードわいわい会でも登壇していた、まさにスゴい方です。以前、Xでomni CS 47のタッチパッドに対して「超カッコいいけど、使い道はどうだろう」的な暴言を吐いてしまったにもかかわらず、普通にコメントを返していただいたこともあり、個人的に尊敬申し上げています。
その後、massさんのXポストをチェックしていた際、カーソルの移動量をトラックパッドの移動量に応じて非線形(少し動かした際にはより少し、大きく動かした際にはより多く動く)にするカスタムを公開しているのを見つけました。この機能があまりにも魅力的だったので、取り込んでみることにしました。「できねー」とつぶやいていたところ、ご本人からアドバイスをいただき、本当に感謝しています!

実装してみると、この機能はトラックボールで少し感じていたイライラを完全に解消してくれました。その結果、操作感が超快適に!特に、ディスプレイを3台並べて使うような環境でその恩恵を大いに感じます。この機能は、すべてのトラックボール搭載機に標準装備してほしいレベルの便利さですね。

実装内容はほぼmassさん作成から丸パクリ。制御パラメータはCPI加速度制御パラメータスケールファクタ値(X、Y)を用意し、ユーザ側で加速度を任意設定できるようにしてあります。それぞれの説明は下記。

  • CPI:トラックボールが動いた際に 1 インチあたりの検出される移動単位

  • 加速度制御パラメータ(speed_adjust_value):トラックボールの動きに対する加速度合い。0.1~5.0まで設定は可能だけど、現実的な範囲は1.5~2.0。おすすめは1.5。

  • スケールファクタ値(X、Y):カーソルの最終的な動きをスケーリング(倍率を掛ける)ためのパラメータ。通常は1.0。

これもカスタムキーに制御キーを追加しているので、vialよりキー割り当てが可能です。

  • ADJMS_TG:トラックボール移動量の速度調整のON/OFFを切り替える

  • ADJMS_SPD_INC加速度制御パラメータ値を増やす

  • ADJMS_SPD_DEC加速度制御パラメータ値を減らす

vial編集画面におけるカーソル速度非線形機能

③OLED表示

ディフォルトのOLED表示、スレーブ側はキュートなめんたこさんたちが素晴らしいのですが、マスター側の表示が少し寂しい気がして、手を加えることにしました。以下のような目標を掲げて改修を進めた結果、無駄の極みといえる仕上がりになりましたが、私はこのカスタムがとても気に入っています。
ちなみに、スレーブ側に表示されるキャラクターを、私は勝手に「めんたこさん」と呼んでいます。もし正式名称が違ったらごめんなさい、めんたこ屋さん

めんたこ屋さん配下のキャラクター

■OLEDカスタムで目指したもの

  • Keyballシリーズのように機能ONで白塗りにする。

  • レイヤ番号を大きく表示し、レイヤ毎の機能概要を表示。

  • レイヤ状態を表すインジゲータを追加。

  • スレーブ側のめんたこさんをマスタ側に召喚する。

■初期からのカスタマイズ履歴

以下は、カスタム初期から現在に至るまでの移り変わりです。最初は罫線を入れるだけのシンプルな変更だったのですが、最終的には縦表示・横表示の切り替えが可能になり、さらにインターフェースとして少しエンターテインメント的な要素も取り入れるようになりました。
ただし、設計書すら起こさず、その場のノリで開発を進めていったので、振り返ると「仕事では絶対にやらないな」と感じる部分も多々あります。

最も初期のOLEDカスタム(当初は横表示のみ)
次に簡易インジゲータ、カーソル非線形機能表示が増えた(当初は横表示のみ)
Keyballシリーズのように機能別に有効時に白塗りにする試み(当初は横表示のみ)
一通り表示されるようになった(当初は横表示のみ)
縦表示の完成版。各凡例はドット打ちにて自作。

■OLED画面構成説明

マスタ側、スレーブ側の画面構成を説明しておきます。結局新規のグラフィック部分はドット絵を自分で描きました。結構楽しかった。

縦表示におけるマスタ側OLEDの表示内容
横表示におけるマスタ側OLEDの表示内容
スレーブ側OLEDの表示内容

■セパレータ(区切り線)の機能

セパレータには、次の2つの追加機能を持たせています。

①打鍵数に応じためんたこさんの表示
打鍵数に応じてめんたこさんが召喚される仕組みを実装しました。具体的には、3,000打鍵ごとにめんたこさんが1匹召喚され、最大で30,000打鍵、めんたこさん10匹まで召喚可能です。

1日で30,000打鍵を超えることはあまりないかなという想定ですが、文章を書く量が多い人は簡単に越えるかもしれません。この場合、めんたこさんが10匹以上召喚されることはありません。また、レイヤ移動があった場合は、レイヤに関する表示を優先します。

3000打鍵毎にめんたこさん召喚

②現在レイヤに応じたステータスバーの表示
現在のレイヤ状況を、単なるレイヤ番号だけではなく視覚的に表現するために、ステータスバーを実装しました。具体的には、レイヤ番号の数だけ矢印(>)が増加し、最大レイヤ時のみ、余ったセパレータ部分(-)がめんたこさんに置き換わります。この仕様には、ちょっとした遊び心を込めています。

現在レイヤに応じたステータスバー表示

④カスタムキー追加(①~③と重複)

スクロールスナップ機能、カーソル速度非線形機能、OLED表示切替のため、カスタムキーを追加しています。また、CPI(カーソル速度)についても調整しました。デフォルトの100単位ではステップ間隔が広すぎると感じたため、10刻みで制御できるキーを新たに追加しています。これにより、より細やかなカーソル速度の調整が可能になり、操作性が向上したと思います。

魔改造ファームウェアのカスタムキー実装内容
vialにおけるカスタムキー設定画面

⑤強制スクロール有効仕様の廃止

デフォルトでは、レイヤ2にシフトした際、トラックボール制御が強制的にスクロール動作に固定される仕様になっています。しかし、私はスクロールを以下の方法で制御しているため、この仕様は不要と感じ、削除しました。

  • ロータリーエンコーダにスクロールを割り当て

  • カスタムキー「SCRL_MO」(割り当てキー押下時のみスクロールモードになる)を使用

  • コンボ機能を使用して、「j」+「k」+「l」に「SCRL_MO」を割り当て

このように特定のレイヤでの強制スクロール化は、私の運用においては邪魔でしかなかったため、不要な機能として取り除きました。

⑥AML時のスクロール機能改善

自動マウスレイヤー機能(通称AML)は、トラックボールの移動量が一定以上蓄積した際に設定したレイヤへ自動遷移する機能です。このAML中にスクロールモードにカスタムキー「SCRL_MO(割り当てキー押下寺中のみスクロールモードになる)」にてスクロールモードにすると、以下の問題が発生していました。

  • AMLの有効期限を超過すると、スクロールモード中にもかかわらず、デフォルトレイヤに戻ってしまう。

  • スクロールモードの解除ができなくなるなど、動作がおかしくなる。

このため、AML中にスクロールモードが発動した場合には、AMLの有効期限を超過してもAMLを解除しない仕様に変更しました。この改善により、AMLとスクロールモードの併用時の動作が安定し、より使いやすくなりました。
ただ、この機能は非常に便利ですが、マウスキー割り当てキーを押下しようとした際にディフォルトレイヤに戻っていることが多く私は少し使いずらいと感じたため、現状はあまり使用せずマウスレイヤに手動遷移するか、コンボ機能でディフォルトレイヤにマウスボタンを適用するようにしています。

⑦Vial対応

mtkさんは、キーマッピングを簡単にカスタマイズできるGUIツールであるRemapに対応しています。Remapは非常に便利なツールですが、タップダンスやコンボの設定機能はないため、カスタマイズ性に劣っています。これらの理由から、カスタマイズ性を向上させるため、最近の自作キーボードで標準となりつつあるVialに対応させました。Vial対応により、より高度で柔軟なカスタマイズが可能になり、キーボードの操作性が大幅に向上しました。

(出典)https://github.com/mentako-ya/mtk64erp?tab=readme-ov-file

■Vialのアプリについて

Vialにはブラウザ版デスクトップ版の2つのアプリが提供されています。ブラウザ版はRemapと同様、ブラウザがあれば簡単にキーマップ変更が可能である一方、Remapでは実装されている設定を保存、読み込みができないという致命的欠陥があります。一方デスクトップ版ではRemapよりも手間はかかりますが可能になっており、長期的にはデスクトップ版の利用をお勧めします。

  1. ブラウザ版
    ・Remapと同様、ブラウザさえあれば簡単にキーマッピング変更が可能。
    ・設定の保存や読み込みができないという致命的な欠点がある。

  2. デスクトップ版
    ・ブラウザ版と同じ機能を有する。
    ・Remapよりも操作に手間がかかるが、設定の保存や読み込みが可能。

Vial(ブラウザ版)の画面
Vial(デスクトップ版)の画面

Vialの使い方はサリチル酸さんが素晴らしい記事を残してくれているので、そちらを参照してください。

このツールの何が素晴らしいかと言うと、上記で述べたように、Remapではソースコードを直接編集するしかなかった以下の機能が、ツール画面上で自由に設定可能になった点です。

  • タップダンス
     1つのキーに「タップ」「ホールド」「ダブルタップ」
     「タップ+ホールド」の4つの動作を割り当てる機能。

  • コンボ
     複数のキーを同時押しして特定の動作を発動する機能。

これが非常に素晴らしいんです!たとえばマウス操作。マウス操作においては、自動マウスレイヤー機能(AML)が提供されていますが、AMLには以下のような問題がありました。

  • クリックしようとした際にAMLが解除されていて、誤って「j」キーが押されてしまう事故が何度も発生。

  • 上記のため任意でマウスレイヤーに遷移する操作をしているが、正直なところ面倒。

この問題を解決するために、コンボ機能を活用しました。以下の設定を行うことで、より快適な操作を実現しました。

  • 「j」+「k」で左マウスクリックを発動
      この設定により、デフォルトレイヤに常にマウスキーが存在する
      状態を作った。

  • 「j」+「k」+「l」に「SCRL_MO」を割り当て
      押下中のみスクロールモードに遷移できるようにし、
      スクロール操作もデフォルトレイヤで完結するようにした。

これらの設定によって、クリック操作やスクロール操作をよりスムーズに行えるようになり、作業効率が飛躍的に向上しました。特に、頻繁にマウス操作を行う環境では非常に快適です。

「j」+「k」に左マウスクリックを割り当て
「j」+「k」+「l」に「SCRL_MO」を割り当て

■タップダンスの活用

タップダンス機能は発想次第でさまざまな活用が可能です。私もいろいろな使い方を試していますが、ここではレイヤ遷移に使用したケースを紹介します。
通常、レイヤ遷移には以下のようなキーを使用することが一般的です。

  • MO(X):キーを押している間だけ指定のレイヤに移動。

  • LT(X):短く単押しで通常のキーコードを出力、長押しでレイヤに移動。

  • TG(X):トグルキーとして機能し、次に同じキーを押すまで指定のレイヤに留まる。

これらのキーをバラバラの物理キーに割り当てると、以下の問題が発生します。

  • 必要な物理キーが多くなる。

  • 各キーの役割が複雑になり、把握しづらくなる。

そこで、タップダンス機能を活用しました。以下の設定を行うことで、効率的かつ直感的なレイヤ遷移が可能になりました。この設定を8つあるサムズキーのいずれかに割り当てることで、そのサムズキーが複数のレイヤ移動に対応したスペシャルキーに変身します。レイヤ一時切替時にはターンで押し込み、レイヤ切り替え時にはタ、ターンです。素晴らしい!

タップダンスキーの設定例
・タップ時
:通常キー(例:文字変換キー)
ホールド時:MO(X)(押している間だけレイヤ遷移)
タップ+ホールド時:TG(X)(トグルキーとしてレイヤ切り替え)

この組み合わせにより、非常に直感的でシンプルな操作が実現しました。1つのキーで複数の動作をカバーできるため、キー配置の効率化と利便性の向上に大きく貢献します。

タップダンスにレイヤ移動を割り当てた例
ベースレイヤにおける割り当て例

■キーマッピングの保存・読み込み(デスクトップ版)

デスクトップ版Vialでは、キーマッピングの保存や読み込みがメニュー「File」から可能です。この機能により、以下の設定内容をすべて保存・読み込みできます。

  • キーマップ

  • タップダンス

  • コンボ

  • マクロ

  • LED設定

  • 動作設定

これにより、Remapではオンラインに保存されていた定義が、ローカルに保存される形になります。つまり、設定を自分のPCにしっかり管理できるようになったということです。この点が、デスクトップ版Vialの大きな魅力の一つだとも言えますし、管理が面倒になったとも言えます。

Vialにおけるキーマップ保存/読み込み機能
キーマップファイル(.vil)を出力/読み込みする

■(余談)VIA Custom UI for Vial

余談ですが、せきごんさん(@_gonnocが開発されている「VIA Custom UI for Vial」というWebアプリがあります。このアプリはVial互換で、少し触ってみたところ、以下のようにRemapとVialの良い点がミックスされた仕様になっていました。

  • Remapのような手軽さ

  • Vialのような高度なカスタマイズ性

これが完成すれば、将来的には非常に魅力的な選択肢になるかもしれません。ただし、現在はまだ開発中とのことなので、しばらくは様子見としています。


⑧マクロ上限数拡張

デフォルトでは、マクロの登録数は15件が上限となっています。しかし、私は以下の目的でマクロを多用しており、この上限では全く足りませんでした。

  • 定型文字列の登録

  • 業務効率化のためのツール操作(例:Excel、Teams、Outlookなどの定型操作)

これらをすべてマクロに登録していると、15件などあっという間に埋まってしまいます。そのため、128件まで上限を拡張しました(この数値に特に深い意味はありません)。この変更により、さらに多くの操作をマクロで自動化できるようになり、作業効率が大幅に向上したと思います。

マクロ128件もあると圧巻の一言。
ただどのマクロが何の機能登録を割り当てているか分かり辛い。

ただ、マクロ数が多すぎると、正直手に余るというか、管理が難しくなります。そのため、現在はExcelなどを使い、各マクロが何を登録しているのかを一覧化して管理しています。

現状では約40件ほどしか使用していませんが、余裕がある状態を保てるのは良いことだと感じています。将来的に必要な操作が増えた際にも、登録数を気にせずに対応できるのは非常に便利です。

マクロ覚書の一例

⑨スクロール方向の調整

今となっては記憶が曖昧ですが、初期ファームウェアでは水平スクロールの方向が私の感覚と逆になっていたため、これを修正して逆転させたと思います。この調整により、直感的に操作できるようになり、スクロールの使い勝手が大幅に向上しました。

(4) 魔改造ファームウェア

以下に、コンパイル済みのファームウェアをダウンロードできるリンクを準備しました。興味を持った方は、ぜひ使ってみてください。ただし、完全な動作を保証するものではありませんので、自己責任でのご利用をお願いします。


■レイヤ概要について

OLEDに表示するレイヤ概要は現時点では以下の通りです。もしこのレイヤ構成を自分の環境に合わせて変更したい場合は、お気軽にご連絡ください(X:くま534)。ご希望の内容に基づいてファームウェアを調整し、お渡しすることも可能です。なお、レイヤ概要は最大5文字の英数字で、それを超える場合は無視します。

  • レイヤ0:Deflt デフォルトの基本操作用レイヤ

  • レイヤ1:Shift シフトキーを押下した状態を想定したレイヤ。

  • レイヤ2:Mails Outlookを効率的に操作するためのレイヤ。

  • レイヤ3:Numbr 数字キー専用のレイヤ。

  • レイヤ4:Excel Excelの操作を効率化するためのレイヤ。

  • レイヤ5:Teams Teamsの操作を効率化するためのレイヤ。

  • レイヤ6:Setup キーボード設計や設定用のレイヤ。

  • レイヤ7:Mouse マウス操作専用のレイヤ。

レイヤ概要の表示部位(縦表示)

■ファームウェア適用方法

コンパイル済みファームウェア(拡張子 .uf2)を適用する場合、作業は簡単です。以下に、魔改造版ファームウェアの導入手順を説明します。

  1. Vial(デスクトップ版)をインストールする。
    ダウンロードは下記から取得。
    https://get.vial.today/download/

  2. 現在のキーマッピングをバックアップする。ディフォルトファームを使用しているのであれば、魔改造版へRemap定義を引き継ぐことはできません。スナップショットを取るか、手書きでメモを取るなどしてバックアップを残してください。

  3. 魔改造版ファームウェアをダウンロードする。

  4. マスタ側にファームウェア適用
    1. USB-Cケーブルをマスター側キーボードに接続。
    2.OLED横のリセットスイッチをダブルクリック。
    3.PC上にファイルが2つ格納されたウィンドウが表示される。
    4.ウィンドウ内に魔改造版ファームウェアをコピー&ペースト。
    5.キーボードが再起動。

  5. Vial(デスクトップ版)の起動とキーマッピング
    1.キーボードが再起動したら、Vial(デスクトップ版)を起動。
    2.必要なキーマッピングを行い、レイアウト定義ファイルを保存

  6. スレーブ側にファームウェア適用
    1. USB-Cケーブルをマスター側キーボードに接続
    2.OLED横のリセットスイッチをダブルクリック。
    3.PC上にファイルが2つ格納されたウィンドウが表示される。
    4.ウィンドウ内に魔改造版ファームウェアをコピー&ペースト。
    5.キーボードが再起動。

  7. Vial(デスクトップ版)の起動とキーマッピング
    1.キーボードが再起動したら、Vial(デスクトップ版)を起動。
    2.保存したレイアウト定義ファイルを読み込んで設定復元。

リセットスイッチをダブルクリック後に表示されるウィンドウ


(5) 現在わかっている不具合っぽいこと

頻発する不具合については解消したつもりですが、まれに発生する事象や、私が使用していない機能に関連する不具合については、原因特定や対応を見送っています。以下に、現在わかっている不具合や未対応の事象を記載します。

  1. Remapが使用不可
    事象:Remapでキーマッピングを行うことができません。
    推測:Vialに適用させる際に、Remapで動作しない変更を加えてしまった可能性がありますが、詳細な原因は不明です。
    対応:私はVialしか使用しないため、原因特定は諦めました。

  2. カーソル速度非線形機能が左右のマスタ設定で異なる挙動
    事象:左側をマスタ、右側(トラックボールあり)をスレーブとした場合、カーソル速度非線形機能を有効にすると、右側をマスタとした場合に比べカーソル速度が遅くなります。
    推測:トラックボールセンサ有無でCPI値の挙動が変わるかも?
    対応:CPI値を調整することで問題を回避可能です。私は右側をマスタとしての運用しかしないため、原因特定は行っていません。

  3. ファームウェア導入初回時のパラメータ初期化問題
    事象
    :初回ファームウェア導入時、各種パラメータが0に初期化されることで、トラックボールを動かしてもカーソルが動かなくなることがあります。
    発生状況:私の場合、スレーブ側にファームウェアを適用した初回で発生しましたが、それ以降は発生していません。
    対応:0となったパラメータをカスタムキー割り当てにより調整すれば解決します。

  4. 左側キーボードの左最上部キー(R0C1)の初期化問題
    事象:左側の左最上部のキー(R0C1)がまれに初期化されます。
    詳細:私はこのキーに「ESC」を割り当てていますが、何も設定されていない状態になることがあります。Vialで確認すると、キーの設定が削除されています。
    原因:不明。
    対応:Vialにて保存したレイアウト定義ファイルより復旧する。      

(6) 今後やりたいこと

ファームウェアの改造について、今後やりたいことはいくつかあります。ケースなどの魔改造が一段落したら、再び着手するかもしれません。

  1. ロータリーエンコーダの同時実行制御
    mtkさんには近接して2つのロータリーエンコーダが配置されており、回転負荷も低いので、2つを同時制御する仕組みを作れるのではないかと考えています。具体的には、ロータリーエンコーダをそれぞれA、Bと呼称すると、以下の4つの新パターンを登録できる可能性があります。

    ①A右回転、B右回転
    ②A右回転、B左回転
    ③A左回転、B右回転
    ④A左回転、B左回転

    もちろん「レイヤを切り替えて対応すればいい」という冷静な考えもあるのですが、レイヤ切り替えなしで実現したい場面もあるのではないでしょうか。これを試してみたいと思っています。

  2. レイヤ概要の制御
    現在、レイヤ概要はファームウェアのソースコードに直接書き込んでいます。しかし、これをマクロに登録した文字列から参照できるようにすれば、各ユーザーがソースを修正する必要がなくなるのではと考えています。
    具体的には、Vialから設定したM0~M7の文字列を読み取り、それをOLEDに表示する仕組みを実装したいと思っています。この変更により、ユーザーごとに異なるレイヤ設定を柔軟に反映できるようになります。

(7) 最後に

今回、ブログを書くのは初めての経験でした。普段、仕事で文章を書くことは日常的にしているため、「思っていることを明確に文章に起こすのはそれほど大変ではないだろう」と思っていましたが、いざブログを書いてみると意外と難しく、しかも文章が適当になりがちなことに気づきました。

特に、仕事での文章作成は「義務感」があるので自然と継続できますが、プライベートでブログを書くとなると、自分でモチベーションを見つけないと続けるのが難しいことを実感しました。書く作業そのものは楽しいものの、テーマを決めたり、読んでくれる人のことを考えたり、文章を整えるのに思った以上にエネルギーを使います。

今回のブログ執筆を通じて、ブログを継続している方々の努力や情熱を改めて「本当にすごいな」と感じました。また、自分が普段仕事で書いている文章と、こうしたプライベートな表現の違いにも気づき、新鮮な体験となりました。この経験を機に、自分も少しずつでもブログを書くことを続けてみたいと思います。

いいなと思ったら応援しよう!