レイヤーベースのキーマッピングエンジン KeyZen
(github.com/Seungchan0325)説明
KeyZen は、高速で省リソースなレイヤーベースのキーリマッピングエンジンです。
- スタックベースのキーボードレイヤーを使用します。
- ログイン直後に実行されるレベルの高速なログイン時実行をサポートします。
- YAML ファイルを通じて、どのようにリマッピングするかを設定できます。
詳しい設定方法は、設定ガイドで確認できます。
KeyZen を使うとよい場面
キーボードを使うとき、方向キーが F や J のようなホームポジションのキーから遠く、流れが途切れてしまう問題があるなら、Capslock + H, J, K, L を Left, Down, Up, Right にマッピングしてみてください。
前の単語 (Ctrl + Left)、次の単語 (Ctrl + Right)、文頭 (Home)、文末 (End) をそれぞれ W, E, P, O にマッピングしてみてください。マウスに手を伸ばす場面が減ります。
作った理由
capslock が使用頻度に比べてあまりにも便利な位置にあることには、誰もが共感されるでしょう。そこで capslock キーとの組み合わせで vim に似た動作を実現するため、いろいろな方法を探しました。もともとはそのために autohotkey を使っていましたが、いくつか問題点がありました。
- capslock キーの状態が正常に連動しない問題がありました。コードの書き方によって変わるかもしれませんが、私の場合は capslock キーを押していないのに押したと認識され、capslock を連打しなければならない状況が何度もありました。
- ログイン時実行をスタートアップフォルダに置く方式で使っていましたが、この場合はコンピュータの起動から数分経たないと実行されない問題がありました。
代替案として kanata のようなプロジェクトも探しましたが、kanata は機能があまりにも多く、CPU リソースを思った以上に消費し、ログイン時実行もサポートしていませんでした。(autohotkey と同じようにスタートアップフォルダに置くことはできるかもしれませんが、同じ問題が発生します。)
また、PowerToys の Keyboard Manager では、Capslock + H = Left Arrow のような場合に、Capslock を入力のたびに毎回いっしょに押さなければならない問題がありました。
そこで、省リソース、簡単な設定、高速なログイン時実行を目的として KeyZen を作ることになりました。
技術的な話
コードの大部分は Codex を使って書かれました。10日ほど事前調査をしたあと Codex で開発を始めたのですが、1日で終わって驚きました。
Rust で実装されており、Windows API を通じてキーボードフックをインストールします。ユーザーレベルでキーボードフックをインストールするか、それともドライバー経由で実装するか悩みましたが、キーボードフックの導入を採用しました。キーボードフックはタスクマネージャーのようなプログラムでは動作しない問題がありますが、ドライバー側に手を入れるのは少し危険かもしれないと考えました。
まだコメントはありません。