From fc7e984c8a8d07d4ab2a1c982a20cbdca1f06ddd Mon Sep 17 00:00:00 2001 From: Takeshi Nishio Date: Sat, 14 Mar 2020 09:36:31 +0900 Subject: [PATCH] =?UTF-8?q?Update=20Duplex-Matrix=E3=81=8C=E5=8B=95?= =?UTF-8?q?=E4=BD=9C=E3=81=97=E3=81=9F=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/test_duplex_dp/config.h | 20 +- .../test_duplex_dp/keymaps/default/keymap.c | 13 +- keyboards/test_duplex_dp/matrix.c | 267 +++++++++++------- keyboards/test_duplex_dp/rules.mk | 4 +- keyboards/test_duplex_dp/test_duplex_dp.h | 6 +- 5 files changed, 193 insertions(+), 117 deletions(-) diff --git a/keyboards/test_duplex_dp/config.h b/keyboards/test_duplex_dp/config.h index 6ba057f34e7..4458cb526cd 100644 --- a/keyboards/test_duplex_dp/config.h +++ b/keyboards/test_duplex_dp/config.h @@ -23,12 +23,12 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0000 #define DEVICE_VER 0x0001 -#define MANUFACTURER e3w2q -#define PRODUCT 2x3test +#define MANUFACTURER jpskenn +#define PRODUCT test_duplex_dp #define DESCRIPTION A custom keyboard /* key matrix size */ -#define MATRIX_ROWS 2*2 // 行数 右手側と左手側があるので、*2 +#define MATRIX_ROWS 1*2 // 右手側と左手側があるので、*2 #define MATRIX_COLS 3*2 // 列数 Duprex Matrix法により、*2 /* @@ -41,13 +41,13 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { F6 } // 各行に割り当てるピン番号 -#define MATRIX_COL_PINS { D1, D0, D4, D1, D0, D4 } // 各列に割り当てるピン番号 +#define MATRIX_ROW_PINS { F6 } // 各行に割り当てるピン番号 +#define MATRIX_COL_PINS { D1, D0, D4 } // 各列に割り当てるピン番号 #define UNUSED_PINS /* COL2ROW, ROW2COL*/ // #define DIODE_DIRECTION CUSTOM_MATRIX // COL(列)のピンからROW(行)のピンに電流が流れるようにダイオードを付けた場合はCOL2ROW、逆向きの場合はROW2COL、独自にマトリクススキャンを行う場合はCUSTOM_MATRIX -#define DIODE_DIRECTION BOTHWAYS +// #define DIODE_DIRECTION CUSTOM_MATRIX /* * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. @@ -194,10 +194,10 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT /* disable these deprecated features by default */ -#ifndef LINK_TIME_OPTIMIZATION_ENABLE - #define NO_ACTION_MACRO - #define NO_ACTION_FUNCTION -#endif +// #ifndef LINK_TIME_OPTIMIZATION_ENABLE +// #define NO_ACTION_MACRO +// #define NO_ACTION_FUNCTION +// #endif /* * MIDI options */ diff --git a/keyboards/test_duplex_dp/keymaps/default/keymap.c b/keyboards/test_duplex_dp/keymaps/default/keymap.c index e98b18625f4..d8ba767aab7 100644 --- a/keyboards/test_duplex_dp/keymaps/default/keymap.c +++ b/keyboards/test_duplex_dp/keymaps/default/keymap.c @@ -30,10 +30,10 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ [_BASE] = LAYOUT( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8 + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_A,KC_B,KC_C,KC_D,KC_E,KC_F ), [_FN] = LAYOUT( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8 + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_A,KC_B,KC_C,KC_D,KC_E,KC_F ) }; @@ -72,3 +72,12 @@ bool led_update_user(led_t led_state) { return true; } */ + +// Debugging +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} diff --git a/keyboards/test_duplex_dp/matrix.c b/keyboards/test_duplex_dp/matrix.c index a12ec9d4931..e0d7a23c750 100644 --- a/keyboards/test_duplex_dp/matrix.c +++ b/keyboards/test_duplex_dp/matrix.c @@ -16,50 +16,141 @@ along with this program. If not, see . */ #include #include -#include "wait.h" #include "util.h" #include "matrix.h" +#include "debounce.h" +#include "quantum.h" #include "split_util.h" #include "config.h" -#include "quantum.h" -#include "debounce.h" #include "transport.h" +#include "wait.h" +#include "print.h" +#include "debug.h" #ifdef ENCODER_ENABLE # include "encoder.h" #endif #if (MATRIX_COLS <= 8) -# define print_matrix_header() print("\nr/c 01234567\n") -# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) +# define print_matrix_header() print("\nr/c 01234567\n") +# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) -# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") -# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) -# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") -# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) -# define ROW_SHIFTER ((uint32_t)1) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop32(matrix[i]) +# define ROW_SHIFTER ((uint32_t)1) #endif #define ERROR_DISCONNECT_COUNT 5 #define ROWS_PER_HAND (MATRIX_ROWS / 2) -#ifdef DIRECT_PINS -static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; -#else -static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +#ifdef MATRIX_MASKED + extern const matrix_row_t matrix_mask[]; #endif +static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + /* matrix state(1:on, 0:off) */ -static matrix_row_t raw_matrix[ROWS_PER_HAND]; // raw values -static matrix_row_t matrix[MATRIX_ROWS]; // debounced values +static matrix_row_t raw_matrix[MATRIX_ROWS]; //raw values +static matrix_row_t matrix[MATRIX_ROWS]; //debounced values //ROWS_PER_HAND? + +__attribute__ ((weak)) +void matrix_init_quantum(void) { + matrix_init_kb(); +} + +__attribute__ ((weak)) +void matrix_scan_quantum(void) { + matrix_scan_kb(); +} + +__attribute__ ((weak)) +void matrix_init_kb(void) { + matrix_init_user(); +} + +__attribute__ ((weak)) +void matrix_scan_kb(void) { + matrix_scan_user(); +} + +__attribute__ ((weak)) +void matrix_init_user(void) { +} + +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +inline +uint8_t matrix_rows(void) { + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) { + return MATRIX_COLS; +} + +//Deprecated. +bool matrix_is_modified(void) +{ + if (debounce_active()) return false; + return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & ((matrix_row_t)1<