add rapid fire

This commit is contained in:
2020-08-10 02:19:52 +09:00
parent 75199b91f5
commit 60bc12658c

View File

@@ -15,7 +15,8 @@ enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM, EPRM,
VRSN, VRSN,
RGB_SLD RGB_SLD,
RPD
}; };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -53,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_NO,
LCTL_T(KC_SPC),LGUI_T(KC_TAB),KC_ESC, LCTL_T(KC_SPC),LGUI_T(KC_TAB),KC_ESC,
// right hand // right hand
KC_NO , KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, RPD , KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_F12 , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, KC_F12 , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
KC_H, KC_J, KC_K, KC_L, LSFT_T(KC_SCLN), KC_QUOT, KC_H, KC_J, KC_K, KC_L, LSFT_T(KC_SCLN), KC_QUOT,
LSFT(LCTL(KC_F3)) , KC_N, LCTL_T(KC_M), LSFT_T(KC_COMM),LALT_T(KC_DOT), LGUI_T(KC_SLSH), KC_MINS, LSFT(LCTL(KC_F3)) , KC_N, LCTL_T(KC_M), LSFT_T(KC_COMM),LALT_T(KC_DOT), LGUI_T(KC_SLSH), KC_MINS,
@@ -393,6 +394,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
return MACRO_NONE; return MACRO_NONE;
}; };
bool rapid = false;
int divider = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) { switch (keycode) {
// dynamically generate these. // dynamically generate these.
@@ -416,6 +420,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
return false; return false;
break; break;
case RPD:
if (record->event.pressed) {
if (!rapid) {
divider = 0;
}
rapid = true;
}
if (!record->event.pressed) {
rapid = false;
}
break;
} }
return true; return true;
} }
@@ -429,7 +444,16 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void matrix_scan_user(void) { void matrix_scan_user(void) {
if (rapid) {
if(divider == 0){
SEND_STRING(SS_DOWN(X_L));
}
if(divider == 20){
SEND_STRING(SS_UP(X_L));
}
divider++;
divider = divider % 40;
}
}; };
// Runs whenever there is a layer state change. // Runs whenever there is a layer state change.