mini keyboard bug fix

This commit is contained in:
cuu 2022-10-12 22:34:18 +08:00
parent 1c023901a7
commit 81d40799b5
4 changed files with 20 additions and 11 deletions

View File

@ -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

View File

@ -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);

View File

@ -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) {

View File

@ -243,12 +243,22 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
}
}break;
case _FN_LOCK_KEYBOARD:{
if(mode == KEY_PRESSED) {
dv->Keyboard_state.lock = dv->Keyboard_state.lock ^ 1;
}
}break;
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);