From 1e59764c20d6f5b58de39e9d033448026acb6fd7 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Sun, 13 Aug 2023 03:06:24 +0200 Subject: [PATCH] Input keyboard toggle hold for next key with space --- applications/services/input/input_cli.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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; } }