add ctrl lock mode

This commit is contained in:
cuu
2022-10-29 20:38:46 +08:00
parent a802c1ad3b
commit ce4b765fea
3 changed files with 60 additions and 4 deletions

View File

@@ -304,7 +304,7 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
if(dv->Keyboard_state.fn_on > 0){
k = keys_maps[dv->Keyboard_state.fn_on][col];
}else {
k = keyboard_maps[dv->Keyboard_state.layer][col];
k = keys_maps[dv->Keyboard_state.layer][col];
}
if(k == EMP){
@@ -314,7 +314,7 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
if(dv->Keyboard_state.lock == 1) {
return;
}
switch(k) {
case _LEFT_SHIFT_KEY:
if(mode == KEY_PRESSED) {
@@ -483,9 +483,22 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
//_LEFT_CTRL_KEY,_CMD_KEY , _LEFT_ALT
case _LEFT_CTRL_KEY:
case KEY_RIGHT_CTRL:
if(mode == KEY_PRESSED){
if(dv->Keyboard_state.ctrl_lock == 0){
dv->Keyboard->press(k);
dv->Keyboard_state.ctrl_begin = k;
}
}else {
if(dv->Keyboard_state.ctrl_lock == 0){
dv->Keyboard->release(k);
dv->Keyboard_state.ctrl_begin = 0;
dv->Keyboard_state.ctrl_time = 0;
}
}
break;
case _CMD_KEY:
case _LEFT_ALT:
case KEY_RIGHT_CTRL:
case KEY_RIGHT_ALT:
if(mode == KEY_PRESSED){
dv->Keyboard->press(k);
@@ -504,5 +517,16 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
default:break;
}
if(dv->Keyboard_state.ctrl_lock > 0 ) {
if(mode == KEY_RELEASED && k != _LEFT_CTRL_KEY && k!= KEY_RIGHT_CTRL){
dv->Keyboard_state.ctrl_lock = 0;
dv->Keyboard->release(dv->Keyboard_state.ctrl_begin);
dv->Keyboard_state.ctrl_begin = 0;
dv->Keyboard_state.ctrl_time = 0;
//dv->_Serial->println("ctrl lock released");
}
}
}