From 81d40799b586ff3df6664590db50a47e53daeb6c Mon Sep 17 00:00:00 2001 From: cuu Date: Wed, 12 Oct 2022 22:34:18 +0800 Subject: [PATCH] mini keyboard bug fix --- Code/devterm_keyboard_mini/devterm.h | 2 +- .../devterm_keyboard_mini.ino | 1 + Code/devterm_keyboard_mini/keyboard.ino | 7 ++++--- Code/devterm_keyboard_mini/keymaps.ino | 21 ++++++++++++------- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Code/devterm_keyboard_mini/devterm.h b/Code/devterm_keyboard_mini/devterm.h index ea5b9b9..ab8e650 100644 --- a/Code/devterm_keyboard_mini/devterm.h +++ b/Code/devterm_keyboard_mini/devterm.h @@ -39,7 +39,7 @@ class DEVTERM { uint32_t delta; }; -#define KEYBOARD_PULL 1 // 1 for PULLUP, 0 FOR PULLDOWN +#define KEYBOARD_PULL 0 // 1 for PULLUP, 0 FOR PULLDOWN #define KEYBOARD_LED_PWM_PERIOD 200 #endif diff --git a/Code/devterm_keyboard_mini/devterm_keyboard_mini.ino b/Code/devterm_keyboard_mini/devterm_keyboard_mini.ino index 576ca19..1e586e7 100644 --- a/Code/devterm_keyboard_mini/devterm_keyboard_mini.ino +++ b/Code/devterm_keyboard_mini/devterm_keyboard_mini.ino @@ -60,6 +60,7 @@ void setup() { pinMode(PD2,INPUT);// switch 2 in back timer.setPeriod(KEYBOARD_LED_PWM_PERIOD); + timer.resume(); pinMode(PA8,PWM); pwmWrite(PA8,dev_term.Keyboard_state.backlight); diff --git a/Code/devterm_keyboard_mini/keyboard.ino b/Code/devterm_keyboard_mini/keyboard.ino index 242dc05..e2a040a 100644 --- a/Code/devterm_keyboard_mini/keyboard.ino +++ b/Code/devterm_keyboard_mini/keyboard.ino @@ -115,11 +115,10 @@ uint8_t matrix_scan(void) { matrix[row] = 0; for (int col = 0; col < MATRIX_COLS; col++) { matrix[row] |= ((matrix_debouncing[col] & (1 << row) ? 1 : 0) << col); - } - } keyboard_debouncing.deing = false; + }else{ delay(1); } @@ -165,7 +164,7 @@ void matrix_release(DEVTERM*dv,uint8_t row,uint8_t col) { void keyboard_task(DEVTERM*dv) { - + char buff[128]; uint8_t matrix_row = 0; uint8_t matrix_change = 0; uint8_t pressed = 0; @@ -176,6 +175,8 @@ void keyboard_task(DEVTERM*dv) matrix_row = matrix_get_row(r); matrix_change = matrix_row ^ matrix_prev[r]; if (matrix_change) { + //sprintf(buff,"matrix_row: %d %d\n",matrix_row,matrix_prev[r]); + //dv->_Serial->print(buff); uint8_t col_mask = 1; for (uint8_t c = 0; c < MATRIX_COLS; c++, col_mask <<= 1) { if (matrix_change & col_mask) { diff --git a/Code/devterm_keyboard_mini/keymaps.ino b/Code/devterm_keyboard_mini/keymaps.ino index dc90574..2ba55d7 100644 --- a/Code/devterm_keyboard_mini/keymaps.ino +++ b/Code/devterm_keyboard_mini/keymaps.ino @@ -243,12 +243,22 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) { } }break; case _FN_LOCK_KEYBOARD:{ - dv->Keyboard_state.lock = dv->Keyboard_state.lock ^ 1; - + if(mode == KEY_PRESSED) { + dv->Keyboard_state.lock = dv->Keyboard_state.lock ^ 1; + } }break; - case _FN_KEY: + case _FN_LIGHT_KEYBOARD: { + //dv->_Serial->println("light keyboard"); + if(mode == KEY_PRESSED) { + dv->Keyboard_state.backlight = ( dv->Keyboard_state.backlight + 1) % 4; + pwmWrite(PA8,backlight[ dv->Keyboard_state.backlight ] ); + //dv->_Serial->println("light keyboard"); + } + }break; + case _FN_KEY: if(mode == KEY_PRESSED){ dv->Keyboard_state.fn_on = FN_LAYER; + //dv->_Serial->println("fn pressed"); }else if(mode == KEY_RELEASED ) { //release all pressed fn keys if they still been pressing @@ -263,10 +273,7 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) { dv->Keyboard_state.fn_on = 0; } break; - case _FN_LIGHT_KEYBOARD: { - dev_term.Keyboard_state.backlight = (dev_term.Keyboard_state.backlight + 1) % 4; - pwmWrite(PA8,backlight[ dev_term.Keyboard_state.backlight ] ); - }break; + default: if(mode == KEY_PRESSED) { dv->Keyboard->press(k);