diff --git a/keyboards/mexsistor/ludmila/config.h b/keyboards/mexsistor/ludmila/config.h index 9559c4df46a..5606f8c40d8 100644 --- a/keyboards/mexsistor/ludmila/config.h +++ b/keyboards/mexsistor/ludmila/config.h @@ -20,15 +20,15 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0000 +#define VENDOR_ID 0x69CC +#define PRODUCT_ID 0x6BF6 #define DEVICE_VER 0x0001 #define MANUFACTURER Kevin M. -#define PRODUCT ludmila +#define PRODUCT ludmila_v1 /* key matrix size */ -#define MATRIX_ROWS 2 -#define MATRIX_COLS 3 +#define MATRIX_ROWS 3 +#define MATRIX_COLS 2 /* * Keyboard Matrix Assignments @@ -40,107 +40,18 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { D0, D5 } -#define MATRIX_COL_PINS { F1, F0, B0 } +#define MATRIX_ROW_PINS { F0, C7, F7 } +#define MATRIX_COL_PINS { F4, F1 } #define UNUSED_PINS /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* - * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. - */ -#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define RGB_DI_PIN B7 +#define RGBLED_NUM 4 +#define RGBLIGHT_SLEEP +#define RGBLIGHT_ANIMATIONS -//#define BACKLIGHT_PIN B7 -//#define BACKLIGHT_LEVELS 3 -//#define BACKLIGHT_BREATHING - -//#define RGB_DI_PIN E2 -//#ifdef RGB_DI_PIN -//# define RGBLED_NUM 16 -//# define RGBLIGHT_HUE_STEP 8 -//# define RGBLIGHT_SAT_STEP 8 -//# define RGBLIGHT_VAL_STEP 8 -//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -//# define RGBLIGHT_ANIMATIONS -/*== or choose animations ==*/ -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -//# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING -/*== customize breathing effect ==*/ -/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -/*==== use exp() and sin() ====*/ -//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -//#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* 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 - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is useful for the Windows task manager shortcut (ctrl+shift+esc). - */ -//#define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* Bootmagic Lite key configuration */ -//#define BOOTMAGIC_LITE_ROW 0 -//#define BOOTMAGIC_LITE_COLUMN 0 +// Encoder +#define ENCODERS_PAD_A { F6 } +#define ENCODERS_PAD_B { F5 } diff --git a/keyboards/mexsistor/ludmila/keymaps/default/keymap.c b/keyboards/mexsistor/ludmila/keymaps/default/keymap.c index 894dd8bf944..7daf7d5d792 100644 --- a/keyboards/mexsistor/ludmila/keymaps/default/keymap.c +++ b/keyboards/mexsistor/ludmila/keymaps/default/keymap.c @@ -16,47 +16,26 @@ #include QMK_KEYBOARD_H // Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FN -}; - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QMKBEST = SAFE_RANGE, - QMKURL +enum keyboard_layers{ + _BASE = 0, + _CONTROL }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base */ - [_BASE] = LAYOUT( - KC_A, KC_1, MO(_FN), - KC_TAB, KC_SPC - ), - [_FN] = LAYOUT( - QMKBEST, QMKURL, _______, - RESET, XXXXXXX - ) + [_BASE] = LAYOUT( /* Base */ + KC_A, KC_B, KC_MUTE, + KC_D, KC_E + + ), + }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QMKBEST: - if (record->event.pressed) { - // when keycode QMKBEST is pressed - SEND_STRING("QMK is the best thing ever!"); - } else { - // when keycode QMKBEST is released - } - break; - case QMKURL: - if (record->event.pressed) { - // when keycode QMKURL is pressed - SEND_STRING("https://qmk.fm/\n"); - } else { - // when keycode QMKURL is released - } - break; +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } } - return true; } diff --git a/keyboards/mexsistor/ludmila/ludmila.h b/keyboards/mexsistor/ludmila/ludmila.h index 2661d1fcb30..fc95a5492e6 100644 --- a/keyboards/mexsistor/ludmila/ludmila.h +++ b/keyboards/mexsistor/ludmila/ludmila.h @@ -27,9 +27,10 @@ * represents the switch matrix. */ #define LAYOUT( \ - k00, k01, k02, \ - k10, k12 \ + k00, k01, k20, \ + k10, k11 \ ) { \ - { k00, k01, k02 }, \ - { k10, KC_NO, k12 } \ -} + { k00, k01, }, \ + { k10, k11, }, \ + { k20 } \ + } diff --git a/keyboards/mexsistor/ludmila/readme.md b/keyboards/mexsistor/ludmila/readme.md index 6f040b12fe4..93742ee7640 100644 --- a/keyboards/mexsistor/ludmila/readme.md +++ b/keyboards/mexsistor/ludmila/readme.md @@ -1,19 +1,19 @@ # ludmila -![ludmila](imgur.com image replace me!) +![ludmila](https://mexsistor.com/wp-content/uploads/2020/09/IMG_2249-scaled.jpg) -*A short description of the keyboard/project* +Ludmila v1 is a 4 Key Macropad with one rotary encoder. -* Keyboard Maintainer: [Kevin M.](https://github.com/yourusername) -* Hardware Supported: *The PCBs, controllers supported* -* Hardware Availability: *Links to where you can find this hardware* +* Keyboard Maintainer: [Kevin M.](https://github.com/mexsistor) +* Hardware Supported: Ludmila PCB (atmega32u4) +* Hardware Availability: [Kevin M.](https://mexsistor.com/producto/ludmilapad/) Make example for this keyboard (after setting up your build environment): - make ludmila:default + make mexsistor/ludmila:default Flashing example for this keyboard: - make ludmila:default:flash + make mexsistor/ludmila:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mexsistor/ludmila/rules.mk b/keyboards/mexsistor/ludmila/rules.mk index 5c0d8f307c5..b7f706e3001 100644 --- a/keyboards/mexsistor/ludmila/rules.mk +++ b/keyboards/mexsistor/ludmila/rules.mk @@ -20,3 +20,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +SRC = matrix.c +CUSTOM_MATRIX = yes diff --git a/keyboards/mexsistor/ludmila_v1/config.h b/keyboards/mexsistor/ludmila_v1/config.h deleted file mode 100644 index 5606f8c40d8..00000000000 --- a/keyboards/mexsistor/ludmila_v1/config.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -Copyright 2020 Kevin M. - -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 "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x69CC -#define PRODUCT_ID 0x6BF6 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Kevin M. -#define PRODUCT ludmila_v1 - -/* key matrix size */ -#define MATRIX_ROWS 3 -#define MATRIX_COLS 2 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { F0, C7, F7 } -#define MATRIX_COL_PINS { F4, F1 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN B7 -#define RGBLED_NUM 4 -#define RGBLIGHT_SLEEP -#define RGBLIGHT_ANIMATIONS - -// Encoder -#define ENCODERS_PAD_A { F6 } -#define ENCODERS_PAD_B { F5 } diff --git a/keyboards/mexsistor/ludmila_v1/info.json b/keyboards/mexsistor/ludmila_v1/info.json deleted file mode 100644 index 704fde9938f..00000000000 --- a/keyboards/mexsistor/ludmila_v1/info.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "keyboard_name": "ludmila_v1", - "url": "", - "maintainer": "Kevin M.", - "width": 3, - "height": 2, - "layouts": { - "LAYOUT": { - "layout": [ - {"label": "k00", "x": 0, "y": 0}, - {"label": "k01", "x": 1, "y": 0}, - {"label": "k02", "x": 2, "y": 0}, - - {"label": "k10", "x": 0, "y": 1, "w": 1.5}, - {"label": "k12", "x": 1.5, "y": 1, "w": 1.5} - ] - } - } -} diff --git a/keyboards/mexsistor/ludmila_v1/keymaps/default/keymap.c b/keyboards/mexsistor/ludmila_v1/keymaps/default/keymap.c deleted file mode 100644 index 7daf7d5d792..00000000000 --- a/keyboards/mexsistor/ludmila_v1/keymaps/default/keymap.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2020 Kevin M. - * - * 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 - -// Defines names for use in layer keycodes and the keymap -enum keyboard_layers{ - _BASE = 0, - _CONTROL -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( /* Base */ - KC_A, KC_B, KC_MUTE, - KC_D, KC_E - - ), - -}; - -void encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } -} diff --git a/keyboards/mexsistor/ludmila_v1/keymaps/default/readme.md b/keyboards/mexsistor/ludmila_v1/keymaps/default/readme.md deleted file mode 100644 index f99b952cde0..00000000000 --- a/keyboards/mexsistor/ludmila_v1/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for ludmila_v1 diff --git a/keyboards/mexsistor/ludmila_v1/ludmila_v1.c b/keyboards/mexsistor/ludmila_v1/ludmila_v1.c deleted file mode 100644 index 81f9d5aaf95..00000000000 --- a/keyboards/mexsistor/ludmila_v1/ludmila_v1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Kevin M. - * - * 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 "ludmila_v1.h" diff --git a/keyboards/mexsistor/ludmila_v1/ludmila_v1.h b/keyboards/mexsistor/ludmila_v1/ludmila_v1.h deleted file mode 100644 index fc95a5492e6..00000000000 --- a/keyboards/mexsistor/ludmila_v1/ludmila_v1.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2020 Kevin M. - * - * 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 "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ -#define LAYOUT( \ - k00, k01, k20, \ - k10, k11 \ -) { \ - { k00, k01, }, \ - { k10, k11, }, \ - { k20 } \ - } diff --git a/keyboards/mexsistor/ludmila_v1/matrix.c b/keyboards/mexsistor/ludmila_v1/matrix.c deleted file mode 100644 index ae2527c3aea..00000000000 --- a/keyboards/mexsistor/ludmila_v1/matrix.c +++ /dev/null @@ -1,258 +0,0 @@ -/* -Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar - -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 -#include -#include "wait.h" -#include "util.h" -#include "matrix.h" -#include "debounce.h" -#include "quantum.h" - -// Encoder things -#define ENC_SW F7 -static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row); - -#ifdef MATRIX_MASKED -extern const matrix_row_t matrix_mask[]; -#endif - -#ifdef DIRECT_PINS -static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; -#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) -static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -#endif - -/* matrix state(1:on, 0:off) */ -static matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values -static matrix_row_t matrix[MATRIX_ROWS]; // debounced values - -// helper functions - -inline bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & ((matrix_row_t)1 << col)); } - -inline matrix_row_t matrix_get_row(uint8_t row) { - // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a - // switch blocker installed and the switch is always pressed. -#ifdef MATRIX_MASKED - return matrix[row] & matrix_mask[row]; -#else - return matrix[row]; -#endif -} - -// matrix code - -#ifdef DIRECT_PINS - -static void init_pins(void) { - for (int row = 0; row < MATRIX_ROWS; row++) { - for (int col = 0; col < MATRIX_COLS; col++) { - pin_t pin = direct_pins[row][col]; - if (pin != NO_PIN) { - setPinInputHigh(pin); - } - } - } -} - -static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { - matrix_row_t last_row_value = current_matrix[current_row]; - current_matrix[current_row] = 0; - - for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { - pin_t pin = direct_pins[current_row][col_index]; - if (pin != NO_PIN) { - current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index); - } - } - - return (last_row_value != current_matrix[current_row]); -} - -#elif (DIODE_DIRECTION == COL2ROW) - -static void select_row(uint8_t row) { - setPinOutput(row_pins[row]); - writePinLow(row_pins[row]); -} - -static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); } - -static void unselect_rows(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - setPinInputHigh(row_pins[x]); - } -} - -static void init_pins(void) { - unselect_rows(); - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh(col_pins[x]); - } -} - -static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { - // Store last value of row prior to reading - matrix_row_t last_row_value = current_matrix[current_row]; - - // Clear data in matrix row - current_matrix[current_row] = 0; - - // Select row and wait for row selecton to stabilize - select_row(current_row); - wait_us(30); - - // For each col... - for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { - // Select the col pin to read (active low) - uint8_t pin_state = readPin(col_pins[col_index]); - - // Populate the matrix row with the state of the col pin - current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); - } - - // Unselect row - unselect_row(current_row); - - return (last_row_value != current_matrix[current_row]); -} - -#elif (DIODE_DIRECTION == ROW2COL) - -static void select_col(uint8_t col) { - setPinOutput(col_pins[col]); - writePinLow(col_pins[col]); -} - -static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); } - -static void unselect_cols(void) { - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh(col_pins[x]); - } -} - -static void init_pins(void) { - unselect_cols(); - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - setPinInputHigh(row_pins[x]); - } -} - -static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { - bool matrix_changed = false; - - // Select col and wait for col selecton to stabilize - select_col(current_col); - wait_us(30); - - // For each row... - for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { - // Store last value of row prior to reading - matrix_row_t last_row_value = current_matrix[row_index]; - - // Check row pin state - if (readPin(row_pins[row_index]) == 0) { - // Pin LO, set col bit - current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col); - } else { - // Pin HI, clear col bit - current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); - } - - // Determine if the matrix changed state - if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) { - matrix_changed = true; - } - } - - // Unselect col - unselect_col(current_col); - - return matrix_changed; -} - -#endif - -void matrix_init(void) { - // initialize key pins - init_pins(); - - // initialize matrix state: all keys off - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - raw_matrix[i] = 0; - matrix[i] = 0; - } - - debounce_init(MATRIX_ROWS); - - matrix_init_quantum(); -} - -uint8_t matrix_scan(void) { - bool changed = false; - -#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) - // Set row, read cols - for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { - changed |= read_cols_on_row(raw_matrix, current_row); - } -#elif (DIODE_DIRECTION == ROW2COL) - // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - changed |= read_rows_on_col(raw_matrix, current_col); - } -#endif - - debounce(raw_matrix, matrix, MATRIX_ROWS, changed); - - // Read encoder switches, already debounced - changed |= read_encoder_switches(matrix, 2); - - matrix_scan_quantum(); - return (uint8_t)changed; -} - -// Customisations for the encoders -void matrix_init_kb(void) { - setPinInput(ENC_SW); -} - -void matrix_scan_kb(void) {} - -void matrix_print(void) {} - -static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row) { - // Store last value of row prior to reading - matrix_row_t last_row_value = current_matrix[current_row]; - - // Clear data in matrix row - current_matrix[current_row] = 0; - - // Debounce the encoder buttons using a shift register - static uint8_t btn_1_array; - bool btn_1_pressed = 0; - btn_1_array <<= 1; - btn_1_array |= readPin(ENC_SW); - (btn_1_array == 0b11111111) ? (btn_1_pressed = 1) : (btn_1_pressed = 0); - - // Populate the matrix row with the state of the encoder - current_matrix[current_row] |= btn_1_pressed ? (1 << 0) : 0; - - return (last_row_value != current_matrix[current_row]); -} diff --git a/keyboards/mexsistor/ludmila_v1/readme.md b/keyboards/mexsistor/ludmila_v1/readme.md deleted file mode 100644 index b9e334cd6eb..00000000000 --- a/keyboards/mexsistor/ludmila_v1/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# ludmila_v1 - -![ludmila_v1](https://mexsistor.com/wp-content/uploads/2020/09/IMG_2249-scaled.jpg) - -Ludmila v1 is a 4 Key Macropad with one rotary encoder. - -* Keyboard Maintainer: [Kevin M.](https://github.com/mexsistor) -* Hardware Supported: Ludmila PCB (atmega32u4) -* Hardware Availability: [Kevin M.](https://mexsistor.com/producto/ludmilapad/) - -Make example for this keyboard (after setting up your build environment): - - make mexsistor/ludmila_v1:default - -Flashing example for this keyboard: - - make mexsistor/ludmila_v1:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mexsistor/ludmila_v1/rules.mk b/keyboards/mexsistor/ludmila_v1/rules.mk deleted file mode 100644 index b7f706e3001..00000000000 --- a/keyboards/mexsistor/ludmila_v1/rules.mk +++ /dev/null @@ -1,25 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes -SRC = matrix.c -CUSTOM_MATRIX = yes