diff --git a/src/epdgui/epdgui_keyboard.cpp b/src/epdgui/epdgui_keyboard.cpp index fea0d54..89a5517 100644 --- a/src/epdgui/epdgui_keyboard.cpp +++ b/src/epdgui/epdgui_keyboard.cpp @@ -4,44 +4,36 @@ static const char* kKeyAlphaMapLowerCase[26] = { "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", //10 "a", "s", "d", "f", "g", "h", "j", "k", "l", //9 "z", "x", "c", "v", "b", "n", "m", //7 - }; +}; static const char* kKeyAlphaMapUpperCase[26] = { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", //10 "A", "S", "D", "F", "G", "H", "J", "K", "L", //9 "Z", "X", "C", "V", "B", "N", "M", //7 - }; +}; static const char* kKeyAlphaMapNumber[26] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", //10 "-", "/", ":", ";", "(", ")", "$", "&", "@", //9 "_", "\"", ".", ",", "?", "!", "'", //7 - }; +}; static const char* kKeyAlphaMapSymbol[26] = { "[", "]", "{", "}", "#", "%", "^", "*", "+", "=", //10 "_", "\\", "|", "~", "<", ">", "€", "£", "¥", //9 "•", "✿", "\u221A", "\u221E", "\u2103", "\u2109", "\u2116", //7 - }; - - -// static const char* kRomaSpell[] = { -// "あアぁァ" -// "ばバびビぶブべべぼボびゃビャびゅビュびょビョ" -// }; +}; enum { kKeySpace = 26, kKeyBackspace, kKeyWrap, kKeyCase, - kKeySwitch, kKeyNumber }; enum { kSWCase = 0, - kSWSwitch, kSWNumber }; @@ -52,87 +44,46 @@ enum { kLayoutSymbol }; -EPDGUI_Keyboard::EPDGUI_Keyboard(int16_t dir, uint32_t style): EPDGUI_Base() { - if(dir) { // Horizontal - const uint16_t kKeyWidth = 72; - const uint16_t kKeyHeight = 44; - const uint16_t kKeyInterval = 8; - const uint16_t kFirstLineY = 302; - const uint16_t kSecondLineY = 356; - const uint16_t kThirdLineY = 410; - const uint16_t k4thLineY = 464; - const uint16_t kBaseX = 84; +EPDGUI_Keyboard::EPDGUI_Keyboard(uint32_t style): EPDGUI_Base() { + const uint16_t kBaseX = 16; + const uint16_t kBaseY = 700; + const uint16_t kKeyWidth = 44; + const uint16_t kKeyHeight = 52; + const uint16_t kKeyInterval = 8; + const uint16_t kFirstLineY = kBaseY; + const uint16_t kSecondLineY = kBaseY + 64; + const uint16_t kThirdLineY = kSecondLineY + 64; + const uint16_t k4thLineY = kThirdLineY + 64; - for(int i = 0; i < 10; i++) { - _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + (kKeyInterval + kKeyWidth) * i, kFirstLineY, kKeyWidth, kKeyHeight); - } - for(int i = 10; i < 19; i++) { - _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + 40 + (kKeyInterval + kKeyWidth) * (i - 10), kSecondLineY, kKeyWidth, kKeyHeight); - } - for(int i = 19; i < 26; i++) { - _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + 118 + (kKeyInterval + kKeyWidth) * (i - 19), kThirdLineY, kKeyWidth, kKeyHeight); - } - - _btn[kKeyBackspace] = new EPDGUI_Button("", kBaseX + 792 - 96, kThirdLineY, 96, kKeyHeight); - _btn[kKeyBackspace]->CanvasNormal()->pushImage(_btn[kKeyBackspace]->getW() / 2 - 16, _btn[kKeyBackspace]->getH() / 2 - 16, 32, 32, ImageResource_backspace_32x32); - _btn[kKeyBackspace]->CanvasPressed()->fillCanvas(0); - _btn[kKeyBackspace]->CanvasPressed()->pushImage(_btn[kKeyBackspace]->getW() / 2 - 16, _btn[kKeyBackspace]->getH() / 2 - 16, 32, 32, ImageResource_backspace_32x32); - _btn[kKeyBackspace]->CanvasPressed()->ReverseColor(); - - _btn[kKeySpace] = new EPDGUI_Button("Space", kBaseX + 162, k4thLineY, 468, kKeyHeight); - if(style & STYLE_INPUTMODE_NORMALTEXT) - _btn[kKeyWrap] = new EPDGUI_Button("Wrap", kBaseX + 792 - 152, k4thLineY, 152, kKeyHeight); - else if(style & STYLE_INPUTMODE_NEEDCONFIRM) - _btn[kKeyWrap] = new EPDGUI_Button("Confirm", kBaseX + 792 - 152, k4thLineY, 152, kKeyHeight); - - // function key - _sw[kSWCase] = new EPDGUI_Switch(2, kBaseX, kThirdLineY, 96, kKeyHeight); - _sw[kSWSwitch] = new EPDGUI_Switch(2, kBaseX, k4thLineY, 68, kKeyHeight); - _sw[kSWNumber] = new EPDGUI_Switch(2, kBaseX + 162 - kKeyInterval - 68, k4thLineY, 68, kKeyHeight); - } else { - const uint16_t kBaseX = 16; - const uint16_t kBaseY = 700; - const uint16_t kKeyWidth = 44; - const uint16_t kKeyHeight = 52; - const uint16_t kKeyInterval = 8; - const uint16_t kFirstLineY = kBaseY; - const uint16_t kSecondLineY = kBaseY + 64; - const uint16_t kThirdLineY = kSecondLineY + 64; - const uint16_t k4thLineY = kThirdLineY + 64; - - for(int i = 0; i < 10; i++) { - _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + (kKeyInterval + kKeyWidth) * i, kFirstLineY, kKeyWidth, kKeyHeight); - } - for(int i = 10; i < 19; i++) { - _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + 28 + (kKeyInterval + kKeyWidth) * (i - 10), kSecondLineY, kKeyWidth, kKeyHeight); - } - for(int i = 19; i < 26; i++) { - _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + 80 + (kKeyInterval + kKeyWidth) * (i - 19), kThirdLineY, kKeyWidth, kKeyHeight); - } - - _btn[kKeyBackspace] = new EPDGUI_Button("", kBaseX + 512 - 60, kThirdLineY, 60, kKeyHeight); - _btn[kKeyBackspace]->CanvasNormal()->pushImage(_btn[kKeyBackspace]->getW() / 2 - 16, _btn[kKeyBackspace]->getH() / 2 - 16, 32, 32, ImageResource_backspace_32x32); - _btn[kKeyBackspace]->CanvasPressed()->fillCanvas(0); - _btn[kKeyBackspace]->CanvasPressed()->pushImage(_btn[kKeyBackspace]->getW() / 2 - 16, _btn[kKeyBackspace]->getH() / 2 - 16, 32, 32, ImageResource_backspace_32x32); - _btn[kKeyBackspace]->CanvasPressed()->ReverseColor(); - - _btn[kKeySpace] = new EPDGUI_Button("Space", kBaseX + 132, k4thLineY, 244, kKeyHeight); - if(style & STYLE_INPUTMODE_NORMALTEXT) - _btn[kKeyWrap] = new EPDGUI_Button("Wrap", kBaseX + 512 - 128, k4thLineY, 128, kKeyHeight); - else if(style & STYLE_INPUTMODE_NEEDCONFIRM) - _btn[kKeyWrap] = new EPDGUI_Button("Confirm", kBaseX + 512 - 128, k4thLineY, 128, kKeyHeight); - - // function key - _sw[kSWCase] = new EPDGUI_Switch(2, kBaseX, kThirdLineY, 60, kKeyHeight); - _sw[kSWSwitch] = new EPDGUI_Switch(2, kBaseX, k4thLineY, 56, kKeyHeight); - _sw[kSWNumber] = new EPDGUI_Switch(2, kBaseX + 56 + kKeyInterval, k4thLineY, 60, kKeyHeight); + for(int i = 0; i < 10; i++) { + _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + (kKeyInterval + kKeyWidth) * i, kFirstLineY, kKeyWidth, kKeyHeight); } + for(int i = 10; i < 19; i++) { + _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + 28 + (kKeyInterval + kKeyWidth) * (i - 10), kSecondLineY, kKeyWidth, kKeyHeight); + } + for(int i = 19; i < 26; i++) { + _btn[i] = new EPDGUI_Button(kKeyAlphaMapLowerCase[i], kBaseX + 80 + (kKeyInterval + kKeyWidth) * (i - 19), kThirdLineY, kKeyWidth, kKeyHeight); + } + + _btn[kKeyBackspace] = new EPDGUI_Button("", kBaseX + 512 - 60, kThirdLineY, 60, kKeyHeight); + _btn[kKeyBackspace]->CanvasNormal()->pushImage(_btn[kKeyBackspace]->getW() / 2 - 16, _btn[kKeyBackspace]->getH() / 2 - 16, 32, 32, ImageResource_backspace_32x32); + _btn[kKeyBackspace]->CanvasPressed()->fillCanvas(0); + _btn[kKeyBackspace]->CanvasPressed()->pushImage(_btn[kKeyBackspace]->getW() / 2 - 16, _btn[kKeyBackspace]->getH() / 2 - 16, 32, 32, ImageResource_backspace_32x32); + _btn[kKeyBackspace]->CanvasPressed()->ReverseColor(); + + _btn[kKeySpace] = new EPDGUI_Button("Space", kBaseX + 132, k4thLineY, 244, kKeyHeight); + if(style & STYLE_INPUTMODE_NORMALTEXT) + _btn[kKeyWrap] = new EPDGUI_Button("Wrap", kBaseX + 512 - 128, k4thLineY, 128, kKeyHeight); + else if(style & STYLE_INPUTMODE_NEEDCONFIRM) + _btn[kKeyWrap] = new EPDGUI_Button("Confirm", kBaseX + 512 - 128, k4thLineY, 128, kKeyHeight); + + // function key + _sw[kSWCase] = new EPDGUI_Switch(2, kBaseX, kThirdLineY, 60, kKeyHeight); + _sw[kSWNumber] = new EPDGUI_Switch(2, kBaseX, k4thLineY, 124, kKeyHeight); _sw[kSWCase]->Canvas(0)->pushImage(_sw[kSWCase]->getW() / 2 - 16, _sw[kSWCase]->getH() / 2 - 16, 32, 32, ImageResource_upper_32x32); _sw[kSWCase]->Canvas(1)->pushImage(_sw[kSWCase]->getW() / 2 - 16, _sw[kSWCase]->getH() / 2 - 16, 32, 32, ImageResource_upper_32x32); _sw[kSWCase]->Canvas(1)->ReverseColor(); - _sw[kSWSwitch]->SetLabel(0, "あ"); //TODO: Support for kana input - _sw[kSWSwitch]->SetLabel(1, "Aa"); _sw[kSWNumber]->SetLabel(0, "123"); _sw[kSWNumber]->SetLabel(1, "Abc"); @@ -140,11 +91,8 @@ EPDGUI_Keyboard::EPDGUI_Keyboard(int16_t dir, uint32_t style): EPDGUI_Base() { _key[i] = _btn[i]; } _key[kKeyCase] = _sw[kSWCase]; - _key[kKeySwitch] = _sw[kSWSwitch]; _key[kKeyNumber] = _sw[kSWNumber]; - // _sw[kSWSwitch]->SetHide(true); - _layout = kLayoutLowerAlpha; } @@ -152,7 +100,7 @@ EPDGUI_Keyboard::~EPDGUI_Keyboard() { for(int i = 0; i < 29; i++) { delete _btn[i]; } - for(int i = 0; i < 3; i++) { + for(int i = 0; i < 2; i++) { delete _sw[i]; } } @@ -162,7 +110,7 @@ void EPDGUI_Keyboard::Draw(m5epd_update_mode_t mode) { return; } - for(int i = 0; i < 32; i++) { + for(int i = 0; i < 31; i++) { _key[i]->Draw(mode); } } @@ -172,7 +120,7 @@ void EPDGUI_Keyboard::Draw(M5EPD_Canvas* canvas) { return; } - for(int i = 0; i < 32; i++) { + for(int i = 0; i < 31; i++) { _key[i]->Draw(canvas); } } @@ -186,23 +134,37 @@ void EPDGUI_Keyboard::UpdateState(int16_t x, int16_t y) { return; } // log_d("UpdateState %d, %d", x, y); - for(int i = 0; i < 32; i++) { + for(int i = 0; i < 31; i++) { bool keypressed = _key[i]->isInBox(x, y); _key[i]->UpdateState(x, y); if(keypressed) { if(i < 26) { switch(_layout) { - case kLayoutLowerAlpha: _data += kKeyAlphaMapLowerCase[i]; break; - case kLayoutUpperAlpha: _data += kKeyAlphaMapUpperCase[i]; break; - case kLayoutNumber: _data += kKeyAlphaMapNumber[i]; break; - case kLayoutSymbol: _data += kKeyAlphaMapSymbol[i]; break; + case kLayoutLowerAlpha: + _data += kKeyAlphaMapLowerCase[i]; + break; + case kLayoutUpperAlpha: + _data += kKeyAlphaMapUpperCase[i]; + break; + case kLayoutNumber: + _data += kKeyAlphaMapNumber[i]; + break; + case kLayoutSymbol: + _data += kKeyAlphaMapSymbol[i]; + break; } } switch(i) { - case kKeyBackspace: _data += "\u0008"; break; - case kKeySpace: _data += " "; break; - case kKeyWrap: _data += "\n"; break; - case kKeyCase: { + case kKeyBackspace: + _data += "\u0008"; + break; + case kKeySpace: + _data += " "; + break; + case kKeyWrap: + _data += "\n"; + break; + case kKeyCase: if(_layout == kLayoutNumber || _layout == kLayoutSymbol) { if(_sw[kSWCase]->getState() == 1) { for(int j = 0; j < 26; j++) { @@ -235,8 +197,7 @@ void EPDGUI_Keyboard::UpdateState(int16_t x, int16_t y) { M5.EPD.UpdateFull(UPDATE_MODE_GL16); } break; - } - case kKeyNumber: { + case kKeyNumber: if(_sw[kSWNumber]->getState() == 1) { _sw[kSWCase]->setState(0); _sw[kSWCase]->Canvas(0)->fillCanvas(0); @@ -265,7 +226,6 @@ void EPDGUI_Keyboard::UpdateState(int16_t x, int16_t y) { Draw(UPDATE_MODE_NONE); M5.EPD.UpdateFull(UPDATE_MODE_GL16); break; - } } } } diff --git a/src/epdgui/epdgui_keyboard.h b/src/epdgui/epdgui_keyboard.h index c8c6ff9..9b97b27 100644 --- a/src/epdgui/epdgui_keyboard.h +++ b/src/epdgui/epdgui_keyboard.h @@ -11,7 +11,7 @@ public: static const uint32_t STYLE_DEFAULT = STYLE_INPUTMODE_NORMALTEXT; public: - EPDGUI_Keyboard(int16_t dir = 1, uint32_t style = STYLE_DEFAULT); + EPDGUI_Keyboard(uint32_t style = STYLE_DEFAULT); ~EPDGUI_Keyboard(); void Draw(m5epd_update_mode_t mode = UPDATE_MODE_DU4); void Draw(M5EPD_Canvas* canvas); @@ -21,8 +21,8 @@ public: private: EPDGUI_Button *_btn[29]; - EPDGUI_Switch *_sw[3]; - EPDGUI_Base *_key[32]; + EPDGUI_Switch *_sw[2]; + EPDGUI_Base *_key[31]; String _data; uint8_t _layout = 0; diff --git a/src/frame/frame_keyboard.cpp b/src/frame/frame_keyboard.cpp index 0c6151c..97ec7da 100644 --- a/src/frame/frame_keyboard.cpp +++ b/src/frame/frame_keyboard.cpp @@ -39,26 +39,18 @@ void key_textsize_reset_cb(epdgui_args_vector_t &args) { ((EPDGUI_Textbox*)(args[0]))->SetTextSize(textsize); } -Frame_Keyboard::Frame_Keyboard(bool isHorizontal) : Frame_Base() { +Frame_Keyboard::Frame_Keyboard() : Frame_Base() { _frame_name = "Frame_Keyboard"; - if(isHorizontal) { - inputbox = new EPDGUI_Textbox(84, 25, 712, 250); - key_textclear = new EPDGUI_Button("CLR", 804, 25, 72, 120); - key_textsize_plus = new EPDGUI_Button("+", 804, 157, 72, 40); - key_textsize_reset = new EPDGUI_Button("26", 804, 196, 72, 40); - key_textsize_minus = new EPDGUI_Button("-", 804, 235, 72, 40); - } else { - const uint16_t kKeyBaseY = 628; - inputbox = new EPDGUI_Textbox(4, 100, 532, 512); - key_textclear = new EPDGUI_Button("CLR", 4, kKeyBaseY, 260, 52); - key_textsize_plus = new EPDGUI_Button("+", 448, kKeyBaseY, 88, 52); - key_textsize_reset = new EPDGUI_Button("26", 360, kKeyBaseY, 88, 52); - key_textsize_minus = new EPDGUI_Button("-", 272, kKeyBaseY, 88, 52); - } + const uint16_t kKeyBaseY = 628; + inputbox = new EPDGUI_Textbox(4, 100, 532, 512); + key_textclear = new EPDGUI_Button("CLR", 4, kKeyBaseY, 260, 52); + key_textsize_plus = new EPDGUI_Button("+", 448, kKeyBaseY, 88, 52); + key_textsize_reset = new EPDGUI_Button("26", 360, kKeyBaseY, 88, 52); + key_textsize_minus = new EPDGUI_Button("-", 272, kKeyBaseY, 88, 52); inputbox->SetState(EPDGUI_Textbox::EVENT_PRESSED); - keyboard = new EPDGUI_Keyboard(isHorizontal); + keyboard = new EPDGUI_Keyboard(); key_textclear->AddArgs(EPDGUI_Button::EVENT_RELEASED, 0, (void*)inputbox); key_textclear->Bind(EPDGUI_Button::EVENT_RELEASED, key_textclear_cb); diff --git a/src/frame/frame_keyboard.h b/src/frame/frame_keyboard.h index 1fda5b2..8fd6099 100644 --- a/src/frame/frame_keyboard.h +++ b/src/frame/frame_keyboard.h @@ -6,7 +6,7 @@ class Frame_Keyboard : public Frame_Base { public: - Frame_Keyboard(bool isHorizontal = false); + Frame_Keyboard(); ~Frame_Keyboard(); int run(); int init(epdgui_args_vector_t &args); diff --git a/src/frame/frame_main.cpp b/src/frame/frame_main.cpp index 55ce92a..1af6e5c 100644 --- a/src/frame/frame_main.cpp +++ b/src/frame/frame_main.cpp @@ -35,7 +35,7 @@ void key_setting_cb(epdgui_args_vector_t &args) { void key_keyboard_cb(epdgui_args_vector_t &args) { Frame_Base *frame = EPDGUI_GetFrame("Frame_Keyboard"); if(frame == NULL) { - frame = new Frame_Keyboard(0); + frame = new Frame_Keyboard(); EPDGUI_AddFrame("Frame_Keyboard", frame); } EPDGUI_PushFrame(frame); diff --git a/src/frame/frame_wifipassword.cpp b/src/frame/frame_wifipassword.cpp index 2dac5d4..c3009b3 100644 --- a/src/frame/frame_wifipassword.cpp +++ b/src/frame/frame_wifipassword.cpp @@ -6,21 +6,16 @@ void key_passwordclear_cb(epdgui_args_vector_t &args) { } -Frame_WifiPassword::Frame_WifiPassword(bool isHorizontal) : Frame_Base() { +Frame_WifiPassword::Frame_WifiPassword() : Frame_Base() { _frame_name = "Frame_WifiPassword"; - if(isHorizontal) { - inputbox = new EPDGUI_Textbox(84, 25, 712, 250); - key_textclear = new EPDGUI_Button("CLR", 804, 25, 72, 120); - } else { - const uint16_t kKeyBaseY = 176; - inputbox = new EPDGUI_Textbox(4, 100, 532, 60); - key_textclear = new EPDGUI_Button("CLR", 4, kKeyBaseY, 260, 52); - } + const uint16_t kKeyBaseY = 176; + inputbox = new EPDGUI_Textbox(4, 100, 532, 60); + key_textclear = new EPDGUI_Button("CLR", 4, kKeyBaseY, 260, 52); inputbox->SetTextMargin(8, 15, 8, 8); inputbox->SetState(EPDGUI_Textbox::EVENT_PRESSED); - keyboard = new EPDGUI_Keyboard(isHorizontal, EPDGUI_Keyboard::STYLE_INPUTMODE_NEEDCONFIRM); + keyboard = new EPDGUI_Keyboard(EPDGUI_Keyboard::STYLE_INPUTMODE_NEEDCONFIRM); key_textclear->AddArgs(EPDGUI_Button::EVENT_RELEASED, 0, (void*)inputbox); key_textclear->Bind(EPDGUI_Button::EVENT_RELEASED, key_passwordclear_cb); diff --git a/src/frame/frame_wifipassword.h b/src/frame/frame_wifipassword.h index 4aef5e9..ef1ce3f 100644 --- a/src/frame/frame_wifipassword.h +++ b/src/frame/frame_wifipassword.h @@ -6,7 +6,7 @@ class Frame_WifiPassword : public Frame_Base { public: - Frame_WifiPassword(bool isHorizontal = false); + Frame_WifiPassword(); ~Frame_WifiPassword(); int run(); int init(epdgui_args_vector_t &args); diff --git a/src/frame/frame_wifiscan.cpp b/src/frame/frame_wifiscan.cpp index 06a8879..5b39564 100644 --- a/src/frame/frame_wifiscan.cpp +++ b/src/frame/frame_wifiscan.cpp @@ -21,7 +21,7 @@ void key_wifi_cb(epdgui_args_vector_t &args) { _connect_key = (EPDGUI_Button*)(args[0]); Frame_Base *frame = EPDGUI_GetFrame("Frame_WifiPassword"); if(frame == NULL) { - frame = new Frame_WifiPassword(false); + frame = new Frame_WifiPassword(); EPDGUI_AddFrame("Frame_WifiPassword", frame); } EPDGUI_PushFrame(frame); diff --git a/src/systeminit.cpp b/src/systeminit.cpp index ba3cc6c..70b1695 100644 --- a/src/systeminit.cpp +++ b/src/systeminit.cpp @@ -98,7 +98,7 @@ void SysInit_Start(void) { EPDGUI_AddFrame("Frame_Settings", frame_setting); Frame_Settings_Wallpaper *frame_wallpaper = new Frame_Settings_Wallpaper(); EPDGUI_AddFrame("Frame_Settings_Wallpaper", frame_wallpaper); - Frame_Keyboard *frame_keyboard = new Frame_Keyboard(0); + Frame_Keyboard *frame_keyboard = new Frame_Keyboard(); EPDGUI_AddFrame("Frame_Keyboard", frame_keyboard); Frame_WifiScan *frame_wifiscan = new Frame_WifiScan(); EPDGUI_AddFrame("Frame_WifiScan", frame_wifiscan);