fix keyboard fn bug

This commit is contained in:
cuu 2023-07-14 16:06:07 +12:00
parent 4f1b329202
commit 899a162b64

View File

@ -5,24 +5,24 @@
#define EMP 0XFFFF #define EMP 0XFFFF
/* /*
B1 joystick up B1 joystick up
B2 joystick down B2 joystick down
B3 joystick left B3 joystick left
B4 joystick right B4 joystick right
B5 joystick A B5 joystick A
B6 joystick B B6 joystick B
B7 joystick X B7 joystick X
B8 joystick Y B8 joystick Y
B9 left shift B9 left shift
B10 Fn B10 Fn
B11 left Ctrl B11 left Ctrl
B12 Cmd B12 Cmd
B13 left Alt B13 left Alt
B14 mouse left B14 mouse left
B15 mouse mid B15 mouse mid
B16 mouse right B16 mouse right
*/ */
#define _PRINT_KEY KEY_PRNT_SCRN #define _PRINT_KEY KEY_PRNT_SCRN
#define _PAUSE_KEY KEY_PAUSE #define _PAUSE_KEY KEY_PAUSE
@ -38,7 +38,7 @@ B16 mouse right
#define _FN_KEY_RIGHT_ARROW KEY_END #define _FN_KEY_RIGHT_ARROW KEY_END
enum SKEYS { enum SKEYS {
_SELECT_KEY =0xe8, //Joystick.button(n) _SELECT_KEY = 0xe8, //Joystick.button(n)
_START_KEY, //Joystick.button(n) _START_KEY, //Joystick.button(n)
_JOYSTICK_UP, //B1 //Joystick.Y() _JOYSTICK_UP, //B1 //Joystick.Y()
_JOYSTICK_DOWN, //Joystick.Y() _JOYSTICK_DOWN, //Joystick.Y()
@ -66,56 +66,63 @@ enum SKEYS {
/* /*
* keyboard_maps keyboard_maps
* M11 - M18 M11 - M18
* M21 - M28 M21 - M28
* M31 - M38 M31 - M38
* M41 - M48 M41 - M48
* M51 - M58 M51 - M58
* M61 - M68 M61 - M68
* M71 - M78 M71 - M78
* M81 - M88 M81 - M88
*/ */
const uint16_t keyboard_maps[][MATRIX_KEYS] = { const uint16_t keyboard_maps[][MATRIX_KEYS] = {
[DEF_LAYER] = { _SELECT_KEY,_START_KEY,_VOLUME_M,'`','[',']','-','=', \ [DEF_LAYER] = {
'1','2','3','4','5','6','7','8',\ _SELECT_KEY, _START_KEY, _VOLUME_M, '`', '[', ']', '-', '=', \
'9','0',KEY_ESC,KEY_TAB,KEY_UP_ARROW,KEY_DOWN_ARROW,KEY_LEFT_ARROW,KEY_RIGHT_ARROW, \ '1', '2', '3', '4', '5', '6', '7', '8', \
'q','w','e','r','t','y','u','i', \ '9', '0', KEY_ESC, KEY_TAB, KEY_UP_ARROW, KEY_DOWN_ARROW, KEY_LEFT_ARROW, KEY_RIGHT_ARROW, \
'o','p','a','s','d','f','g','h',\ 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', \
'j','k','l','z','x','c','v','b', \ 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', \
'n','m',',','.','/','\\',';','\'', \ 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', \
KEY_BACKSPACE,KEY_RETURN,KEY_RIGHT_ALT,KEY_RIGHT_CTRL,KEY_RIGHT_SHIFT,' ',EMP,EMP}, 'n', 'm', ',', '.', '/', '\\', ';', '\'', \
KEY_BACKSPACE, KEY_RETURN, KEY_RIGHT_ALT, KEY_RIGHT_CTRL, KEY_RIGHT_SHIFT, ' ', EMP, EMP
},
[FN_LAYER] = { _PRINT_KEY,_PAUSE_KEY,_VOLUME_P,'`','[',']',KEY_F11,KEY_F12, \ [FN_LAYER] = {
KEY_F1,KEY_F2,KEY_F3,KEY_F4,KEY_F5,KEY_F6,KEY_F7,KEY_F8,\ _PRINT_KEY, _PAUSE_KEY, _VOLUME_P, '`', '[', ']', KEY_F11, KEY_F12, \
KEY_F9,KEY_F10,KEY_ESC,KEY_CAPS_LOCK,_FN_KEY_UP_ARROW,_FN_KEY_DOWN_ARROW,_FN_KEY_LEFT_ARROW,_FN_KEY_RIGHT_ARROW, \ KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, \
'q','w','e','r','t','y','u',KEY_INSERT, \ KEY_F9, KEY_F10, KEY_ESC, KEY_CAPS_LOCK, _FN_KEY_UP_ARROW, _FN_KEY_DOWN_ARROW, _FN_KEY_LEFT_ARROW, _FN_KEY_RIGHT_ARROW, \
'o','p','a','s','d','f','g','h',\ 'q', 'w', 'e', 'r', 't', 'y', 'u', KEY_INSERT, \
'j','k','l','z','x','c','v','b', \ 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', \
'n','m',_FN_BRIGHTNESS_DOWN,_FN_BRIGHTNESS_UP,'/','\\',';','\'', \ 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', \
KEY_DELETE,KEY_RETURN,KEY_RIGHT_ALT,KEY_RIGHT_CTRL,KEY_RIGHT_SHIFT,' ',EMP,EMP} 'n', 'm', _FN_BRIGHTNESS_DOWN, _FN_BRIGHTNESS_UP, '/', '\\', ';', '\'', \
KEY_DELETE, KEY_RETURN, KEY_RIGHT_ALT, KEY_RIGHT_CTRL, KEY_RIGHT_SHIFT, ' ', EMP, EMP
}
}; };
uint16_t keyboard_pick_map[MATRIX_KEYS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
static uint8_t fn_actions[MATRIX_KEYS]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; static uint8_t fn_actions[MATRIX_KEYS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
const uint16_t keys_maps[KEYS_NUM] = {_JOYSTICK_UP,_JOYSTICK_DOWN, _JOYSTICK_LEFT, \ const uint16_t keys_maps[KEYS_NUM] = {_JOYSTICK_UP, _JOYSTICK_DOWN, _JOYSTICK_LEFT, \
_JOYSTICK_RIGHT,_JOYSTICK_A,_JOYSTICK_B, \ _JOYSTICK_RIGHT, _JOYSTICK_A, _JOYSTICK_B, \
_JOYSTICK_X,_JOYSTICK_Y,_LEFT_SHIFT_KEY,_FN_KEY,\ _JOYSTICK_X, _JOYSTICK_Y, _LEFT_SHIFT_KEY, _FN_KEY, \
_LEFT_CTRL_KEY,_CMD_KEY , _LEFT_ALT, \ _LEFT_CTRL_KEY, _CMD_KEY , _LEFT_ALT, \
_MOUSE_LEFT,_MOUSE_MID,_MOUSE_RIGHT,_TRACKBALL_BTN}; _MOUSE_LEFT, _MOUSE_MID, _MOUSE_RIGHT, _TRACKBALL_BTN
};
uint8_t check_pd2(){ // if swtich 2 in back is set to on(HIGH)
uint8_t check_pd2() { // if swtich 2 in back is set to on(HIGH)
return digitalRead(PD2); return digitalRead(PD2);
} }
void dt_kbd_set_layer(DEVTERM*dv,uint8_t new_layer) { void dt_kbd_set_layer(DEVTERM*dv, uint8_t new_layer) {
if( dv->Keyboard_state.layer != new_layer) { if ( dv->Keyboard_state.layer != new_layer) {
dv->Keyboard_state.prev_layer = dv->Keyboard_state.layer; dv->Keyboard_state.prev_layer = dv->Keyboard_state.layer;
dv->Keyboard_state.layer = new_layer; dv->Keyboard_state.layer = new_layer;
@ -127,278 +134,316 @@ void dt_kbd_restore_layer(DEVTERM*dv) {
dv->Keyboard_state.layer = dv->Keyboard_state.prev_layer; dv->Keyboard_state.layer = dv->Keyboard_state.prev_layer;
} }
void keyboard_release_core(DEVTERM*dv, uint16_t k) {
void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) { switch (k) {
case KEY_RIGHT_SHIFT:
uint16_t k;
uint8_t addr;
addr = row*MATRIX_COLS+col;
if(dv->Keyboard_state.fn_on > 0){
k = keyboard_maps[dv->Keyboard_state.fn_on][addr];
fn_actions[addr] = 1;
}else {
k = keyboard_maps[dv->Keyboard_state.layer][addr];
}
if(k == EMP){
return;
}
switch(k) {
case KEY_RIGHT_SHIFT:{
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} break;
}break;
case KEY_CAPS_LOCK: case KEY_CAPS_LOCK:
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
dv->Keyboard->setAdjustForHostCapsLock(true);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->setAdjustForHostCapsLock(false); dv->Keyboard->setAdjustForHostCapsLock(false);
dv->Keyboard->release(k); dv->Keyboard->release(k);
}
break; break;
case _SELECT_KEY: case _SELECT_KEY:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = ' '; k = ' ';
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} } else {
}else { dv->Joystick->button(9, KEY_RELEASED);
dv->Joystick->button(9,mode);
} }
break; break;
case _START_KEY: case _START_KEY:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = KEY_RETURN; k = KEY_RETURN;
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} } else {
}else { dv->Joystick->button(10, KEY_RELEASED);
dv->Joystick->button(10,mode);
} }
break; break;
case _FN_BRIGHTNESS_UP: case _FN_BRIGHTNESS_UP:
if(mode == KEY_PRESSED) { case _FN_BRIGHTNESS_DOWN:
dv->Consumer->press(HIDConsumer::BRIGHTNESS_UP); case _VOLUME_P:
}else { case _VOLUME_M:
dv->Consumer->release(); dv->Consumer->release();
break;
default:
dv->Keyboard->release(k);
break;
}
}
void keyboard_release(DEVTERM*dv, uint8_t addr, uint16_t k) {
if ( keyboard_pick_map[addr] == 0) {
keyboard_release_core(dv, k);
} else {
keyboard_release_core(dv, keyboard_pick_map[addr]);
keyboard_pick_map[addr] = 0;
}
}
void keyboard_action(DEVTERM * dv, uint8_t row, uint8_t col, uint8_t mode) {
uint16_t k;
uint8_t addr;
addr = row * MATRIX_COLS + col;
if (dv->Keyboard_state.fn_on > 0) {
k = keyboard_maps[dv->Keyboard_state.fn_on][addr];
fn_actions[addr] = 1;
} else {
k = keyboard_maps[dv->Keyboard_state.layer][addr];
}
if (k == EMP) {
return;
}
switch (k) {
case KEY_RIGHT_SHIFT: {
if (mode == KEY_PRESSED) {
dv->Keyboard->press(k);
} else {
keyboard_release(dv, addr, k);
}
} break;
case KEY_CAPS_LOCK:
if (mode == KEY_PRESSED) {
dv->Keyboard->press(k);
dv->Keyboard->setAdjustForHostCapsLock(true);
} else if (mode == KEY_RELEASED) {
keyboard_release(dv, addr, k);
}
break;
case _SELECT_KEY:
if (check_pd2() == HIGH) {
k = ' ';
if (mode == KEY_PRESSED) {
dv->Keyboard->press(k);
} else if (mode == KEY_RELEASED) {
keyboard_release(dv, addr, k);
}
} else {
if ( mode == KEY_PRESSED) {
dv->Joystick->button(9, mode);
} else {
keyboard_release(dv, addr, k);
}
}
break;
case _START_KEY:
if (check_pd2() == HIGH) {
k = KEY_RETURN;
if (mode == KEY_PRESSED) {
dv->Keyboard->press(k);
} else if (mode == KEY_RELEASED) {
keyboard_release(dv, addr, k);
}
} else {
if (mode == KEY_PRESSED) {
dv->Joystick->button(10, mode);
} else {
keyboard_release(dv, addr, k);
}
}
break;
case _FN_BRIGHTNESS_UP:
if (mode == KEY_PRESSED) {
dv->Consumer->press(HIDConsumer::BRIGHTNESS_UP);
} else {
keyboard_release(dv, addr, k);
} }
break; break;
case _FN_BRIGHTNESS_DOWN: case _FN_BRIGHTNESS_DOWN:
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Consumer->press(HIDConsumer::BRIGHTNESS_DOWN); dv->Consumer->press(HIDConsumer::BRIGHTNESS_DOWN);
}else { } else {
dv->Consumer->release(); keyboard_release(dv, addr, k);
} }
break; break;
case _VOLUME_P:{ case _VOLUME_P: {
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Consumer->press(HIDConsumer::VOLUME_UP); dv->Consumer->press(HIDConsumer::VOLUME_UP);
}else { } else {
dv->Consumer->release(); keyboard_release(dv, addr, k);
} }
}break; } break;
case _VOLUME_M:{ case _VOLUME_M: {
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Consumer->press(HIDConsumer::VOLUME_DOWN); dv->Consumer->press(HIDConsumer::VOLUME_DOWN);
}else { } else {
dv->Consumer->release(); keyboard_release(dv, addr, k);
} }
}break; } break;
default: default:
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); keyboard_release(dv, addr, k);
if(dv->Keyboard_state.fn_on > 0){
fn_actions[addr] = 0;
}
} }
break; break;
} }
} }
void keypad_action(DEVTERM * dv, uint8_t col, uint8_t mode) {
void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
uint16_t k; uint16_t k;
k = keys_maps[col]; k = keys_maps[col];
if(k == EMP){ if (k == EMP) {
return; return;
} }
switch(k) { switch (k) {
case _LEFT_SHIFT_KEY: case _LEFT_SHIFT_KEY:
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
break; break;
case _FN_KEY: case _FN_KEY:
if(mode == KEY_PRESSED){ if (mode == KEY_PRESSED) {
dv->Keyboard_state.fn_on = FN_LAYER; dv->Keyboard_state.fn_on = FN_LAYER;
}else if(mode == KEY_RELEASED ) { } else if (mode == KEY_RELEASED ) {
//release all pressed fn keys if they still been pressing //release all pressed fn keys if they still been pressing
for(int i=0;i<64;i++) {
if(fn_actions[i] !=0) {
k = keyboard_maps[dv->Keyboard_state.fn_on][i];
dv->Keyboard->release(k);
fn_actions[i] = 0;
}
}
dv->Keyboard_state.fn_on = 0; dv->Keyboard_state.fn_on = 0;
} }
break; break;
case _JOYSTICK_UP: case _JOYSTICK_UP:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = KEY_UP_ARROW; k = KEY_UP_ARROW;
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
if(mode == KEY_RELEASED){ if (mode == KEY_RELEASED) {
dv->Joystick->Y(511); dv->Joystick->Y(511);
}else { } else {
dv->Joystick->Y(0); dv->Joystick->Y(0);
} }
} }
break; break;
case _JOYSTICK_DOWN: case _JOYSTICK_DOWN:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = KEY_DOWN_ARROW; k = KEY_DOWN_ARROW;
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
if(mode == KEY_RELEASED){ if (mode == KEY_RELEASED) {
dv->Joystick->Y(511); dv->Joystick->Y(511);
}else { } else {
dv->Joystick->Y(1023); dv->Joystick->Y(1023);
} }
} }
break; break;
case _JOYSTICK_LEFT: case _JOYSTICK_LEFT:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = KEY_LEFT_ARROW; k = KEY_LEFT_ARROW;
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
if(mode == KEY_RELEASED){ if (mode == KEY_RELEASED) {
dv->Joystick->X(511); dv->Joystick->X(511);
}else { } else {
dv->Joystick->X(0); dv->Joystick->X(0);
} }
} }
break; break;
case _JOYSTICK_RIGHT: case _JOYSTICK_RIGHT:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = KEY_RIGHT_ARROW; k = KEY_RIGHT_ARROW;
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
if(mode == KEY_RELEASED){ if (mode == KEY_RELEASED) {
dv->Joystick->X(511); dv->Joystick->X(511);
}else { } else {
dv->Joystick->X(1023); dv->Joystick->X(1023);
} }
} }
break; break;
case _JOYSTICK_A: case _JOYSTICK_A:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = 'j'; k = 'j';
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
dv->Joystick->button(2,mode); dv->Joystick->button(2, mode);
} }
break; break;
case _JOYSTICK_B: case _JOYSTICK_B:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = 'k'; k = 'k';
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
dv->Joystick->button(3,mode); dv->Joystick->button(3, mode);
} }
break; break;
case _JOYSTICK_X: case _JOYSTICK_X:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = 'u'; k = 'u';
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
dv->Joystick->button(1,mode); dv->Joystick->button(1, mode);
} }
break; break;
case _JOYSTICK_Y: case _JOYSTICK_Y:
if(check_pd2() == HIGH) { if (check_pd2() == HIGH) {
k = 'i'; k = 'i';
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) { } else if (mode == KEY_RELEASED) {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
}else { } else {
dv->Joystick->button(4,mode); dv->Joystick->button(4, mode);
} }
break; break;
case _MOUSE_LEFT: case _MOUSE_LEFT:
if(mode == KEY_PRESSED){ if (mode == KEY_PRESSED) {
dv->Mouse->press(1); dv->Mouse->press(1);
}else if(mode == KEY_RELEASED){ } else if (mode == KEY_RELEASED) {
dv->Mouse->release(1); dv->Mouse->release(1);
} }
break; break;
case _MOUSE_MID: case _MOUSE_MID:
if(mode == KEY_PRESSED) { if (mode == KEY_PRESSED) {
dv->state->pressMiddleClick(); dv->state->pressMiddleClick();
}else { } else {
if(dv->state->getScrolled() == false){ if (dv->state->getScrolled() == false) {
//if no scrolling happend ,do as a normal mid mouse key click //if no scrolling happend ,do as a normal mid mouse key click
dv->Mouse->click(MOUSE_MIDDLE); dv->Mouse->click(MOUSE_MIDDLE);
} }
@ -408,9 +453,9 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
break; break;
case _MOUSE_RIGHT: case _MOUSE_RIGHT:
if(mode == KEY_PRESSED){ if (mode == KEY_PRESSED) {
dv->Mouse->press(2); dv->Mouse->press(2);
}else if(mode == KEY_RELEASED){ } else if (mode == KEY_RELEASED) {
dv->Mouse->release(2); dv->Mouse->release(2);
} }
break; break;
@ -419,21 +464,21 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
case _LEFT_CTRL_KEY: case _LEFT_CTRL_KEY:
case _CMD_KEY: case _CMD_KEY:
case _LEFT_ALT: case _LEFT_ALT:
if(mode == KEY_PRESSED){ if (mode == KEY_PRESSED) {
dv->Keyboard->press(k); dv->Keyboard->press(k);
}else { } else {
dv->Keyboard->release(k); dv->Keyboard->release(k);
} }
break; break;
case _TRACKBALL_BTN: case _TRACKBALL_BTN:
if(mode == KEY_PRESSED){ if (mode == KEY_PRESSED) {
dv->Mouse->press(1); dv->Mouse->press(1);
}else if(mode == KEY_RELEASED){ } else if (mode == KEY_RELEASED) {
dv->Mouse->release(1); dv->Mouse->release(1);
} }
break; break;
default:break; default: break;
} }