mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-10 06:54:19 +00:00
Add support for DEFAULT_STRING_DELAY in Bad USB App (#3476)
* Add support for `DEFAULT_STRING_DELAY` in bad_usb * Format Sources Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
e0469ae1ed
commit
760deb66c5
4 changed files with 27 additions and 6 deletions
|
@ -436,6 +436,7 @@ static int32_t bad_usb_worker(void* context) {
|
|||
bad_usb->st.line_cur = 0;
|
||||
bad_usb->defdelay = 0;
|
||||
bad_usb->stringdelay = 0;
|
||||
bad_usb->defstringdelay = 0;
|
||||
bad_usb->repeat_cnt = 0;
|
||||
bad_usb->key_hold_nb = 0;
|
||||
bad_usb->file_end = false;
|
||||
|
@ -459,6 +460,7 @@ static int32_t bad_usb_worker(void* context) {
|
|||
bad_usb->st.line_cur = 0;
|
||||
bad_usb->defdelay = 0;
|
||||
bad_usb->stringdelay = 0;
|
||||
bad_usb->defstringdelay = 0;
|
||||
bad_usb->repeat_cnt = 0;
|
||||
bad_usb->file_end = false;
|
||||
storage_file_seek(script_file, 0, true);
|
||||
|
@ -586,9 +588,11 @@ static int32_t bad_usb_worker(void* context) {
|
|||
continue;
|
||||
}
|
||||
} else if(worker_state == BadUsbStateStringDelay) { // State: print string with delays
|
||||
uint32_t delay = (bad_usb->stringdelay == 0) ? bad_usb->defstringdelay :
|
||||
bad_usb->stringdelay;
|
||||
uint32_t flags = bad_usb_flags_get(
|
||||
WorkerEvtEnd | WorkerEvtStartStop | WorkerEvtPauseResume | WorkerEvtDisconnect,
|
||||
bad_usb->stringdelay);
|
||||
delay);
|
||||
|
||||
if(!(flags & FuriFlagError)) {
|
||||
if(flags & WorkerEvtEnd) {
|
||||
|
|
|
@ -46,6 +46,17 @@ static int32_t ducky_fnc_strdelay(BadUsbScript* bad_usb, const char* line, int32
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int32_t ducky_fnc_defstrdelay(BadUsbScript* bad_usb, const char* line, int32_t param) {
|
||||
UNUSED(param);
|
||||
|
||||
line = &line[ducky_get_command_len(line) + 1];
|
||||
bool state = ducky_get_number(line, &bad_usb->defstringdelay);
|
||||
if(!state) {
|
||||
return ducky_error(bad_usb, "Invalid number %s", line);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t ducky_fnc_string(BadUsbScript* bad_usb, const char* line, int32_t param) {
|
||||
line = &line[ducky_get_command_len(line) + 1];
|
||||
furi_string_set_str(bad_usb->string_print, line);
|
||||
|
@ -53,7 +64,8 @@ static int32_t ducky_fnc_string(BadUsbScript* bad_usb, const char* line, int32_t
|
|||
furi_string_cat(bad_usb->string_print, "\n");
|
||||
}
|
||||
|
||||
if(bad_usb->stringdelay == 0) { // stringdelay not set - run command immediately
|
||||
if(bad_usb->stringdelay == 0 &&
|
||||
bad_usb->defstringdelay == 0) { // stringdelay not set - run command immediately
|
||||
bool state = ducky_string(bad_usb, furi_string_get_cstr(bad_usb->string_print));
|
||||
if(!state) {
|
||||
return ducky_error(bad_usb, "Invalid string %s", line);
|
||||
|
@ -161,6 +173,8 @@ static const DuckyCmd ducky_commands[] = {
|
|||
{"DEFAULTDELAY", ducky_fnc_defdelay, -1},
|
||||
{"STRINGDELAY", ducky_fnc_strdelay, -1},
|
||||
{"STRING_DELAY", ducky_fnc_strdelay, -1},
|
||||
{"DEFAULT_STRING_DELAY", ducky_fnc_defstrdelay, -1},
|
||||
{"DEFAULTSTRINGDELAY", ducky_fnc_defstrdelay, -1},
|
||||
{"REPEAT", ducky_fnc_repeat, -1},
|
||||
{"SYSRQ", ducky_fnc_sysrq, -1},
|
||||
{"ALTCHAR", ducky_fnc_altchar, -1},
|
||||
|
|
|
@ -30,6 +30,7 @@ struct BadUsbScript {
|
|||
|
||||
uint32_t defdelay;
|
||||
uint32_t stringdelay;
|
||||
uint32_t defstringdelay;
|
||||
uint16_t layout[128];
|
||||
|
||||
FuriString* line;
|
||||
|
|
|
@ -98,9 +98,11 @@ Will wait indefinitely for a button to be pressed
|
|||
|
||||
Delay between keypresses.
|
||||
| Command | Parameters | Notes |
|
||||
| ------------ | ----------------- | --------------------------------------------- |
|
||||
| -------------------- | ----------------- | --------------------------------------------- |
|
||||
| STRING_DELAY | Delay value in ms | Applied once to next appearing STRING command |
|
||||
| STRINGDELAY | Delay value in ms | Same as STRING_DELAY |
|
||||
| DEFAULT_STRING_DELAY | Delay value in ms | Apply to every appearing STRING command |
|
||||
| DEFAULTSTRINGDELAY | Delay value in ms | Same as DEFAULT_STRING_DELAY |
|
||||
|
||||
### Repeat
|
||||
|
||||
|
|
Loading…
Reference in a new issue