diff --git a/Code/devterm_keyboard/devterm_keyboard.ino b/Code/devterm_keyboard/devterm_keyboard.ino index 5aa593b..133a389 100644 --- a/Code/devterm_keyboard/devterm_keyboard.ino +++ b/Code/devterm_keyboard/devterm_keyboard.ino @@ -49,6 +49,8 @@ void setup() { dev_term._Serial->println("setup done"); + pinMode(PD2,INPUT);// switch 2 in back + delay(1000); } diff --git a/Code/devterm_keyboard/keymaps.ino b/Code/devterm_keyboard/keymaps.ino index 185e6f8..8b83724 100644 --- a/Code/devterm_keyboard/keymaps.ino +++ b/Code/devterm_keyboard/keymaps.ino @@ -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){