見出し画像

ロータリーエンコーダーで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。

コメント 2020-05-12 210351


rules.mkを書き換える。
qmk_firmwareで作られたソースコードは何をするコマンドなのかがコメントでちゃんと書いてあって非常にわかりやすいと思います。
ロータリーエンコーダーを使う場合最終行のようにENCODER_ENABLEをyesにする。

画像2


config.hを書き換える。
TONE/NOTEはピン数が足りているのでマトリックスになっていない。配線は以下の画像の通り。

画像3

対応したピンがない場合NO_PINを入れるがその場合でもMATRIX_ROWSは1にする。ピン番号はデータシート参照。ENCODRES_PAD_A, Bを加える。RESOLUTIONはよくわからんが4を入れとけって書いてあった

コメント 2020-05-12 214641


<project_name>.hを書き換える。
k00 ~ k07のように8つのキー番号を割り当てて、実際のキーボードの配列とキーマップの配列を対応させる。

今回はキーが列方向に分かれていないので単に1列に並べただけでよい。
エンコーダーはここでは指定しない。

画像5


ここでようやくキーマップを書き換える。
keymaps/defaultの中のkeymap.cを書き換える。defaultをコピーして新しいディレクトリ作っても良い。

初期設定でレイヤー分かれてたりマクロが入ってたりするが特に使わないので根こそぎ消す。
以下のようにキーマップを設定。これをmakeしてqmk_toolboxで書き込むとちゃんと左上からA, B, C, ...が打てる。
ロータリーエンコーダーを回すと時計回りで1が、反時計回りで2が入る。
index == 0の入力が効いているみたい。

画像6


ちゃんとできたので変更したいキーマップを入力する。
Lightroomで左上から拡大表示、グリッド表示、現像モジュールに移動、書き出し、現像設定をコピー、現像設定をペースト、フラグを立てる、フラグを消す

画像7

が、なんかエラー吐く、、、

画像8

切れてしまっていて見えないがロータリーエンコーダーの入力で'int'からuint8への変換がうまくいかないって言われる。

255超えてるから小さな数字にするよみたいなことも書いてある。
255とunit8から、uint16に変換すればいいんじゃね的なことを思いつきいろいろやるがうまくいかない、、、


画像9

公式のドキュメントを舐めるように見てたら見つけた。


ちゃんと動いた ^^) 

keymap完成版


この記事が気に入ったらサポートをしてみませんか?