mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 12:42:30 +04:00
Mirror my changes to badusb layouts from PR
This commit is contained in:
@@ -33,9 +33,26 @@ static void bad_usb_load_settings(BadUsbApp* app) {
|
|||||||
!storage_file_eof(settings_file) && !isspace(chr)) {
|
!storage_file_eof(settings_file) && !isspace(chr)) {
|
||||||
furi_string_push_back(app->keyboard_layout, chr);
|
furi_string_push_back(app->keyboard_layout, chr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
furi_string_reset(app->keyboard_layout);
|
||||||
}
|
}
|
||||||
storage_file_close(settings_file);
|
storage_file_close(settings_file);
|
||||||
storage_file_free(settings_file);
|
storage_file_free(settings_file);
|
||||||
|
|
||||||
|
if(!furi_string_empty(app->keyboard_layout)) {
|
||||||
|
Storage* fs_api = furi_record_open(RECORD_STORAGE);
|
||||||
|
FileInfo layout_file_info;
|
||||||
|
FS_Error file_check_err = storage_common_stat(
|
||||||
|
fs_api, furi_string_get_cstr(app->keyboard_layout), &layout_file_info);
|
||||||
|
furi_record_close(RECORD_STORAGE);
|
||||||
|
if(file_check_err != FSE_OK) {
|
||||||
|
furi_string_reset(app->keyboard_layout);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(layout_file_info.size != 256) {
|
||||||
|
furi_string_reset(app->keyboard_layout);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bad_usb_save_settings(BadUsbApp* app) {
|
static void bad_usb_save_settings(BadUsbApp* app) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
#include "views/bad_usb_view.h"
|
#include "views/bad_usb_view.h"
|
||||||
|
|
||||||
#define BAD_USB_APP_BASE_FOLDER ANY_PATH("badusb")
|
#define BAD_USB_APP_BASE_FOLDER ANY_PATH("badusb")
|
||||||
#define BAD_USB_APP_PATH_LAYOUT_FOLDER BAD_USB_APP_BASE_FOLDER "/layouts"
|
#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_SCRIPT_EXTENSION ".txt"
|
||||||
#define BAD_USB_APP_LAYOUT_EXTENSION ".kl"
|
#define BAD_USB_APP_LAYOUT_EXTENSION ".kl"
|
||||||
|
|
||||||
|
|||||||
@@ -120,8 +120,6 @@ static const char ducky_cmd_altchar[] = {"ALTCHAR "};
|
|||||||
static const char ducky_cmd_altstr_1[] = {"ALTSTRING "};
|
static const char ducky_cmd_altstr_1[] = {"ALTSTRING "};
|
||||||
static const char ducky_cmd_altstr_2[] = {"ALTCODE "};
|
static const char ducky_cmd_altstr_2[] = {"ALTCODE "};
|
||||||
|
|
||||||
static const char ducky_cmd_lang[] = {"DUCKY_LANG"};
|
|
||||||
|
|
||||||
static const uint8_t numpad_keys[10] = {
|
static const uint8_t numpad_keys[10] = {
|
||||||
HID_KEYPAD_0,
|
HID_KEYPAD_0,
|
||||||
HID_KEYPAD_1,
|
HID_KEYPAD_1,
|
||||||
@@ -257,9 +255,6 @@ static int32_t
|
|||||||
} else if(strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0) {
|
} else if(strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0) {
|
||||||
// ID - executed in ducky_script_preload
|
// ID - executed in ducky_script_preload
|
||||||
return (0);
|
return (0);
|
||||||
} else if(strncmp(line_tmp, ducky_cmd_lang, strlen(ducky_cmd_lang)) == 0) {
|
|
||||||
// DUCKY_LANG - ignore command to retain compatibility with existing scripts
|
|
||||||
return (0);
|
|
||||||
} else if(strncmp(line_tmp, ducky_cmd_delay, strlen(ducky_cmd_delay)) == 0) {
|
} else if(strncmp(line_tmp, ducky_cmd_delay, strlen(ducky_cmd_delay)) == 0) {
|
||||||
// DELAY
|
// DELAY
|
||||||
line_tmp = &line_tmp[ducky_get_command_len(line_tmp) + 1];
|
line_tmp = &line_tmp[ducky_get_command_len(line_tmp) + 1];
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ static bool bad_usb_layout_select(BadUsbApp* bad_usb) {
|
|||||||
DialogsFileBrowserOptions browser_options;
|
DialogsFileBrowserOptions browser_options;
|
||||||
dialog_file_browser_set_basic_options(
|
dialog_file_browser_set_basic_options(
|
||||||
&browser_options, BAD_USB_APP_LAYOUT_EXTENSION, &I_keyboard_10px);
|
&browser_options, BAD_USB_APP_LAYOUT_EXTENSION, &I_keyboard_10px);
|
||||||
|
browser_options.base_path = BAD_USB_APP_PATH_LAYOUT_FOLDER;
|
||||||
|
browser_options.skip_assets = false;
|
||||||
|
|
||||||
// Input events and views are managed by file_browser
|
// Input events and views are managed by file_browser
|
||||||
bool res = dialog_file_browser_show(
|
bool res = dialog_file_browser_show(
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
#define TAG "BrowserWorker"
|
#define TAG "BrowserWorker"
|
||||||
|
|
||||||
#define ASSETS_DIR "assets"
|
#define ASSETS_DIR "assets"
|
||||||
#define BADUSB_LAYOUTS_DIR "layouts"
|
|
||||||
#define SUBGHZ_TEMP_DIR "tmp_history"
|
#define SUBGHZ_TEMP_DIR "tmp_history"
|
||||||
#define BROWSER_ROOT STORAGE_ANY_PATH_PREFIX
|
#define BROWSER_ROOT STORAGE_ANY_PATH_PREFIX
|
||||||
#define FILE_NAME_LEN_MAX 256
|
#define FILE_NAME_LEN_MAX 256
|
||||||
@@ -93,7 +92,6 @@ static bool browser_filter_by_name(BrowserWorker* browser, FuriString* name, boo
|
|||||||
// Skip assets folders (if enabled)
|
// Skip assets folders (if enabled)
|
||||||
if(browser->skip_assets) {
|
if(browser->skip_assets) {
|
||||||
return ((furi_string_cmp_str(name, ASSETS_DIR) == 0) ? (false) : (true)) &&
|
return ((furi_string_cmp_str(name, ASSETS_DIR) == 0) ? (false) : (true)) &&
|
||||||
((furi_string_cmp_str(name, BADUSB_LAYOUTS_DIR) == 0) ? (false) : (true)) &&
|
|
||||||
((furi_string_cmp_str(name, SUBGHZ_TEMP_DIR) == 0) ? (false) : (true));
|
((furi_string_cmp_str(name, SUBGHZ_TEMP_DIR) == 0) ? (false) : (true));
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user