qmk_userspace/keyboards/splitkb/kyria/rev1/keymaps/lejouson/keymap.c
2025-02-03 17:19:04 +01:00

250 lines
16 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Copyright 2025 Jose Gisbert, aka lejouson <contacto@email.gont.es>
// SPDX-License-Identifier: GPL-3.0-or-later
#include QMK_KEYBOARD_H
#include <keymap_spanish.h>
enum layers {
_DEFAULT = 0,
_NAVI,
_FUNCTION,
_SYMBOLS,
_NUMERIC,
_CONFIG
};
enum keycodes {
KC_EMQM = SAFE_RANGE
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Default
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | Ç |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | º ª | A | S | D | F | G | | H | J | K | L | Ñ | ´ ¨ |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | ¿ ¡ | Z | X | C | V | B |SH/Del| Alt | | Tab |LShift| N | M | , ; | . : | - _ | ? ! |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |W+Sh+S| Caps | Lower| Bksp | Ctrl | | Enter| Space| Raise| GUI | ≡ |
* `----------------------------------' `----------------------------------'
*/
[_DEFAULT] = LAYOUT(
KC_ESC, ES_Q, ES_W, ES_E, ES_R, ES_T, ES_Y, ES_U, ES_I, ES_O, ES_P, ES_CCED,
ES_MORD, ES_A, ES_S, ES_D, ES_F, ES_G, ES_H, ES_J, ES_K, ES_L, ES_NTIL, ES_ACUT,
ES_IEXL, ES_Z, ES_X, ES_C, ES_V, ES_B, SFT_T(KC_DEL), KC_LALT, KC_TAB, KC_LSFT, ES_N, ES_M, ES_COMM, ES_DOT, ES_MINS, KC_EMQM,
LSG(ES_S), KC_CAPS, MO(_NAVI), KC_BSPC, KC_LCTL, KC_ENT, KC_SPC, MO(_SYMBOLS), KC_LGUI, KC_APP
),
/*
* Navi
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | Ct+Y | Ct+Z | Ct+V | Ct+C | Ct+V | | PageUp| Home | Up | End | C+Hom| |
* |--------+------+------+------+------+------| |-------+------+------+------+------+--------|
* | | GUI | Alt | Ctrl |LShift| | | PDown | Left | Down | Right| C+End|Lay Lock|
* |--------+------+------+------+------+------+-------------. ,-------------+-------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+-------+------+------+----------------------'
* | | | | | | | | | | |Ctrl+C|
* `----------------------------------' `-----------------------------------'
*/
[_NAVI] = LAYOUT(
_______, C(KC_Y), C(KC_Z), C(KC_V), C(KC_C), C(KC_X), KC_PGUP, KC_HOME, KC_UP, KC_END, C(KC_HOME), XXXXXXX,
XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, C(KC_END), QK_LLCK,
XXXXXXX, MO(_FUNCTION), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______, _______, C(KC_C)
),
/*
* Function
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | F5 | F11 | F12 | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | F1 | F2 | F3 |Alt+F4| |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_FUNCTION] = LAYOUT(
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F5, KC_F11, KC_F12, XXXXXXX, XXXXXXX,
XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, A(KC_F4), _______,
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Symbols
*
* ,-------------------------------------------. ,------------------------------------------.
* | | | | & | { | } | " | | $ | [ | ] | % | @ | |
* |--------+------+------+------+------+------| |------+------+------+------+------+-------|
* | - | * | + | ( | ) | = | | ; | < | > | / | \ | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+-------|
* | | | | ~ | ` | ' | | | | | | # | ^ | € | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+---------------------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_SYMBOLS] = LAYOUT(
_______, ES_PIPE, ES_AMPR, ES_LCBR, ES_RCBR, ES_DQUO, ES_DLR, ES_LBRC, ES_RBRC, ES_PERC, ES_AT, XXXXXXX,
ES_MINS, ES_ASTR, ES_PLUS, ES_LPRN, ES_RPRN, ES_EQL, ES_SCLN, ES_LABK, ES_RABK, ES_SLSH, ES_BSLS, _______,
XXXXXXX, XXXXXXX, XXXXXXX, ES_TILD, ES_GRV, ES_QUOT, _______, _______, _______, _______, ES_HASH, ES_CIRC, ES_EURO, XXXXXXX, MO(_NUMERIC), XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Numeric
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | 6 | 7 | 8 | 9 | 0 | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | 1 | 2 | 3 | 4 | 5 | | | | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | / | : | , | . | - | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_NUMERIC] = LAYOUT(
_______, ES_6, ES_7, ES_8, ES_9, ES_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, ES_1, ES_2, ES_3, ES_4, ES_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
XXXXXXX, KC_PSLS, ES_COLN, KC_COMM, KC_PDOT, KC_PMNS, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Config
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | VAI | SAI | HUI | MOD | | | Next | Vol+ | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | VAD | SAD | HUD | TOG | | | Play | Mute | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | RMOD | | | | | | | Prev | Vol- | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_CONFIG]= LAYOUT(
_______, XXXXXXX, RGB_VAI, RGB_SAI, RGB_HUI, RGB_M_B, XXXXXXX, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, XXXXXXX, KC_MPLY, KC_MUTE, XXXXXXX, XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, _______, _______, _______, _______, XXXXXXX, KC_MPRV, KC_VOLD, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * Layer template
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _NAVI, _SYMBOLS, _CONFIG);
}
uint8_t mod_state;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
mod_state = get_mods();
switch (keycode) {
case KC_EMQM:
if (record->event.pressed) {
if (mod_state & MOD_MASK_SHIFT) {
del_mods(MOD_MASK_SHIFT);
register_code16(ES_QUES);
set_mods(mod_state);
} else {
register_code16(ES_EXLM);
}
} else {
if (mod_state & MOD_MASK_SHIFT) {
unregister_code16(ES_QUES);
} else {
unregister_code16(ES_EXLM);
}
}
return false;
default:
return true;
}
}
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
bool oled_task_user(void) {
if (is_keyboard_master()) {
// QMK Logo and version information
// clang-format off
static const char PROGMEM qmk_logo[] = {
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
// clang-format on
oled_write_P(qmk_logo, false);
oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state|default_layer_state)) {
case _DEFAULT:
oled_write_P(PSTR("Alfa\n"), false);
break;
case _NAVI:
oled_write_P(PSTR("Navi\n"), false);
break;
case _FUNCTION:
oled_write_P(PSTR("Function\n"), false);
break;
case _SYMBOLS:
oled_write_P(PSTR("Symbols\n"), false);
break;
case _NUMERIC:
oled_write_P(PSTR("Numeric\n"), false);
break;
case _CONFIG:
oled_write_P(PSTR("Config\n"), false);
break;
default:
oled_write_P(PSTR("Undefined\n"), false);
}
// Write host Keyboard LED Status to OLEDs
led_t led_usb_state = host_keyboard_led_state();
oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
}
return false;
}
#endif
#ifdef ENCODER_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_DEFAULT ] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(KC_TAB, S(KC_TAB) ) },
[ _NAVI ] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(C(KC_RGHT), C(KC_LEFT)) },
[_FUNCTION] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(_______, _______ ) },
[_SYMBOLS ] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(_______, _______ ) },
[_NUMERIC ] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(_______, _______ ) },
[ _CONFIG ] = { ENCODER_CCW_CW(XXXXXXX, XXXXXXX), ENCODER_CCW_CW(_______, _______ ) },
};
#endif