後來依照ErgoTaiwan上的教學,研究了一下將QMK程式給裝到電腦上,以便自以撰寫相關程式,並且研究一下別人怎麼寫的,後來改了一下:
檔案路徑:
C:\msys32\home\{帳號名稱}\qmk_firmware\keyboards\ergodox_ez\keymaps\{使用者名稱}
檔名:
keymap.c
process_record_user() 內加了:
// 如果按下 CAPS LOCK
case KC_CAPSLOCK:
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
ergodox_right_led_1_off();
} else {
ergodox_right_led_1_on();
}
return true;
// 如果按下 SCREEN LOCK
case KC_SCROLLLOCK:
if (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) {
ergodox_right_led_2_off();
} else {
ergodox_right_led_2_on();
}
return true;
// 如果按下 NUM LOCK
case KC_NUMLOCK:
if (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) {
ergodox_right_led_3_off();
} else {
ergodox_right_led_3_on();
}
return true;
以便檢測是否有按下這三顆按鈕。
另外由 layer_state_t layer_state_set_user(layer_state_t state) 的第0層內也加入了:
// 檢查三個 LOCK 狀態
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
ergodox_right_led_1_on();
} else {
ergodox_right_led_1_off();
}
if (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) {
ergodox_right_led_2_on();
} else {
ergodox_right_led_2_off();
}
if (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) {
ergodox_right_led_3_on();
} else {
ergodox_right_led_3_off();
}
以便切換回第0層時,再把狀態給改回來,不過這裡是因為原始的層燈號與LOCK燈號共同使用,所以才需要這樣清理。
另外我也發現,如果裝了另一個一般鍵盤,由一般鍵盤去切換LOCK狀態時,並不會引起這QMK上的燈號改變,但從QMK的鍵盤去變更LOCK狀態時,一般鍵盤的燈號卻是可以正常連動,所以這部分應該就不是寫到這個部分,應該是更高層級的地方,但暫時還沒研究到,就先記錄到這。
要注意的是:
keymap.c內的
#define BASE 0 // default layer
這行不要刪除掉,要至少保留一個define名稱,否則之後產生的.hex無法使用LED燈。
留言