my-keymaps/keyboards/ergodox_ez/keymaps/ryuk/keymap.c
Tom Willemse 2a0291f72d Swap some keys for Ergodox EZ
It makes more sense for the space and backspace keys to be on opposite sides of
the thumb cluster like on both the Atreus and Voyager.
2024-11-25 23:43:02 -08:00

281 lines
18 KiB
C

#include QMK_KEYBOARD_H
#include "version.h"
#define TG_GAME TG(GAME)
#define TG_UPPER TG(UPPER)
#define MO_MOV MO(MOVEMENT)
#define MO_SYM MO(SYMNUM)
enum layers {
BASE, // Default layer
GAME, /* Flipped for games */
SYMNUM, // Symbols and numbers
MOVEMENT, // Movement/Navigation keys
UPPER, /* Fake capslock */
};
enum custom_keycodes {
#ifdef ORYX_CONFIGURATOR
VRSN = EZ_SAFE_RANGE,
#else
VRSN = SAFE_RANGE,
#endif
RGB_SLD
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ESC | [ | { | } | ( | = | L4 | | L3 | * | ) | + | ] | ! | APP |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | Q | W | F | P | G | Back | | DEL | J | L | U | Y | ; | |
* |--------+------+------+------+------+------| space| | |------+------+------+------+------+--------|
* | Meh | A | R | S | T | D |------| |------| H | N | E | I | O | Meh |
* |--------+------+------+------+------+------| TAB | | Back |------+------+------+------+------+--------|
* | Hyper | Z | X | C | V | B | | | space| K | M | , | . | ' | Hyper |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | ~L1 | ~L2 | LAlt |LShift| LCtrl| | RCtrl|RShift| LAlt | ~L1 | ~L2 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,--------------.
* | Home | End | | Left | Right |
* ,------|------|------| |------+--------+------.
* | | | PgUp | | Up | | |
* | Space| LGui |------| |------| RGui |Enter |
* | | | PgDn | | Down | | |
* `--------------------' `----------------------'
*/
[BASE] = LAYOUT_ergodox_pretty(
// left hand \\ // right hand
KC_ESC, KC_LBRC, KC_LCBR, KC_RCBR, KC_LPRN, KC_EQL, TG_GAME, TG_UPPER, KC_ASTR, KC_RPRN, KC_PLUS, KC_RBRC, KC_EXLM, KC_APP,
KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_BSPC, KC_DEL, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_NO,
KC_MEH, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_MEH,
KC_RGUI, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TAB, KC_ENT, KC_K, KC_M, KC_COMM, KC_DOT, KC_QUOT, KC_RGUI,
MO_MOV, MO_SYM, KC_LALT, KC_LSFT, KC_LCTL, KC_RCTL, KC_RSFT, KC_LALT, MO_SYM, MO_MOV,
KC_HOME, KC_END, KC_LEFT, KC_RGHT,
KC_PGUP, KC_UP,
KC_BSPC, KC_LGUI, KC_PGDN, KC_DOWN, KC_LGUI, KC_SPC
),
/* Keymap 1: Game layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | P | O | I | U | Y | | | | T | R | E | W | Q | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | H | J | K | L | ; |------| |------| G | F | A | S | D | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | N | M | , | . | ' | | | | B | V | C | X | Z | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,--------------.
* | | | | | |
* ,------|------|------| |------+--------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `----------------------'
*/
[GAME] = LAYOUT_ergodox_pretty(
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(GAME), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_TRNS, KC_TRNS, KC_T, KC_R, KC_E, KC_W, KC_Q, KC_TRNS,
KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_G, KC_F, KC_A, KC_S, KC_D, KC_TRNS,
KC_TRNS, KC_N, KC_M, KC_COMMA, KC_DOT, KC_QUOT, KC_TRNS, KC_TRNS, KC_B, KC_V, KC_C, KC_X, KC_Z, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO_SYM, KC_TRNS
),
/* Keymap 2: Symbol and numbers layer
*
* ,---------------------------------------------------. ,--------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | | | | F7 | F8 | F9 | F10 | F11 | F12 |
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | | # | @ | | | & | ^ | | | | | 7 | 8 | 9 | * | |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | ` | ? | $ | - | |------| |------| , | 4 | 5 | 6 | + | |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | ~ | \ | / | _ | % | | | | & | 1 | 2 | 3 | \ | |
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | . | 0 | = | |
* `-----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[SYMNUM] = LAYOUT_ergodox_pretty(
// left hand \\ // right hand
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_NO, KC_HASH, KC_AT, KC_PIPE, KC_AMPR, KC_CIRC, KC_NO, KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_ASTR, KC_NO,
KC_NO, KC_GRV, KC_QUES, KC_DLR, KC_MINS, KC_NO, KC_COMM, KC_4, KC_5, KC_6, KC_PLUS, KC_NO,
KC_NO, KC_TILD, KC_BSLS, KC_SLSH, KC_UNDS, KC_PERC, KC_NO, KC_NO, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO
),
/* Keymap 3: Movement mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | Lclk | MsUp | Rclk | WhUp | | | | PgUp | Home | Up | End | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| WhDn |------| |------| PgDn | Left | Down | Right| | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | |Brwser|
* | | |------| |------| |Back |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[MOVEMENT] = LAYOUT_ergodox_pretty(
// left hand
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_NO, KC_NO, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_NO, KC_NO,
KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_WBAK
),
/* Keymap 4: UPPER layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | Q | W | F | P | G | - | | | J | L | U | Y | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | A | R | S | T | D |------| |------| H | N | E | I | O | |
* |--------+------+------+------+------+------| _ | | |------+------+------+------+------+--------|
* | | Z | X | C | V | B | | | | K | M | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,--------------.
* | | | | | |
* ,------|------|------| |------+--------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `----------------------'
*/
[UPPER] = LAYOUT_ergodox_pretty(
// left hand
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
KC_TRNS, S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_G), KC_MINUS, KC_TRNS, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), KC_TRNS, KC_TRNS,
KC_TRNS, S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_D), S(KC_H), S(KC_N), S(KC_E), S(KC_I), S(KC_O), KC_TRNS,
KC_TRNS, S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), KC_UNDERSCORE, KC_TRNS, S(KC_K), S(KC_M), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
// clang-format on
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch (keycode) {
case VRSN:
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
return false;
#ifdef RGBLIGHT_ENABLE
case RGB_SLD:
rgblight_mode(1);
return false;
#endif
}
}
return true;
}
// Runs just one time when the keyboard initializes.
void keyboard_post_init_user(void) {
#ifdef RGBLIGHT_COLOR_LAYER_0
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
#endif
};
// Runs whenever there is a layer state change.
layer_state_t layer_state_set_user(layer_state_t state) {
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
uint8_t layer = get_highest_layer(state);
switch (layer) {
case 0:
#ifdef RGBLIGHT_COLOR_LAYER_0
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
#endif
break;
case 1:
ergodox_right_led_1_on();
#ifdef RGBLIGHT_COLOR_LAYER_1
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1);
#endif
break;
case 2:
ergodox_right_led_2_on();
#ifdef RGBLIGHT_COLOR_LAYER_2
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2);
#endif
break;
case 3:
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_3
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3);
#endif
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
#ifdef RGBLIGHT_COLOR_LAYER_4
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4);
#endif
break;
case 5:
ergodox_right_led_1_on();
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_5
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5);
#endif
break;
case 6:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_6
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6);
#endif
break;
case 7:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_7
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7);
#endif
break;
default:
break;
}
return state;
};