mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
BadKB lock relevant configs with ID and BT_ID cmds
This commit is contained in:
@@ -102,9 +102,13 @@ int32_t bad_kb_config_switch_mode(BadKbApp* app) {
|
||||
XTREME_SETTINGS_SAVE();
|
||||
bad_kb_reload_worker(app);
|
||||
if(app->is_bt) furi_hal_bt_start_advertising();
|
||||
bad_kb_config_refresh_menu(app);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bad_kb_config_refresh_menu(BadKbApp* app) {
|
||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfig);
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bad_kb_config_switch_remember_mode(BadKbApp* app) {
|
||||
|
||||
@@ -386,9 +386,11 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
|
||||
bad_kb->app->switch_mode_thread = NULL;
|
||||
}
|
||||
// Looking for ID or BT_ID command at first line
|
||||
bool usb_id = false;
|
||||
bool bt_id = false;
|
||||
if(strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0) {
|
||||
bad_kb->set_usb_id = false;
|
||||
bad_kb->set_bt_id = false;
|
||||
bad_kb->has_usb_id = strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0;
|
||||
bad_kb->has_bt_id = strncmp(line_tmp, ducky_cmd_bt_id, strlen(ducky_cmd_bt_id)) == 0;
|
||||
if(bad_kb->has_usb_id) {
|
||||
if(bad_kb->bt) {
|
||||
bad_kb->app->is_bt = false;
|
||||
bad_kb->app->switch_mode_thread = furi_thread_alloc_ex(
|
||||
@@ -399,8 +401,8 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
|
||||
furi_thread_start(bad_kb->app->switch_mode_thread);
|
||||
return false;
|
||||
}
|
||||
usb_id = ducky_set_usb_id(bad_kb, &line_tmp[strlen(ducky_cmd_id) + 1]);
|
||||
} else if(strncmp(line_tmp, ducky_cmd_bt_id, strlen(ducky_cmd_bt_id)) == 0) {
|
||||
bad_kb->set_usb_id = ducky_set_usb_id(bad_kb, &line_tmp[strlen(ducky_cmd_id) + 1]);
|
||||
} else if(bad_kb->has_bt_id) {
|
||||
if(!bad_kb->bt) {
|
||||
bad_kb->app->is_bt = true;
|
||||
bad_kb->app->switch_mode_thread = furi_thread_alloc_ex(
|
||||
@@ -412,12 +414,13 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
|
||||
return false;
|
||||
}
|
||||
if(!bad_kb->app->bt_remember) {
|
||||
bt_id = ducky_set_bt_id(bad_kb, &line_tmp[strlen(ducky_cmd_bt_id) + 1]);
|
||||
bad_kb->set_bt_id = ducky_set_bt_id(bad_kb, &line_tmp[strlen(ducky_cmd_bt_id) + 1]);
|
||||
}
|
||||
}
|
||||
bad_kb_config_refresh_menu(bad_kb->app);
|
||||
|
||||
if(bad_kb->bt) {
|
||||
if(!bt_id) {
|
||||
if(!bad_kb->set_bt_id) {
|
||||
const char* bt_name = bad_kb->app->config.bt_name;
|
||||
const uint8_t* bt_mac = bad_kb->app->bt_remember ?
|
||||
(uint8_t*)&BAD_KB_BOUND_MAC_ADDRESS :
|
||||
@@ -440,7 +443,7 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(usb_id) {
|
||||
if(bad_kb->set_usb_id) {
|
||||
furi_check(furi_hal_usb_set_config(&usb_hid, &bad_kb->hid_cfg));
|
||||
} else {
|
||||
furi_check(furi_hal_usb_set_config(&usb_hid, NULL));
|
||||
|
||||
@@ -82,6 +82,11 @@ typedef struct {
|
||||
FuriString* string_print;
|
||||
size_t string_print_pos;
|
||||
|
||||
bool set_usb_id;
|
||||
bool set_bt_id;
|
||||
bool has_usb_id;
|
||||
bool has_bt_id;
|
||||
|
||||
Bt* bt;
|
||||
BadKbApp* app;
|
||||
} BadKbScript;
|
||||
@@ -147,6 +152,8 @@ struct BadKbApp {
|
||||
|
||||
int32_t bad_kb_config_switch_mode(BadKbApp* app);
|
||||
|
||||
void bad_kb_config_refresh_menu(BadKbApp* app);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -45,28 +45,36 @@ void bad_kb_scene_config_on_enter(void* context) {
|
||||
var_item_list, "Connection", 2, bad_kb_scene_config_connection_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "BT Remember", 2, bad_kb_scene_config_bt_remember_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->bt_remember);
|
||||
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
|
||||
variable_item_set_locked(item, !bad_kb->is_bt, "Only in\nBT mode!");
|
||||
|
||||
item = variable_item_list_add(var_item_list, "BT Device Name", 0, NULL, bad_kb);
|
||||
variable_item_set_locked(item, !bad_kb->is_bt, "Only in\nBT mode!");
|
||||
|
||||
item = variable_item_list_add(var_item_list, "BT MAC Address", 0, NULL, bad_kb);
|
||||
if(!bad_kb->is_bt) {
|
||||
variable_item_set_locked(item, true, "Only in\nBT mode!");
|
||||
} else if(bad_kb->bt_remember) {
|
||||
variable_item_set_locked(item, true, "Remember\nmust be Off!");
|
||||
if(bad_kb->bad_kb_script->has_usb_id) {
|
||||
variable_item_set_locked(item, true, "Script has\nID cmd!\nLocked to\nUSB Mode!");
|
||||
} else if(bad_kb->bad_kb_script->has_bt_id) {
|
||||
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nBT Mode!");
|
||||
}
|
||||
|
||||
item = variable_item_list_add(var_item_list, "Randomize BT MAC", 0, NULL, bad_kb);
|
||||
if(!bad_kb->is_bt) {
|
||||
variable_item_set_locked(item, true, "Only in\nBT mode!");
|
||||
} else if(bad_kb->bt_remember) {
|
||||
variable_item_set_locked(item, true, "Remember\nmust be Off!");
|
||||
if(bad_kb->is_bt) {
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "BT Remember", 2, bad_kb_scene_config_bt_remember_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->bt_remember);
|
||||
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
|
||||
|
||||
item = variable_item_list_add(var_item_list, "BT Device Name", 0, NULL, bad_kb);
|
||||
if(bad_kb->bad_kb_script->set_bt_id) {
|
||||
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nset Name!");
|
||||
}
|
||||
|
||||
item = variable_item_list_add(var_item_list, "BT MAC Address", 0, NULL, bad_kb);
|
||||
if(bad_kb->bt_remember) {
|
||||
variable_item_set_locked(item, true, "Remember\nmust be Off!");
|
||||
} else if(bad_kb->bad_kb_script->set_bt_id) {
|
||||
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nset MAC!");
|
||||
}
|
||||
|
||||
item = variable_item_list_add(var_item_list, "Randomize BT MAC", 0, NULL, bad_kb);
|
||||
if(bad_kb->bt_remember) {
|
||||
variable_item_set_locked(item, true, "Remember\nmust be Off!");
|
||||
} else if(bad_kb->bad_kb_script->set_bt_id) {
|
||||
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nset MAC!");
|
||||
}
|
||||
}
|
||||
|
||||
variable_item_list_set_enter_callback(
|
||||
|
||||
Reference in New Issue
Block a user