123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include USERSPACE_H
- #include <stdbool.h>
- #include <stdint.h>
- bool shift_for_two(uint16_t keycode, keyrecord_t *record){
- uint16_t mod_state = get_mods();
- bool is_shifted = (get_mods() & MOD_MASK_SHIFT) ||
- (get_oneshot_mods() & MOD_MASK_SHIFT);
- if(record ->event.pressed) {
- // If shifted, double these common punctuation marks.
- if(is_shifted){
- // clear shift temporarily
- del_mods(MOD_MASK_SHIFT);
- del_oneshot_mods(MOD_MASK_SHIFT);
- tap_code16(keycode);
- tap_code16(keycode);
- // restore previous shift state
- set_mods(mod_state);
- return false;
- }
- }
- return true;
- }
- bool shift_for_three(uint16_t keycode, keyrecord_t *record){
- uint16_t mod_state = get_mods();
- bool is_shifted = (get_mods() & MOD_MASK_SHIFT) ||
- (get_oneshot_mods() & MOD_MASK_SHIFT);
- if(record ->event.pressed) {
- // If shifted, double these common punctuation marks.
- if(is_shifted){
- // clear shift temporarily
- del_mods(MOD_MASK_SHIFT);
- del_oneshot_mods(MOD_MASK_SHIFT);
- tap_code16(keycode);
- tap_code16(keycode);
- tap_code16(keycode);
- // restore previous shift state
- set_mods(mod_state);
- return false;
- }
- }
- return true;
- }
- bool override_shift(uint16_t keycode,
- uint16_t shift_keycode,
- keyrecord_t *record
- ) {
- bool is_shifted = (get_mods() & MOD_MASK_SHIFT) ||
- (get_oneshot_mods() & MOD_MASK_SHIFT);
- if (record->event.pressed) {
- if (is_shifted) {
- uint8_t mod_state = get_mods();
- del_mods(MOD_MASK_SHIFT);
- del_oneshot_mods(MOD_MASK_SHIFT);
- tap_code16(shift_keycode);
- set_mods(mod_state);
- } else {
- //tap_code16(keycode);
- }
- }
- return false;
- }
- // macros for use in alt_shift.defs.
- #define ALT_SHIFT(KCKEY, KC01) \
- case KCKEY: \
- return override_shift(KCKEY, KC01, record); \
- break;
- #define SHIFT_FOR_2(KCKEY) \
- case KCKEY: \
- return shift_for_two(KCKEY, record); \
- break;
- #define SHIFT_FOR_3(KCKEY) \
- case KCKEY: \
- return shift_for_three(KCKEY, record); \
- break;
- bool process_alt_shift_user(uint16_t keycode, keyrecord_t *record) {
- switch(keycode){
- #include "alt_shift.def"
- }
- return true;
- }
|