199 lines
14 KiB
C
199 lines
14 KiB
C
// Copyright 2022 Philip Gaber (@qhga)
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#include QMK_KEYBOARD_H
|
|
|
|
extern keymap_config_t keymap_config;
|
|
|
|
enum layer_names {
|
|
_LAYER0,
|
|
_LAYER1,
|
|
_LAYER2,
|
|
_LAYER3,
|
|
};
|
|
|
|
#define OS_LSFT OSM(MOD_LSFT)
|
|
|
|
#define LAYOUT_wrapper( ... ) LAYOUT(__VA_ARGS__)
|
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
|
/***********************************************************************************
|
|
* DEFAULT
|
|
***********************************************************************************/
|
|
|
|
// R1 (9)
|
|
#define ___HSTG___F5___F9___HCM___MOUSE__ KC_BSLS, KC_F5, KC_F9, KC_EQL
|
|
#define _TO3___PLAY___VOUP___VODO___MUTE_ TO(_LAYER3), KC_MPLY, KC_MUTE, KC_VOLU, KC_VOLD
|
|
// R2 (14)
|
|
#define __ESC__1_____2_____3_____4_____5__PLS__ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_RBRC
|
|
#define __MIN__6_____7_____8_____9_____0__QST__ KC_SLSH, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS
|
|
// R3 (14)
|
|
#define __TAB__Q_____W_____E_____R_____T_RIBR3_ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, RALT(KC_8)
|
|
#define _LFBR3_Z_____U_____I_____O_____P___UE__ RALT(KC_9), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC
|
|
// R4 (14)
|
|
#define __ESC__A_____S_____D_____F_____G_RIBR1_ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8)
|
|
#define _LFBR1_H_____J_____K_____L_____OE__AE__ S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
|
|
// R5 (14)
|
|
#define _SHFT__Y_____X_____C_____V_____B_RIBR2_ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, RALT(KC_7)
|
|
#define _LFBR2_N_____M____COM___DOT___MIN__SHFT RALT(KC_0), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT
|
|
// R6 (14)
|
|
#define ______________BOTTOM_LEFT______________ KC_LALT, KC_NUBS, KC_LCTL, MO(_LAYER1), KC_LGUI, KC_LCTL, KC_RALT
|
|
#define ______________BOTTOM_RIGHT_____________ KC_ENT, KC_SPC, KC_BSPC, MO(_LAYER2), KC_NO, KC_PSCR, OSM(MOD_LSFT)
|
|
|
|
[_LAYER0] =
|
|
LAYOUT_wrapper(
|
|
___HSTG___F5___F9___HCM___MOUSE__, _TO3___PLAY___VOUP___VODO___MUTE_,
|
|
__ESC__1_____2_____3_____4_____5__PLS__, __MIN__6_____7_____8_____9_____0__QST__,
|
|
__TAB__Q_____W_____E_____R_____T_RIBR3_, _LFBR3_Z_____U_____I_____O_____P___UE__,
|
|
__ESC__A_____S_____D_____F_____G_RIBR1_, _LFBR1_H_____J_____K_____L_____OE__AE__,
|
|
_SHFT__Y_____X_____C_____V_____B_RIBR2_, _LFBR2_N_____M____COM___DOT___MIN__SHFT,
|
|
______________BOTTOM_LEFT______________, ______________BOTTOM_RIGHT_____________
|
|
),
|
|
|
|
/***********************************************************************************
|
|
* LAYER 1
|
|
***********************************************************************************/
|
|
|
|
// R1 (9)
|
|
#define ____________LAYER1_L1____________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
#define ____________LAYER1_R1____________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
|
|
// R2 (14)
|
|
#define _______________LAYER1_L2_______________ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
#define _______________LAYER1_R2_______________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS
|
|
// R3 (14)
|
|
#define _______________LAYER1_L3_______________ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
#define _______________LAYER1_R3_______________ KC_NO, KC_NO, KC_LBRC, KC_NO, KC_SCLN, KC_NO, KC_BSLS
|
|
// R4 (14)
|
|
#define _______________LAYER1_L4_______________ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
#define _______________LAYER1_R4_______________ KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_SLSH
|
|
// R5 (14)
|
|
#define _______________LAYER1_L5_______________ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
#define _______________LAYER1_R5_______________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO
|
|
// R6 (14)
|
|
#define _______________LAYER1_L6_______________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
#define _______________LAYER1_R6_______________ KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
|
|
[_LAYER1] =
|
|
LAYOUT_wrapper(
|
|
____________LAYER1_L1____________, ____________LAYER1_R1____________,
|
|
_______________LAYER1_L2_______________, _______________LAYER1_R2_______________,
|
|
_______________LAYER1_L3_______________, _______________LAYER1_R3_______________,
|
|
_______________LAYER1_L4_______________, _______________LAYER1_R4_______________,
|
|
_______________LAYER1_L5_______________, _______________LAYER1_R5_______________,
|
|
_______________LAYER1_L6_______________, _______________LAYER1_R6_______________
|
|
),
|
|
|
|
/***********************************************************************************
|
|
* LAYER 2
|
|
***********************************************************************************/
|
|
|
|
// R1 (9)
|
|
#define ____________LAYER2_L1____________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
#define ____________LAYER2_R1____________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
|
|
// R2 (14)
|
|
#define _______________LAYER2_L2_______________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
#define _______________LAYER2_R2_______________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
// R3 (14)
|
|
#define _______________LAYER2_L3_______________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6
|
|
#define _______________LAYER2_R3_______________ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS
|
|
// R4 (14)
|
|
#define _______________LAYER2_L4_______________ KC_TRNS, KC_QUOT, KC_MINS, KC_MS_BTN4, KC_MS_BTN5, KC_NO, KC_NO
|
|
#define _______________LAYER2_R4_______________ KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, KC_NO, KC_SLSH
|
|
// R5 (14)
|
|
#define _______________LAYER2_L5_______________ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
#define _______________LAYER2_R5_______________ KC_NO, KC_MS_BTN1, KC_MS_BTN2, KC_NO, KC_NO, KC_NO, KC_NO
|
|
// R6 (14)
|
|
#define _______________LAYER2_L6_______________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
#define _______________LAYER2_R6_______________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
|
|
[_LAYER2] =
|
|
LAYOUT_wrapper(
|
|
____________LAYER2_L1____________, ____________LAYER2_R1____________,
|
|
_______________LAYER2_L2_______________, _______________LAYER2_R2_______________,
|
|
_______________LAYER2_L3_______________, _______________LAYER2_R3_______________,
|
|
_______________LAYER2_L4_______________, _______________LAYER2_R4_______________,
|
|
_______________LAYER2_L5_______________, _______________LAYER2_R5_______________,
|
|
_______________LAYER2_L6_______________, _______________LAYER2_R6_______________
|
|
),
|
|
|
|
/***********************************************************************************
|
|
* LAYER 3
|
|
***********************************************************************************/
|
|
|
|
// R1 (9)
|
|
#define ____________LAYER3_L1____________ KC_F1, KC_F2, KC_F3, KC_F4
|
|
#define ____________LAYER3_R1____________ TO(_LAYER0), KC_NO, KC_NO, KC_NO, KC_DEL
|
|
// R2 (14)
|
|
#define _______________LAYER3_L2_______________ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6
|
|
#define _______________LAYER3_R2_______________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
// R3 (14)
|
|
#define _______________LAYER3_L3_______________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y
|
|
#define _______________LAYER3_R3_______________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
// R4 (14)
|
|
#define _______________LAYER3_L4_______________ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H
|
|
#define _______________LAYER3_R4_______________ KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO
|
|
// R5 (14)
|
|
#define _______________LAYER3_L5_______________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N
|
|
#define _______________LAYER3_R5_______________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO
|
|
// R6 (14)
|
|
#define _______________LAYER3_L6_______________ KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_TRNS
|
|
#define _______________LAYER3_R6_______________ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT
|
|
|
|
[_LAYER3] =
|
|
LAYOUT_wrapper(
|
|
____________LAYER3_L1____________, ____________LAYER3_R1____________,
|
|
_______________LAYER3_L2_______________, _______________LAYER3_R2_______________,
|
|
_______________LAYER3_L3_______________, _______________LAYER3_R3_______________,
|
|
_______________LAYER3_L4_______________, _______________LAYER3_R4_______________,
|
|
_______________LAYER3_L5_______________, _______________LAYER3_R5_______________,
|
|
_______________LAYER3_L6_______________, _______________LAYER3_R6_______________
|
|
),
|
|
};
|
|
|
|
#ifdef OLED_ENABLE
|
|
static void render_logo(void) {
|
|
static const char PROGMEM raw_logo[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 192, 192, 224, 240, 240, 248, 248, 252, 252, 254, 254, 252, 252, 248, 248, 240, 224, 224, 192, 192, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 224, 240, 240, 248, 248, 252, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 252, 252, 120, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 1, 1, 3, 3, 7, 7, 15, 31, 31, 63, 63, 127, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 63, 63, 31, 31, 143, 143, 135, 131, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 129, 131, 195, 195, 227, 241, 241, 248, 248, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 252, 252, 248, 240, 240, 224, 224, 192, 192, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 60, 60, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 127, 63, 63, 31, 31, 14, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 7, 15, 15, 31, 31, 63, 63, 127, 255, 255, 255, 127, 63, 63, 31, 31, 15, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
|
}
|
|
|
|
bool oled_task_user(void) {
|
|
#ifdef CONSOLE_ENABLE
|
|
/* uprintf("oled_task_user\n"); */
|
|
#endif
|
|
|
|
if (is_keyboard_master()) {
|
|
oled_write_P(PSTR("\n "), false);
|
|
switch(get_highest_layer(layer_state)) {
|
|
case _LAYER0:
|
|
oled_write_P(PSTR("Default\n"),false);
|
|
break;
|
|
case _LAYER1:
|
|
oled_write_P(PSTR("Lower\n"),false);
|
|
break;
|
|
case _LAYER2:
|
|
oled_write_P(PSTR("Upper\n"),false);
|
|
break;
|
|
case _LAYER3:
|
|
oled_write_P(PSTR("Gaming\n"),false);
|
|
break;
|
|
}
|
|
} else {
|
|
render_logo();
|
|
}
|
|
return false;
|
|
}
|
|
#endif
|
|
|
|
void keyboard_post_init_user(void) {
|
|
oled_init(OLED_ROTATION_180);
|
|
// debug_enable=true;
|
|
// debug_matrix=true;
|
|
// debug_keyboard=true;
|
|
// debug_mouse=true;
|
|
} |