Redox custom keymap (jeherve): updates to deprecated code and bugfixes (#12738)
Co-authored-by: Drashna Jael're <drashna@live.com>
This commit is contained in:
		
							parent
							
								
									3efd94014f
								
							
						
					
					
						commit
						6e5e34662b
					
				
					 3 changed files with 165 additions and 145 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,21 @@
 | 
			
		|||
#include QMK_KEYBOARD_H
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2021 Jeremy Herve <jeremy@jeremy.hu>
 | 
			
		||||
 | 
			
		||||
extern keymap_config_t keymap_config;
 | 
			
		||||
This program is free software: you can redistribute it and/or modify
 | 
			
		||||
it under the terms of the GNU General Public License as published by
 | 
			
		||||
the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
(at your option) any later version.
 | 
			
		||||
 | 
			
		||||
This program is distributed in the hope that it will be useful,
 | 
			
		||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
You should have received a copy of the GNU General Public License
 | 
			
		||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
			
		||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
			
		||||
| 
						 | 
				
			
			@ -12,126 +27,127 @@ extern keymap_config_t keymap_config;
 | 
			
		|||
#define _INTER 3
 | 
			
		||||
#define _ADJUST 4
 | 
			
		||||
 | 
			
		||||
// Define song.
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
float tone_zelda[][2] = SONG(ZELDA_TREASURE);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
	COLEMAK = SAFE_RANGE,
 | 
			
		||||
	SYMB,
 | 
			
		||||
	NAV,
 | 
			
		||||
	INTER,
 | 
			
		||||
	ADJUST,
 | 
			
		||||
	// These use process_record_user()
 | 
			
		||||
	M_BRACKET_LEFT,
 | 
			
		||||
	M_BRACKET_RIGHT,
 | 
			
		||||
	SHRUG,
 | 
			
		||||
	WAVE,
 | 
			
		||||
	YOSHI,
 | 
			
		||||
	THUMB_UP,
 | 
			
		||||
	NBSP,
 | 
			
		||||
  INV_1P,
 | 
			
		||||
  ALFRED
 | 
			
		||||
    COLEMAK = SAFE_RANGE,
 | 
			
		||||
    SYMB,
 | 
			
		||||
    NAV,
 | 
			
		||||
    INTER,
 | 
			
		||||
    ADJUST,
 | 
			
		||||
    // These use process_record_user()
 | 
			
		||||
    M_BRACKET_LEFT,
 | 
			
		||||
    M_BRACKET_RIGHT,
 | 
			
		||||
    SHRUG,
 | 
			
		||||
    WAVE,
 | 
			
		||||
    YOSHI,
 | 
			
		||||
    THUMB_UP,
 | 
			
		||||
    INV_1P,
 | 
			
		||||
    ALFRED
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Is shift being held? Let's store this in a bool.
 | 
			
		||||
static bool shift_held = false;
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
	switch(keycode) {
 | 
			
		||||
		case SHRUG:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
    case INV_1P:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        SEND_STRING(SS_DOWN(X_LGUI)SS_DOWN(X_LALT)SS_TAP(X_BSLASH)SS_UP(X_LGUI)SS_UP(X_LALT));
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case ALFRED:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        SEND_STRING(SS_DOWN(X_LALT)SS_TAP(X_SPACE)SS_UP(X_LALT));
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
		case YOSHI:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				SEND_STRING(":yellow_yoshi:");
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
		case THUMB_UP:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				SEND_STRING(SS_LALT("D83D+DC4D"));
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
		case WAVE:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				SEND_STRING(SS_LALT("D83D+DC4B"));
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
		case NBSP:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				SEND_STRING(" ");
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
	case KC_LSFT:
 | 
			
		||||
		shift_held = record->event.pressed;
 | 
			
		||||
		return true;
 | 
			
		||||
		break;
 | 
			
		||||
	case KC_RSFT:
 | 
			
		||||
		shift_held = record->event.pressed;
 | 
			
		||||
		return true;
 | 
			
		||||
		break;
 | 
			
		||||
		case M_BRACKET_LEFT: {
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				if (shift_held) {
 | 
			
		||||
					unregister_code(KC_LSFT);
 | 
			
		||||
					unregister_code(KC_RSFT);
 | 
			
		||||
					register_code(KC_LBRC);
 | 
			
		||||
				} else {
 | 
			
		||||
					register_code(KC_LSFT);
 | 
			
		||||
					register_code(KC_9);
 | 
			
		||||
				}
 | 
			
		||||
			} else { // Release the key
 | 
			
		||||
				unregister_code(KC_LBRC);
 | 
			
		||||
				unregister_code(KC_LSFT);
 | 
			
		||||
				unregister_code(KC_RSFT);
 | 
			
		||||
				unregister_code(KC_9);
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		case M_BRACKET_RIGHT: {
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				if (shift_held) {
 | 
			
		||||
					unregister_code(KC_LSFT);
 | 
			
		||||
					unregister_code(KC_RSFT);
 | 
			
		||||
					register_code(KC_RBRC);
 | 
			
		||||
				} else {
 | 
			
		||||
					register_code(KC_LSFT);
 | 
			
		||||
					register_code(KC_0);
 | 
			
		||||
				}
 | 
			
		||||
			} else { // Release the key
 | 
			
		||||
				unregister_code(KC_RBRC);
 | 
			
		||||
				unregister_code(KC_LSFT);
 | 
			
		||||
				unregister_code(KC_RSFT);
 | 
			
		||||
				unregister_code(KC_0);
 | 
			
		||||
			}
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return true;
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
        case SHRUG:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                send_unicode_string("¯\\_(ツ)_/¯");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case INV_1P:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_LALT) SS_TAP(X_BSLASH) SS_UP(X_LGUI) SS_UP(X_LALT));
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case ALFRED:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_SPACE) SS_UP(X_LALT));
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case YOSHI:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
                PLAY_SONG(tone_zelda);
 | 
			
		||||
#endif
 | 
			
		||||
                SEND_STRING(":yellow_yoshi:");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case THUMB_UP:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                register_unicode(0x1F44D);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case WAVE:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                register_unicode(0x1F44B);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        case KC_LSFT:
 | 
			
		||||
            shift_held = record->event.pressed;
 | 
			
		||||
            return true;
 | 
			
		||||
            break;
 | 
			
		||||
        case KC_RSFT:
 | 
			
		||||
            shift_held = record->event.pressed;
 | 
			
		||||
            return true;
 | 
			
		||||
            break;
 | 
			
		||||
        case M_BRACKET_LEFT: {
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                if (shift_held) {
 | 
			
		||||
                    unregister_code(KC_LSFT);
 | 
			
		||||
                    unregister_code(KC_RSFT);
 | 
			
		||||
                    register_code(KC_LBRC);
 | 
			
		||||
                } else {
 | 
			
		||||
                    register_code(KC_LSFT);
 | 
			
		||||
                    register_code(KC_9);
 | 
			
		||||
                }
 | 
			
		||||
            } else {  // Release the key
 | 
			
		||||
                unregister_code(KC_LBRC);
 | 
			
		||||
                unregister_code(KC_LSFT);
 | 
			
		||||
                unregister_code(KC_RSFT);
 | 
			
		||||
                unregister_code(KC_9);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        case M_BRACKET_RIGHT: {
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                if (shift_held) {
 | 
			
		||||
                    unregister_code(KC_LSFT);
 | 
			
		||||
                    unregister_code(KC_RSFT);
 | 
			
		||||
                    register_code(KC_RBRC);
 | 
			
		||||
                } else {
 | 
			
		||||
                    register_code(KC_LSFT);
 | 
			
		||||
                    register_code(KC_0);
 | 
			
		||||
                }
 | 
			
		||||
            } else {  // Release the key
 | 
			
		||||
                unregister_code(KC_RBRC);
 | 
			
		||||
                unregister_code(KC_LSFT);
 | 
			
		||||
                unregister_code(KC_RSFT);
 | 
			
		||||
                unregister_code(KC_0);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Shortcut to make keymap more readable
 | 
			
		||||
#define KC_SYQT  LT(_SYMB,KC_QUOT)
 | 
			
		||||
#define SYM_L    MO(_SYMB)
 | 
			
		||||
#define MO_INTR  MO(_INTER)
 | 
			
		||||
#define TT_ADJ   TT(_ADJUST)
 | 
			
		||||
#define KC_SYQT LT(_SYMB, KC_QUOT)
 | 
			
		||||
#define SYM_L   MO(_SYMB)
 | 
			
		||||
#define MO_INTR MO(_INTER)
 | 
			
		||||
#define TT_ADJ  TT(_ADJUST)
 | 
			
		||||
 | 
			
		||||
#define UC_00E0 UC(0x00E0)
 | 
			
		||||
#define UC_00FC UC(0x00FC)
 | 
			
		||||
| 
						 | 
				
			
			@ -147,6 +163,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
#define UC_0171 UC(0x0171)
 | 
			
		||||
#define UC_00EA UC(0x00EA)
 | 
			
		||||
#define UC_0151 UC(0x0151)
 | 
			
		||||
// Non-breaking space.
 | 
			
		||||
#define UC_00A0 UC(0x00a0)
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +220,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
     XXXXXXX ,UC_00E2 ,XXXXXXX ,UC_00E7 ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,        _______ ,XXXXXXX ,XXXXXXX ,UC_0171 ,UC_00EA ,XXXXXXX ,UC_0151 ,XXXXXXX ,
 | 
			
		||||
  //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
			
		||||
     _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,NBSP    ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
 | 
			
		||||
     _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,UC_00A0 ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
 | 
			
		||||
  //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -222,38 +240,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
float tone_colemak[][2]     = SONG(ZELDA_TREASURE);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void persistent_default_layer_set(uint16_t default_layer) {
 | 
			
		||||
	eeconfig_update_default_layer(default_layer);
 | 
			
		||||
	default_layer_set(default_layer);
 | 
			
		||||
    eeconfig_update_default_layer(default_layer);
 | 
			
		||||
    default_layer_set(default_layer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Set unicode in Mac OS.
 | 
			
		||||
void eeconfig_init_user(void) {
 | 
			
		||||
  set_unicode_input_mode(UC_OSX);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Change LED colors depending on the layer.
 | 
			
		||||
uint32_t layer_state_set_user(uint32_t state) {
 | 
			
		||||
	switch (biton32(state)) {
 | 
			
		||||
		case _SYMB:
 | 
			
		||||
			rgblight_setrgb_orange();
 | 
			
		||||
			break;
 | 
			
		||||
		case _NAV:
 | 
			
		||||
			rgblight_setrgb_springgreen();
 | 
			
		||||
			break;
 | 
			
		||||
		case _INTER:
 | 
			
		||||
			rgblight_setrgb_teal();
 | 
			
		||||
			break;
 | 
			
		||||
		case _ADJUST:
 | 
			
		||||
			rgblight_setrgb_red();
 | 
			
		||||
			break;
 | 
			
		||||
		default: //  for any other layers, or the default layer
 | 
			
		||||
			rgblight_setrgb_yellow();
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	return state;
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
    switch (get_highest_layer(state)) {
 | 
			
		||||
        case _SYMB:
 | 
			
		||||
            rgblight_setrgb_orange();
 | 
			
		||||
            break;
 | 
			
		||||
        case _NAV:
 | 
			
		||||
            rgblight_setrgb_springgreen();
 | 
			
		||||
            break;
 | 
			
		||||
        case _INTER:
 | 
			
		||||
            rgblight_setrgb_teal();
 | 
			
		||||
            break;
 | 
			
		||||
        case _ADJUST:
 | 
			
		||||
            rgblight_setrgb_red();
 | 
			
		||||
            break;
 | 
			
		||||
        default:  //  for any other layers, or the default layer
 | 
			
		||||
            rgblight_setrgb_yellow();
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
    return state;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue