diff options
Diffstat (limited to 'keyboards/cipulot/ec_prox/jis')
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/config.h | 53 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/ec_switch_matrix.c | 183 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/ec_switch_matrix.h | 36 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/halconf.h | 2 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/info.json | 150 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c | 23 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/keymaps/via/config.h | 6 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c | 27 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk | 2 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/keymaps/via/via_apc.c | 156 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/matrix.c | 44 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/mcuconf.h | 2 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/post_rules.mk | 3 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/readme.md | 3 | ||||
-rw-r--r-- | keyboards/cipulot/ec_prox/jis/rules.mk | 4 |
15 files changed, 139 insertions, 555 deletions
diff --git a/keyboards/cipulot/ec_prox/jis/config.h b/keyboards/cipulot/ec_prox/jis/config.h index 1c6a836867..8761b692aa 100644 --- a/keyboards/cipulot/ec_prox/jis/config.h +++ b/keyboards/cipulot/ec_prox/jis/config.h @@ -2,7 +2,7 @@ * * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -19,27 +19,54 @@ #define MATRIX_ROWS 5 #define MATRIX_COLS 14 -/* Custom matrix pins and port select array */ #define MATRIX_ROW_PINS \ { A7, B0, A4, A5, A6 } -#define MATRIX_COL_CHANNELS \ - { 2, 1, 0, 3, 5, 7, 4, 6 } -#define MUX_SEL_PINS \ + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B7, B3 } + +#define AMUX_SEL_PINS \ { B4, B5, B6 } -/* Hardware peripherals pins */ -#define APLEX_EN_PIN_0 B7 -#define APLEX_EN_PIN_1 B3 +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 6 } + +#define AMUX_0_COL_CHANNELS \ + { 2, 1, 0, 3, 5, 7, 4, 6 } + +#define AMUX_1_COL_CHANNELS \ + { 2, 1, 0, 3, 5, 7 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + #define DISCHARGE_PIN A2 #define ANALOG_PORT A1 +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 150 + /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE - -#define DEFAULT_ACTUATION_LEVEL 550 -#define DEFAULT_RELEASE_LEVEL 500 - -#define DISCHARGE_TIME 10 diff --git a/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.c b/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.c deleted file mode 100644 index 81003dd36a..0000000000 --- a/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.c +++ /dev/null @@ -1,183 +0,0 @@ -/* Copyright 2023 Cipulot - * - * 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 "ec_switch_matrix.h" -#include "analog.h" -#include "atomic_util.h" -#include "print.h" -#include "wait.h" - -/* Pin and port array */ -const uint32_t row_pins[] = MATRIX_ROW_PINS; -const uint8_t col_channels[] = MATRIX_COL_CHANNELS; -const uint32_t mux_sel_pins[] = MUX_SEL_PINS; - -static ecsm_config_t config; -static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS]; - -static adc_mux adcMux; - -static inline void discharge_capacitor(void) { - writePinLow(DISCHARGE_PIN); -} -static inline void charge_capacitor(uint8_t row) { - writePinHigh(DISCHARGE_PIN); - writePinHigh(row_pins[row]); -} - -static inline void init_mux_sel(void) { - for (int idx = 0; idx < 3; idx++) { - setPinOutput(mux_sel_pins[idx]); - } -} - -static inline void select_mux(uint8_t col) { - uint8_t ch = col_channels[col]; - writePin(mux_sel_pins[0], ch & 1); - writePin(mux_sel_pins[1], ch & 2); - writePin(mux_sel_pins[2], ch & 4); -} - -static inline void init_row(void) { - for (int idx = 0; idx < MATRIX_ROWS; idx++) { - setPinOutput(row_pins[idx]); - writePinLow(row_pins[idx]); - } -} - -/* Initialize the peripherals pins */ -int ecsm_init(ecsm_config_t const* const ecsm_config) { - // Initialize config - config = *ecsm_config; - - palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); - adcMux = pinToMux(ANALOG_PORT); - - //Dummy call to make sure that adcStart() has been called in the appropriate state - adc_read(adcMux); - - // Initialize discharge pin as discharge mode - writePinLow(DISCHARGE_PIN); - setPinOutputOpenDrain(DISCHARGE_PIN); - - // Initialize drive lines - init_row(); - - // Initialize multiplexer select pin - init_mux_sel(); - - // Enable AMUX - setPinOutput(APLEX_EN_PIN_0); - writePinLow(APLEX_EN_PIN_0); - setPinOutput(APLEX_EN_PIN_1); - writePinLow(APLEX_EN_PIN_1); - - return 0; -} - -int ecsm_update(ecsm_config_t const* const ecsm_config) { - // Save config - config = *ecsm_config; - return 0; -} - -// Read the capacitive sensor value -uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { - uint16_t sw_value = 0; - - // Select the multiplexer - if (channel == 0) { - writePinHigh(APLEX_EN_PIN_0); - select_mux(col); - writePinLow(APLEX_EN_PIN_0); - } else { - writePinHigh(APLEX_EN_PIN_1); - select_mux(col); - writePinLow(APLEX_EN_PIN_1); - } - - // Set strobe pins to low state - writePinLow(row_pins[row]); - ATOMIC_BLOCK_FORCEON { - // Set the row pin to high state and have capacitor charge - charge_capacitor(row); - // Read the ADC value - sw_value = adc_read(adcMux); - } - // Discharge peak hold capacitor - discharge_capacitor(); - // Waiting for the ghost capacitor to discharge fully - wait_us(DISCHARGE_TIME); - - return sw_value; -} - -// Update press/release state of key -bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { - bool current_state = (*current_row >> col) & 1; - - // Press to release - if (current_state && sw_value < config.ecsm_actuation_threshold) { - *current_row &= ~(1 << col); - return true; - } - - // Release to press - if ((!current_state) && sw_value > config.ecsm_release_threshold) { - *current_row |= (1 << col); - return true; - } - - return false; -} - -// Scan key values and update matrix state -bool ecsm_matrix_scan(matrix_row_t current_matrix[]) { - bool updated = false; - - // Disable AMUX of channel 1 - writePinHigh(APLEX_EN_PIN_1); - for (int col = 0; col < sizeof(col_channels); col++) { - for (int row = 0; row < MATRIX_ROWS; row++) { - ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col); - updated |= ecsm_update_key(¤t_matrix[row], row, col, ecsm_sw_value[row][col]); - } - } - - // Disable AMUX of channel 1 - writePinHigh(APLEX_EN_PIN_0); - for (int col = 0; col < (sizeof(col_channels) - 2); col++) { - for (int row = 0; row < MATRIX_ROWS; row++) { - ecsm_sw_value[row][col + 8] = ecsm_readkey_raw(1, row, col); - updated |= ecsm_update_key(¤t_matrix[row], row, col + 8, ecsm_sw_value[row][col + 8]); - } - } - return updated; -} - -// Debug print key values -void ecsm_print_matrix(void) { - for (int row = 0; row < MATRIX_ROWS; row++) { - for (int col = 0; col < MATRIX_COLS; col++) { - uprintf("%4d", ecsm_sw_value[row][col]); - if (col < (MATRIX_COLS - 1)) { - print(","); - } - } - print("\n"); - } - print("\n"); -} diff --git a/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.h b/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.h deleted file mode 100644 index 9dcb216caa..0000000000 --- a/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2023 Cipulot - * - * 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 - -#include <stdint.h> -#include <stdbool.h> - -#include "matrix.h" - -typedef struct { - uint16_t ecsm_actuation_threshold; // threshold for key release - uint16_t ecsm_release_threshold; // threshold for key press -} ecsm_config_t; - -ecsm_config_t ecsm_config; - -int ecsm_init(ecsm_config_t const* const ecsm_config); -int ecsm_update(ecsm_config_t const* const ecsm_config); -bool ecsm_matrix_scan(matrix_row_t current_matrix[]); -uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); -bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); -void ecsm_print_matrix(void); diff --git a/keyboards/cipulot/ec_prox/jis/halconf.h b/keyboards/cipulot/ec_prox/jis/halconf.h index 5b71acecbb..835d43b6a0 100644 --- a/keyboards/cipulot/ec_prox/jis/halconf.h +++ b/keyboards/cipulot/ec_prox/jis/halconf.h @@ -2,7 +2,7 @@ * * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, diff --git a/keyboards/cipulot/ec_prox/jis/info.json b/keyboards/cipulot/ec_prox/jis/info.json index 6016004b1b..88067f9305 100644 --- a/keyboards/cipulot/ec_prox/jis/info.json +++ b/keyboards/cipulot/ec_prox/jis/info.json @@ -8,19 +8,13 @@ }, "diode_direction": "COL2ROW", "features": { - "audio": false, - "backlight": false, - "bootmagic": true, - "command": false, + "bootmagic": false, "console": true, "extrakey": true, "mousekey": true, "nkro": true, "rgblight": true }, - "mouse_key": { - "enabled": true - }, "processor": "STM32F401", "rgblight": { "led_count": 22, @@ -52,79 +46,75 @@ "layouts": { "LAYOUT_jp": { "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [0, 6], "x": 6, "y": 0}, - {"matrix": [0, 7], "x": 7, "y": 0}, - {"matrix": [0, 8], "x": 8, "y": 0}, - {"matrix": [0, 9], "x": 9, "y": 0}, - {"matrix": [0, 10], "x": 10, "y": 0}, - {"matrix": [0, 11], "x": 11, "y": 0}, - {"matrix": [0, 12], "x": 12, "y": 0}, - {"matrix": [0, 13], "x": 13, "y": 0}, - {"matrix": [1, 13], "x": 14, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"matrix": [1, 1], "x": 1.5, "y": 1}, - {"matrix": [1, 2], "x": 2.5, "y": 1}, - {"matrix": [1, 3], "x": 3.5, "y": 1}, - {"matrix": [1, 4], "x": 4.5, "y": 1}, - {"matrix": [1, 5], "x": 5.5, "y": 1}, - {"matrix": [1, 6], "x": 6.5, "y": 1}, - {"matrix": [1, 7], "x": 7.5, "y": 1}, - {"matrix": [1, 8], "x": 8.5, "y": 1}, - {"matrix": [1, 9], "x": 9.5, "y": 1}, - {"matrix": [1, 10], "x": 10.5, "y": 1}, - {"matrix": [1, 11], "x": 11.5, "y": 1}, - {"matrix": [1, 12], "x": 12.5, "y": 1}, - - {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2, 1], "x": 1.75, "y": 2}, - {"matrix": [2, 2], "x": 2.75, "y": 2}, - {"matrix": [2, 3], "x": 3.75, "y": 2}, - {"matrix": [2, 4], "x": 4.75, "y": 2}, - {"matrix": [2, 5], "x": 5.75, "y": 2}, - {"matrix": [2, 6], "x": 6.75, "y": 2}, - {"matrix": [2, 7], "x": 7.75, "y": 2}, - {"matrix": [2, 8], "x": 8.75, "y": 2}, - {"matrix": [2, 9], "x": 9.75, "y": 2}, - {"matrix": [2, 10], "x": 10.75, "y": 2}, - {"matrix": [2, 11], "x": 11.75, "y": 2}, - {"matrix": [2, 12], "x": 12.75, "y": 2}, - {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - - {"matrix": [3, 0], "x": 0, "y": 3, "w": 2}, - {"matrix": [3, 1], "x": 2, "y": 3}, - {"matrix": [3, 2], "x": 3, "y": 3}, - {"matrix": [3, 3], "x": 4, "y": 3}, - {"matrix": [3, 4], "x": 5, "y": 3}, - {"matrix": [3, 5], "x": 6, "y": 3}, - {"matrix": [3, 6], "x": 7, "y": 3}, - {"matrix": [3, 7], "x": 8, "y": 3}, - {"matrix": [3, 8], "x": 9, "y": 3}, - {"matrix": [3, 9], "x": 10, "y": 3}, - {"matrix": [3, 10], "x": 11, "y": 3}, - {"matrix": [3, 11], "x": 12, "y": 3}, - {"matrix": [3, 12], "x": 13, "y": 3}, - {"matrix": [3, 13], "x": 14, "y": 3}, - - {"matrix": [4, 0], "x": 0, "y": 4}, - {"matrix": [4, 1], "x": 1.25, "y": 4}, - {"matrix": [4, 2], "x": 2.25, "y": 4}, - {"matrix": [4, 3], "x": 3.25, "y": 4}, - {"matrix": [4, 4], "x": 4.25, "y": 4}, - {"matrix": [4, 5], "x": 5.25, "y": 4, "w": 2.5}, - {"matrix": [4, 7], "x": 7.75, "y": 4}, - {"matrix": [4, 8], "x": 8.75, "y": 4}, - {"matrix": [4, 9], "x": 9.75, "y": 4}, - {"matrix": [4, 10], "x": 10.75, "y": 4}, - {"matrix": [4, 11], "x": 12, "y": 4}, - {"matrix": [4, 12], "x": 13, "y": 4}, - {"matrix": [4, 13], "x": 14, "y": 4} + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "1,13", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "2,13", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1}, + {"label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "3,0", "matrix": [3, 0], "w": 2, "x": 0, "y": 3}, + {"label": "3,1", "matrix": [3, 1], "x": 2, "y": 3}, + {"label": "3,2", "matrix": [3, 2], "x": 3, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 4, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 5, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 6, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 7, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 8, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 9, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 10, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 11, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 12, "y": 3}, + {"label": "3,12", "matrix": [3, 12], "x": 13, "y": 3}, + {"label": "3,13", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4}, + {"label": "4,5", "matrix": [4, 5], "w": 2.5, "x": 5.25, "y": 4}, + {"label": "4,7", "matrix": [4, 7], "x": 7.75, "y": 4}, + {"label": "4,8", "matrix": [4, 8], "x": 8.75, "y": 4}, + {"label": "4,9", "matrix": [4, 9], "x": 9.75, "y": 4}, + {"label": "4,10", "matrix": [4, 10], "x": 10.75, "y": 4}, + {"label": "4,11", "matrix": [4, 11], "x": 12, "y": 4}, + {"label": "4,12", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "4,13", "matrix": [4, 13], "x": 14, "y": 4} ] } } diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c b/keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c index 2a64063a0b..88836af780 100644 --- a/keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c +++ b/keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c @@ -2,7 +2,7 @@ * * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -21,28 +21,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // clang-format off [0] = LAYOUT_jp( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, - 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_UP, KC_RSFT, - MO(1), JP_ZKHK, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, + 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_UP, KC_RSFT, + MO(1), JP_ZKHK, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT_jp( - _______, 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_INS, KC_DEL, + _______, 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_INS, KC_DEL, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______), [2] = LAYOUT_jp( - RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - - [3] = LAYOUT_jp( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/config.h b/keyboards/cipulot/ec_prox/jis/keymaps/via/config.h index ebf954d07a..1ab0d3d9aa 100644 --- a/keyboards/cipulot/ec_prox/jis/keymaps/via/config.h +++ b/keyboards/cipulot/ec_prox/jis/keymaps/via/config.h @@ -2,7 +2,7 @@ * * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -16,5 +16,5 @@ #pragma once -// This is the size of the EEPROM for the custom VIA-specific data -#define EECONFIG_USER_DATA_SIZE 4 +// This is the firmware version for VIA support to avoid conflicts on menu fetching +#define VIA_FIRMWARE_VERSION 1 diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c b/keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c index 2a64063a0b..f793b355b2 100644 --- a/keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c +++ b/keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c @@ -2,7 +2,7 @@ * * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -21,31 +21,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // clang-format off [0] = LAYOUT_jp( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, - 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_UP, KC_RSFT, - MO(1), JP_ZKHK, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, + 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_ENT, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_UP, KC_RSFT, + MO(1), JP_ZKHK, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT_jp( - _______, 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_INS, KC_DEL, - KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, - _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT, + _______, 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_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_PENT, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______), [2] = LAYOUT_jp( - RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - - [3] = LAYOUT_jp( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) // clang-format on }; diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk b/keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk index 520b11f203..1e5b99807c 100644 --- a/keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk +++ b/keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk @@ -1,3 +1 @@ VIA_ENABLE = yes - -SRC += via_apc.c diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/via_apc.c b/keyboards/cipulot/ec_prox/jis/keymaps/via/via_apc.c deleted file mode 100644 index 5ea77af44c..0000000000 --- a/keyboards/cipulot/ec_prox/jis/keymaps/via/via_apc.c +++ /dev/null @@ -1,156 +0,0 @@ -/* Copyright 2023 Cipulot - * - * 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 "ec_switch_matrix.h" -#include "action.h" -#include "via.h" - -void apc_init_thresholds(void); -void apc_set_threshold(bool is_for_actuation); - -// Declaring an _apc_config_t struct that will store our data -typedef struct _apc_config_t { - uint16_t actuation_threshold; - uint16_t release_threshold; -} apc_config; - -// Check if the size of the reserved persistent memory is the same as the size of struct apc_config -_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); - -// Declaring a new variable apc of type apc_config -apc_config apc; - -// Declaring enums for VIA config menu -enum via_apc_enums { - // clang-format off - id_apc_actuation_threshold = 1, - id_apc_release_threshold = 2 - // clang-format on -}; - -// Initializing persistent memory configuration: default values are declared and stored in PMEM -void eeconfig_init_user(void) { - // Default values - apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL; - apc.release_threshold = DEFAULT_RELEASE_LEVEL; - // Write default value to EEPROM now - eeconfig_update_user_datablock(&apc); -} - -// On Keyboard startup -void keyboard_post_init_user(void) { - // Read custom menu variables from memory - eeconfig_read_user_datablock(&apc); - apc_init_thresholds(); -} - -// Handle the data received by the keyboard from the VIA menus -void apc_config_set_value(uint8_t *data) { - // data = [ value_id, value_data ] - uint8_t *value_id = &(data[0]); - uint8_t *value_data = &(data[1]); - - switch (*value_id) { - case id_apc_actuation_threshold: { - apc.actuation_threshold = value_data[1] | (value_data[0] << 8); - apc_set_threshold(true); - break; - } - case id_apc_release_threshold: { - apc.release_threshold = value_data[1] | (value_data[0] << 8); - apc_set_threshold(false); - break; - } - } -} - -// Handle the data sent by the keyboard to the VIA menus -void apc_config_get_value(uint8_t *data) { - // data = [ value_id, value_data ] - uint8_t *value_id = &(data[0]); - uint8_t *value_data = &(data[1]); - - switch (*value_id) { - case id_apc_actuation_threshold: { - value_data[0] = apc.actuation_threshold >> 8; - value_data[1] = apc.actuation_threshold & 0xFF; - break; - } - case id_apc_release_threshold: { - value_data[0] = apc.release_threshold >> 8; - value_data[1] = apc.release_threshold & 0xFF; - break; - } - } -} - -// Save the data to persistent memory after changes are made -void apc_config_save(void) { - eeconfig_update_user_datablock(&apc); -} - -void via_custom_value_command_kb(uint8_t *data, uint8_t length) { - // data = [ command_id, channel_id, value_id, value_data ] - uint8_t *command_id = &(data[0]); - uint8_t *channel_id = &(data[1]); - uint8_t *value_id_and_data = &(data[2]); - - if (*channel_id == id_custom_channel) { - switch (*command_id) { - case id_custom_set_value: { - apc_config_set_value(value_id_and_data); - break; - } - case id_custom_get_value: { - apc_config_get_value(value_id_and_data); - break; - } - case id_custom_save: { - apc_config_save(); - break; - } - default: { - // Unhandled message. - *command_id = id_unhandled; - break; - } - } - return; - } - - *command_id = id_unhandled; -} - -// Initialize the thresholds -void apc_init_thresholds(void) { - ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; - ecsm_config.ecsm_release_threshold = apc.release_threshold; - - // Update the ecsm_config - ecsm_update(&ecsm_config); -} - -// Set the thresholds -void apc_set_threshold(bool is_for_actuation) { - if (is_for_actuation) { - ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; - - } else { - ecsm_config.ecsm_release_threshold = apc.release_threshold; - } - // Update the ecsm_config - ecsm_update(&ecsm_config); -} diff --git a/keyboards/cipulot/ec_prox/jis/matrix.c b/keyboards/cipulot/ec_prox/jis/matrix.c deleted file mode 100644 index 1850acf264..0000000000 --- a/keyboards/cipulot/ec_prox/jis/matrix.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright 2023 Cipulot - * - * 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 "ec_switch_matrix.h" -#include "matrix.h" - -/* matrix state(1:on, 0:off) */ -extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values -extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values - -void matrix_init_custom(void) { - // Default values, overwritten by VIA if enabled later - ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL; - ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL; - - ecsm_init(&ecsm_config); -} - -bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool updated = ecsm_matrix_scan(current_matrix); - -// RAW matrix values on console -#ifdef CONSOLE_ENABLE - static int cnt = 0; - if (cnt++ == 350) { - cnt = 0; - ecsm_print_matrix(); - } -#endif - return updated; -} diff --git a/keyboards/cipulot/ec_prox/jis/mcuconf.h b/keyboards/cipulot/ec_prox/jis/mcuconf.h index d91f576bd4..fa3c955e0d 100644 --- a/keyboards/cipulot/ec_prox/jis/mcuconf.h +++ b/keyboards/cipulot/ec_prox/jis/mcuconf.h @@ -2,7 +2,7 @@ * * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, diff --git a/keyboards/cipulot/ec_prox/jis/post_rules.mk b/keyboards/cipulot/ec_prox/jis/post_rules.mk new file mode 100644 index 0000000000..d726a112a8 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_prox/jis/readme.md b/keyboards/cipulot/ec_prox/jis/readme.md index f1fa471cc9..2f9c791f25 100644 --- a/keyboards/cipulot/ec_prox/jis/readme.md +++ b/keyboards/cipulot/ec_prox/jis/readme.md @@ -20,8 +20,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to ## Bootloader -Enter the bootloader in 3 ways: +Enter the bootloader in 2 ways: -* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard * **Physical Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_prox/jis/rules.mk b/keyboards/cipulot/ec_prox/jis/rules.mk index fc2dcf32ab..ab6c37cad4 100644 --- a/keyboards/cipulot/ec_prox/jis/rules.mk +++ b/keyboards/cipulot/ec_prox/jis/rules.mk @@ -1,4 +1,4 @@ CUSTOM_MATRIX = lite -SRC += matrix.c ec_switch_matrix.c - ANALOG_DRIVER_REQUIRED = yes +SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +OPT = 2 |