ロータリーエンコーダーでModifier Keysを入力する方法
tap_code16()を使う
終わり。
だと昨日の自分が報われないので一応詳細。
以前作成した自作マクロパッドTONE/NOTEのキー配列を変えたかった。
前回の文章中でも書いているが右手にマウス、左手にマクロパッドだと右手でホイール操作ができるので、ロータリーエンコーダーにUP, DOWNを割り当てる必要がない。
なのでロータリーエンコーダーを現像モジュールでの画像送り(C+RIGHT, C+LEFT)にしたかったという話。
https://note.com/teru3900/n/nece6ff24fdeb
自分でキーボード作るときのためにもqmk_firmwareを使ったキーマップ作りを一からやっておきたかったので、最初からやった。
公式のドキュメントのどこを見てもテキストで一からキーマップを作るTutorialがない気がする。。
この記事を見つけてなかったらキツかった、、ありがとうございます。
msys2でqmk_firmwareに入りnew_keyboard.shでディレクトリ作る。Keyboard typeはPro Microならavrのままなのでなにも打たずEnter。
rules.mkを書き換える。
qmk_firmwareで作られたソースコードは何をするコマンドなのかがコメントでちゃんと書いてあって非常にわかりやすいと思います。
ロータリーエンコーダーを使う場合最終行のようにENCODER_ENABLEをyesにする。
config.hを書き換える。
TONE/NOTEはピン数が足りているのでマトリックスになっていない。配線は以下の画像の通り。
対応したピンがない場合NO_PINを入れるがその場合でもMATRIX_ROWSは1にする。ピン番号はデータシート参照。ENCODRES_PAD_A, Bを加える。RESOLUTIONはよくわからんが4を入れとけって書いてあった。
<project_name>.hを書き換える。
k00 ~ k07のように8つのキー番号を割り当てて、実際のキーボードの配列とキーマップの配列を対応させる。
今回はキーが列方向に分かれていないので単に1列に並べただけでよい。
エンコーダーはここでは指定しない。
ここでようやくキーマップを書き換える。
keymaps/defaultの中のkeymap.cを書き換える。defaultをコピーして新しいディレクトリ作っても良い。
初期設定でレイヤー分かれてたりマクロが入ってたりするが特に使わないので根こそぎ消す。
以下のようにキーマップを設定。これをmakeしてqmk_toolboxで書き込むとちゃんと左上からA, B, C, ...が打てる。
ロータリーエンコーダーを回すと時計回りで1が、反時計回りで2が入る。
index == 0の入力が効いているみたい。
ちゃんとできたので変更したいキーマップを入力する。
Lightroomで左上から拡大表示、グリッド表示、現像モジュールに移動、書き出し、現像設定をコピー、現像設定をペースト、フラグを立てる、フラグを消す
が、なんかエラー吐く、、、
切れてしまっていて見えないがロータリーエンコーダーの入力で'int'からuint8への変換がうまくいかないって言われる。
255超えてるから小さな数字にするよみたいなことも書いてある。
255とunit8から、uint16に変換すればいいんじゃね的なことを思いつきいろいろやるがうまくいかない、、、
、
、
、
公式のドキュメントを舐めるように見てたら見つけた。
ちゃんと動いた ^^)
この記事が気に入ったらサポートをしてみませんか?