devterm_keyboard,use switch 2 to switch the joystick to be the GameShell mode

This commit is contained in:
cuu 2021-05-22 19:46:50 +08:00
parent 348e17202f
commit c626e1f797
2 changed files with 117 additions and 21 deletions

View File

@ -49,6 +49,8 @@ void setup() {
dev_term._Serial->println("setup done");
pinMode(PD2,INPUT);// switch 2 in back
delay(1000);
}

View File

@ -108,6 +108,10 @@ const uint16_t keys_maps[KEYS_NUM] = {_JOYSTICK_UP,_JOYSTICK_DOWN, _JOYSTICK_LEF
_MOUSE_LEFT,_MOUSE_MID,_MOUSE_RIGHT};
uint8_t check_pd2(){ // if swtich 2 in back is set to on(HIGH)
return digitalRead(PD2);
}
void dt_kbd_set_layer(DEVTERM*dv,uint8_t new_layer) {
@ -163,10 +167,28 @@ void keyboard_action(DEVTERM*dv,uint8_t row,uint8_t col,uint8_t mode) {
break;
case _SELECT_KEY:
dv->Joystick->button(9,mode);
if(check_pd2() == HIGH) {
k = ' ';
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
dv->Joystick->button(9,mode);
}
break;
case _START_KEY:
dv->Joystick->button(10,mode);
if(check_pd2() == HIGH) {
k = KEY_RETURN;
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
dv->Joystick->button(10,mode);
}
break;
case _FN_BRIGHTNESS_UP:
@ -253,44 +275,116 @@ void keypad_action(DEVTERM*dv,uint8_t col,uint8_t mode) {
break;
case _JOYSTICK_UP:
if(mode == KEY_RELEASED){
dv->Joystick->Y(511);
}else {
dv->Joystick->Y(0);
if(check_pd2() == HIGH) {
k = KEY_UP_ARROW;
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
if(mode == KEY_RELEASED){
dv->Joystick->Y(511);
}else {
dv->Joystick->Y(0);
}
}
break;
case _JOYSTICK_DOWN:
if(mode == KEY_RELEASED){
dv->Joystick->Y(511);
}else {
dv->Joystick->Y(1023);
if(check_pd2() == HIGH) {
k = KEY_DOWN_ARROW;
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
if(mode == KEY_RELEASED){
dv->Joystick->Y(511);
}else {
dv->Joystick->Y(1023);
}
}
break;
case _JOYSTICK_LEFT:
if(mode == KEY_RELEASED){
dv->Joystick->X(511);
}else {
dv->Joystick->X(0);
if(check_pd2() == HIGH) {
k = KEY_LEFT_ARROW;
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
if(mode == KEY_RELEASED){
dv->Joystick->X(511);
}else {
dv->Joystick->X(0);
}
}
break;
case _JOYSTICK_RIGHT:
if(mode == KEY_RELEASED){
dv->Joystick->X(511);
if(check_pd2() == HIGH) {
k = KEY_RIGHT_ARROW;
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
dv->Joystick->X(1023);
if(mode == KEY_RELEASED){
dv->Joystick->X(511);
}else {
dv->Joystick->X(1023);
}
}
break;
case _JOYSTICK_A:
dv->Joystick->button(2,mode);
if(check_pd2() == HIGH) {
k = 'j';
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
dv->Joystick->button(2,mode);
}
break;
case _JOYSTICK_B:
dv->Joystick->button(3,mode);
if(check_pd2() == HIGH) {
k = 'k';
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
dv->Joystick->button(3,mode);
}
break;
case _JOYSTICK_X:
dv->Joystick->button(1,mode);
if(check_pd2() == HIGH) {
k = 'u';
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
dv->Joystick->button(1,mode);
}
break;
case _JOYSTICK_Y:
dv->Joystick->button(4,mode);
if(check_pd2() == HIGH) {
k = 'i';
if(mode == KEY_PRESSED) {
dv->Keyboard->press(k);
}else if(mode == KEY_RELEASED) {
dv->Keyboard->release(k);
}
}else {
dv->Joystick->button(4,mode);
}
break;
case _MOUSE_LEFT:
if(mode == KEY_PRESSED){