OpenInputBridge

kanataをOpenInputBridgeのデバイスドライバで試してみる

0. 前提条件

Interception互換のOpenInputBridgeがインストールされている環境

1. ファイルのダウンロード

    https://github.com/jtroo/kanata/releases/tag/v1.12.0 から、以下の二つのファイルをダウンロードする。なお、お使いのアンチウィルスソフトによっては、このダウンロードだけで、検知してダウンロードに失敗するので要注意。

    https://github.com/jtroo/kanata/releases/download/v1.12.0/kanata.kbd
    https://github.com/jtroo/kanata/releases/download/v1.12.0/windows-binaries-x64.zip

    2. zipファイルを開いて、ファイルを配置する。

      kanataのリリースのページでは、以下のようにしろとあるので、フォルダを作ってファイルを置く。

      C:\Users\my_user\Documents
      kanata_windows_wintercept_x64.exe
      kanata.kbd
      interception.dll

      なお、上記kanata_windows_wintercept_x64.exeとは、実際のファイル名ではなく、zipファイルの中にinterception対応版が4種類あり、GUI版とCLI版と、それぞれ追加のコマンド実行可能版がある。

      kanata_windows_gui_wintercept_x64.exe
      kanata_windows_gui_wintercept_cmd_allowed_x64.exe
      kanata_windows_tty_wintercept_x64.exe
      kanata_windows_tty_wintercept_cmd_allowed_x64.exe

      とりあえず、kanata_windows_tty_wintercept_x64.exeと、kanata_windows_gui_wintercept_x64.exeを動作させることとする。

      なお、interception.dllは、OpenInputBridgeでは配布していないので

      https://github.com/Applet-LLC/OpenInputBridge のソースコードツリーをダウンロードして、自分でbuildして、以下のフォルダのものを得るか、あるいは
      \tests\upstream_lib\x64\Release\interception.dll

      以下のサイトから
      https://github.com/oblitum/Interception/releases/tag/v1.0.1

      https://github.com/oblitum/Interception/releases/download/v1.0.1/Interception.zip
      をダウンロードして、zipファイルの中から \Interception\library\x64\interception.dll を取り出す必要がある。

      3. CLI版 kanata_windows_tty_wintercept_x64.exe を実行してみる。

      インストール先のフォルダにてPowerShellを開いて、実行してみた。

      PS C:\Users\applet\kanata> .\kanata_windows_tty_wintercept_x64.exe
      13:57:29.6960 [INFO] kanata v1.12.0 starting
      13:57:29.6964 [INFO] using the Interception driver for keyboard IO
      13:57:29.8349 [INFO] process unmapped keys: true
      13:57:29.8363 [INFO] NOTE: kanata was compiled to never allow cmd
      13:57:29.8378 [INFO] Env var 'LAPTOP' is not set, skipping associated aliases
      13:57:29.8384 [INFO] Env var 'LAPTOP' is not set, skipping associated aliases
      13:57:29.8452 [INFO] config file is valid
      13:57:29.8466 [INFO] Asking Windows to improve timer precision
      13:57:29.8471 [INFO] Asking Windows to increase process priority
      13:57:29.8477 [INFO] Sleeping for 2s. Please release all keys and don't press additional ones. Run kanata with --help to see how understand more and how to disable this sleep.
      13:57:31.8484 [INFO] entering the processing loop
      13:57:31.8491 [INFO] Init: catching only releases and sending immediately
      13:57:32.6491 [INFO] Starting kanata proper
      13:57:32.6494 [INFO] You may forcefully exit kanata by pressing lctl+spc+esc at any time. These keys refer to defsrc input, meaning BEFORE kanata remaps keys.

      LCtrl-Space-Escで止まると書いてあるので押してみる。

      14:01:03.3932 [INFO] pressed LControl+Space+Escape, exiting
      PS C:\Users\applet\kanata>

      設定ファイルであるkanata.kbdに何が定義されているか不明なので
      どのようにキーリマップされているか不明だが、正常に動いている様子。
       

      4. GUI版 kanata_windows_gui_wintercept_x64.exe を試す。

      エクスプローラーでダブルクリックでもよいのだろうが、出力があると思い、PoweShellから試してみた。

      PS C:\Users\applet\kanata> .\kanata_windows_gui_wintercept_x64.exe
      PS C:\Users\applet\kanata> 14:03:07.6693 [INFO] kanata v1.12.0 starting
      14:03:07.6712 [INFO] using the Interception driver for keyboard IO
      14:03:07.6782 [INFO] process unmapped keys: true
      14:03:07.6793 [INFO] NOTE: kanata was compiled to never allow cmd
      14:03:07.6805 [INFO] Env var 'LAPTOP' is not set, skipping associated aliases
      14:03:07.6809 [INFO] Env var 'LAPTOP' is not set, skipping associated aliases
      14:03:07.6847 [INFO] config file is valid
      14:03:07.6854 [INFO] Asking Windows to improve timer precision
      14:03:07.6858 [INFO] Asking Windows to increase process priority
      14:03:07.6864 [INFO] Sleeping for 2s. Please release all keys and don't press additional ones. Run kanata with --help to see how understand more and how to disable this sleep.
      14:03:09.9119 [INFO] entering the processing loop
      14:03:09.9127 [INFO] Init: catching only releases and sending immediately
      14:03:10.6910 [INFO] Starting kanata proper
      14:03:10.6914 [INFO] You may forcefully exit kanata by pressing lctl+spc+esc at any time. These keys refer to defsrc input, meaning BEFORE kanata remaps keys.

      タスクトレイに、Kanataのアイコンがあるので、Reloadを試すと、起動した際のPowerShellコンソールでは以下が表示された。

      (deflayer qwerty
      @grl 1 2 3 4 5 6 7 8 9 0 - = bspc
      tab q w e r t y u i o p [ ]
      caps a s d f g h j k l ; ' ret
      lsft z x c v b n m , . / rsft
      lctl lmet lalt spc ralt rmet rctl
      )
      14:04:08.7654 [INFO] no icon found, using default for config+layer = kanata.kbd
      🗍: qwerty

      KanataのアイコンからExitを試すと、タスクトレイからは居なくなり、以下が表示された。

      14:06:17.3252 [INFO] process unmapped keys: true
      14:06:17.3261 [INFO] NOTE: kanata was compiled to never allow cmd
      14:06:17.3268 [INFO] Env var 'LAPTOP' is not set, skipping associated aliases
      14:06:17.3274 [INFO] Env var 'LAPTOP' is not set, skipping associated aliases
      14:06:17.3309 [INFO] config file is valid

      ただし、コンソールにプロンプトは戻ってはこない。LCtrl-Space-Esc で終了させる。

      起動直後に、OIDのトースト通知が2回表示される。そのようなつくりなのだろうとは思う。

      日本語キーボードだったので、知らないキーはエラーとなることが分かった。

      Yenマークを押すと
      14:20:35.7030 [ERROR] Trying to send unmapped oscode ‘KEY_YEN’, sending esc instead
      とエラーが表示される。

      右下のYenマークも同様
      14:22:02.4272 [ERROR] Trying to send unmapped oscode ‘KEY_RO’, sending esc instead

      カタカナキーも同様
      14:23:38.3352 [ERROR] Trying to send unmapped oscode ‘KEY_KATAKANA’, sending esc instead

      5. TapHoldとRemap動作確認

      現在の設定ファイルで何ができるか分からないのでClaude Codeで見てもらった。


      ワークフォルダは、kanataをインストールしたフォルダです。
      現在実行中で、設定ファイルはkanata.kbdを読み取っています。拡張子は kbdですが中身は、テキストファイルです。


      kanataは以下で開発されています。
      https://github.com/jtroo/kanata

      現在の設定ファイルで、キーリマップ動作が確認出来る設定があるなら教えてください。
      入力して試してみたいと思います。

      kanataは以下で開発されています。
      https://github.com/jtroo/kanata

      Globpattern: “*.kbd”
      Found 1 file
      Read c:\Users\applet\kanata\kanata.kbd
      現在の kanata.kbd はkanataの全機能を見せるサンプルなので、実際に手元で試せる分かりやすいリマップがいくつかあります。起動時は qwerty レイヤーがベースになっているので、まずはそこから試すのがおすすめです。

      すぐ試せる基本の動き
      バッククォート ` キー(@grl):

      サッと叩く → 通常通り「」が入力される 200ms以上押しっぱなし → layers レイヤーに切り替わる(何か他のキーを押すまで見た目の変化はなし) を押しながら「2」を押す(@dvk → dvorakレイアウトに切り替え):

      ベースレイアウトがDvorakに変わります。物理的な「q」キーを押すと「’」が出るなど、キー配列がガラッと変わるので違いが分かりやすいです。
      ` を押しながら「1」を押す(@qwr):

      qwertyレイアウトに戻ります。
      Dvorakレイアウトに切り替えた状態でさらに試せるもの
      Dvorakレイアウト中は左手側のキーが tap-hold のエイリアスになっていて、押しっぱなしで別レイヤーに入れます(定義箇所):

      キー タップ ホールド(200ms)
      a a numbers レイヤー(テンキー・Ctrl+Z等)
      o o arrows レイヤー(F1〜F12、矢印キー)
      e e chords レイヤー(絵文字・マクロ)
      u u misc レイヤー(caps-word, unicode, tap-dance等)
      i i fakekeys レイヤー
      . . mouse レイヤー(マウス移動・ホイール)
      caps CapsLock 左Ctrl(@cap, ホームロウモッズの例)
      おすすめの試し方の順番:

      を軽く叩いて「」が出ることを確認
      を押しながら2を押してDvorakに切り替え、物理qwerty配列とズレることを体感 Dvorak状態で「o」キーを長押し→矢印レイヤーに入り、h/j/k/lあたりで矢印キーとして動くのを確認 を押しながら1を押してqwertyに戻す
      まずは①〜③あたりから試してみると、tap-hold(タップとホールドで別動作)とレイヤー切り替えという、kanataの中心的な機能を体感できます。


      というご神託だったので、以下を試してみる。

      「’」「2」 を押して、dvorakに変えて、左上からキーを押すと以下となったので切り替わっている様子。

      1234567890@[]
      :,.pyfgcrl/^
      aoeuidhtns-
      ;qjkxbmwvz

      「’」「1」を押して、Layerを切り替え、Dvorak配列に変ったことが確認できた。

      以上、kanataは、OpenInputBridgeデバイスドライバて動いていると言えると判断します。

      コメントを残す