Browse Source

mini keyboard bug fix

cuu 1 year ago
parent
commit
81d40799b5

+ 1 - 1
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

+ 1 - 0
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);

+ 4 - 3
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) {

+ 14 - 7
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);