Keyballでコンボキーを使うようにする

に公開2

経緯

現在keyball39を使用しているのだが、以下の理由から使用するのが億劫になっていた。(HHKBに逃げる)

  • マウスクリックを通常配列のカンマとドットの箇所に設定している。
  • 別レイヤーにカンマとドットを設定しているのだが、頻繁に使う箇所をレイヤー切り替えするのが億劫。
  • 同じ理由で他の記号を入力する際に毎回面倒だと感じていた。

keyball44などのキー数を増やすことも考えたが、マウスクリックの課題が解消しない限りは意味ないよな。。と思ったので解決方法を探していたところ、コンボキーなるものを発見。
これで解決できるのでは?という期待から設定開始。

現在のレイヤー0

keymap

作業内容

大枠

こちらを参考にさせていただきました!ほぼこちらを実施するだけで大丈夫でした!
https://note.com/mamelog0103/n/n5a51fcd24f26

私がエンジニアということもあり、Gitなどの操作には慣れていたので壁はなかったが、非エンジニアの人は少し難しいと感じるかも(´・ω・`)

詰まった点

  • 経緯の箇所にも記載したが、マウスクリックのキーコードを設定する必要があったのだが、qmk_firmwareのリポジトリのリポジトリのkeyを設定するとビルドがコケる
    • keymap.cに記述のあったKC_BTN1などを記述することで解消
  • 設定していざ動かしてみると、完全同時押しでないと判定されない。
    • レイヤー切り替えキーでも使用しているキーをコンボキーで利用するようにしていた。レイヤーが優先されることもあり干渉している可能性?
    • レイヤーで利用していないkeyに変更且つ、#define COMBO_TERM xxxを追記することで動作確認できた。(コンボキーとしての振る舞いをコードで書けばいいのだが、今回は実施せず)
  • 容量がカツカツなようなので、こちらの記事を参考に、いくつかバイト数を削減するような設定を追加。

終わりに

やりたことは実現できたので満足!これが出来るのであればkeyball39でいいのでは?という気がしてきたのでもう少し弄り倒そうと思う。
keyball44を検討していた理由の中に、頻繁に使う記号をレイヤー0に入れたいというのがあった。コンボを使うことでペインは解消できそう(沼からは出れそうにないねえ...)

レイヤー切り替えに違和感を覚える同志の役に立てば幸いです!

※今回修正したコードはこちらです。最低限のコンボ確認はできると思うのでよろしければ参考にしてください。

https://github.com/purupurupu/keyball/tree/main/qmk_firmware/keyboards/keyball/keyball39/keymaps/via_custom

GitHubで編集を提案

Discussion

Yoichi NakayamaYoichi Nakayama

レイヤー切り替えキーでも使用しているキーをコンボキーで利用するようにしていた。レイヤーが優先されることもあり干渉している可能性?

コンボの配列にタップ時のキーコードを書いていたりしませんか?
レイヤ切り替えでも使用してるキーの場合、それも含めてのキーコード、例えば LT(1,KC_SPC) をコンボ定義のための配列に入れておくと機能します。

経緯の箇所にも記載したが、マウスクリックのキーコードを設定する必要があったのだが、qmk_firmwareのリポジトリのリポジトリのkeyを設定するとビルドがコケる

最新のqmk_firmwareだとキーコードのマクロが変わっているので、keyball のファームが参照しているバージョンを参照するなら https://github.com/qmk/qmk_firmware/blob/0.22.14/docs/keycodes.md を見ると良いです。

purupurupupurupurupu

コメントありがとうございます!助かります...!

例えば LT(1,KC_SPC) をコンボ定義のための配列に入れておく

試しに以下のようにしてみたのですがうまく動かずだったので、もう少し調査してみます!
const uint16_t PROGMEM my_comma[] = {LT(3, KC_M), KC_BTN1, COMBO_END};

keyball のファームが参照しているバージョンを参照するなら

どのリリースバージョンだろう...と思っていたところでした!ありがとうございます!