diff --git a/applications/services/input/input_cli.c b/applications/services/input/input_cli.c index 6b4ea3cd4..f613c6abd 100644 --- a/applications/services/input/input_cli.c +++ b/applications/services/input/input_cli.c @@ -54,8 +54,8 @@ static void input_cli_keyboard(Cli* cli, FuriString* args, Input* input) { printf("\r\nUsage:\r\n"); printf("\tMove = Arrows\r\n"); printf("\tOk = Enter\r\n"); - printf("\tHold Ok = Shift + Enter\r\n"); printf("\tBack = Backspace\r\n"); + printf("\tToggle hold for next key = Space\r\n"); printf("\r\nIn 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("\r\nPress CTRL+C to stop\r\n"); + bool hold = false; while(cli_is_connected(cli)) { char in_chr = cli_getc(cli); if(in_chr == CliSymbolAsciiETX) break; InputKey send_key = InputKeyMAX; - InputType send_type = InputTypeShort; ViewPort* view_port = gui->ongoing_input_view_port; 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 send_key = InputKeyBack; break; - case 0x4d: // Shift Enter = Hold Ok - send_type = InputTypeLong; - /* fall through */ + case CliSymbolAsciiSpace: // Space = Toggle hold next key + hold = !hold; + break; case CliSymbolAsciiCR: // Enter = Ok send_key = InputKeyOk; break; @@ -115,7 +115,8 @@ static void input_cli_keyboard(Cli* cli, FuriString* args, Input* input) { } if(send_key != InputKeyMAX) { - input_fake_event(input, send_key, send_type); + input_fake_event(input, send_key, hold ? InputTypeLong : InputTypeShort); + hold = false; } }