HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

[UPDATE] 2023/09/02

QMKで動的にキーボードマクロを定義できる Dynamic Macrosを有効にする方法 QMKで動的にキーボードマクロを定義できる Dynamic Macrosを有効にする方法

(QMK 動的マクロ機能でランタイムでのマクロの記録および再生を行なう方法)

Tags: [電子工作], [QMK]




● QMK firmwareの関連記事


2021/08/23
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

2022/01/09
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

2021/08/11
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応

  キー内容が Remap等でカスタマイズ可能な社畜のキーボード「新入社員の同期」を 3500円で購入


● QMKで動的にキーボードマクロを定義できる Dynamic Macrosを有効にする方法

 2023/09 更新 QMK 0.19.0からキー定義の名称やキーコードが変更しています。

● QMK 0.19.0 - Nov 28 2022 - VIA v3.x VIA Protocol 12

 QMK 0.19.0から VIA v3.x VIA Protocol 12に成りました。

QMK 0.19.0 - Nov 28 2022

Dynamic Macros: Record and Replay Macros in Runtime

動的マクロ: ランタイムでのマクロの記録および再生
 日本語版は情報が「古い」です。

qmk_firmware/quantum/keycodes.h
    QK_DYNAMIC_MACRO_RECORD_START_1 = 0x7C53,
    QK_DYNAMIC_MACRO_RECORD_START_2 = 0x7C54,
    QK_DYNAMIC_MACRO_RECORD_STOP = 0x7C55,
    QK_DYNAMIC_MACRO_PLAY_1 = 0x7C56,
    QK_DYNAMIC_MACRO_PLAY_2 = 0x7C57,

● QMK 0.18.17 - Nov 14 2022 - VIA v2.x VIA Protocol 11
QMK 0.18.17 - Nov 14 2022

Dynamic Macros: Record and Replay Macros in Runtime

qmk_firmware/quantum/quantum_keycodes.h
    // Dynamic Macros
    DYN_REC_START1,  // 5D04
    DYN_REC_START2,  // 5D05
    DYN_REC_STOP,    // 5D06
    DYN_MACRO_PLAY1, // 5D07
    DYN_MACRO_PLAY2, // 5D08
 ※ ソースコード上のコメントでは 0x5D04~ですが、私の実測では 0x5D03~でした。


● QMKで動的にキーボードマクロを定義できる Dynamic Macrosを有効にする方法

 QMK 動的マクロ機能でランタイムでのマクロの記録および再生を行なう方法。

 QMKは VIAの機能で任意のキーに文字列や定型操作を定義できますが、変更する場合は VIAのアプリを使って定義を編集する必要が有ります。

 QMKの Dynamic Macros機能を使えば動的にキーボードのマクロ定義が可能です。

種類変更方法電源オフで
VIAのマクロ定義VIAアプリを使って定義電源オフでも保持
Dynamic Macros機能「記録開始」を押してキーボードを操作して「記録終了」電源オフで消える

VIA Your keyboard's best friend

QMK Dynamic Macros Record and Replay Macros in Runtime
QMK 動的マクロ ランタイムでのマクロの記録および再生

キーAliasVIA Code(Anyで設定)説明
DM_REC10x5d03マクロ 1 の記録を開始
DM_REC20x5d04マクロ 2 の記録を開始
DM_RSTP0x5d05現在記録中のマクロの記録を終了
DM_PLY10x5d06マクロ 1 を再生
DM_PLY20x5d07マクロ 2 を再生
 ※ キーAlias定義は QMK 0.18.xでも QMK 0.19.x以降でも共通で使えます。

 rules.mkに DYNAMIC_MACRO_ENABLE = yesを記述する。
DYNAMIC_MACRO_ENABLE = yes

 下記のコードが無くても動的マクロ機能は動きます
 下記のコードはマクロの記録中は [REC]を表示と、マクロキー押下時に音を出す処理です。
#ifdef AUDIO_ENABLE
  #include "audio.h"

  float song1[][2] = SONG(STARTUP_SOUND);
  float song2[][2] = SONG(GOODBYE_SOUND);
  float song3[][2] = SONG(PLANCK_SOUND);
#endif

#ifdef DYNAMIC_MACRO_ENABLE
// Dynamic Macros: Record and Replay Macros in Runtime
// https://github.com/qmk/qmk_firmware/blob/master/docs/feature_dynamic_macros.md

bool isRecording = false;
// Triggered when you start recording a macro.
void dynamic_macro_record_start_user(void) {
    isRecording = true;
#ifdef AUDIO_ENABLE
   PLAY_SONG(song1);
#endif
}

// Triggered when the macro recording is stopped.
void dynamic_macro_record_end_user(int8_t direction) {
    isRecording = false;
}

// Triggered when you play back a macro.
正しくはマクロ再生が終わった後に dynamic_macro_play_userが呼ばれる
void dynamic_macro_play_user(int8_t direction) {
#ifdef AUDIO_ENABLE
   if (direction == 1) PLAY_SONG(song2);
   else PLAY_SONG(song3);
#endif
}

// Triggered on each keypress while recording a macro.
void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record) {
}
#endif

bool oled_task_user(void) {
    ...

#ifdef DYNAMIC_MACRO_ENABLE
    oled_write_P(PSTR("\n"), false);
    oled_write_P(isRecording ? PSTR("[REC]") : PSTR("[   ]"), isRecording);
#endif

    return false;
}


● Dynamic Macroの再生時の送信時に各キー出力に WAITを入れる方法

 QMKの公式に Pull Requestを出しました。
Added Wait time to sending each Keys for Dynamic Macros function #16800
 2022/07/02に qmk:developにマージされました!!

 例: 50を指定で 50ms(1/20秒)の WAITを入れる。

config.h
#define DYNAMIC_MACRO_DELAY 50

process_dynamic_macro.c

./quantum/process_keycode/process_dynamic_macro.c
void dynamic_macro_play(keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_t direction) {
    dprintf("dynamic macro: slot %d playback\n", DYNAMIC_MACRO_CURRENT_SLOT());

    layer_state_t saved_layer_state = layer_state;

    clear_keyboard();
    layer_clear();

    while (macro_buffer != macro_end) {
        process_record(macro_buffer);
        macro_buffer += direction;
#ifdef DYNAMIC_MACRO_DELAY
        wait_ms(DYNAMIC_MACRO_DELAY);
#endif
    }


● VIAのマクロ送信時に各キー出力に WAITを入れる方法

 QMKの公式に Pull Requestを出しました。
Added Delay time to sending each Keys for VIA Macros function feature #16810
 2022/07/12に qmk:developにマージされました!!

 QMK 0.19.0から VIA v3.x VIA Protocol 12に成り、VIA v3自体に delayマクロが追加されました。

VIA Nº3 - What's New - VIA
Delays
Now you can add delays to macros. Either choose "record delays" when recording a macro, or insert using the script editor.
Note: using delays in macros requires compatible firmware. You may need to install the latest firmware on your keyboard to use this feature.
設定例:
accountを入力、TABキー、500ms待つ(0.5秒待つ)、passwordを入力、Enterキー
account{KC_TAB}{500}password{KC_ENT}
wilba commented on Dec 10 2022
設定例:
フルキー側の 1を入力、1000ms待つ(1秒待つ)、フルキー側の 2を入力
VIA now has delays in macros, use like this: {KC_1}{1000}{KC_2}

VIA V3の関連情報:
[S] Macro - Delay between keypress support #24
VIA V3 - The Custom UI Update #18222



Tags: [電子工作], [QMK]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】
【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】

  夏休みが明けたら 僕のキーボードが最強になって クラスのみんなから MMK 大作戦

BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法
QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法

  QMK firmware How to Reduce Program Size、Reducing QMK firmware size

QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use IO Expander Multiplexer / Demultiplexer / Decoder

QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use I2C GPIO Expander PCF8574 and PCF8575

QMK firmwareで Audio機能を試してみる
QMK firmwareで Audio機能を試してみる

  QMK firmware test Audio function with Piezo buzzer

QMK firmwareで OLED機能で SSD1306を試してみる
QMK firmwareで OLED機能で SSD1306を試してみる

  QMK firmware test OLED Driver with SSD1306

QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる
QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる

  QMK firmware test Analog Joystick function with PSP2000 Analog Stick

最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法
最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法

  QMK Bugfix Create New Keyboard new_keyboard.sh command No such file or directory Error

QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法
QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法

  refusing to allow an OAuth App to create or update workflow `.github/workflows/api.yml` without `workflow` scope

中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物
中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物

  中華製のプログラマブル USBキーボード KeyboardSetter.exe

社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応

  キー内容が Remap等でカスタマイズ可能な社畜のキーボード「新入社員の同期」を 3500円で購入




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/hardware/qmk_keyboard_dynamic_macro/