Input keyboard toggle hold for next key with space

This commit is contained in:
Willy-JL
2023-08-13 03:06:24 +02:00
parent 7504e58244
commit 1e59764c20

View File

@@ -54,8 +54,8 @@ static void input_cli_keyboard(Cli* cli, FuriString* args, Input* input) {
printf("\r\nUsage:\r\n"); printf("\r\nUsage:\r\n");
printf("\tMove = Arrows\r\n"); printf("\tMove = Arrows\r\n");
printf("\tOk = Enter\r\n"); printf("\tOk = Enter\r\n");
printf("\tHold Ok = Shift + Enter\r\n");
printf("\tBack = Backspace\r\n"); printf("\tBack = Backspace\r\n");
printf("\tToggle hold for next key = Space\r\n");
printf("\r\nIn Keyboard:\r\n"); printf("\r\nIn Keyboard:\r\n");
printf("\tType normally on PC Keyboard\r\n"); printf("\tType normally on PC Keyboard\r\n");
@@ -65,11 +65,11 @@ static void input_cli_keyboard(Cli* cli, FuriString* args, Input* input) {
printf("\tSave Text = Enter\r\n"); printf("\tSave Text = Enter\r\n");
printf("\r\nPress CTRL+C to stop\r\n"); printf("\r\nPress CTRL+C to stop\r\n");
bool hold = false;
while(cli_is_connected(cli)) { while(cli_is_connected(cli)) {
char in_chr = cli_getc(cli); char in_chr = cli_getc(cli);
if(in_chr == CliSymbolAsciiETX) break; if(in_chr == CliSymbolAsciiETX) break;
InputKey send_key = InputKeyMAX; InputKey send_key = InputKeyMAX;
InputType send_type = InputTypeShort;
ViewPort* view_port = gui->ongoing_input_view_port; ViewPort* view_port = gui->ongoing_input_view_port;
if(view_port && view_port->input_callback == view_dispatcher_input_callback) { if(view_port && view_port->input_callback == view_dispatcher_input_callback) {
@@ -102,9 +102,9 @@ static void input_cli_keyboard(Cli* cli, FuriString* args, Input* input) {
case CliSymbolAsciiDel: // (putty/picocom) Backspace = Back case CliSymbolAsciiDel: // (putty/picocom) Backspace = Back
send_key = InputKeyBack; send_key = InputKeyBack;
break; break;
case 0x4d: // Shift Enter = Hold Ok case CliSymbolAsciiSpace: // Space = Toggle hold next key
send_type = InputTypeLong; hold = !hold;
/* fall through */ break;
case CliSymbolAsciiCR: // Enter = Ok case CliSymbolAsciiCR: // Enter = Ok
send_key = InputKeyOk; send_key = InputKeyOk;
break; break;
@@ -115,7 +115,8 @@ static void input_cli_keyboard(Cli* cli, FuriString* args, Input* input) {
} }
if(send_key != InputKeyMAX) { if(send_key != InputKeyMAX) {
input_fake_event(input, send_key, send_type); input_fake_event(input, send_key, hold ? InputTypeLong : InputTypeShort);
hold = false;
} }
} }