name's blog

こんにちは

keebwerk Nano.Sliderのファームウェア書き込み方法

keebwerkのNano.Sliderを買ったのですがファームウェアの書き込みで躓いたので自分なりに勉強をして書き込めるようになりました。

皆さんもできるようになってほしいので方法を書きます。

 

PC初心者の人でもわかるように書いているので読みにくいかもしれません。

それはごめんね。

 

 

動画で商品紹介・このファームウェア書き込み方法を紹介しているので

文章が嫌な人は動画を見てください。

youtu.be

 

 

著作権について

この記事ではjesusvallejo氏のソースコードを引用しています。

github.com

 

公式ソフトウェアのインストール

www.keebwerk.com

上のリンクは公式ページです。内容をしっかりと理解したい方は見ておきましょう。

とにかく使えるようにしたいって場合はこれから説明します。

 

github.com

こちらのリンクから「installer.msi」と「setup.exe」の二つをダウンロードしてください。

そして、「setup.exe」を実行します。Windows SmartScreenで警告が出るかもしれないです。詳細情報をクリックして実行を押します。

するとセットアップが始まるのでNextを押していきます。基本的に押していくだけで問題ないです。

 

インストールが完了したらスタートメニューの検索またはすべてのアプリから「Midi2Vol」を開きます。するとタスクバーにアイコンが表示されます。

Google Driveの右のやつ。

これを右クリックして「Volume Settings」を押します。

 

ちなみに「Mid2Vol Settings」の「Run on StartUp」と「Notify Status」のチェックを入れておくことをお勧めします。

 

設定を開くとこのような画面が出てきます。

「Default」をクリックしAddをクリックしてください。これでこの作業は終わりです。

まだ何もできないので本題のキーコンフィグを書き込んでいきます。

 

ファームウェア書き込み

この作業で必要となるものは

・USBケーブル(これはさっきの作業でも必要になる)

・六角レンチ 1.5mm(100均に売っています)

・やる気と根性(またはプログラミング能力)

(・場合によるけど16進数の知識)

です。

 

ファームウェアの作成

この手順は自分の好きなキーコンフィグにしたい場合見てください。

とりあえず動く状態にしたいってだけの人はファイルのダウンロードまででいいです。

 

github.com

こちらのサイトでqmk msysの最終バージョンをダウンロードします。

このlastedを押して「QMK_MSYS.exe」をクリック。するとダウンロードが始まります。

完了したらダブルクリックで開いてください。

おそらくこのような画面が出ると思います。詳細情報をクリックして実行してください。セットアップが始まるのでNextを押していってください。

インストールが終わったらwindowsキーを押してすべてのアプリまたは検索からQMK_MSYSを実行してください。すでに開かれている場合はいいです。

このようなウィンドウが出てきます。黒い画面恐怖症の人は頑張ってください。

qmk setup

このコマンドを入力してください。すると何かが始まりますが終わるまで待ちましょう。

 

終わったらエクスプローラーを開いて

C:\Users\ユーザー名\qmk_firmware\keyboards\keebwerk\nano_slider\keymaps\default

に移動してください。

わからない人はPC->ローカルディスク(C:)->ユーザー(Users)->自分のユーザー名->qmk_firmware->keyboards->keebwerk->nano_slider->keymaps->defaultと順番に開いていってください。

 

そして「keymap.c」を右クリックし「プログラムから開く」を押して「別のプログラムを選択」から「その他のアプリ」を押して「メモ帳」を押します。(要するに.cファイルをいじれればいい)

 

github.com

ここからkeymap.cを書き換えていくわけなのですが、私が書き換えたものを配布します。後述することとは全く関係ないコードも変更してありますので、ダウンロードしたほうがいいと思います。(効率的かつ使いやすくしました)

上のGitHubのリンクから「緑色のCode」のボタンを押して「Download ZIP」を押すとダウンロードできます。後述するHEXファイルも同梱してあるのでお使いください。

これから、自分の好きなようにコンフィグを変えていきたいって人は、このkeymap.cを

C:\Users\ユーザー名\qmk_firmware\keyboards\keebwerk\nano_slider\keymaps\default

ここのkeymap.cに置き換えてください。

 

ファイルの内容を大まかに解説

ここでこのファイルの内容を簡単に説明します。

ここで解説するファイルはGitHubで公開したファイルの解説ではありません。

書き換えようかとも思いましたが、めんどくさかったためこのままにします。

 

1

// Defines names for use in layer keycodes and the keymap

#define _MEDIA 0 // Controls Pause, Mute , Forward ...

#define _NAV 1 // Nav arrows, Enter, Space

#define _VOLUME 2 // Changes midi2vol int to interface with midi2vol program: Chrome Volume, General Volume

#define _DISCORD 3 // FXX unsused keys to interface with Discord: Mute , Silence

#define _LIGHTS 4 // Edits underglow and retroilumination

#define _EDIT 5 // Cut, Copy ,Paste

#define _RESET 6 // layer to set nano in bootloader mode

#define _TOOGLE 7 // momentary layer to switch between layers

ちょっと下にいったところにこのように書いてあると思います。

これはレイヤーの名前が決められています。もちろん自分の好きなように変更することも可能です。その場合は

#define _**** [0-9] //コメント

の「_****」を変えます。好きな名前でいいです。日本語はだめですよ

ここでつけた名前は後でもう一度入力するのでご了承を。

 

ここのレイヤーとは

これはゲーミングマウスなどのプロファイルのようなものです。

レイヤーがいくつかあってそれぞれにキーを割り当てられます。

 

 

2

その下の

// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes { // In order to add more volume controls, add here a custom keycode, ex: VLC
    DEFAULT= SAFE_RANGE,SPOTIFY,DISCORD,CHROME//,VLC
};

これは、MIDIスライダーで音量を変えるソフトウェアの名前です(どちらかというと名称かもしれません)

ここを変更するとあとにすることが増えるのとちょっと難しいかもしれないので苦手な人はそのままにすることをお勧めします

変更(追加)する場合はDEFAULT= SAFE_RANGE,SPOTIFY,DISCORD,CHROME//,VLCのようにコンマと名称を入力してください。

 

 

3

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* Base */
    [_MEDIA] = LAYOUT(
        MO(_TOOGLE),
        KC_MPLY, KC_MNXT,  KC_COPY,
        KC_MUTE,  KC_MPRV, KC_PASTE, KC_ENTER
    ),
------------------------------省略------------------------------ ) };

これはキーコンフィグの設定です。

3行目の[_MEDIA]が先ほど説明したレイヤーの名前です。

その下3行分がキーコンフィグとなっています。

構成的には

こんな感じになっています。キー配置と同じ感じに書かれていますね。

 

4

bool process_record_user(uint16_t keycode, keyrecord_t *record) { // In order to add more volume controls, add here code to detect custom keycode, ex: VLC
    switch (keycode) {
        case DEFAULT:
            if (record->event.pressed) {
                // when keycode DEFAULT is pressed
                midi2vol= 0x3E;
            } else {
                // when keycode DEFAULT is released
            }
            break;
------------------------------省略------------------------------
        /*
        case VLC:
            if (record->event.pressed) {
                // when keycode VLC is pressed
                midi2vol= 0x42;
            } else {
                
                // when keycode VLC is released
            }
            break;
        */
    }
    return true;
}

これはMIDIスライダーのソフトウェアごとの設定です。

switch文といってこういう場合にこーするっていうのを決めているプログラムです。

上から3行目のような「case ****:」が2で決めた名前にごとに設定されています。

要するに2で名前を変更(追加)した場合はここを変えなければなりません

 

追加したならば省略の下にある青文字のように追加します。

        case 追加した名前:
            if (record->event.pressed) {
                midi2vol= 0x--HEX--;
            } else {
            }
            break;

といっても難しいかもしれないので上の分をコピーして「break;」の分にカーソルを置きエンターを押してから貼り付けてください。

「追加した名前」は2で追加した名前と全く同じものを入力してください。

例えば、iTunesを追加したら「case iTunes:」のように。

上から3行目の「--HEX--」はほかで設定されていない16進数を入力します。多分何でもいいです。コメント文には

ほかのボリュームコントロールで使われていない16進数を入力してください。

って書いてありました。

順番に番号を増やしていくのが合理的だと思うので1だけ増やしてください

あっ、ちなみに--HEX--の文字を全部消してから書いてね。

0x--HEX-- -> 0x00 みたいに。

 

16進数を知らない人向け解説

16進数とは16個目で桁が上がる数のことです。私たちがいつも使用しているのは10進数であり、9の次の数に行くと一つ桁が上がって10になります。

16進数の表記方法として1から9までは10進数と同じですが10から15は

10:A , 11:B , 12:C , 13:D , 14:E , 15:F となります。(アルファベットってこと)

なので0x41まで使われていたら次は0x42となり

桁上りが発生する場合は0x4Fの次は0x50となります。

 

変更した場合は「case」の後を変更したものと全く同じ名前にしてください。

 

 

5

void slider(void) {
    if (divisor++) { // only run the slider function 1/256 times it's called
        return;
    }

    midi_send_cc(&midi_device, 2, midi2vol, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
}

void matrix_scan_user(void) {
    slider();
}

これはスライダーの設定です。ここはいじらなくていいです。(おそらく)

 

 

コンフィグ書き換え

さっそく本題のコード書き換えです。

上の3で説明したようにキーコンフィグはキー配置と同じように書かれています。

一応もう一度

1行目は

変更しなくていいです。してもいいですけど仕組みを理解していない人はしないほうがいいです。

このキーはレイヤーの切り替えスイッチとして設定されています。

 

2,3行目は

好きなキー設定を設定してください。といっても何を入力すればよいかわかりませんよね。

docs.qmk.fm

こちらのサイトに載っているコードを入力します。見方を説明しますね。

 

一番左またはその一個左が入力するキーになります。(KC_ から始まるもの)

「a and A」はこのキーの説明です。

つまり「KC_A」を入力したらキーボードのaキーを押しているのと同じ動作になります。

 

これだと矢印キーの動作になります。60%キーボードの人とかはこれ設定するのおすすめ。

一応説明しますがKC_RIGHTが右、KC_LEFTが左、KC_DOWNが下、KC_UPが上矢印になります。

 

英語が読めないって人は

config.qmk.fm

このサイトの一番下にあるキーボードのボタンにカーソルを合わせるとキーが出てきます。これを入力するのも手です。

ちなみにこのサイトでNANO.SLIDERのコンフィグを作れますが、スライダーが使えません。あくまでボタンだけのコンフィグなのでご注意を。

スライダー使えないとかこの商品の最大の魅力消してるようなものです。

最低でもシステム音量が変更できるように一緒に頑張りましょう!

 

ここで注意

変更し終わったときに必ずコンマがあるかを確認してください。

ダメな例

      KC_MPLY KC_MNXT KC_COPY,

 

よい例

        KC_MPLY, KC_MNXT,  KC_COPY,

 

ちなみに_VOLUMEレイヤーが

    [_VOLUME] = LAYOUT(
        MO(_TOOGLE),
        SPOTIFY, DISCORD, CHROME,
        KC_NO, KC_NO, KC_NO, DEFAULT

このようになっています。

これはファイルの内容説明2のソフトウェアの名前が入力されています。

つまりSPOTIFYが押されたらSpotifyの音量調整が可能になります。

DEFAULTはシステムの音量です。

 

.hexファイルに変換

GitHubからファイルをダウンロードした人はスキップしてください。

 

QMK_MSYSを開いてください。おそらくすでに開かれていると思います。

そしたら

cd qmk_firmware

と入力し

make keebwerk/nano_slider:default

と入力します。するとMaking---と出てくると思うので待ちます。

 

終わったらエクスプローラーを開いて

C:\Users\ユーザー名\qmk_firmware

に移動してください。

わからない人はPC->ローカルディスク(C:)->ユーザー(Users)->自分のユーザー名->qmk_firmwareと順番に開いていってください。

 

ここの中に

keebwerk_nano_slider_default.hex

というファイルがあったら成功です! keymap.cを.hexファイルに変換できました。

後々の作業が楽になるのでこのファイルをデスクトップにコピーしておきましょう

 

ファームウェア書き込み

github.com

上のリンクにアクセスし緑色でLastedとなっているところの

qmk_toolbox_install.exe

をクリックしてダウンロードしてください。

私がやったときは0.2.2でした。新しいバージョンのをダウンロードしましょう。

 

ダウンロードが終わったら開いてください。また警告が出てきますが詳細情報を押して実行してください。そしてNextを押していきインストールしてください。

完了したらウィンドウが出てくると思います。出てこない人はすべてのアプリからQMK Toolboxを実行してください。

するとドライバをインストールしますか?みたいなので出てくるので「はい」をクリックしてください。

そしたら

Openをクリックしてデスクトップにコピーした.hexファイルを選択してください。

GitHubからファイルをダウンロードした人はダウンロードしたHEXファイルを選択してください。

このままにしたまま次は物理的な手順に入ります。

六角レンチを用意してください。

 

NANO.SLIDERをUSB接続している場合は一応外してください。

ひっくり返して四隅にあるねじを外してください。ねじを無くさないようにね。

 

開けるとリセットボタンが見えます。

 

この状態でUSBケーブルでPCと接続してください。

 

そしてソフトウェアに戻ります。

「Auto-Flash」にチェックを入れてください。

そしてNANO.SLIDERのリセットボタンを押してください

そうすると書き込みが始まります。

 

ちなみに一回ファームウェアを書き込んでしまえば裏面のリセットボタンを押す必要がなくなります.

やり方は、RESETレイヤーにして一番右の長いボタンを押すと裏面リセットと同じことができます.(初期状態のファームウェアの場合)

キーコンフィグのキーの名前は「RESET」になっているのでどこかに絶対入れておきましょう

 

問題点(2020/08/01現在)

上記の手順をすべて行うと正常に動作するはずです.

ですが、私の環境ではスライダーによる音量変更ができませんでした。

keebwerkさんに問い合わせても解決しなかったので自分なりに対処しました。

私の主観ですが、みんなも音量変更できてないんじゃない?

windows11だからの可能性もありますが、とにかく対処法を紹介します。

(公式のを使うより対処法をメインに使ったほうが便利なのではないかと思っています)

 

スライダーによる音量調整設定

www.midi-mixer.com

こちらのサイトからMIDI Mixerをダウンロード・インストールしてください。

 

これからちょっと難しいかもしれない説明をします。わからないけどとりあえず使いたいって人はこちらのリンクから私が作った設定をコピーしてください。

midi-mixer://share/f8cffefc55df97ad02e76bf8a9785c61

(このリンクをコピーしてアドレスバーに貼り付けてください)

ちなみにこのリンクはMIDI Mixerをインストールしてないと機能しません。

この時、右上のInputとOutputは自分で設定してください。

Inputはnano.slider、Outputは任意のデバイスです。

 

軽くこのソフトの紹介

このソフトはあらゆるMIDIバイスの動作をカスタマイズできます。

たとえば、つまみで音量調整できるようにしたり,ボタンを押したらソフトが起動するようにしたり。

 

ソフトを開いたらまず設定を開きましょう。左下にあります。

 

そしたら、一番上にある「Start on boot」「Start minimised」をオンにしておきましょう。このソフトが起動していないとスライダーで音量調整ができないので。

それと、お好みでOSDのオンオフを設定しておきましょう。

これは、音量調整したときにゲージが出てきます。

Positionはそれが出てくる位置です.私はBottom right(右下)にしています。

 

設定が終わったら右上の三本線っぽいやつをクリックしてProfilesの右にある+ボタンを押しましょう.そうするとプロファイルが作られます。

 

右上のInputを「nano.slider」にしてOutputは自分がいつも使っている再生デバイスを設定しておきます。

 

真ん中らへんの「Co.」を押して下の画像のように設定してください。

一応それぞれ解説しますね

 

NAME

その名の通り、名前です。このコントロールの名称です。

 

TYPE

コントロールするものの種類です.

私もちゃんと理解していないので間違ってるかも。

 

CHANNEL

これはMIDI信号のチャンネルです。後述するCONTROLと関係してきます。

 

CONTROL

これはMIDI信号のアドレス?です。ちょっとうまく説明できないので実際の信号とコードを見てみましょう。

 

こちらのDATA1の「3E」がCONTROLにあたるものです。

(3E)HEX->(62)10

十進数だと62ってわけです.この3Eが決まるのは先の手順で書いたコードで決まります。

DEFAULTレイヤーだと「0x3E」となっていて下二桁が有効な16進数です.

つまりDEFAULTレイヤーはDATA1に3Eが格納されます

 

次のレイヤーにすると

DATA1が「3F」になっています.十進数だと63です。

 

このDATA2はスライダーの位置を表しています。

一番左にあると「00」、一番右にあると「FF」になります.つまりあのスライダーは255段階に分かれています(日本語おかしい)

 

先の画像のように設定が終わったら次は「Gr.」の設定を下の画像のようにしてください。

これはさっき設定したコントロールをボリューム調整の役割として設定します。ってことです。

もうこれらの2つの設定をやっちゃえばほぼ使えるようになります!

(グループの名前を変えておきましょう。1とかに)

 

一回ここでこのプロファイルをロードしましょう。

 

そしたら三本線のボタンをおします。すると「New group」という欄があります。そこに音量を調整したいデバイスを選択すると、音量調整ができるようになります。

この時に、マイクと再生デバイスどちらも同じ名前で出てくるので注意が必要です。

(私の場合、Line(AG06/AG03)が二つありました。)


とりあえずこれでスライダーを使って音量調整が可能になりました。

スライダー動かしてもできないって人は、コンフィグの書き換えで書いたVOLUMEレイヤーのDEFAULTになっているか確認してください。まずレイヤーをVOLUMEにしてから、DEFAULTに設定したキーを押します。

 

現段階では、一つの音量しか調整できませんが、アプリごとにやる方法も紹介します。

いままでやった「スライダーによる音量調整設定」の値を少しだけ変えて新しく追加するだけです。

変更するところは「Co.」のCONTROLの値です。あとNAMEも好きなやつに。

どんな値に変えるかというのは、先にも記述しましたが、ここのVOLUMEレイヤーでキーに割り当てた16進数を10進数に直してCONTROLに入力してください。

midi2vol= 0x41;  となっていたら16*4 + 1 = 65(10進数)をコントロールへ。

もしこれがVOLUMEレイヤーのCHROMEに割り当てられていたら、そのキーを押したときにCONTROLを65にしたものが動作します(?)

説明むずかしいから、習うより慣れよってわけです。とりあえず いじいじしてみて。

 

ちなみに、コンフィグで付けたDEFAULTとかSPOTIFYとかの名称はあくまで名称であってこの名前のソフトウェアを設定しないとダメってわけじゃないです。

私はいちいち変えるのが面倒なのでそのままにしてあります。CONTROLの数値とそれがどのキーに割り当てられているかをわかっていればよいです。うん。まじ説明難しい

つまり

こんな感じの設定にしても問題ないということです。VOLUMEレイヤーのどのキーを押したらどれに変わるかだけわかってれば問題ないです。

 

この説明聞いてもよくわからないって人は、先にも記述しましたが

こちらのリンクから私が作った設定をコピーしてください。

midi-mixer://share/1f0b69585f59dd3330d48dea7a93a837

(このリンクをコピーしてアドレスバーに貼り付けてください)

ちなみにこのリンクはMIDI Mixerをインストールしてないと機能しません。

この時、右上のInputとOutputは自分で設定してください。

 

すべての手順が終了

おそらく使えるようになったと思います。

なにか質問や問題点があったら

Twitter:@name__nam

までDMをお送りください。めんどくさかったり暇じゃなかったら返信します。

あまりにもDMが多かったりしたら職務放棄するかも、、

 

keymap.cの変更点

github.com

私が使いやすく改良したものですが、一応何を変更したかを記述しておきます。

---変更・改良点--- (2022/08/06現在)

・全体的なキーコンフィグの変更

・コメント文による解説

MIDIスライダーの信号処理の改良

↑これに関して詳しく書いておきます。

従来はスライダーが動いていても止まっていても約4msごとにスライダーの値(位置)を送り続けていました。そのため、MIDI Mixerを用いて音量調整をする場合、OSDが永遠と表示され続けるという迷惑極まりないことになりました。

だからと言ってOSDを切るとどのソフトウェアの音量調整をしているかがわからないし。

ということで、スライダーを動かしたときのみに値が送信されるようにしました。

 

これで一件落着かと思ったけど、スライダーを真ん中らへんにしたときにOSDがずっと表示されることが起きました。これは、スライダーの位置が微妙で値が1増えたり減ったりしていたためです。

なので、値の±1を誤差範囲として許容しました。(かっこよくいってみたかった)

つまり、±1変わった程度じゃ値は送信されないというわけです。

 

MIDIスライダーの処理を変更したらものすごく使いやすくなりました。

変更点は以上です。

 

最後に

説明が長ったらしく、わかりにくくなってしまったかもしれませんが

解説を見てひとりでも役に立てたなら嬉しいです。

プログラミングや情報基礎の知識はこーゆー時に役立つことがあるかもしれないのでがんばってください(?)

YouTubeを主にやっているのでよかったらチャンネル登録お願いします。

www.youtube.com

 

関連動画

youtu.be