summaryrefslogtreecommitdiffstats
path: root/keyboards/adafruit/macropad/keymaps/drashna/keymap.c
blob: d87e4afd6671e5738aae3a1621c54c41d20da058 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Copyright 2023 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later

#include "drashna.h"

// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [0] = LAYOUT(
                          LT(1,KC_MUTE),
        KC_ENT,  KC_0,    KC_BSPC,
        KC_7,    KC_8,    KC_9,
        KC_4,    KC_5,    KC_6,
        KC_1,    KC_2,    KC_3
    ),
    [1] = LAYOUT(
                          _______,
        CK_TOGG, AU_TOGG, _______,
        _______, _______, _______,
        _______, _______, _______,
        _______, _______, _______
    ),
};
// clang-format on

#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
    [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
    [1] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)},
};
#endif

void render_oled_title(bool side) {
    oled_write_P(PSTR("   Macropad  "), true);
}

void render_rgb_mode(uint8_t col, uint8_t line);

void l_render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line) {
    oled_set_cursor(col, line);
#ifdef CAPS_WORD_ENABLE
    led_usb_state.caps_lock |= is_caps_word_on();
#endif
    oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state.num_lock);
    oled_write_P(PSTR(" "), false);
    oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state.caps_lock);
    oled_write_P(PSTR(" "), false);
    oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state.scroll_lock);
}

bool oled_task_keymap(void) {
    oled_write_raw_P(header_image, sizeof(header_image));
    oled_set_cursor(0, 1);
    oled_write_raw_P(row_2_image, sizeof(row_2_image));
    oled_set_cursor(4, 0);
    render_oled_title(false);

    render_kitty(0, 2);
    render_matrix_scan_rate(1, 7, 2);

#ifdef AUDIO_ENABLE
    oled_set_cursor(7, 4);
    bool l_is_audio_on = is_audio_on();

    static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
    oled_write_P(audio_status[l_is_audio_on], false);

#    ifdef AUDIO_CLICKY
    bool                      l_is_clicky_on            = is_clicky_on();
    static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
    oled_write_P(audio_clicky_status[l_is_clicky_on && l_is_audio_on], false);
#    endif
#endif

    static const char PROGMEM cat_mode[3] = {0xF8, 0xF9, 0};
    oled_write_P(cat_mode, get_keyboard_lock());

#ifdef RGB_MATIRX_ENABLE
    static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
    oled_write_P(rgb_layer_status[rgb_matrix_is_enabled()], false);
#endif

#ifdef HAPTIC_ENABLE
    static const char PROGMEM nukem_good[2] = {0xFA, 0};
    oled_write_P(haptic_get_enable() ? nukem_good : PSTR(" "), false);
#endif

    l_render_keylock_status(host_keyboard_led_state(), 7, 5);
    render_rgb_mode(1, 6);

    for (uint8_t i = 1; i < 7; i++) {
        oled_set_cursor(0, i);
        oled_write_raw_P(display_border, sizeof(display_border));
        oled_set_cursor(21, i);
        oled_write_raw_P(display_border, sizeof(display_border));
    }
    oled_set_cursor(0, 7);
    oled_write_raw_P(footer_image, sizeof(footer_image));

    return false;
}