2023-03-20 17:22:03 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <furi.h>
|
|
|
|
#include <furi_hal.h>
|
|
|
|
#include "ducky_script.h"
|
|
|
|
|
|
|
|
#define SCRIPT_STATE_ERROR (-1)
|
|
|
|
#define SCRIPT_STATE_END (-2)
|
|
|
|
#define SCRIPT_STATE_NEXT_LINE (-3)
|
|
|
|
#define SCRIPT_STATE_CMD_UNKNOWN (-4)
|
|
|
|
#define SCRIPT_STATE_STRING_START (-5)
|
2023-04-01 18:43:42 +00:00
|
|
|
#define SCRIPT_STATE_WAIT_FOR_BTN (-6)
|
2023-03-20 17:22:03 +00:00
|
|
|
|
|
|
|
#define FILE_BUFFER_LEN 16
|
|
|
|
|
|
|
|
struct BadUsbScript {
|
|
|
|
FuriHalUsbHidConfig hid_cfg;
|
|
|
|
FuriThread* thread;
|
|
|
|
BadUsbState st;
|
|
|
|
|
|
|
|
FuriString* file_path;
|
|
|
|
uint8_t file_buf[FILE_BUFFER_LEN + 1];
|
|
|
|
uint8_t buf_start;
|
|
|
|
uint8_t buf_len;
|
|
|
|
bool file_end;
|
|
|
|
|
|
|
|
uint32_t defdelay;
|
|
|
|
uint32_t stringdelay;
|
|
|
|
uint16_t layout[128];
|
|
|
|
|
|
|
|
FuriString* line;
|
|
|
|
FuriString* line_prev;
|
|
|
|
uint32_t repeat_cnt;
|
|
|
|
uint8_t key_hold_nb;
|
|
|
|
|
|
|
|
FuriString* string_print;
|
|
|
|
size_t string_print_pos;
|
|
|
|
};
|
|
|
|
|
|
|
|
uint16_t ducky_get_keycode(BadUsbScript* bad_usb, const char* param, bool accept_chars);
|
|
|
|
|
|
|
|
uint32_t ducky_get_command_len(const char* line);
|
|
|
|
|
|
|
|
bool ducky_is_line_end(const char chr);
|
|
|
|
|
|
|
|
uint16_t ducky_get_keycode_by_name(const char* param);
|
|
|
|
|
|
|
|
bool ducky_get_number(const char* param, uint32_t* val);
|
|
|
|
|
|
|
|
void ducky_numlock_on(void);
|
|
|
|
|
|
|
|
bool ducky_numpad_press(const char num);
|
|
|
|
|
|
|
|
bool ducky_altchar(const char* charcode);
|
|
|
|
|
|
|
|
bool ducky_altstring(const char* param);
|
|
|
|
|
|
|
|
bool ducky_string(BadUsbScript* bad_usb, const char* param);
|
|
|
|
|
|
|
|
int32_t ducky_execute_cmd(BadUsbScript* bad_usb, const char* line);
|
|
|
|
|
|
|
|
int32_t ducky_error(BadUsbScript* bad_usb, const char* text, ...);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|