CatHand Blog

アプリ開発やMac弄り

Keyboard Quantizer

Keyboard Quantizer を買いました。

Keyboard Quantizer (未組立版)shop.yushakobo.jp

Keyboard Quantizer とは何かというと、一般のUSBキーボードとPCのUSBポートの間に挟むハードウェアで、QMKでキーマップを定義することができるものです。

届きました。

f:id:cathandnya:20210814184503j:plain

f:id:cathandnya:20210816130102j:plain

組み立て

未組み立て品なので組み立てます。

f:id:cathandnya:20210816130108j:plain

といってもUSBコネクタをハンダ付するだけです。ケースも嵌るところにしかはまらないので、迷うことはないと思います。

f:id:cathandnya:20210816130114j:plain

できました。

準備

ビルドガイドに従ってファームウェアを書き込みます。届いたのはrev.3のようです。

github.com

基本的にこの手順に従ってやっていけば問題ないですが、qmk_quantizer で make するときに avr-gcc が無いと言われたのでインストールしました。

github.com

接続するキーボードは Varmilo VA73M です。なんだかんだで結局これをメインで使っています。Keyboard Quantizer をかますことで Karabinar-Elements を使わなくてよくなることを期待しています。

www.cathand.app

VIA

VIA は QMK のキーボードのキーマップを編集して即時反映できるやつです。

caniusevia.com

Keyboard Quantizer はVIAに対応しているらしいので、VIAでやってみました。

以下のリポジトリに Keyboard Quantizer の QMK のキーマップがあります。

github.com

この中から、VIA対応の keymaps/via を試してみましたが、このキーマップでは Varmilo VA73M はキー入力を受け付けませんでした。

そこで、 keymap/via_noled にしたところ、キー入力できるようになり、VIA上でキーの編集も行えることを確認しました。

ですが以下のような問題があり、VIAを使うのは断念しました。

  • VIAでMacのコマンドキーの設定方法がわからない
    • LWinとRWinは英数/かなに当たっていた
  • キー入力時にチャタリングのような現象がおきる(致命的)

どちらも解決できそうな問題のような気もするのですが、VIAにこだわっているわけではないのでQMKでやることにします。

QMK

先ほどのリポジトリの中から fixed のキーマップをコピーしてフォルダ名を varmilo 等とします。最初、 bootloader をコピーして使っていたのですが、それだと入力遅延が起きたので(あたりまえ)、fixed を使うようにします。私の環境では default は動作しませんでした。

github.com

あとは keymap.c を書き換えるだけです。今回は

  • スペースバー両隣に英数かな
  • その隣にコマンドキー
  • その隣にオプションキー

という一般的な日本語Mac配列と、

  • CtrlとCapsLock入れ替え

に加え、右上のキーをメディアキーとして使っていたので、

  • Insert -> Volume Up
  • Delete -> Volume Down
  • PageUp -> LaunchPad
  • PageDown -> Mute

としました。

いちおうソースコード貼っておきます。LaunchPadは定義が無いので追加しました。

gist.github.com

まとめ

Keyboard Quantizer を使うことで Karabinar-Elements に依存せずにキーマップを変更することができるようになりました。この記事は Keyboard Quantizer を経由した Varmilo VA73M で打っています。

入力遅延等も今の所それほど感じられません。とはいえ私はキーボードでゲーム等をするわけでもなくそれほど遅延に厳しくないので、もっとシビアな用途だと気になるかもしれません。

Mac で対応していないキーボードを使う場合、 Karabinar-Elements ではなく Keyboard Quantizer という選択肢もありなのではないでしょうか。