aboutsummaryrefslogtreecommitdiff
path: root/keymaps/crkbd/keymap.c
blob: a7c4fa6c364afbd699701884c669bda1a83448ea (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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// Copyright 2022 jack (@waffle87)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "waffle.h"

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_BASE] = LAYOUT_waffle_3x6(
    KC_NO, ___BASE1___, KC_NO,
    LINKS, ___BASE2___, RWORD,
    KC_NO, ___BASE3___, KC_NO,
           ___BASE4___
  ),
  [_LOWER] = LAYOUT_waffle_3x6(
    KC_NO, ___LOWER1___, KC_NO,
    KC_NO, ___LOWER2___, KC_NO,
    KC_NO, ___LOWER3___, KC_NO,
           ___LOWER4___
  ),
  [_RAISE] = LAYOUT_waffle_3x6(
    KC_NO, ___RAISE1___, KC_NO,
    KC_NO, ___RAISE2___, KC_NO,
    KC_NO, ___RAISE3___, KC_NO,
           ___RAISE4___
  )
};

void housekeeping_task_keymap(void) {
  if (last_input_activity_elapsed() > 15000) {
    const pin_t row_pins[] = MATRIX_ROW_PINS, col_pins[] = MATRIX_COL_PINS;
    for (uint8_t i = 0; i < ARRAY_SIZE(col_pins); ++i) {
      setPinOutput(col_pins[i]);
      writePinLow(col_pins[i]);
    }
    for (uint8_t i = 0; i < ARRAY_SIZE(row_pins); ++i) {
      setPinInputHigh(row_pins[i]);
      palEnableLineEvent(row_pins[i], PAL_EVENT_MODE_BOTH_EDGES);
    }
    __WFI();
    for (uint8_t i = 0; i < ARRAY_SIZE(row_pins); ++i) {
      palDisableLineEvent(row_pins[i]);
      writePinHigh(row_pins[i]);
      setPinInputHigh(row_pins[i]);
    }
    for (uint8_t i = 0; i < ARRAY_SIZE(col_pins); ++i) {
      writePinHigh(col_pins[i]);
      setPinInputHigh(col_pins[i]);
    }
  }
}

#ifdef AUDIO_ENABLE
void keyboard_pre_init_user(void) { //thank you to @sigprof for this
  palSetLineMode(A5, PAL_MODE_INPUT_ANALOG);
  palSetLineMode(B1, PAL_MODE_INPUT_ANALOG);
}

void keyboard_post_init_keymap(void) {
  // enable OPAMP1 as A5 → B1 follower
  OPAMP3->CSR = OPAMP3_CSR_VMSEL_1 | OPAMP3_CSR_VMSEL_0 | OPAMP3_CSR_VPSEL_0 | OPAMP3_CSR_OPAMP3EN;
}
#endif //audio

#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())
    return 3;
  else
    return 2;
  return rotation;
}

bool oled_task_keymap(void) {
  if (is_keyboard_master())
    layer_anim();
  else {
    oled_set_cursor(0, 0);
    render_wpm();
    oled_set_cursor(0, 3);
    felix();
    oled_set_cursor(0, 7);
    render_keyboard();
    oled_set_cursor(0, 9);
    layer_status();
    oled_set_cursor(0, 11);
    mod_status(get_mods());
    oled_set_cursor(0, 13);
    keylock_status(host_keyboard_led_state());
    oled_set_cursor(1, 15);
    render_keylogger();
    oled_set_cursor(0, 15);
    keylogger_status();
  }
  return false;
}
#endif //oled

#ifdef RGB_MATRIX_ENABLE
void matrix_init_user(void) {
  g_led_config = (led_config_t) { {
    {  15,  16,  17,  18,  19,  20 },
    {  14,  13,  12,  11,  10,  9 },
    {  3,   4,   5,   6,   7,   8 },
    { NO_LED, NO_LED, NO_LED,  2,  1,   0 },
    {  47,  46,  45,  44,  43,  42 },
    {  36,  37,  38,  39,  40,  41 },
    {  35,  34,  33,  32,  31,  30 },
    { NO_LED, NO_LED, NO_LED,  27,  28,  29 }
  }, {
    {  95,  63 }, {  85,  39 }, {  85,  21 }, {  85,   4 }, {  68,   2 }, {  68,  19 }, {  68,  37 },
    {  80,  58 }, {  60,  55 }, {  50,  35 }, {  50,  13 }, {  50,   0 }, {  33,   3 }, {  33,  20 },
    {  33,  37 }, {  16,  42 }, {  16,  24 }, {  16,   7 }, {   0,   7 }, {   0,  24 }, {   0,  41 },
    {  85,  16 }, {  50,  13 }, {  16,  20 }, {  16,  38 }, {  50,  48 }, {  85,  52 }, { 129,  63 },
    { 139,  39 }, { 139,  21 }, { 139,   4 }, { 156,   2 }, { 156,  19 }, { 156,  37 }, { 144,  58 },
    { 164,  55 }, { 174,  35 }, { 174,  13 }, { 174,   0 }, { 191,   3 }, { 191,  20 }, { 191,  37 },
    { 208,  42 }, { 208,  24 }, { 208,   7 }, { 224,   7 }, { 224,  24 }, { 224,  41 }, { 139,  16 },
    { 174,  13 }, { 208,  20 }, { 208,  38 }, { 174,  48 }, { 139,  52 },
  }, {
    1, 1, 1, 1, 4, 4, 4,
    4, 4, 4, 4, 4, 4, 4,
    1, 1, 4, 4, 4, 4, 4,
    2, 2, 2, 2, 2, 2, 1,
    1, 1, 4, 4, 4, 4, 4,
    1, 1, 4, 4, 4, 4, 4,
    4, 4, 4, 4, 4, 1, 2,
    2, 2, 2, 2, 2
  } };
}
#endif //rgb matrix