From f0167b01876abb48e4d95614dc8f90903d9c6bcc Mon Sep 17 00:00:00 2001 From: Gondolindrim Date: Mon, 25 Sep 2023 23:52:21 -0300 Subject: [PATCH] First SPV1 support --- keyboards/spv1/config.h | 34 ++++++ keyboards/spv1/halconf.h | 21 ++++ keyboards/spv1/info.json | 138 ++++++++++++++++++++++++ keyboards/spv1/keymaps/default/keymap.c | 35 ++++++ keyboards/spv1/keymaps/via/keymap.c | 35 ++++++ keyboards/spv1/keymaps/via/rules.mk | 1 + keyboards/spv1/mcuconf.h | 21 ++++ keyboards/spv1/rules.mk | 4 + keyboards/spv1/spv1.c | 40 +++++++ 9 files changed, 329 insertions(+) create mode 100644 keyboards/spv1/config.h create mode 100644 keyboards/spv1/halconf.h create mode 100644 keyboards/spv1/info.json create mode 100644 keyboards/spv1/keymaps/default/keymap.c create mode 100644 keyboards/spv1/keymaps/via/keymap.c create mode 100644 keyboards/spv1/keymaps/via/rules.mk create mode 100644 keyboards/spv1/mcuconf.h create mode 100644 keyboards/spv1/rules.mk create mode 100644 keyboards/spv1/spv1.c diff --git a/keyboards/spv1/config.h b/keyboards/spv1/config.h new file mode 100644 index 00000000000..6c6338ed123 --- /dev/null +++ b/keyboards/spv1/config.h @@ -0,0 +1,34 @@ +/* Copyright 2023 Gondolindrim + +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 . +*/ + +#pragma once + +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 2 +#define BACKLIGHT_PAL_MODE 2 + +#define LED_CAPS A8 +#define LED_IND1 B14 +#define LED_IND2 B15 +#define LED_IND3 C6 +#define LED_IND4 B13 +#define LED_IND5 B1 +#define LED_IND6 B12 +#define LED_IND7 B10 +#define LED_IND8 B0 + +#define WEAR_LEVELING_LOGICAL_SIZE 2048 +#define WEAR_LEVELING_BACKING_SIZE 4096 diff --git a/keyboards/spv1/halconf.h b/keyboards/spv1/halconf.h new file mode 100644 index 00000000000..4e314ea930b --- /dev/null +++ b/keyboards/spv1/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Gondolindrim +* + * 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 . + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/spv1/info.json b/keyboards/spv1/info.json new file mode 100644 index 00000000000..986aebba7da --- /dev/null +++ b/keyboards/spv1/info.json @@ -0,0 +1,138 @@ +{ + "keyboard_name": "SPV1", + "manufacturer": "Bisoromi", + "url": "", + "maintainer": "Gondolindrim", + "usb": { + "vid": "0xAC11", + "pid": "0x5356", + "device_version": "0.0.1" + }, + "processor": "STM32F401", + "bootloader": "stm32-dfu", + "matrix_pins": { + "cols": ["A5" ,"A6" ,"C4" ,"C5","C8" ,"C9" ,"D2" ,"C12","C11","C10","A10","B3" ,"B5" ,"B4" ,"B8" ,"B9" ,"C13","C14","C15" ], + "rows": ["C3" ,"C2" ,"C1" ,"C0","A15","A7" ,"A0" ] + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "backlight": true + }, + "backlight": { + "breathing": true, + "levels": 30, + "pin": "C7" + }, + "diode_direction": "COL2ROW", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"PrtSc", "matrix":[ 0, 0], "x":0 , "y":0 }, + {"label":"Scroll Lock", "matrix":[ 0, 1], "x":1 , "y":0 }, + {"label":"Pause", "matrix":[ 0, 2], "x":2 , "y":0 }, + {"label":"Esc", "matrix":[ 0, 4], "x":4.25 , "y":0 }, + {"label":"F1", "matrix":[ 0, 5], "x":5.75 , "y":0 }, + {"label":"F2", "matrix":[ 0, 6], "x":6.75 , "y":0 }, + {"label":"F3", "matrix":[ 0, 7], "x":7.75 , "y":0 }, + {"label":"F4", "matrix":[ 0, 8], "x":8.75 , "y":0 }, + {"label":"F5", "matrix":[ 0, 9], "x":10.25, "y":0 }, + {"label":"F6", "matrix":[ 0,10], "x":11.25, "y":0 }, + {"label":"F7", "matrix":[ 0,11], "x":12.25, "y":0 }, + {"label":"F8", "matrix":[ 0,12], "x":13.25, "y":0 }, + {"label":"F9", "matrix":[ 0,13], "x":14.75, "y":0 }, + {"label":"F10", "matrix":[ 0,14], "x":15.75, "y":0 }, + {"label":"F11", "matrix":[ 0,15], "x":16.75, "y":0 }, + {"label":"F12", "matrix":[ 0,16], "x":17.75, "y":0 }, + { "matrix":[ 0,17], "x":17.25, "y":1.25 }, + {"label":"F13", "matrix":[ 0,18], "x":19.25, "y":0 }, + { "matrix":[ 1, 0], "x":0 , "y":1.25 }, + { "matrix":[ 1, 1], "x":1 , "y":1.25 }, + { "matrix":[ 1, 2], "x":2 , "y":1.25 }, + { "matrix":[ 1, 3], "x":3 , "y":1.25 }, + {"label":"~", "matrix":[ 1, 4], "x":4.25 , "y":1.25 }, + {"label":"1!", "matrix":[ 1, 5], "x":5.25 , "y":1.25 }, + {"label":"2@", "matrix":[ 1, 6], "x":6.25 , "y":1.25 }, + {"label":"3#", "matrix":[ 1, 7], "x":7.25 , "y":1.25 }, + {"label":"4$", "matrix":[ 1, 8], "x":8.25 , "y":1.25 }, + {"label":"5%", "matrix":[ 1, 9], "x":9.25 , "y":1.25 }, + {"label":"6^", "matrix":[ 1,10], "x":10.25, "y":1.25 }, + {"label":"7&", "matrix":[ 1,11], "x":11.25, "y":1.25 }, + {"label":"8*", "matrix":[ 1,12], "x":12.25, "y":1.25 }, + {"label":"9(", "matrix":[ 1,13], "x":13.25, "y":1.25 }, + {"label":"0)", "matrix":[ 1,14], "x":14.25, "y":1.25 }, + {"label":"-_", "matrix":[ 1,15], "x":15.25, "y":1.25 }, + {"label":"=+", "matrix":[ 1,16], "x":16.25, "y":1.25 }, + { "matrix":[ 1,17], "x":18.25, "y":1.25 }, + {"label":"Delete", "matrix":[ 1,18], "x":19.25, "y":1.25 }, + { "matrix":[ 2, 0], "x":0 , "y":2.25 }, + { "matrix":[ 2, 1], "x":1 , "y":2.25 }, + { "matrix":[ 2, 2], "x":2 , "y":2.25 }, + { "matrix":[ 2, 3], "x":3 , "y":2.25 }, + {"label":"Tab", "matrix":[ 2, 4], "x":4.25 , "y":2.25, "w":1.5 }, + {"label":"Q", "matrix":[ 2, 5], "x":5.75 , "y":2.25 }, + {"label":"W", "matrix":[ 2, 6], "x":6.75 , "y":2.25 }, + {"label":"E", "matrix":[ 2, 7], "x":7.75 , "y":2.25 }, + {"label":"R", "matrix":[ 2, 8], "x":8.75 , "y":2.25 }, + {"label":"T", "matrix":[ 2, 9], "x":9.75 , "y":2.25 }, + {"label":"Y", "matrix":[ 2,10], "x":10.75, "y":2.25 }, + {"label":"U", "matrix":[ 2,11], "x":11.75, "y":2.25 }, + {"label":"I", "matrix":[ 2,12], "x":12.75, "y":2.25 }, + {"label":"O", "matrix":[ 2,13], "x":13.75, "y":2.25 }, + {"label":"P", "matrix":[ 2,14], "x":14.75, "y":2.25 }, + {"label":"[{", "matrix":[ 2,15], "x":15.75, "y":2.25 }, + {"label":"]}", "matrix":[ 2,16], "x":16.75, "y":2.25 }, + {"label":"\\|", "matrix":[ 2,17], "x":17.75, "y":2.25, "w":1.5 }, + {"label":"PgUp", "matrix":[ 2,18], "x":19.25, "y":2.25 }, + { "matrix":[ 3, 0], "x":0 , "y":3.25 }, + { "matrix":[ 3, 1], "x":1 , "y":3.25 }, + { "matrix":[ 3, 2], "x":2 , "y":3.25 }, + { "matrix":[ 3, 3], "x":3 , "y":3.25 }, + {"label":"Caps Lock", "matrix":[ 3, 4], "x":4.25 , "y":3.25, "w":1.75 }, + {"label":"A", "matrix":[ 3, 5], "x":6 , "y":3.25 }, + {"label":"S", "matrix":[ 3, 6], "x":7 , "y":3.25 }, + {"label":"D", "matrix":[ 3, 7], "x":8 , "y":3.25 }, + {"label":"F", "matrix":[ 3, 8], "x":9 , "y":3.25 }, + {"label":"G", "matrix":[ 3, 9], "x":10 , "y":3.25 }, + {"label":"H", "matrix":[ 3,10], "x":11 , "y":3.25 }, + {"label":"J", "matrix":[ 3,11], "x":12 , "y":3.25 }, + {"label":"K", "matrix":[ 3,13], "x":13 , "y":3.25 }, + {"label":"L", "matrix":[ 3,14], "x":14 , "y":3.25 }, + {"label":":", "matrix":[ 3,15], "x":15 , "y":3.25 }, + {"label":"\"", "matrix":[ 3,16], "x":16 , "y":3.25 }, + {"label":"Enter", "matrix":[ 3,17], "x":17 , "y":3.25, "w":2.25 }, + {"label":"PgDn", "matrix":[ 3,18], "x":19.25, "y":3.25 }, + { "matrix":[ 4, 0], "x":0 , "y":4.25 }, + { "matrix":[ 4, 1], "x":1 , "y":4.25 }, + { "matrix":[ 4, 2], "x":2 , "y":4.25 }, + { "matrix":[ 4, 3], "x":3 , "y":4.25 }, + {"label":"Shift", "matrix":[ 4, 5], "x":4.25 , "y":4.25, "w":2.25 }, + {"label":"Z", "matrix":[ 4, 6], "x":6.5 , "y":4.25 }, + {"label":"X", "matrix":[ 4, 7], "x":7.5 , "y":4.25 }, + {"label":"C", "matrix":[ 4, 8], "x":8.5 , "y":4.25 }, + {"label":"V", "matrix":[ 4, 9], "x":9.5 , "y":4.25 }, + {"label":"B", "matrix":[ 4,10], "x":10.5 , "y":4.25 }, + {"label":"N", "matrix":[ 4,11], "x":11.5 , "y":4.25 }, + {"label":"M", "matrix":[ 4,12], "x":12.5 , "y":4.25 }, + {"label":",<", "matrix":[ 4,13], "x":13.5 , "y":4.25 }, + {"label":".>", "matrix":[ 4,14], "x":14.5 , "y":4.25 }, + {"label":"/?", "matrix":[ 4,15], "x":15.5 , "y":4.25 }, + {"label":"Shift", "matrix":[ 4,16], "x":16.5 , "y":4.25, "w":1.75 }, + {"label":"\u2191", "matrix":[ 4,17], "x":18.25, "y":4.25 }, + {"label":"Fn", "matrix":[ 4,18], "x":19.25, "y":4.25 }, + { "matrix":[ 5, 0], "x":0 , "y":5.25 }, + { "matrix":[ 5, 1], "x":1 , "y":5.25 }, + { "matrix":[ 5, 2], "x":2 , "y":5.25 }, + { "matrix":[ 5, 3], "x":3 , "y":5.25 }, + {"label":"Ctrl", "matrix":[ 5, 5], "x":4.25 , "y":5.25, "w":1.5 }, + {"label":"Alt", "matrix":[ 5, 7], "x":6.75 , "y":5.25, "w":1.5 }, + {"label":"Space", "matrix":[ 5,11], "x":8.25 , "y":5.25, "w":7 }, + {"label":"Alt", "matrix":[ 6,15], "x":15.25, "y":5.25, "w":1.5 }, + {"label":"\u2190", "matrix":[ 6,16], "x":17.25, "y":5.25 }, + {"label":"\u2193", "matrix":[ 6,17], "x":18.25, "y":5.25 }, + {"label":"\u2192", "matrix":[ 6,18], "x":19.25, "y":5.25 } + ] + } + } +} diff --git a/keyboards/spv1/keymaps/default/keymap.c b/keyboards/spv1/keymaps/default/keymap.c new file mode 100644 index 00000000000..fe746cd65ad --- /dev/null +++ b/keyboards/spv1/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Gondolindrim + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( /* Base */ + MO(1) , KC_PSCR, KC_SCRL, 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_BSPC, KC_F13 , + KC_NUM , KC_PSLS, KC_PAST, KC_PMNS , 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_P7 , KC_P8 , KC_P9 , KC_NO , 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_PGUP, + KC_P4 , KC_P5 , KC_P6 , KC_PPLS , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_COLN, KC_QUOT, KC_ENT , KC_PGDN, + KC_P1 , KC_P2 , KC_P3 , KC_NO , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , MO(1) , + KC_NO , KC_P0 , KC_PDOT, KC_PENT , KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT +), +[1] = LAYOUT( + RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/spv1/keymaps/via/keymap.c b/keyboards/spv1/keymaps/via/keymap.c new file mode 100644 index 00000000000..fe746cd65ad --- /dev/null +++ b/keyboards/spv1/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Gondolindrim + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( /* Base */ + MO(1) , KC_PSCR, KC_SCRL, 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_BSPC, KC_F13 , + KC_NUM , KC_PSLS, KC_PAST, KC_PMNS , 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_P7 , KC_P8 , KC_P9 , KC_NO , 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_PGUP, + KC_P4 , KC_P5 , KC_P6 , KC_PPLS , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_COLN, KC_QUOT, KC_ENT , KC_PGDN, + KC_P1 , KC_P2 , KC_P3 , KC_NO , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , MO(1) , + KC_NO , KC_P0 , KC_PDOT, KC_PENT , KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT +), +[1] = LAYOUT( + RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/spv1/keymaps/via/rules.mk b/keyboards/spv1/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/spv1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/spv1/mcuconf.h b/keyboards/spv1/mcuconf.h new file mode 100644 index 00000000000..d2b990f45f2 --- /dev/null +++ b/keyboards/spv1/mcuconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Gondolindrim + * + * 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 . + */ + +#pragma once + +#include_next +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/spv1/rules.mk b/keyboards/spv1/rules.mk new file mode 100644 index 00000000000..82deed0dd5f --- /dev/null +++ b/keyboards/spv1/rules.mk @@ -0,0 +1,4 @@ +BACKLIGHT_DRIVER = pwm + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/spv1/spv1.c b/keyboards/spv1/spv1.c new file mode 100644 index 00000000000..0503fbbc7c9 --- /dev/null +++ b/keyboards/spv1/spv1.c @@ -0,0 +1,40 @@ +/* Copyright 2023 Gondolindrim + * + * 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 . + */ + +#include "quantum.h" + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + writePin(LED_CAPS, led_state.caps_lock); + writePin(LED_IND1, led_state.caps_lock); + writePin(LED_IND2, led_state.num_lock); + writePin(LED_IND3, led_state.scroll_lock); + + writePin(LED_IND4, led_state.scroll_lock); + writePin(LED_IND6, led_state.scroll_lock); + + writePin(LED_IND5, led_state.num_lock); + writePin(LED_IND8, led_state.num_lock); + } + return res; +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + if (get_highest_layer(state) > 0) writePin(LED_IND7, 1); + else writePin(LED_IND7, 0); + return state; +}