diff options
Diffstat (limited to 'docs/ja/feature_macros.md')
-rw-r--r-- | docs/ja/feature_macros.md | 113 |
1 files changed, 6 insertions, 107 deletions
diff --git a/docs/ja/feature_macros.md b/docs/ja/feature_macros.md index 14a58ad244..c42a61b5fb 100644 --- a/docs/ja/feature_macros.md +++ b/docs/ja/feature_macros.md @@ -9,7 +9,7 @@ !> **セキュリティの注意**: マクロを使って、パスワード、クレジットカード番号、その他の機密情報のいずれも送信することが可能ですが、それは非常に悪い考えです。あなたのキーボードを手に入れた人は誰でもテキストエディタを開いてその情報にアクセスすることができます。 -## 新しい方法: `SEND_STRING()` と `process_record_user` +## `SEND_STRING()` と `process_record_user` 単語またはフレーズを入力するキーが欲しい時があります。最も一般的な状況のために `SEND_STRING()` を提供しています。これは文字列(つまり、文字のシーケンス)を入力します。簡単にキーコードに変換することができる全ての ASCII 文字がサポートされています (例えば、`qmk 123\n\t`)。 @@ -267,15 +267,15 @@ SEND_STRING(".."SS_TAP(X_END)); このマクロは `KC_LALT` を登録し、`KC_TAB` をタップして、1000ms 待ちます。キーが再度タップされると、別の `KC_TAB` が送信されます; タップが無い場合、`KC_LALT` が登録解除され、ウィンドウを切り替えることができます。 ```c -bool is_alt_tab_active = false; # keymap.c の先頭付近にこれを追加します -uint16_t alt_tab_timer = 0; # すぐにそれらを使います +bool is_alt_tab_active = false; // keymap.c の先頭付近にこれを追加します +uint16_t alt_tab_timer = 0; // すぐにそれらを使います -enum custom_keycodes { # 素晴らしいキーコードを用意してください +enum custom_keycodes { // 素晴らしいキーコードを用意してください ALT_TAB = SAFE_RANGE, }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { # これはキーコードを利用したつまらない作業のほとんどを行います。 + switch (keycode) { // これはキーコードを利用したつまらない作業のほとんどを行います。 case ALT_TAB: if (record->event.pressed) { if (!is_alt_tab_active) { @@ -292,7 +292,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -void matrix_scan_user(void) { # とても重要なタイマー +void matrix_scan_user(void) { // とても重要なタイマー if (is_alt_tab_active) { if (timer_elapsed(alt_tab_timer) > 1000) { unregister_code(KC_LALT); @@ -301,104 +301,3 @@ void matrix_scan_user(void) { # とても重要なタイマー } } ``` - ---- - -## **(非推奨)** 古い方法: `MACRO()` と `action_get_macro` - -!> これは TMK から継承されており、更新されていません - 代わりに `SEND_STRING` と `process_record_user` を使うことをお勧めします。 - -デフォルトでは、QMK はマクロが無いことを前提としています。マクロを定義するには、`action_get_macro()` 関数を作成します。例えば: - -```c -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - if (record->event.pressed) { - switch(id) { - case 0: - return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END); - case 1: - return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END); - } - } - return MACRO_NONE; -}; -``` - -これは割り当てられているキーが押された時に実行される2つのマクロを定義します。キーが放された時にそれらを実行したい場合は、if 文を変更することができます。 - - if (!record->event.pressed) { - -### マクロコマンド - -マクロは以下のコマンドを含めることができます: - -* I() はストロークの間隔をミリ秒単位で変更します。 -* D() はキーを押します。 -* U() はキーを放します。 -* T() はキーをタイプ(押して放す)します。 -* W() は待ちます (ミリ秒)。 -* END 終了マーク。 - -### マクロをキーにマッピングする - -マクロを呼び出すにはキーマップ内で `M()` 関数を使います。例えば、2キーのキーボードのキーマップは以下の通りです: - -```c -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - M(0), M(1) - ), -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - if (record->event.pressed) { - switch(id) { - case 0: - return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END); - case 1: - return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END); - } - } - return MACRO_NONE; -}; -``` - -左側のキーを押すと、"Hi!" を入力し、右側のキーを押すと "Bye!" を入力します。 - -### マクロに名前を付ける - -キーマップを読みやすくしながらキーマップから参照したいマクロがたくさんある場合は、ファイルの先頭で `#define` を使って名前を付けることができます。 - -```c -#define M_HI M(0) -#define M_BYE M(1) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - M_HI, M_BYE - ), -}; -``` - - -## 高度な例: - -### 単一キーのコピーと貼り付け - -この例は、押された時に `Ctrl-C` を送信し、放される時に `Ctrl-V` を送信するマクロを定義します。 - -```c -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch(id) { - case 0: { - if (record->event.pressed) { - return MACRO( D(LCTL), T(C), U(LCTL), END ); - } else { - return MACRO( D(LCTL), T(V), U(LCTL), END ); - } - break; - } - } - return MACRO_NONE; -}; -``` |