後來依照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燈。
留言