QMK 的功能中,還可以透過 RGB 底光來顯示虛擬鍵盤層的狀態。需要稍微編寫一下程式碼,我們來看一下要怎麼做吧。
鍵盤虛擬層
QMK 可以設定最多 32 層的鍵盤虛擬層,你可以依照自己的喜好建立最多 32 層的虛擬鍵盤配置,並且透過切換虛擬層,就可以依照你的需求配置鍵盤,譬如打字專用的配置、剪輯影片或是變成電競專用的配置,都只需要一個鍵盤,設定虛擬按鍵層即可。
步驟 1. 設定 rules.mk
目前硬體有支援 RGB 燈光的有 ErgoDash、Crkbd、Mint60 也有但是只有一條光燈,請先在 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