mirror of
https://github.com/clockworkpi/DevTerm.git
synced 2025-12-12 10:18:49 +01:00
mini keyboard bug fix
This commit is contained in:
parent
1c023901a7
commit
81d40799b5
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user