Quick7のキーマップの変更

キーボードの自作、QMK Firmwereの導入と書きましたが、キーマップの変更についても書きたいと思います。

Quick7のキーマップは、デフォルトでレイヤーが2つあって、次のようになっています。
Base Layer
MUTEFunc1RGB MODE
Shift+TabUPTAB
LEFTDOWNRIGHT






Func1 Layer
RESETFunc1RGB TOGGLE
HOMEVOL+END
MEDIA<<VOL-MEDIA>>







keymap.c では、こんな感じですね。
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* Base */
    [_BASE] = LAYOUT(
        KC_MUTE, MO(_FUNC1), RGB_MOD,
        S(KC_TAB), KC_UP, KC_TAB,
        KC_LEFT, KC_DOWN, KC_RGHT
    ),
    [_FUNC1] = LAYOUT(
        RESET, KC_TRNS, RGB_TOG,
        KC_HOME, KC_VOLU, KC_END,
        KC_MPRV, KC_VOLD, KC_MNXT
    )
};
各キーの内容は、公式Docsで解ります。

どうやら、MO(_FUNC1)のキーと押しながら、違うキーを押すと、Func1のレイヤーの設定が使えるみたいです。
RGB_TOGが、LEDのON/OFFの切り替え、RGB_MODが、光るモードの変更です。
RESETは、使ってないですけど、キーボードの裏のリセットスイッチの代わりですかね。

自分のキーマップの設定ですが、
調べた結果、「ctrl+〇」の記述は、「C(キー)」と簡単なので、「C(KC_C)」「C(KC_V)」って感じですかね。

特定の文字列を出力する方法は、
独自のキーコードを定義、キーに設定、押された場合の処理の記述、になるようです。

まず、独自キーコードの定義は、enum custom_keacodes に追記します。
enum custom_keycodes {
    YUSHAURL = SAFE_RANGE
    ,PASSWORD
};
のような感じで、使われていないキーコードを記述します。

次に独自キーコードをキーに設定します。
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* Base */
    [_BASE] = LAYOUT(
        PASSWORD, MO(_FUNC1), RGB_MOD,
        ・・・

最後に、キーが押された場合の処理を、bool process_record_user() に記述します。
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case YUSHAURL:
            if (record->event.pressed) {
                // when keycode QMKURL is pressed
                SEND_STRING("https://yushakobo.jp/\n");
            } else {
                // when keycode QMKURL is released
            }
            break;
        case PASSWORD:
            if (record->event.pressed) {
                // when keycode PASSWORD is pressed
                SEND_STRING("password");
            } else {
                // when keycode PASSWORD is released
            }
            break;
    }
    return true;
}
こんな感じですね。

このSEND_STRING()の中身を変更すると文字列を出力できますが、@などの記号は、USキーボードと配置が違うので思った記号が出ないかも、そこはトライして違いを知らべてやりましたね。
※以下をインクルードしたら@なども普通に設定できました。2021/10/30追記
#include "keymap_jp.h" // qmk_firmware-master/quantum/keymap_extras/keymap_jp.h 日本語キーボード設定用
#include <sendstring_jis.h> // macro sendstring for jis keyboard マクロ文字列送信時に日本語キーボード設定での文字化け回避

後は、LEDのRGB関係をいろいろ試してみたいですね。


この記事へのコメント

ヤスダ
2022年06月03日 14:42
私も先日、Quick7を初めての自作キーボードという事で組み立てました。
ロータリーエンコーダーの右側を音量にしたりは出来たのですが、レイヤーを切り替えたらアンダーグローのLEDを光る様にしようとしていますがなかなか上手くいきません。
1日、2日ではなかなかですね。