qmk_userspace/keyboards/aks_mls/testadapad/keymaps/mls001/keymap.c
2025-01-18 13:02:11 -06:00

152 lines
6.8 KiB
C

/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@gmail.com>
*
* 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
enum layer_names {
_BASE,
_SPECIAL1,
_SPECIAL2,
_STANDBY
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
TO(_SPECIAL1),
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3,
KC_ENT, KC_0, KC_BSPC
),
[_SPECIAL1] = LAYOUT(
TO(_SPECIAL2),
KC_ESC, KC_MS_U, KC_NO,
KC_MS_L, KC_MS_D, KC_MS_R,
KC_NO, KC_WH_U, KC_NO,
KC_WH_L, KC_WH_D, KC_WH_R
),
[_SPECIAL2] = LAYOUT(
TO(_STANDBY),
KC_NO, KC_NO, KC_NO,
RGB_MOD, RGB_RMOD, KC_NO,
RGB_M_B, RGB_M_R, RGB_M_SW,
RGB_TOG, RGB_M_P, KC_NO
),
[_STANDBY] = LAYOUT(
TO(_BASE),
KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO
),
};
#ifdef ENCODER_MAP_ENABLE
/* This sets what the encoder turns do at each layer.
There has to be a setting for each defined layer.
Otherwise there will be a compile error.
Keep in mind the transparency encoding applies.
*/
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_SPECIAL1] = { ENCODER_CCW_CW(CK_DOWN, CK_UP) },
[_SPECIAL2] = { ENCODER_CCW_CW(AU_PREV, AU_NEXT) },
[_STANDBY] = { ENCODER_CCW_CW(KC_NO, KC_NO) }
};
#endif
#ifdef OLED_ENABLE
static void render_logo(void) {
static const char PROGMEM aks_mls_logo[] = {
// 'mls_logo_layers_totop', 128x24px
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x18,
0x08, 0xc4, 0xc4, 0x84, 0x02, 0x02, 0x02, 0x83, 0xc1, 0x01, 0x01, 0xc1, 0xc1, 0x01, 0x01, 0x01,
0x01, 0x01, 0x03, 0x82, 0xc2, 0x42, 0x44, 0x44, 0x84, 0x08, 0x18, 0x10, 0x20, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x40, 0x80, 0x80,
0x00, 0x3f, 0x01, 0x03, 0x07, 0x02, 0x01, 0x3f, 0x3f, 0x00, 0x00, 0x3f, 0x3f, 0x20, 0x20, 0x20,
0x20, 0x00, 0x00, 0x13, 0x27, 0x26, 0x26, 0x3e, 0x1c, 0x00, 0x80, 0x80, 0x40, 0x30, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x03, 0x07, 0x02, 0x01, 0x3f, 0x3f, 0x00, 0x00,
0x18, 0x3d, 0x25, 0x25, 0x3f, 0x3e, 0x00, 0x00, 0x1e, 0x3f, 0x21, 0x21, 0x21, 0x00, 0x3f, 0x3f,
0x02, 0x03, 0x03, 0x00, 0x1e, 0x3f, 0x21, 0x21, 0x3f, 0x1e, 0x00, 0xff, 0xff, 0x21, 0x21, 0x3f,
0x1e, 0x00, 0x00, 0x18, 0x3d, 0x25, 0x25, 0x3f, 0x3e, 0x00, 0x1e, 0x3f, 0x21, 0x21, 0x3f, 0x3f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x01, 0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
0x08, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x06, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(aks_mls_logo, sizeof(aks_mls_logo));
}
bool oled_init(oled_rotation_t(OLED_ROTATION_0));
bool oled_task_user(void) {
render_logo();
oled_set_cursor(0, 3);
// oled_write(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _BASE:
// oled_write_ln(PSTR("Base"), false);
oled_write_ln(PSTR("Default Actions"), false);
oled_advance_page(true);
oled_advance_page(true);
rgblight_sethsv_noeeprom(HSV_GREEN);
break;
case _SPECIAL1:
// oled_write_ln(PSTR("Special1"), false);
oled_write_ln(PSTR("Special Actions 1"), false);
oled_advance_page(true);
rgblight_sethsv_noeeprom(HSV_BLUE);
break;
case _SPECIAL2:
// oled_write_ln(PSTR("Special2"), false);
oled_write_ln(PSTR("Special Actions 2"), false);
oled_advance_page(true);
oled_advance_page(true);
rgblight_sethsv_noeeprom(HSV_MAGENTA);
break;
case _STANDBY:
oled_write_ln(PSTR("Standby Mode"), false);
oled_write_ln(PSTR("Keys do nothing"), false);
oled_write_ln(PSTR("Layer key re-engages"), false);
rgblight_sethsv_noeeprom(HSV_RED);
break;
default:
oled_write_ln_P(PSTR("Undefined"), false);
oled_advance_page(true);
oled_advance_page(true);
}
return false;
}
#endif