⛳
Keyballでコンボキーを使うようにする
経緯
現在keyball39を使用しているのだが、以下の理由から使用するのが億劫になっていた。(HHKBに逃げる)
- マウスクリックを通常配列のカンマとドットの箇所に設定している。
- 別レイヤーにカンマとドットを設定しているのだが、頻繁に使う箇所をレイヤー切り替えするのが億劫。
- 同じ理由で他の記号を入力する際に毎回面倒だと感じていた。
keyball44などのキー数を増やすことも考えたが、マウスクリックの課題が解消しない限りは意味ないよな。。と思ったので解決方法を探していたところ、コンボキーなるものを発見。
これで解決できるのでは?という期待から設定開始。
現在のレイヤー0
作業内容
大枠
こちらを参考にさせていただきました!ほぼこちらを実施するだけで大丈夫でした!
私がエンジニアということもあり、Gitなどの操作には慣れていたので壁はなかったが、非エンジニアの人は少し難しいと感じるかも(´・ω・`)
詰まった点
- 経緯の箇所にも記載したが、マウスクリックのキーコードを設定する必要があったのだが、qmk_firmwareのリポジトリのリポジトリの
key
を設定するとビルドがコケる-
keymap.c
に記述のあったKC_BTN1
などを記述することで解消
-
- 設定していざ動かしてみると、完全同時押しでないと判定されない。
- レイヤー切り替えキーでも使用しているキーをコンボキーで利用するようにしていた。レイヤーが優先されることもあり干渉している可能性?
- レイヤーで利用していない
key
に変更且つ、#define COMBO_TERM xxx
を追記することで動作確認できた。(コンボキーとしての振る舞いをコードで書けばいいのだが、今回は実施せず)
- 容量がカツカツなようなので、こちらの記事を参考に、いくつかバイト数を削減するような設定を追加。
終わりに
やりたことは実現できたので満足!これが出来るのであればkeyball39でいいのでは?という気がしてきたのでもう少し弄り倒そうと思う。
keyball44を検討していた理由の中に、頻繁に使う記号をレイヤー0に入れたいというのがあった。コンボを使うことでペインは解消できそう(沼からは出れそうにないねえ...)
レイヤー切り替えに違和感を覚える同志の役に立てば幸いです!
※今回修正したコードはこちらです。最低限のコンボ確認はできると思うのでよろしければ参考にしてください。
Discussion
コンボの配列にタップ時のキーコードを書いていたりしませんか?
レイヤ切り替えでも使用してるキーの場合、それも含めてのキーコード、例えば
LT(1,KC_SPC)
をコンボ定義のための配列に入れておくと機能します。最新のqmk_firmwareだとキーコードのマクロが変わっているので、keyball のファームが参照しているバージョンを参照するなら https://github.com/qmk/qmk_firmware/blob/0.22.14/docs/keycodes.md を見ると良いです。
コメントありがとうございます!助かります...!
試しに以下のようにしてみたのですがうまく動かずだったので、もう少し調査してみます!
const uint16_t PROGMEM my_comma[] = {LT(3, KC_M), KC_BTN1, COMBO_END};
どのリリースバージョンだろう...と思っていたところでした!ありがとうございます!