#pragma once #include "bad_usb_app.h" #include "scenes/bad_usb_scene.h" #include "helpers/ducky_script.h" #include "helpers/bad_usb_hid.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "views/bad_usb_view.h" #include #define BAD_USB_APP_BASE_FOLDER EXT_PATH("badusb") #define BAD_USB_APP_PATH_LAYOUT_FOLDER BAD_USB_APP_BASE_FOLDER "/assets/layouts" #define BAD_USB_APP_SCRIPT_EXTENSION ".txt" #define BAD_USB_APP_LAYOUT_EXTENSION ".kl" typedef enum { BadUsbAppErrorNoFiles, } BadUsbAppError; struct BadUsbApp { Gui* gui; ViewDispatcher* view_dispatcher; SceneManager* scene_manager; NotificationApp* notifications; DialogsApp* dialogs; Widget* widget; Popup* popup; VariableItemList* var_item_list; TextInput* text_input; ByteInput* byte_input; Loading* loading; char ble_name_buf[FURI_HAL_BT_ADV_NAME_LENGTH]; uint8_t ble_mac_buf[GAP_MAC_ADDR_SIZE]; char usb_name_buf[HID_MANUF_PRODUCT_NAME_LEN]; uint16_t usb_vidpid_buf[2]; BadUsbAppError error; FuriString* file_path; FuriString* keyboard_layout; BadUsb* bad_usb_view; BadUsbScript* bad_usb_script; BadUsbHidInterface interface; BadUsbHidConfig user_hid_cfg; BadUsbHidConfig script_hid_cfg; }; typedef enum { BadUsbAppViewWidget, BadUsbAppViewPopup, BadUsbAppViewWork, BadUsbAppViewConfig, BadUsbAppViewByteInput, BadUsbAppViewTextInput, BadUsbAppViewLoading, } BadUsbAppView; void bad_usb_set_interface(BadUsbApp* app, BadUsbHidInterface interface); void bad_usb_app_show_loading_popup(BadUsbApp* app, bool show);