Redox custom keymap (jeherve): updates to deprecated code and bugfixes (#12738)

Co-authored-by: Drashna Jael're <drashna@live.com>
master
Jeremy Herve 2021-05-13 18:29:04 +02:00 committed by GitHub
parent 3efd94014f
commit 6e5e34662b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 165 additions and 145 deletions

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2018 Jeremy Herve <jeremy@jeremy.hu> Copyright 2021 Jeremy Herve <jeremy@jeremy.hu>
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -36,3 +36,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_SLEEP #define RGBLIGHT_SLEEP
/* Set Unicode mode by default */
#define UNICODE_SELECTED_MODES UC_MAC
/* Custom startup sound */
#ifdef AUDIO_ENABLE
# define STARTUP_SONG SONG(ZELDA_PUZZLE)
#endif

View File

@ -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. // 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. // 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 _INTER 3
#define _ADJUST 4 #define _ADJUST 4
// Define song.
#ifdef AUDIO_ENABLE
float tone_zelda[][2] = SONG(ZELDA_TREASURE);
#endif
enum custom_keycodes { enum custom_keycodes {
COLEMAK = SAFE_RANGE, COLEMAK = SAFE_RANGE,
SYMB, SYMB,
NAV, NAV,
INTER, INTER,
ADJUST, ADJUST,
// These use process_record_user() // These use process_record_user()
M_BRACKET_LEFT, M_BRACKET_LEFT,
M_BRACKET_RIGHT, M_BRACKET_RIGHT,
SHRUG, SHRUG,
WAVE, WAVE,
YOSHI, YOSHI,
THUMB_UP, THUMB_UP,
NBSP, INV_1P,
INV_1P, ALFRED
ALFRED
}; };
// Is shift being held? Let's store this in a bool. // Is shift being held? Let's store this in a bool.
static bool shift_held = false; static bool shift_held = false;
bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) { switch (keycode) {
case SHRUG: case SHRUG:
if (record->event.pressed) { if (record->event.pressed) {
send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); send_unicode_string("¯\\_(ツ)_/¯");
} }
return false; return false;
break; break;
case INV_1P: case INV_1P:
if (record->event.pressed) { 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)); SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_LALT) SS_TAP(X_BSLASH) SS_UP(X_LGUI) SS_UP(X_LALT));
} }
return false; return false;
break; break;
case ALFRED: case ALFRED:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING(SS_DOWN(X_LALT)SS_TAP(X_SPACE)SS_UP(X_LALT)); SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_SPACE) SS_UP(X_LALT));
} }
return false; return false;
break; break;
case YOSHI: case YOSHI:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING(":yellow_yoshi:"); #ifdef AUDIO_ENABLE
} PLAY_SONG(tone_zelda);
return false; #endif
break; SEND_STRING(":yellow_yoshi:");
case THUMB_UP: }
if (record->event.pressed) { return false;
SEND_STRING(SS_LALT("D83D+DC4D")); break;
} case THUMB_UP:
return false; if (record->event.pressed) {
break; register_unicode(0x1F44D);
case WAVE: }
if (record->event.pressed) { return false;
SEND_STRING(SS_LALT("D83D+DC4B")); break;
} case WAVE:
return false; if (record->event.pressed) {
break; register_unicode(0x1F44B);
case NBSP: }
if (record->event.pressed) { return false;
SEND_STRING("&nbsp;"); break;
} case KC_LSFT:
return false; shift_held = record->event.pressed;
break; return true;
case KC_LSFT: break;
shift_held = record->event.pressed; case KC_RSFT:
return true; shift_held = record->event.pressed;
break; return true;
case KC_RSFT: break;
shift_held = record->event.pressed; case M_BRACKET_LEFT: {
return true; if (record->event.pressed) {
break; if (shift_held) {
case M_BRACKET_LEFT: { unregister_code(KC_LSFT);
if (record->event.pressed) { unregister_code(KC_RSFT);
if (shift_held) { register_code(KC_LBRC);
unregister_code(KC_LSFT); } else {
unregister_code(KC_RSFT); register_code(KC_LSFT);
register_code(KC_LBRC); register_code(KC_9);
} else { }
register_code(KC_LSFT); } else { // Release the key
register_code(KC_9); unregister_code(KC_LBRC);
} unregister_code(KC_LSFT);
} else { // Release the key unregister_code(KC_RSFT);
unregister_code(KC_LBRC); unregister_code(KC_9);
unregister_code(KC_LSFT); }
unregister_code(KC_RSFT); return false;
unregister_code(KC_9); break;
} }
return false; case M_BRACKET_RIGHT: {
break; if (record->event.pressed) {
} if (shift_held) {
case M_BRACKET_RIGHT: { unregister_code(KC_LSFT);
if (record->event.pressed) { unregister_code(KC_RSFT);
if (shift_held) { register_code(KC_RBRC);
unregister_code(KC_LSFT); } else {
unregister_code(KC_RSFT); register_code(KC_LSFT);
register_code(KC_RBRC); register_code(KC_0);
} else { }
register_code(KC_LSFT); } else { // Release the key
register_code(KC_0); unregister_code(KC_RBRC);
} unregister_code(KC_LSFT);
} else { // Release the key unregister_code(KC_RSFT);
unregister_code(KC_RBRC); unregister_code(KC_0);
unregister_code(KC_LSFT); }
unregister_code(KC_RSFT); return false;
unregister_code(KC_0); break;
} }
return false; }
break; return true;
}
}
return true;
}; };
// Shortcut to make keymap more readable // Shortcut to make keymap more readable
#define KC_SYQT LT(_SYMB,KC_QUOT) #define KC_SYQT LT(_SYMB, KC_QUOT)
#define SYM_L MO(_SYMB) #define SYM_L MO(_SYMB)
#define MO_INTR MO(_INTER) #define MO_INTR MO(_INTER)
#define TT_ADJ TT(_ADJUST) #define TT_ADJ TT(_ADJUST)
#define UC_00E0 UC(0x00E0) #define UC_00E0 UC(0x00E0)
#define UC_00FC UC(0x00FC) #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_0171 UC(0x0171)
#define UC_00EA UC(0x00EA) #define UC_00EA UC(0x00EA)
#define UC_0151 UC(0x0151) #define UC_0151 UC(0x0151)
// Non-breaking space.
#define UC_00A0 UC(0x00a0)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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 ,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) { void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer); eeconfig_update_default_layer(default_layer);
default_layer_set(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. // Change LED colors depending on the layer.
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
switch (biton32(state)) { switch (get_highest_layer(state)) {
case _SYMB: case _SYMB:
rgblight_setrgb_orange(); rgblight_setrgb_orange();
break; break;
case _NAV: case _NAV:
rgblight_setrgb_springgreen(); rgblight_setrgb_springgreen();
break; break;
case _INTER: case _INTER:
rgblight_setrgb_teal(); rgblight_setrgb_teal();
break; break;
case _ADJUST: case _ADJUST:
rgblight_setrgb_red(); rgblight_setrgb_red();
break; break;
default: // for any other layers, or the default layer default: // for any other layers, or the default layer
rgblight_setrgb_yellow(); rgblight_setrgb_yellow();
break; break;
} }
return state; return state;
}; };

View File

@ -1,7 +1,7 @@
# A Colemak keymap for the Redox keyboard # A Colemak keymap for the Redox keyboard
---- ----
![jeherve-redox-layout-4](https://user-images.githubusercontent.com/426388/50276398-2664be80-0442-11e9-86b9-fbd0f4275354.png) ![jeherve-redox-layout-5](https://user-images.githubusercontent.com/426388/116534030-56f67600-a8e2-11eb-9bf3-3ce5362d717a.png)
---- ----
@ -25,6 +25,9 @@ My keymap uses 5 layers:
## Changelog ## Changelog
- 2021.04.29
- Update code to replace deprecated code.
- Fix non-breaking space key.
- 2018.12.20 - 2018.12.20
- 2 new Macro keys, to invoke [Alfred](https://www.alfredapp.com/) and [1Password](https://1password.com/). - 2 new Macro keys, to invoke [Alfred](https://www.alfredapp.com/) and [1Password](https://1password.com/).
- No more Right Command key or Expose key, I didn't use those much. - No more Right Command key or Expose key, I didn't use those much.