mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 13:48:35 -07:00
Input keyboard toggle hold for next key with space
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user