diff options
Diffstat (limited to 'keyboards/rgbkb/mun/rev1/rev1.c')
| -rw-r--r-- | keyboards/rgbkb/mun/rev1/rev1.c | 122 | 
1 files changed, 122 insertions, 0 deletions
| diff --git a/keyboards/rgbkb/mun/rev1/rev1.c b/keyboards/rgbkb/mun/rev1/rev1.c new file mode 100644 index 0000000000..28ad843b52 --- /dev/null +++ b/keyboards/rgbkb/mun/rev1/rev1.c @@ -0,0 +1,122 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * <https://github.com/Legonut> wrote this file.  As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include "rev1.h" + +#define NUMBER_OF_TOUCH_ENCODERS 2 +#define TOUCH_ENCODER_OPTIONS TOUCH_SEGMENTS + 2 + +#define NUMBER_OF_ENCODERS 4 +#define ENCODER_OPTIONS 2 + +typedef struct PACKED { +    uint8_t r; +    uint8_t c; +} encodermap_t; + +// this maps encoders and then touch encoders to their respective electrical matrix entry +// mapping is row (y) then column (x) when looking at the electrical layout +const encodermap_t encoder_map[NUMBER_OF_ENCODERS][ENCODER_OPTIONS] =  +{ +    { {  5, 0 }, {  5, 1 } }, // Encoder 1 matrix entries +    { {  5, 2 }, {  5, 3 } }, // Encoder 2 matrix entries +    { { 12, 0 }, { 12, 1 } }, // Encoder 3 matrix entries +    { { 12, 2 }, { 12, 3 } }, // Encoder 4 matrix entries +};  + +const encodermap_t touch_encoder_map[NUMBER_OF_TOUCH_ENCODERS][TOUCH_ENCODER_OPTIONS] =  +{ +    { {  6, 0 }, {  6, 1 }, {  6, 2 }, {  6, 3 }, {  6, 4 } }, // Touch Encoder 1 matrix entries +    { { 13, 0 }, { 13, 1 }, { 13, 2 }, { 13, 3 }, { 13, 4 } }  // Touch Encoder 2 matrix entries +}; + +static void process_encoder_matrix(encodermap_t pos) { +    action_exec((keyevent_t){ +        .key = (keypos_t){.row = pos.r, .col = pos.c}, .pressed = true, .time = (timer_read() | 1) /* time should not be 0 */ +    }); +#if TAP_CODE_DELAY > 0 +    wait_ms(TAP_CODE_DELAY); +#endif +    action_exec((keyevent_t){ +        .key = (keypos_t){.row = pos.r, .col = pos.c}, .pressed = false, .time = (timer_read() | 1) /* time should not be 0 */ +    }); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { +    if (!encoder_update_user(index, clockwise)) +        return false; + +    // Mapping clockwise (typically increase) to zero, and counter clockwise (decrease) to 1 +    process_encoder_matrix(encoder_map[index][clockwise ? 0 : 1]); +    return false; +} + +bool touch_encoder_update_kb(uint8_t index, bool clockwise) { +    if (!touch_encoder_update_user(index, clockwise)) +        return false; + +    // Mapping clockwise (typically increase) to zero, and counter clockwise (decrease) to 1 +    process_encoder_matrix(touch_encoder_map[index][clockwise ? 0 : 1]); +    return false; +} + +bool touch_encoder_tapped_kb(uint8_t index, uint8_t section) { +    if (!touch_encoder_tapped_user(index, section)) +        return false; + +    process_encoder_matrix(touch_encoder_map[index][section + 2]); +    return false; +} + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = { { +    {   0,   1,   2,   3,   4,   5,   6 }, +    {  13,  12,  11,  10,   9,   8,   7 }, +    {  14,  15,  16,  17,  18,  19,  20 }, +    {  27,  26,  25,  24,  23,  22,  21 }, +    {  28,  29,  30,  31,  32,  33,  34 }, +    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, +    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, +    {  49,  50,  51,  52,  53,  54,  55 }, +    {  62,  61,  60,  59,  58,  57,  56 }, +    {  63,  64,  65,  66,  67,  68,  69 }, +    {  76,  75,  74,  73,  72,  71,  70 }, +    {  77,  78,  79,  80,  81,  82,  83 }, +    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, +    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED } +}, { +    {  16,  16},{  34,  16},{  49,  16},{  64,  16},{  79,  16},{  94,  16},{ 109,  16}, +    { 109,  31},{  94,  31},{  79,  31},{  64,  31},{  49,  31},{  34,  31},{  16,  31}, +    {  16,  46},{  34,  46},{  49,  46},{  64,  46},{  79,  46},{  94,  46},{ 109,  46}, +    { 109,  61},{  94,  61},{  79,  61},{  64,  61},{  49,  61},{  34,  61},{  16,  61}, +    {  16,  76},{  34,  76},{  49,  76},{  64,  76},{  83,  72},{  98,  72},{ 113,  72}, +    {  97,   5},{  91,   5},{  86,   5},{  80,   5},{  75,   5},{  69,   5},{  63,   5},{  58,   5},{  52,   5},{  46,   5},{  41,   5},{  35,   5},{  30,   5},{  24,   5}, +    { 240,  16},{ 222,  16},{ 207,  16},{ 192,  16},{ 177,  16},{ 162,  16},{ 147,  16}, +    { 147,  31},{ 162,  31},{ 177,  31},{ 192,  31},{ 207,  31},{ 222,  31},{ 240,  31}, +    { 240,  46},{ 222,  46},{ 207,  46},{ 192,  46},{ 177,  46},{ 162,  46},{ 147,  46}, +    { 147,  61},{ 162,  61},{ 177,  61},{ 192,  61},{ 207,  61},{ 222,  61},{ 240,  61}, +    { 240,  76},{ 222,  76},{ 207,  76},{ 192,  76},{ 180,  72},{ 165,  72},{ 150,  72}, +    { 159,   5},{ 164,   5},{ 170,   5},{ 176,   5},{ 181,   5},{ 187,   5},{ 192,   5},{ 198,   5},{ 204,   5},{ 209,   5},{ 215,   5},{ 221,   5},{ 226,   5},{ 232,   5}, +}, { +    1, 4, 4, 4, 4, 4, 4, +    4, 4, 4, 4, 4, 4, 1, +    1, 4, 4, 4, 4, 4, 4, +    4, 4, 4, 4, 4, 4, 1, +    1, 1, 1, 1, 1, 1, 1, +    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +    1, 4, 4, 4, 4, 4, 4, +    4, 4, 4, 4, 4, 4, 1, +    1, 4, 4, 4, 4, 4, 4, +    4, 4, 4, 4, 4, 4, 1, +    1, 1, 1, 1, 1, 1, 1, +    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 +} }; +// clang-format on +#endif | 
