working kanagawa 2040

This commit is contained in:
Ciaanh 2023-01-11 17:01:42 +01:00
parent e3b3d2b263
commit f6cf33747d
9 changed files with 140 additions and 196 deletions

View File

@ -6,7 +6,6 @@
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER Ciaanh #define MANUFACTURER Ciaanh
#define PRODUCT Kanagawa #define PRODUCT Kanagawa
#define DESCRIPTION 75 with features
/* key matrix size */ /* key matrix size */
#define MATRIX_ROWS 6 #define MATRIX_ROWS 6

View File

@ -1,79 +1,58 @@
/* 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/>.
*/
#pragma once #pragma once
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xC1E0
#define PRODUCT_ID 0x0010
#define DEVICE_VER 0x0002
#define MANUFACTURER Ciaanh
#define PRODUCT Kanagawa
/* key matrix size */ /* key matrix size */
#define MATRIX_ROWS 6 #define MATRIX_ROWS 6
#define MATRIX_COLS 14 #define MATRIX_COLS 14
/* Keyboard Matrix Assignments */ #define MATRIX_ROW_PINS { GP28, GP27, GP26, GP22, GP21, GP20 }
// clang-format off #define MATRIX_COL_PINS { GP5, GP6, GP7, GP8, GP9, GP10, GP11, GP12, GP13, GP14, GP15, GP16, GP17, GP18 }
// #define DIRECT_PINS { \ // #define DEBUG_MATRIX_SCAN_RATE
// { NO_PIN, NO_PIN, GP0 }, \
// { GP1, GP2, GP3 }, \
// { GP4, GP5, GP6 }, \
// { GP7, GP8, GP9 }, \
// { GP10, GP11, GP12 } \
// }
#define DIODE_DIRECTION COL2ROW
#define MATRIX_ROW_PINS { GP27, GP26, GP21, GP20, GP19, GP18 }
#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8, GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
// clang-format on
#define DIODE_DIRECTION COL2ROW #define DIODE_DIRECTION COL2ROW
/* OLED SPI Defines */ /* OLED SPI Defines */
#ifdef OLED_ENABLE #ifdef OLED_ENABLE
# define OLED_DISPLAY_128X32 # define OLED_DISPLAY_128X32
# define OLED_FONT_H "lib/oledfont.c" # define OLED_FONT_H "lib/oledfont.c"
# define OLED_FONT_END 255 # define OLED_FONT_END 255
// # define OLED_DISPLAY_ADDRESS 0x78 # define OLED_DISPLAY_ADDRESS 0x3C
#endif
/* I2C Conf */ /* I2C Conf */
#define I2C_DRIVER I2CD1 # define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP16 # define I2C1_SDA_PIN GP0
#define I2C1_SCL_PIN GP17 # define I2C1_SCL_PIN GP1
#endif
/* Encoders */ /* Encoder */
#define ENCODERS_PAD_A { GP1 } #define ENCODERS_PAD_A { GP2 }
#define ENCODERS_PAD_B { GP0 } #define ENCODERS_PAD_B { GP3 }
#define DEBOUNCE 5 #define DEBOUNCE 5
/* Bootmagic lite */ /* Bootmagic lite */
/* (Press the key bellow the encoder button while plugging the keyboard to enter the bootloader and clear flash) */ /* (Press the encoder button while plugging the keyboard to enter the bootloader and clear flash) */
#define BOOTMAGIC_LITE_ROW 1 #define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 2 #define BOOTMAGIC_LITE_COLUMN 13
/* Double tap the side button to enter bootloader */ /* Double tap the side button to enter bootloader */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP13 // #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP13
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U // #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
#ifdef RGB_MATRIX_ENABLE #ifdef RGB_MATRIX_ENABLE
/* RGB Defines */ /* RGB Defines */
# define RGB_DI_PIN GP28 # define RGB_DI_PIN GP4
# define DRIVER_LED_TOTAL 6 # define DRIVER_LED_TOTAL 83
# define RGBLED_NUM 6 # define RGBLED_NUM 83
/* Enable Framebuffer and keypress effects */ /* Enable Framebuffer and keypress effects */
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS # define RGB_MATRIX_FRAMEBUFFER_EFFECTS

View File

@ -1,29 +0,0 @@
{
"keyboard_name": "Kanagawa2040",
"manufacturer": "Ciaanh",
"url": "",
"maintainer": "Ciaanh",
"usb": {
"vid": "0xC1E0",
"pid": "0x0011",
"device_version": "0.2.0"
},
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Mute", "x":2, "y":0},
{"label":"Enter", "x":0, "y":1},
{"label":"KC_0", "x":1, "y":1},
{"label":"BackSpace", "x":2, "y":1},
{"label":"KC_7", "x":0, "y":2},
{"label":"KC_8", "x":1, "y":2},
{"label":"KC_9", "x":2, "y":2},
{"label":"KC_4", "x":0, "y":3},
{"label":"KC_5", "x":1, "y":3},
{"label":"KC_6", "x":2, "y":3},
{"label":"KC_1", "x":0, "y":4},
{"label":"KC_2", "x":1, "y":4},
{"label":"KC_3", "x":2, "y":4}
]}
}
}

View File

@ -1,19 +1,3 @@
/* 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 "kanagawa2040.h" #include "kanagawa2040.h"
#ifdef RGB_MATRIX_ENABLE #ifdef RGB_MATRIX_ENABLE
@ -21,42 +5,42 @@
#define NA NO_LED #define NA NO_LED
/* RGB Positioning */ /* RGB Positioning */
led_config_t g_led_config = { { led_config_t g_led_config = {
// Key Matrix to LED Index {
{ 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, NO_LED, NO_LED }, // Key Matrix to LED Index
{ 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 66 }, { 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, NO_LED },
{ 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 67 }, { 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13 },
{ 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, 68 }, { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27 },
{ 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, NO_LED, 70, NO_LED }, { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 66 },
{ 82, 81, 80, 79, 78, NO_LED, 77, 76, 75, 74, 73, NO_LED, 72, 71, 69 } { 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 70, 67 },
}, { { 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 69, 68 }
// LED Index to Physical Position },
{ 0, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 112, 0 }, { 224, 0},
{ 0, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 112, 21 }, { 224, 21},
{ 0, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 224, 42},
{ 0, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 224, 42},
{ 0, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 112, 42 }, { 224, 42},
{ 0, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 112, 64 }, { 224, 64}
}, {
// LED Index to Flag
4, 4, 4,
4, 4, 4,
4, 4, 4,
4, 4, 4
} };
{
// LED Index to Physical Position
{ 206, 0 }, { 189, 0 }, { 172, 0 }, { 155, 0 }, { 137, 0 }, { 120, 0 }, { 103, 0 }, { 86, 0 }, { 68, 0 }, { 51, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 },
{ 224, 12 }, { 206, 12 }, { 189, 12 }, { 172, 12 }, { 155, 12 }, { 137, 12 }, { 120, 12 }, { 103, 12 }, { 86, 12 }, { 68, 12 }, { 51, 12 }, { 34, 12 }, { 17, 12 }, { 0, 12 },
{ 224, 25 }, { 206, 25 }, { 189, 25 }, { 172, 25 }, { 155, 25 }, { 137, 25 }, { 120, 25 }, { 103, 25 }, { 86, 25 }, { 68, 25 }, { 51, 25 }, { 34, 25 }, { 17, 25 }, { 0, 25 },
{ 206, 38 }, { 189, 38 }, { 172, 38 }, { 155, 38 }, { 137, 38 }, { 120, 38 }, { 103, 38 }, { 86, 38 }, { 68, 38 }, { 51, 38 }, { 34, 38 }, { 17, 38 }, { 0, 38 },
{ 189, 51 }, { 172, 51 }, { 155, 51 }, { 137, 51 }, { 120, 51 }, { 103, 51 }, { 86, 51 }, { 68, 51 }, { 51, 51 }, { 34, 51 }, { 17, 51 }, { 0, 51 },
{ 224, 38 },
{ 224, 51 },
{ 224, 64 }, { 206, 64 }, { 206, 51 },
{ 189, 64 }, { 172, 64 }, { 155, 64 }, { 137, 64 }, { 120, 64 }, { 103, 64 }, { 86, 64 }, { 68, 64 }, { 51, 64 }, { 34, 64 }, { 17, 64 }, { 0, 64 },
},
{
// LED Index to Flag
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4,
4,
4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
}};
#endif #endif
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 0) {
if (clockwise) {
tap_code_delay(KC_VOLU, 10);
} else {
tap_code_delay(KC_VOLD, 10);
}
}
return true;
}
#endif

View File

@ -1,19 +1,3 @@
/* 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/>.
*/
#pragma once #pragma once
#include "quantum.h" #include "quantum.h"

View File

@ -0,0 +1,23 @@
#pragma once
enum layers
{
_BASE,
_LOWER,
_UPPER,
_CODE
};
enum custom_keycodes
{
CUSTOMKEY = SAFE_RANGE,
NEW_SAFE_RANGE,
};
#define TO_BASE TO(_BASE)
#define TO_CODE TG(_CODE)
#define L_UP MO(_UPPER)
#define L_DWN MO(_LOWER)
#define _SCRNSHOT LSFT(LGUI(KC_S))

View File

@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* *
*/ */
[_BASE] = LAYOUT_84_ansi( [_BASE] = LAYOUT_84_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ENCODER, /*KC_MPLY*/ \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
@ -51,18 +51,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, L_DWN, KC_SPC, KC_SPC, L_UP, KC_RALT, TO_CODE, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ KC_LCTL, KC_LGUI, KC_LALT, L_DWN, KC_SPC, KC_SPC, L_UP, KC_RALT, TO_CODE, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
), ),
[_CODE] = LAYOUT_84_ansi(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, TO_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
),
[_LOWER] = LAYOUT_84_ansi( [_LOWER] = LAYOUT_84_ansi(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@ -82,9 +70,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
) ),
[_CODE] = LAYOUT_84_ansi(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, TO_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
),
}; };
@ -106,9 +102,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
static void render_status(void) { static void render_status(void) {
// 21 characters per line // 21 characters per line
// 16 cols / 8 rows // 16 cols / 4 rows
oled_write_P(PSTR(" Kanagawa rev 1.1 "), false); oled_write_P(PSTR(" Kanagawa rev 2.0 "), false);
//oled_write_ln("", false); //oled_write_ln("", false);
// Host Keyboard Layer Status // Host Keyboard Layer Status
@ -140,10 +136,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); // oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
oled_write_ln("", false); oled_write_ln("", false);
oled_write_ln("", false); // oled_write_ln("", false);
oled_write_ln("", false); // oled_write_ln("", false);
oled_write_ln("", false); // oled_write_ln("", false);
oled_write_ln("", false); // oled_write_ln("", false);
} }
// static void render_kanagawa_logo(void) { // static void render_kanagawa_logo(void) {
@ -196,7 +192,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) { switch (keycode) {
case ENCODER: case CUSTOMKEY:
if (record->event.pressed) { if (record->event.pressed) {
if (get_mods() & MOD_MASK_SHIFT) { if (get_mods() & MOD_MASK_SHIFT) {
tap_code16(G(A(KC_K))); tap_code16(G(A(KC_K)));
@ -233,26 +229,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
#ifdef ENCODER_ENABLE #if defined(ENCODER_MAP_ENABLE)
bool encoder_update_user(uint8_t index, bool clockwise) { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
if (index == 0) { [_BASE] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
switch (get_highest_layer(layer_state)) { [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
case _CODE: [_UPPER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
if (clockwise) { [_CODE] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
tap_code(KC_PGDN); };
} else {
tap_code(KC_PGUP);
}
break;
default:
if (clockwise) {
tap_code(KC_VOLD);
} else {
tap_code(KC_VOLU);
}
break;
}
}
return true;
}
#endif #endif
// #ifdef ENCODER_ENABLE
// bool encoder_update_kb(uint8_t index, bool clockwise) {
// if (!encoder_update_user(index, clockwise)) { return false; }
// if (index == 0) {
// if (clockwise) {
// tap_code_delay(KC_VOLU, 10);
// } else {
// tap_code_delay(KC_VOLD, 10);
// }
// }
// return true;
// }
// #endif

View File

@ -1,3 +0,0 @@
LTO_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@ -1,8 +1,13 @@
# MCU name # MCU name
MCU = RP2040 MCU = RP2040
# Bootloader selection # Bootloader selection
BOOTLOADER = rp2040 BOOTLOADER = rp2040
# RP2040-specific options
ALLOW_WARNINGS = yes
PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
# Build Options # Build Options
# change yes to no to disable # change yes to no to disable
# #
@ -11,16 +16,23 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output AUDIO_ENABLE = no # Audio output
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
ENCODER_ENABLE = yes ENCODER_ENABLE = yes
RGB_MATRIX_ENABLE = yes RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812 RGB_MATRIX_DRIVER = WS2812
WS2812_DRIVER = vendor WS2812_DRIVER = vendor
OLED_ENABLE = yes OLED_ENABLE = yes
OLED_DRIVER = SSD1306
OPT_DEFS += -DHAL_USE_I2C=TRUE OPT_DEFS += -DHAL_USE_I2C=TRUE
ENCODER_MAP_ENABLE = yes
LTO_ENABLE = no # reduce size