|
@@ -15,6 +15,10 @@ enum layer_names {
|
|
|
|
|
|
typedef enum onoff_t {OFF, ON} onoff;
|
|
|
|
|
|
+#define caps_led_on ergodox_right_led_2_on
|
|
|
+#define caps_led_off ergodox_right_led_2_off
|
|
|
+
|
|
|
+
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
/* Keymap 0: Basic layer
|
|
|
*
|
|
@@ -123,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
*/
|
|
|
// MEDIA AND TENKEY
|
|
|
[MDIA] = LAYOUT_ergodox(
|
|
|
- KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, KC_F15,
|
|
|
+ QK_BOOT, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, KC_F15,
|
|
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
@@ -142,6 +146,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
KC_TRNS, KC_TRNS, KC_TRNS
|
|
|
),
|
|
|
};
|
|
|
+#ifndef NO_FAKE_CAPS
|
|
|
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
|
+ static onoff caps_state = OFF;
|
|
|
+
|
|
|
+ switch (keycode) {
|
|
|
+ case KC_CAPS:
|
|
|
+ if (record->event.pressed) {
|
|
|
+ if (caps_state == OFF) {
|
|
|
+ caps_led_on();
|
|
|
+ caps_state = ON;
|
|
|
+ } else {
|
|
|
+ caps_led_off();
|
|
|
+ caps_state = OFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ if (keycode < KC_A || keycode > KC_Z) {
|
|
|
+ // This isn't an alpha or a KC_CAPS, continue on as usual.
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if (record->event.pressed) {
|
|
|
+ bool shifted = (caps_state == ON && get_mods() == 0);
|
|
|
+ if (shifted) {
|
|
|
+ register_code(KC_LSFT);
|
|
|
+ }
|
|
|
+ register_code(keycode);
|
|
|
+ if (shifted) {
|
|
|
+ unregister_code(KC_LSFT);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ unregister_code(keycode);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // If we get here, we've already handled the keypresses.
|
|
|
+ return false;
|
|
|
+}
|
|
|
+#endif
|
|
|
|
|
|
// Runs constantly in the background, in a loop.
|
|
|
void matrix_scan_user(void) {
|