Browse Source

uconsole keyboard fix

cuu 10 months ago
parent
commit
6058dcda0d

+ 2 - 0
Code/devterm_keyboard_mini/devterm.h

@@ -25,10 +25,12 @@ typedef struct keyboard_state{
   uint8_t layer;
   uint8_t prev_layer;
   uint8_t fn_on;
+  uint8_t sf_on;//shift on
   
   uint8_t backlight;//0 1 2 3
   uint8_t lock;//0 1
 
+  
   KEYBOARD_LOCK ctrl;
   KEYBOARD_LOCK shift;  
   KEYBOARD_LOCK alt;

+ 2 - 0
Code/devterm_keyboard_mini/devterm_keyboard_mini.ino

@@ -41,6 +41,8 @@ void setup() {
   dev_term.Keyboard_state.layer = 0;
   dev_term.Keyboard_state.prev_layer = 0;
   dev_term.Keyboard_state.fn_on = 0;
+  dev_term.Keyboard_state.sf_on = 0;
+  
   //dev_term.Keyboard_state.shift = 0;
   dev_term.Keyboard_state.backlight = 0;
   dev_term.Keyboard_state.lock = 0;

+ 11 - 5
Code/devterm_keyboard_mini/keymaps.ino

@@ -222,7 +222,11 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
     }break;
     case _VOLUME_M:{
       if(mode == KEY_PRESSED) {
-        dv->Consumer->press(HIDConsumer::VOLUME_DOWN);
+        if(dv->Keyboard_state.sf_on == 1){
+           dv->Consumer->press(HIDConsumer::VOLUME_UP); 
+        }else{
+          dv->Consumer->press(HIDConsumer::VOLUME_DOWN);
+        }
       }else {
         dv->Consumer->release();
       }
@@ -317,14 +321,16 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
     case _LEFT_SHIFT_KEY:
     case KEY_RIGHT_SHIFT:
       if(mode == KEY_PRESSED) {
-	if(dv->Keyboard_state.shift.lock == 0){
+        dv->Keyboard_state.sf_on = 1;
+	      if(dv->Keyboard_state.shift.lock == 0){
           dv->Keyboard->press(k);
-	  dv->Keyboard_state.shift.begin=k;
-	}
+	        dv->Keyboard_state.shift.begin=k;
+	      }
       }else if(mode == KEY_RELEASED) {
+        dv->Keyboard_state.sf_on = 0;
         if(dv->Keyboard_state.shift.lock == 0){
           dv->Keyboard->release(k);
-	  dv->Keyboard_state.shift.begin = 0;
+	        dv->Keyboard_state.shift.begin = 0;
           dv->Keyboard_state.shift.time = 0;
 	}
       }