add rapid fire
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user