Keyboard enhance shift (#1042)
This commit is contained in:
parent
72925fae1c
commit
e7dd715289
@ -131,7 +131,11 @@ static const bool char_is_lowercase(char letter) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const char char_to_uppercase(const char letter) {
|
static const char char_to_uppercase(const char letter) {
|
||||||
return (letter - 0x20);
|
if(isalpha(letter)) {
|
||||||
|
return (letter - 0x20);
|
||||||
|
} else {
|
||||||
|
return letter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void text_input_backspace_cb(TextInputModel* model) {
|
static void text_input_backspace_cb(TextInputModel* model) {
|
||||||
@ -305,12 +309,16 @@ static void text_input_handle_right(TextInput* text_input) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static void text_input_handle_ok(TextInput* text_input) {
|
static void text_input_handle_ok(TextInput* text_input, bool shift) {
|
||||||
with_view_model(
|
with_view_model(
|
||||||
text_input->view, (TextInputModel * model) {
|
text_input->view, (TextInputModel * model) {
|
||||||
char selected = get_selected_char(model);
|
char selected = get_selected_char(model);
|
||||||
uint8_t text_length = strlen(model->text_buffer);
|
uint8_t text_length = strlen(model->text_buffer);
|
||||||
|
|
||||||
|
if(shift) {
|
||||||
|
selected = char_to_uppercase(selected);
|
||||||
|
}
|
||||||
|
|
||||||
if(selected == ENTER_KEY) {
|
if(selected == ENTER_KEY) {
|
||||||
if(model->validator_callback && (!model->validator_callback(
|
if(model->validator_callback && (!model->validator_callback(
|
||||||
model->text_buffer,
|
model->text_buffer,
|
||||||
@ -343,7 +351,7 @@ static bool text_input_view_input_callback(InputEvent* event, void* context) {
|
|||||||
furi_assert(text_input);
|
furi_assert(text_input);
|
||||||
bool consumed = false;
|
bool consumed = false;
|
||||||
|
|
||||||
if(event->type == InputTypeShort || event->type == InputTypeRepeat) {
|
if(event->type == InputTypeShort) {
|
||||||
with_view_model(
|
with_view_model(
|
||||||
text_input->view, (TextInputModel * model) {
|
text_input->view, (TextInputModel * model) {
|
||||||
if(model->valadator_message_visible) {
|
if(model->valadator_message_visible) {
|
||||||
@ -372,7 +380,7 @@ static bool text_input_view_input_callback(InputEvent* event, void* context) {
|
|||||||
consumed = true;
|
consumed = true;
|
||||||
break;
|
break;
|
||||||
case InputKeyOk:
|
case InputKeyOk:
|
||||||
text_input_handle_ok(text_input);
|
text_input_handle_ok(text_input, false);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -395,6 +403,29 @@ static bool text_input_view_input_callback(InputEvent* event, void* context) {
|
|||||||
consumed = true;
|
consumed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Allow shift key on long press
|
||||||
|
if(event->type == InputTypeLong && event->key == InputKeyOk) {
|
||||||
|
with_view_model(
|
||||||
|
text_input->view, (TextInputModel * model) {
|
||||||
|
if(model->valadator_message_visible) {
|
||||||
|
if(event->key == InputKeyBack) {
|
||||||
|
consumed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model->valadator_message_visible = false;
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
switch(event->key) {
|
||||||
|
case InputKeyOk:
|
||||||
|
text_input_handle_ok(text_input, true);
|
||||||
|
consumed = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return consumed;
|
return consumed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user