uconsole keyboard fix

This commit is contained in:
cuu 2023-06-08 21:14:50 +12:00
parent 558d81bee4
commit 6058dcda0d
3 changed files with 15 additions and 5 deletions

View File

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

View File

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

View File

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