fbpx

QMK 的功能中,還可以透過 RGB 底光來顯示虛擬鍵盤層的狀態。需要稍微編寫一下程式碼,我們來看一下要怎麼做吧。

鍵盤虛擬層

QMK 可以設定最多 32 層的鍵盤虛擬層,你可以依照自己的喜好建立最多 32 層的虛擬鍵盤配置,並且透過切換虛擬層,就可以依照你的需求配置鍵盤,譬如打字專用的配置、剪輯影片或是變成電競專用的配置,都只需要一個鍵盤,設定虛擬按鍵層即可。

步驟 1. 設定 rules.mk

目前硬體有支援 RGB 燈光的有 ErgoDashCrkbdMint60 也有但是只有一條光燈,請先在 rules.mk 中開啟 RGB 燈光:

BACKLIGHT_ENABLE = yes

步驟 2. 編輯 config.h

接者打開你的 keymap 中的config.h  設定檔,在當中加入 #define RGBLIGHT_LAYERS 就可以啟用 RGB 與虛擬層的燈光功能。

預設可以支援 8 層虛擬鍵盤層,如果你有超過 8 層,請使用 #define RGBLIGHT_MAX_LAYERS 32 來定義。

步驟 3. 編輯 keymap.c

最後編輯 keymap.c ,這部分就是依照您的喜好撰寫程式碼,下方提供幾個範本讓您修改:

// 按下 Capslock 的時候,第 6 個 RGB 燈與之後 (也就第 7 個) 的 4 個會亮與第 12 個燈 RGB (也就是第 13 個) 之後的 4 個燈會亮紅色。
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
    {6, 4, HSV_RED},       // Light 4 LEDs, starting with LED 6
    {12, 4, HSV_RED}       // Light 4 LEDs, starting with LED 12
);
// Layer 1 啟用的時候,第 9, 10 個燈會亮
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
    {9, 2, HSV_CYAN}
);
// Layer 2 啟用的時候,第 11 與 12 個燈會亮紫色。
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
    {11, 2, HSV_PURPLE}
);
// etc..

// 接者將您的 rgblight_segment_t 放到 RGBLIGHT_LAYERS_LIST 內
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
    my_capslock_layer,
    my_layer1_layer,    // Overrides caps lock layer
    my_layer2_layer     // Overrides other layers
);

void keyboard_post_init_user(void) {
    // Enable the LED layers
    rgblight_layers = my_rgb_layers;
}

啟用或停用也必須用撰寫程式碼的方式,同樣寫在 keymap.c 內:

layer_state_t layer_state_set_user(layer_state_t state) {
    // Both layers will light up if both kb layers are active
    rgblight_set_layer_state(1, layer_state_cmp(state, 1));
    rgblight_set_layer_state(2, layer_state_cmp(state, 2));
    return state;
}

bool led_update_user(led_t led_state) {
    rgblight_set_layer_state(0, led_state.caps_lock);
    return true;
}

燒錄 QMK 之後就可以用了。

QMK 官方說明文件:https://docs.qmk.fm/#/feature_rgblight?id=lighting-layers

Show CommentsClose Comments

Leave a comment