mirror of
https://github.com/clockworkpi/uConsole.git
synced 2025-12-12 10:08:50 +01:00
add keyboard/keypad release wrap
This commit is contained in:
parent
3046bf8cd6
commit
7cb3af36ee
@ -43,58 +43,67 @@ B16 mouse right
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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] = {
|
||||||
|
_SELECT_KEY, _START_KEY, _VOLUME_M, '`', '[', ']', '-', '=', \
|
||||||
'1', '2', '3', '4', '5', '6', '7', '8', \
|
'1', '2', '3', '4', '5', '6', '7', '8', \
|
||||||
'9', '0', KEY_ESC, KEY_TAB, EMP, EMP, EMP, EMP, \
|
'9', '0', KEY_ESC, KEY_TAB, EMP, EMP, EMP, EMP, \
|
||||||
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', \
|
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', \
|
||||||
'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', \
|
'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', \
|
||||||
'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', \
|
'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', \
|
||||||
'n', 'm', ',', '.', '/', '\\', ';', '\'', \
|
'n', 'm', ',', '.', '/', '\\', ';', '\'', \
|
||||||
KEY_BACKSPACE,KEY_RETURN,_FN_KEY,_FN_KEY,' ',EMP,EMP,EMP},
|
KEY_BACKSPACE, KEY_RETURN, _FN_KEY, _FN_KEY, ' ', EMP, EMP, EMP
|
||||||
|
},
|
||||||
|
|
||||||
[FN_LAYER] = { _PRINT_KEY,_PAUSE_KEY,_VOLUME_MUTE,'`','[',']',KEY_F11,KEY_F12, \
|
[FN_LAYER] = {
|
||||||
|
_PRINT_KEY, _PAUSE_KEY, _VOLUME_MUTE, '`', '[', ']', KEY_F11, KEY_F12, \
|
||||||
KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, \
|
KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, \
|
||||||
KEY_F9, KEY_F10, _FN_LOCK_KEYBOARD, KEY_CAPS_LOCK, EMP, EMP, EMP, EMP, \
|
KEY_F9, KEY_F10, _FN_LOCK_KEYBOARD, KEY_CAPS_LOCK, EMP, EMP, EMP, EMP, \
|
||||||
'q', 'w', 'e', 'r', 't', 'y', KEY_PAGE_UP, KEY_INSERT, \
|
'q', 'w', 'e', 'r', 't', 'y', KEY_PAGE_UP, KEY_INSERT, \
|
||||||
'o', 'p', 'a', 's', 'd', 'f', 'g', KEY_HOME, \
|
'o', 'p', 'a', 's', 'd', 'f', 'g', KEY_HOME, \
|
||||||
KEY_END, KEY_PAGE_DOWN, 'l', 'z', 'x', 'c', 'v', 'b', \
|
KEY_END, KEY_PAGE_DOWN, 'l', 'z', 'x', 'c', 'v', 'b', \
|
||||||
'n', 'm', _FN_BRIGHTNESS_DOWN, _FN_BRIGHTNESS_UP, '/', '\\', ';', '\'', \
|
'n', 'm', _FN_BRIGHTNESS_DOWN, _FN_BRIGHTNESS_UP, '/', '\\', ';', '\'', \
|
||||||
KEY_DELETE,KEY_RETURN,_FN_KEY,_FN_KEY,_FN_LIGHT_KEYBOARD,EMP,EMP,EMP}
|
KEY_DELETE, KEY_RETURN, _FN_KEY, _FN_KEY, _FN_LIGHT_KEYBOARD, EMP, 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] = {
|
const uint16_t keys_maps[][KEYS_NUM] = {
|
||||||
|
|
||||||
[DEF_LAYER] = {KEY_UP_ARROW,KEY_DOWN_ARROW, KEY_LEFT_ARROW,KEY_RIGHT_ARROW, \
|
[DEF_LAYER] = {
|
||||||
|
KEY_UP_ARROW, KEY_DOWN_ARROW, KEY_LEFT_ARROW, KEY_RIGHT_ARROW, \
|
||||||
_JOYSTICK_A, _JOYSTICK_B, _JOYSTICK_X, _JOYSTICK_Y, \
|
_JOYSTICK_A, _JOYSTICK_B, _JOYSTICK_X, _JOYSTICK_Y, \
|
||||||
_LEFT_SHIFT_KEY, KEY_RIGHT_SHIFT, _LEFT_CTRL_KEY, KEY_RIGHT_CTRL, \
|
_LEFT_SHIFT_KEY, KEY_RIGHT_SHIFT, _LEFT_CTRL_KEY, KEY_RIGHT_CTRL, \
|
||||||
_LEFT_ALT, _MOUSE_LEFT, KEY_RIGHT_ALT, _MOUSE_RIGHT, \
|
_LEFT_ALT, _MOUSE_LEFT, KEY_RIGHT_ALT, _MOUSE_RIGHT, \
|
||||||
_TRACKBALL_BTN },
|
_TRACKBALL_BTN
|
||||||
|
},
|
||||||
|
|
||||||
[FN_LAYER] = {_FN_KEY_UP_ARROW,_FN_KEY_DOWN_ARROW, _FN_KEY_LEFT_ARROW, _FN_KEY_RIGHT_ARROW, \
|
[FN_LAYER] = {
|
||||||
|
_FN_KEY_UP_ARROW, _FN_KEY_DOWN_ARROW, _FN_KEY_LEFT_ARROW, _FN_KEY_RIGHT_ARROW, \
|
||||||
_JOYSTICK_A, _JOYSTICK_B, _JOYSTICK_X, _JOYSTICK_Y, \
|
_JOYSTICK_A, _JOYSTICK_B, _JOYSTICK_X, _JOYSTICK_Y, \
|
||||||
_LEFT_SHIFT_KEY, KEY_RIGHT_SHIFT, _LEFT_CTRL_KEY, KEY_RIGHT_CTRL, \
|
_LEFT_SHIFT_KEY, KEY_RIGHT_SHIFT, _LEFT_CTRL_KEY, KEY_RIGHT_CTRL, \
|
||||||
_CMD_KEY, _MOUSE_LEFT, KEY_RIGHT_ALT, _MOUSE_RIGHT, \
|
_CMD_KEY, _MOUSE_LEFT, KEY_RIGHT_ALT, _MOUSE_RIGHT, \
|
||||||
_TRACKBALL_BTN },
|
_TRACKBALL_BTN
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint16_t keys_pick_map[KEYS_NUM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
|
|
||||||
const uint16_t backlight_vals[3] = {0, 500, 2000};
|
const uint16_t backlight_vals[3] = {0, 500, 2000};
|
||||||
|
|
||||||
@ -103,39 +112,55 @@ 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 keyboard_release_core(DEVTERM*dv, uint16_t k) {
|
||||||
|
|
||||||
if( dv->Keyboard_state.layer != new_layer) {
|
switch (k) {
|
||||||
|
case KEY_CAPS_LOCK:
|
||||||
|
dv->Keyboard->setAdjustForHostCapsLock(false);
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
break;
|
||||||
|
|
||||||
dv->Keyboard_state.prev_layer = dv->Keyboard_state.layer;
|
case _SELECT_KEY:
|
||||||
dv->Keyboard_state.layer = new_layer;
|
if (check_pd2() == HIGH) {
|
||||||
|
k = ' ';
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->button(9, KEY_RELEASED);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _START_KEY:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = KEY_RETURN;
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->button(10, KEY_RELEASED);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case _FN_BRIGHTNESS_UP:
|
||||||
|
case _FN_BRIGHTNESS_DOWN:
|
||||||
|
case _VOLUME_P:
|
||||||
|
case _VOLUME_M:
|
||||||
|
case _VOLUME_MUTE:
|
||||||
|
dv->Consumer->release();
|
||||||
|
break;
|
||||||
|
case _FN_KEY:
|
||||||
|
dv->Keyboard_state.fn_on = 0;
|
||||||
|
dv->Keyboard_state.fn.begin = 0;
|
||||||
|
dv->Keyboard_state.fn.time = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dt_kbd_restore_layer(DEVTERM*dv) {
|
void keyboard_release(DEVTERM*dv, uint8_t addr, uint16_t k) {
|
||||||
|
if ( keyboard_pick_map[addr] == 0) {
|
||||||
dv->Keyboard_state.layer = dv->Keyboard_state.prev_layer;
|
keyboard_release_core(dv, k);
|
||||||
|
} else {
|
||||||
}
|
keyboard_release_core(dv, keyboard_pick_map[addr]);
|
||||||
|
keyboard_pick_map[addr] = 0;
|
||||||
void press_any_key_to_release_lock(DEVTERM*dv, KEYBOARD_LOCK*lock, uint16_t k,uint8_t mode) {
|
|
||||||
|
|
||||||
|
|
||||||
if( lock->lock > 0 ) {
|
|
||||||
if(mode == KEY_RELEASED
|
|
||||||
&& k != _LEFT_CTRL_KEY && k!= KEY_RIGHT_CTRL
|
|
||||||
&& k != _LEFT_ALT && k!= KEY_RIGHT_ALT
|
|
||||||
&& k != _LEFT_SHIFT_KEY && k!= KEY_RIGHT_SHIFT
|
|
||||||
&& k != _FN_KEY) {
|
|
||||||
lock->lock = 0;
|
|
||||||
|
|
||||||
if(lock->begin!= _FN_KEY) {
|
|
||||||
dv->Keyboard->release(lock->begin);
|
|
||||||
}
|
|
||||||
lock->begin = 0;
|
|
||||||
lock->time = 0;
|
|
||||||
//dv->_Serial->println("ctrl lock released");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,6 +183,11 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
if (k != _FN_KEY && k != _FN_LOCK_KEYBOARD && dv->Keyboard_state.lock == 1) {
|
if (k != _FN_KEY && k != _FN_LOCK_KEYBOARD && dv->Keyboard_state.lock == 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
|
if ( keyboard_pick_map[addr] == 0) {
|
||||||
|
keyboard_pick_map[addr] = k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (k) {
|
switch (k) {
|
||||||
case KEY_CAPS_LOCK:
|
case KEY_CAPS_LOCK:
|
||||||
@ -166,9 +196,7 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
dv->Keyboard->press(k);
|
dv->Keyboard->press(k);
|
||||||
dv->Keyboard->setAdjustForHostCapsLock(true);
|
dv->Keyboard->setAdjustForHostCapsLock(true);
|
||||||
} else if (mode == KEY_RELEASED) {
|
} else if (mode == KEY_RELEASED) {
|
||||||
|
keyboard_release(dv, addr, k);
|
||||||
dv->Keyboard->setAdjustForHostCapsLock(false);
|
|
||||||
dv->Keyboard->release(k);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -179,10 +207,14 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Joystick->button(9, mode);
|
dv->Joystick->button(9, mode);
|
||||||
|
} else {
|
||||||
|
keyboard_release(dv, addr, k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _START_KEY:
|
case _START_KEY:
|
||||||
@ -191,10 +223,14 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Joystick->button(10, mode);
|
dv->Joystick->button(10, mode);
|
||||||
|
} else {
|
||||||
|
keyboard_release(dv, addr, k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -202,14 +238,14 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
if (mode == KEY_PRESSED) {
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Consumer->press(HIDConsumer::BRIGHTNESS_UP);
|
dv->Consumer->press(HIDConsumer::BRIGHTNESS_UP);
|
||||||
} else {
|
} else {
|
||||||
dv->Consumer->release();
|
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;
|
||||||
|
|
||||||
@ -217,27 +253,29 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
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) {
|
||||||
if (dv->Keyboard_state.sf_on > 0) {
|
if (dv->Keyboard_state.sf_on > 0) {
|
||||||
dv->Consumer->press(HIDConsumer::VOLUME_UP);
|
dv->Consumer->press(HIDConsumer::VOLUME_UP);
|
||||||
dv->Keyboard->release(dv->Keyboard_state.sf_on);
|
uint16_t old_sf = dv->Keyboard_state.sf_on;
|
||||||
dv->Keyboard_state.sf_on = 0;
|
keyboard_release(dv,addr,dv->Keyboard_state.sf_on);
|
||||||
|
dv->Keyboard_state.sf_on = old_sf;
|
||||||
|
dv->Keyboard->press(dv->Keyboard_state.sf_on);
|
||||||
} else {
|
} else {
|
||||||
dv->Consumer->press(HIDConsumer::VOLUME_DOWN);
|
dv->Consumer->press(HIDConsumer::VOLUME_DOWN);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dv->Consumer->release();
|
keyboard_release(dv, addr, k);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case _VOLUME_MUTE: {
|
case _VOLUME_MUTE: {
|
||||||
if (mode == KEY_PRESSED) {
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Consumer->press(HIDConsumer::MUTE);
|
dv->Consumer->press(HIDConsumer::MUTE);
|
||||||
} else {
|
} else {
|
||||||
dv->Consumer->release();
|
keyboard_release(dv, addr, k);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case _FN_LOCK_KEYBOARD: {
|
case _FN_LOCK_KEYBOARD: {
|
||||||
@ -264,17 +302,8 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
dv->Keyboard_state.fn.begin = k;
|
dv->Keyboard_state.fn.begin = k;
|
||||||
}
|
}
|
||||||
} else if (mode == KEY_RELEASED ) {
|
} else if (mode == KEY_RELEASED ) {
|
||||||
if(dv->Keyboard_state.fn.lock == 0){
|
|
||||||
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;
|
||||||
dv->Keyboard_state.fn.begin = 0;
|
dv->Keyboard_state.fn.begin = 0;
|
||||||
dv->Keyboard_state.fn.time = 0;
|
dv->Keyboard_state.fn.time = 0;
|
||||||
}
|
}
|
||||||
@ -284,22 +313,142 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
|
|||||||
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;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.ctrl,k,mode);
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.alt,k,mode);
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.shift,k,mode);
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.fn,k,mode);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void keypad_release_core(DEVTERM*dv, uint16_t k) {
|
||||||
|
|
||||||
|
switch (k) {
|
||||||
|
case _LEFT_SHIFT_KEY:
|
||||||
|
case KEY_RIGHT_SHIFT:
|
||||||
|
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.time = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case _JOYSTICK_UP:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = KEY_UP_ARROW;
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->Y(511);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _JOYSTICK_DOWN:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = KEY_DOWN_ARROW;
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->Y(511);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _JOYSTICK_LEFT:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = KEY_LEFT_ARROW;
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->X(511);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _JOYSTICK_RIGHT:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = KEY_RIGHT_ARROW;
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->X(511);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _JOYSTICK_A:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = 'j';
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->button(2, KEY_RELEASED);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _JOYSTICK_B:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = 'k';
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->button(3, KEY_RELEASED);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _JOYSTICK_X:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = 'u';
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
} else {
|
||||||
|
dv->Joystick->button(1, KEY_RELEASED );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _JOYSTICK_Y:
|
||||||
|
if (check_pd2() == HIGH) {
|
||||||
|
k = 'i';
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
dv->Joystick->button(4, KEY_RELEASED);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _MOUSE_LEFT:
|
||||||
|
dv->Mouse->release(1);
|
||||||
|
break;
|
||||||
|
case _MOUSE_MID:
|
||||||
|
if (dv->state->getScrolled() == false) {
|
||||||
|
//if no scrolling happend ,do as a normal mid mouse key click
|
||||||
|
dv->Mouse->click(MOUSE_MIDDLE);
|
||||||
|
}
|
||||||
|
dv->state->releaseMiddleClick();
|
||||||
|
break;
|
||||||
|
case _MOUSE_RIGHT:
|
||||||
|
dv->Mouse->release(2);
|
||||||
|
break;
|
||||||
|
//_LEFT_CTRL_KEY,_CMD_KEY , _LEFT_ALT
|
||||||
|
case _LEFT_CTRL_KEY:
|
||||||
|
case KEY_RIGHT_CTRL:
|
||||||
|
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 _LEFT_ALT:
|
||||||
|
case KEY_RIGHT_ALT:
|
||||||
|
if (dv->Keyboard_state.alt.lock == 0) {
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
dv->Keyboard_state.alt.begin = 0;
|
||||||
|
dv->Keyboard_state.alt.time = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _CMD_KEY:
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
break;
|
||||||
|
case _TRACKBALL_BTN:
|
||||||
|
dv->Mouse->release(MOUSE_MIDDLE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dv->Keyboard->release(k);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void keypad_release(DEVTERM*dv, uint8_t addr, uint16_t k) {
|
||||||
|
if ( keys_pick_map[addr] == 0) {
|
||||||
|
keypad_release_core(dv, k);
|
||||||
|
} else {
|
||||||
|
keypad_release_core(dv, keys_pick_map[addr]);
|
||||||
|
keys_pick_map[addr] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void keypad_action(DEVTERM*dv, uint8_t col, uint8_t mode) {
|
void keypad_action(DEVTERM*dv, uint8_t col, uint8_t mode) {
|
||||||
|
|
||||||
@ -319,6 +468,12 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
|
if ( keys_pick_map[col] == 0) {
|
||||||
|
keys_pick_map[col] = k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (k) {
|
switch (k) {
|
||||||
case _LEFT_SHIFT_KEY:
|
case _LEFT_SHIFT_KEY:
|
||||||
case KEY_RIGHT_SHIFT:
|
case KEY_RIGHT_SHIFT:
|
||||||
@ -329,12 +484,7 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
dv->Keyboard_state.shift.begin = k;
|
dv->Keyboard_state.shift.begin = k;
|
||||||
}
|
}
|
||||||
} else if (mode == KEY_RELEASED) {
|
} else if (mode == KEY_RELEASED) {
|
||||||
dv->Keyboard_state.sf_on = 0;
|
keypad_release(dv, col, k);
|
||||||
if(dv->Keyboard_state.shift.lock == 0){
|
|
||||||
dv->Keyboard->release(k);
|
|
||||||
dv->Keyboard_state.shift.begin = 0;
|
|
||||||
dv->Keyboard_state.shift.time = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -344,11 +494,11 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mode == KEY_RELEASED) {
|
if (mode == KEY_RELEASED) {
|
||||||
dv->Joystick->Y(511);
|
keypad_release(dv, col, k);
|
||||||
} else {
|
} else {
|
||||||
dv->Joystick->Y(0);
|
dv->Joystick->Y(0);
|
||||||
}
|
}
|
||||||
@ -360,11 +510,11 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mode == KEY_RELEASED) {
|
if (mode == KEY_RELEASED) {
|
||||||
dv->Joystick->Y(511);
|
keypad_release(dv, col, k);
|
||||||
} else {
|
} else {
|
||||||
dv->Joystick->Y(1023);
|
dv->Joystick->Y(1023);
|
||||||
}
|
}
|
||||||
@ -376,11 +526,11 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mode == KEY_RELEASED) {
|
if (mode == KEY_RELEASED) {
|
||||||
dv->Joystick->X(511);
|
keypad_release(dv, col, k);
|
||||||
} else {
|
} else {
|
||||||
dv->Joystick->X(0);
|
dv->Joystick->X(0);
|
||||||
}
|
}
|
||||||
@ -392,11 +542,11 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mode == KEY_RELEASED) {
|
if (mode == KEY_RELEASED) {
|
||||||
dv->Joystick->X(511);
|
keypad_release(dv, col, k);
|
||||||
} else {
|
} else {
|
||||||
dv->Joystick->X(1023);
|
dv->Joystick->X(1023);
|
||||||
}
|
}
|
||||||
@ -408,10 +558,14 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Joystick->button(2, mode);
|
dv->Joystick->button(2, mode);
|
||||||
|
} else {
|
||||||
|
keypad_release(dv, col, k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _JOYSTICK_B:
|
case _JOYSTICK_B:
|
||||||
@ -420,10 +574,14 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Joystick->button(3, mode);
|
dv->Joystick->button(3, mode);
|
||||||
|
} else {
|
||||||
|
keypad_release(dv, col, k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _JOYSTICK_X:
|
case _JOYSTICK_X:
|
||||||
@ -432,10 +590,14 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Joystick->button(1, mode);
|
dv->Joystick->button(1, mode);
|
||||||
|
} else {
|
||||||
|
keypad_release(dv, col, k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _JOYSTICK_Y:
|
case _JOYSTICK_Y:
|
||||||
@ -444,29 +606,28 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Joystick->button(4, mode);
|
dv->Joystick->button(4, mode);
|
||||||
|
} else {
|
||||||
|
keypad_release(dv, col, k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
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){
|
keypad_release(dv, col, k);
|
||||||
//if no scrolling happend ,do as a normal mid mouse key click
|
|
||||||
dv->Mouse->click(MOUSE_MIDDLE);
|
|
||||||
}
|
|
||||||
dv->state->releaseMiddleClick();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -474,7 +635,7 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -487,11 +648,7 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
dv->Keyboard_state.ctrl.begin = k;
|
dv->Keyboard_state.ctrl.begin = k;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(dv->Keyboard_state.ctrl.lock == 0){
|
keypad_release(dv, col, k);
|
||||||
dv->Keyboard->release(k);
|
|
||||||
dv->Keyboard_state.ctrl.begin = 0;
|
|
||||||
dv->Keyboard_state.ctrl.time = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -503,11 +660,7 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
dv->Keyboard_state.alt.begin = k;
|
dv->Keyboard_state.alt.begin = k;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(dv->Keyboard_state.alt.lock == 0){
|
keypad_release(dv, col, k);
|
||||||
dv->Keyboard->release(k);
|
|
||||||
dv->Keyboard_state.alt.begin = 0;
|
|
||||||
dv->Keyboard_state.alt.time = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -515,7 +668,7 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
if (mode == KEY_PRESSED) {
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Keyboard->press(k);
|
dv->Keyboard->press(k);
|
||||||
} else {
|
} else {
|
||||||
dv->Keyboard->release(k);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -523,22 +676,16 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
|
|||||||
if (mode == KEY_PRESSED) {
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Mouse->press(MOUSE_MIDDLE);
|
dv->Mouse->press(MOUSE_MIDDLE);
|
||||||
} else if (mode == KEY_RELEASED) {
|
} else if (mode == KEY_RELEASED) {
|
||||||
dv->Mouse->release(MOUSE_MIDDLE);
|
keypad_release(dv, col, 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);
|
keypad_release(dv, col, k);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.ctrl,k,mode);
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.alt,k,mode);
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.shift,k,mode);
|
|
||||||
press_any_key_to_release_lock(dv,&dv->Keyboard_state.fn,k,mode);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user