mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-14 23:08:35 -07:00
Format
This commit is contained in:
@@ -17,8 +17,8 @@ void archive_set_file_type(ArchiveFile_t* file, const char* path, bool is_folder
|
|||||||
if((known_ext[i][0] == '?') || (known_ext[i][0] == '*')) continue;
|
if((known_ext[i][0] == '?') || (known_ext[i][0] == '*')) continue;
|
||||||
if(furi_string_search(file->path, known_ext[i], 0) != FURI_STRING_FAILURE) {
|
if(furi_string_search(file->path, known_ext[i], 0) != FURI_STRING_FAILURE) {
|
||||||
if(i == ArchiveFileTypeBadKb) {
|
if(i == ArchiveFileTypeBadKb) {
|
||||||
if(furi_string_search(
|
if(furi_string_search(file->path, archive_get_default_path(ArchiveTabBadKb)) ==
|
||||||
file->path, archive_get_default_path(ArchiveTabBadKb)) == 0) {
|
0) {
|
||||||
file->type = i;
|
file->type = i;
|
||||||
return; // *.txt file is a BadKB script only if it is in BadKB folder
|
return; // *.txt file is a BadKB script only if it is in BadKB folder
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,10 +112,14 @@ BadKbApp* bad_kb_app_alloc(char* arg) {
|
|||||||
|
|
||||||
app->var_item_list_bt = variable_item_list_alloc();
|
app->var_item_list_bt = variable_item_list_alloc();
|
||||||
view_dispatcher_add_view(
|
view_dispatcher_add_view(
|
||||||
app->view_dispatcher, BadKbAppViewConfigBt, variable_item_list_get_view(app->var_item_list_bt));
|
app->view_dispatcher,
|
||||||
|
BadKbAppViewConfigBt,
|
||||||
|
variable_item_list_get_view(app->var_item_list_bt));
|
||||||
app->var_item_list_usb = variable_item_list_alloc();
|
app->var_item_list_usb = variable_item_list_alloc();
|
||||||
view_dispatcher_add_view(
|
view_dispatcher_add_view(
|
||||||
app->view_dispatcher, BadKbAppViewConfigUsb, variable_item_list_get_view(app->var_item_list_usb));
|
app->view_dispatcher,
|
||||||
|
BadKbAppViewConfigUsb,
|
||||||
|
variable_item_list_get_view(app->var_item_list_usb));
|
||||||
|
|
||||||
app->bad_kb_view = bad_kb_alloc();
|
app->bad_kb_view = bad_kb_alloc();
|
||||||
view_dispatcher_add_view(
|
view_dispatcher_add_view(
|
||||||
@@ -185,14 +189,13 @@ void bad_kb_app_free(BadKbApp* app) {
|
|||||||
// restores bt config
|
// restores bt config
|
||||||
// BtProfile have already been switched to the previous one
|
// BtProfile have already been switched to the previous one
|
||||||
// so we directly modify the right profile
|
// so we directly modify the right profile
|
||||||
if (strcmp(app->bt_old_config.name, app->name) != 0) {
|
if(strcmp(app->bt_old_config.name, app->name) != 0) {
|
||||||
furi_hal_bt_set_profile_adv_name(FuriHalBtProfileHidKeyboard, app->bt_old_config.name);
|
furi_hal_bt_set_profile_adv_name(FuriHalBtProfileHidKeyboard, app->bt_old_config.name);
|
||||||
}
|
}
|
||||||
if (memcmp(app->bt_old_config.mac, app->mac, BAD_KB_MAC_ADDRESS_LEN) != 0) {
|
if(memcmp(app->bt_old_config.mac, app->mac, BAD_KB_MAC_ADDRESS_LEN) != 0) {
|
||||||
furi_hal_bt_set_profile_mac_addr(FuriHalBtProfileHidKeyboard, app->bt_old_config.mac);
|
furi_hal_bt_set_profile_mac_addr(FuriHalBtProfileHidKeyboard, app->bt_old_config.mac);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Close records
|
// Close records
|
||||||
furi_record_close(RECORD_GUI);
|
furi_record_close(RECORD_GUI);
|
||||||
furi_record_close(RECORD_NOTIFICATION);
|
furi_record_close(RECORD_NOTIFICATION);
|
||||||
|
|||||||
@@ -231,8 +231,8 @@ static bool ducky_is_line_end(const char chr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ducky_numlock_on(BadKbScript* bad_kb) {
|
static void ducky_numlock_on(BadKbScript* bad_kb) {
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
if((furi_hal_hid_get_led_state() & HID_KB_LED_NUM) == 0) { // FIXME
|
if((furi_hal_hid_get_led_state() & HID_KB_LED_NUM) == 0) { // FIXME
|
||||||
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
||||||
furi_hal_bt_hid_kb_press(HID_KEYBOARD_LOCK_NUM_LOCK);
|
furi_hal_bt_hid_kb_press(HID_KEYBOARD_LOCK_NUM_LOCK);
|
||||||
furi_delay_ms(bt_timeout);
|
furi_delay_ms(bt_timeout);
|
||||||
@@ -251,7 +251,7 @@ static bool ducky_numpad_press(BadKbScript* bad_kb, const char num) {
|
|||||||
|
|
||||||
uint16_t key = numpad_keys[num - '0'];
|
uint16_t key = numpad_keys[num - '0'];
|
||||||
FURI_LOG_I(WORKER_TAG, "Pressing %c\r\n", num);
|
FURI_LOG_I(WORKER_TAG, "Pressing %c\r\n", num);
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
||||||
furi_hal_bt_hid_kb_press(key);
|
furi_hal_bt_hid_kb_press(key);
|
||||||
furi_delay_ms(bt_timeout);
|
furi_delay_ms(bt_timeout);
|
||||||
@@ -270,7 +270,7 @@ static bool ducky_altchar(BadKbScript* bad_kb, const char* charcode) {
|
|||||||
|
|
||||||
FURI_LOG_I(WORKER_TAG, "char %s", charcode);
|
FURI_LOG_I(WORKER_TAG, "char %s", charcode);
|
||||||
|
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
||||||
furi_hal_bt_hid_kb_press(KEY_MOD_LEFT_ALT);
|
furi_hal_bt_hid_kb_press(KEY_MOD_LEFT_ALT);
|
||||||
} else {
|
} else {
|
||||||
@@ -283,7 +283,7 @@ static bool ducky_altchar(BadKbScript* bad_kb, const char* charcode) {
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
furi_hal_bt_hid_kb_release(KEY_MOD_LEFT_ALT);
|
furi_hal_bt_hid_kb_release(KEY_MOD_LEFT_ALT);
|
||||||
} else {
|
} else {
|
||||||
furi_hal_hid_kb_release(KEY_MOD_LEFT_ALT);
|
furi_hal_hid_kb_release(KEY_MOD_LEFT_ALT);
|
||||||
@@ -316,7 +316,7 @@ static bool ducky_string(BadKbScript* bad_kb, const char* param) {
|
|||||||
while(param[i] != '\0') {
|
while(param[i] != '\0') {
|
||||||
uint16_t keycode = BADKB_ASCII_TO_KEY(bad_kb, param[i]);
|
uint16_t keycode = BADKB_ASCII_TO_KEY(bad_kb, param[i]);
|
||||||
if(keycode != HID_KEYBOARD_NONE) {
|
if(keycode != HID_KEYBOARD_NONE) {
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
||||||
furi_hal_bt_hid_kb_press(keycode);
|
furi_hal_bt_hid_kb_press(keycode);
|
||||||
furi_delay_ms(bt_timeout);
|
furi_delay_ms(bt_timeout);
|
||||||
@@ -429,7 +429,7 @@ static int32_t
|
|||||||
// SYSRQ
|
// SYSRQ
|
||||||
line_tmp = &line_tmp[ducky_get_command_len(line_tmp) + 1];
|
line_tmp = &line_tmp[ducky_get_command_len(line_tmp) + 1];
|
||||||
uint16_t key = ducky_get_keycode(bad_kb, line_tmp, true);
|
uint16_t key = ducky_get_keycode(bad_kb, line_tmp, true);
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
bt_hid_hold_while_keyboard_buffer_full(1, -1);
|
||||||
furi_hal_bt_hid_kb_press(KEY_MOD_LEFT_ALT | HID_KEYBOARD_PRINT_SCREEN);
|
furi_hal_bt_hid_kb_press(KEY_MOD_LEFT_ALT | HID_KEYBOARD_PRINT_SCREEN);
|
||||||
furi_hal_bt_hid_kb_press(key);
|
furi_hal_bt_hid_kb_press(key);
|
||||||
@@ -456,7 +456,7 @@ static int32_t
|
|||||||
line_tmp = &line_tmp[ducky_get_command_len(line_tmp) + 1];
|
line_tmp = &line_tmp[ducky_get_command_len(line_tmp) + 1];
|
||||||
key |= ducky_get_keycode(bad_kb, line_tmp, true);
|
key |= ducky_get_keycode(bad_kb, line_tmp, true);
|
||||||
}
|
}
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
furi_hal_bt_hid_kb_press(key);
|
furi_hal_bt_hid_kb_press(key);
|
||||||
furi_delay_ms(bt_timeout);
|
furi_delay_ms(bt_timeout);
|
||||||
furi_hal_bt_hid_kb_release(key);
|
furi_hal_bt_hid_kb_release(key);
|
||||||
@@ -520,7 +520,7 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
|
|||||||
}
|
}
|
||||||
} while(ret > 0);
|
} while(ret > 0);
|
||||||
|
|
||||||
if (!bad_kb->bt) {
|
if(!bad_kb->bt) {
|
||||||
const char* line_tmp = furi_string_get_cstr(bad_kb->line);
|
const char* line_tmp = furi_string_get_cstr(bad_kb->line);
|
||||||
bool id_set = false; // Looking for ID command at first line
|
bool id_set = false; // Looking for ID command at first line
|
||||||
if(strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0) {
|
if(strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0) {
|
||||||
@@ -643,12 +643,12 @@ static int32_t bad_kb_worker(void* context) {
|
|||||||
|
|
||||||
FuriHalUsbInterface* usb_mode_prev = NULL;
|
FuriHalUsbInterface* usb_mode_prev = NULL;
|
||||||
GapPairing old_pairing_method = GapPairingNone;
|
GapPairing old_pairing_method = GapPairingNone;
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
bt_timeout = bt_hid_delays[LevelRssi39_0];
|
bt_timeout = bt_hid_delays[LevelRssi39_0];
|
||||||
bt_disconnect(bad_kb->bt);
|
bt_disconnect(bad_kb->bt);
|
||||||
furi_delay_ms(200);
|
furi_delay_ms(200);
|
||||||
bt_keys_storage_set_storage_path(bad_kb->bt, HID_BT_KEYS_STORAGE_PATH);
|
bt_keys_storage_set_storage_path(bad_kb->bt, HID_BT_KEYS_STORAGE_PATH);
|
||||||
if (!bt_set_profile(bad_kb->bt, BtProfileHidKeyboard)) {
|
if(!bt_set_profile(bad_kb->bt, BtProfileHidKeyboard)) {
|
||||||
FURI_LOG_E(TAG, "Failed to switch to HID profile");
|
FURI_LOG_E(TAG, "Failed to switch to HID profile");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -674,7 +674,7 @@ static int32_t bad_kb_worker(void* context) {
|
|||||||
FSAM_READ,
|
FSAM_READ,
|
||||||
FSOM_OPEN_EXISTING)) {
|
FSOM_OPEN_EXISTING)) {
|
||||||
if((ducky_script_preload(bad_kb, script_file)) && (bad_kb->st.line_nb > 0)) {
|
if((ducky_script_preload(bad_kb, script_file)) && (bad_kb->st.line_nb > 0)) {
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
worker_state = BadKbStateNotConnected; // Ready to run
|
worker_state = BadKbStateNotConnected; // Ready to run
|
||||||
} else {
|
} else {
|
||||||
if(furi_hal_hid_is_connected()) {
|
if(furi_hal_hid_is_connected()) {
|
||||||
@@ -750,7 +750,7 @@ static int32_t bad_kb_worker(void* context) {
|
|||||||
storage_file_seek(script_file, 0, true);
|
storage_file_seek(script_file, 0, true);
|
||||||
// extra time for PC to recognize Flipper as keyboard
|
// extra time for PC to recognize Flipper as keyboard
|
||||||
furi_thread_flags_wait(0, FuriFlagWaitAny, 1500);
|
furi_thread_flags_wait(0, FuriFlagWaitAny, 1500);
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
update_bt_timeout(bad_kb->bt);
|
update_bt_timeout(bad_kb->bt);
|
||||||
FURI_LOG_I(WORKER_TAG, "BLE Key timeout : %u", bt_timeout);
|
FURI_LOG_I(WORKER_TAG, "BLE Key timeout : %u", bt_timeout);
|
||||||
}
|
}
|
||||||
@@ -771,14 +771,14 @@ static int32_t bad_kb_worker(void* context) {
|
|||||||
break;
|
break;
|
||||||
} else if(flags & WorkerEvtToggle) {
|
} else if(flags & WorkerEvtToggle) {
|
||||||
worker_state = BadKbStateIdle; // Stop executing script
|
worker_state = BadKbStateIdle; // Stop executing script
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
furi_hal_bt_hid_kb_release_all();
|
furi_hal_bt_hid_kb_release_all();
|
||||||
} else {
|
} else {
|
||||||
furi_hal_hid_kb_release_all();
|
furi_hal_hid_kb_release_all();
|
||||||
}
|
}
|
||||||
} else if(flags & WorkerEvtDisconnect) {
|
} else if(flags & WorkerEvtDisconnect) {
|
||||||
worker_state = BadKbStateNotConnected; // Disconnected
|
worker_state = BadKbStateNotConnected; // Disconnected
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
furi_hal_bt_hid_kb_release_all();
|
furi_hal_bt_hid_kb_release_all();
|
||||||
} else {
|
} else {
|
||||||
furi_hal_hid_kb_release_all();
|
furi_hal_hid_kb_release_all();
|
||||||
@@ -803,7 +803,7 @@ static int32_t bad_kb_worker(void* context) {
|
|||||||
delay_val = 0;
|
delay_val = 0;
|
||||||
worker_state = BadKbStateIdle;
|
worker_state = BadKbStateIdle;
|
||||||
bad_kb->st.state = BadKbStateDone;
|
bad_kb->st.state = BadKbStateDone;
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
furi_hal_bt_hid_kb_release_all();
|
furi_hal_bt_hid_kb_release_all();
|
||||||
} else {
|
} else {
|
||||||
furi_hal_hid_kb_release_all();
|
furi_hal_hid_kb_release_all();
|
||||||
@@ -827,13 +827,13 @@ static int32_t bad_kb_worker(void* context) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
update_bt_timeout(bad_kb->bt);
|
update_bt_timeout(bad_kb->bt);
|
||||||
FURI_LOG_D(WORKER_TAG, "BLE Key timeout : %u", bt_timeout);
|
FURI_LOG_D(WORKER_TAG, "BLE Key timeout : %u", bt_timeout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bad_kb->bt) {
|
if(bad_kb->bt) {
|
||||||
// release all keys
|
// release all keys
|
||||||
bt_hid_hold_while_keyboard_buffer_full(6, 3000);
|
bt_hid_hold_while_keyboard_buffer_full(6, 3000);
|
||||||
|
|
||||||
|
|||||||
@@ -31,16 +31,14 @@ void bad_kb_scene_config_bt_on_enter(void* context) {
|
|||||||
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
||||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(var_item_list, "Keyboard layout", 0, NULL, bad_kb);
|
||||||
var_item_list, "Keyboard layout", 0, NULL, bad_kb);
|
|
||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(var_item_list, "Change adv name", 0, NULL, bad_kb);
|
||||||
var_item_list, "Change adv name", 0, NULL, bad_kb);
|
|
||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(var_item_list, "Change MAC address", 0, NULL, bad_kb);
|
||||||
var_item_list, "Change MAC address", 0, NULL, bad_kb);
|
|
||||||
|
|
||||||
variable_item_list_set_enter_callback(var_item_list, bad_kb_scene_config_bt_var_item_list_callback, bad_kb);
|
variable_item_list_set_enter_callback(
|
||||||
|
var_item_list, bad_kb_scene_config_bt_var_item_list_callback, bad_kb);
|
||||||
|
|
||||||
view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewConfigBt);
|
view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewConfigBt);
|
||||||
}
|
}
|
||||||
@@ -56,10 +54,11 @@ bool bad_kb_scene_config_bt_on_event(void* context, SceneManagerEvent event) {
|
|||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigLayout);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigLayout);
|
||||||
} else if(event.event == VarItemListIndexConnection) {
|
} else if(event.event == VarItemListIndexConnection) {
|
||||||
bad_kb_script_close(bad_kb->bad_kb_script);
|
bad_kb_script_close(bad_kb->bad_kb_script);
|
||||||
bad_kb->bad_kb_script = bad_kb_script_open(bad_kb->file_path, bad_kb->is_bt ? bad_kb->bt : NULL);
|
bad_kb->bad_kb_script =
|
||||||
|
bad_kb_script_open(bad_kb->file_path, bad_kb->is_bt ? bad_kb->bt : NULL);
|
||||||
bad_kb_script_set_keyboard_layout(bad_kb->bad_kb_script, bad_kb->keyboard_layout);
|
bad_kb_script_set_keyboard_layout(bad_kb->bad_kb_script, bad_kb->keyboard_layout);
|
||||||
scene_manager_previous_scene(bad_kb->scene_manager);
|
scene_manager_previous_scene(bad_kb->scene_manager);
|
||||||
if (bad_kb->is_bt) {
|
if(bad_kb->is_bt) {
|
||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigBt);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigBt);
|
||||||
} else {
|
} else {
|
||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigUsb);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigUsb);
|
||||||
@@ -68,8 +67,8 @@ bool bad_kb_scene_config_bt_on_event(void* context, SceneManagerEvent event) {
|
|||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigName);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigName);
|
||||||
} else if(event.event == VarItemListIndexMacAddress) {
|
} else if(event.event == VarItemListIndexMacAddress) {
|
||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigMac);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigMac);
|
||||||
// } else {
|
// } else {
|
||||||
// furi_crash("Unknown key type");
|
// furi_crash("Unknown key type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
static void bad_kb_scene_config_name_text_input_callback(void* context) {
|
static void bad_kb_scene_config_name_text_input_callback(void* context) {
|
||||||
BadKbApp* bad_kb = context;
|
BadKbApp* bad_kb = context;
|
||||||
|
|
||||||
view_dispatcher_send_custom_event(
|
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, BadKbAppCustomEventTextEditResult);
|
||||||
bad_kb->view_dispatcher, BadKbAppCustomEventTextEditResult);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bad_kb_scene_config_name_on_enter(void* context) {
|
void bad_kb_scene_config_name_on_enter(void* context) {
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ void bad_kb_scene_config_usb_on_enter(void* context) {
|
|||||||
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
||||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(var_item_list, "Keyboard layout", 0, NULL, bad_kb);
|
||||||
var_item_list, "Keyboard layout", 0, NULL, bad_kb);
|
|
||||||
|
|
||||||
variable_item_list_set_enter_callback(var_item_list, bad_kb_scene_config_usb_var_item_list_callback, bad_kb);
|
variable_item_list_set_enter_callback(
|
||||||
|
var_item_list, bad_kb_scene_config_usb_var_item_list_callback, bad_kb);
|
||||||
|
|
||||||
view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewConfigUsb);
|
view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewConfigUsb);
|
||||||
}
|
}
|
||||||
@@ -48,16 +48,17 @@ bool bad_kb_scene_config_usb_on_event(void* context, SceneManagerEvent event) {
|
|||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigLayout);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigLayout);
|
||||||
} else if(event.event == VarItemListIndexConnection) {
|
} else if(event.event == VarItemListIndexConnection) {
|
||||||
bad_kb_script_close(bad_kb->bad_kb_script);
|
bad_kb_script_close(bad_kb->bad_kb_script);
|
||||||
bad_kb->bad_kb_script = bad_kb_script_open(bad_kb->file_path, bad_kb->is_bt ? bad_kb->bt : NULL);
|
bad_kb->bad_kb_script =
|
||||||
|
bad_kb_script_open(bad_kb->file_path, bad_kb->is_bt ? bad_kb->bt : NULL);
|
||||||
bad_kb_script_set_keyboard_layout(bad_kb->bad_kb_script, bad_kb->keyboard_layout);
|
bad_kb_script_set_keyboard_layout(bad_kb->bad_kb_script, bad_kb->keyboard_layout);
|
||||||
scene_manager_previous_scene(bad_kb->scene_manager);
|
scene_manager_previous_scene(bad_kb->scene_manager);
|
||||||
if (bad_kb->is_bt) {
|
if(bad_kb->is_bt) {
|
||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigBt);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigBt);
|
||||||
} else {
|
} else {
|
||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigUsb);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigUsb);
|
||||||
}
|
}
|
||||||
// } else {
|
// } else {
|
||||||
// furi_crash("Unknown key type");
|
// furi_crash("Unknown key type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ void bad_kb_scene_file_select_on_enter(void* context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(bad_kb_file_select(bad_kb)) {
|
if(bad_kb_file_select(bad_kb)) {
|
||||||
bad_kb->bad_kb_script = bad_kb_script_open(bad_kb->file_path, bad_kb->is_bt ? bad_kb->bt : NULL);
|
bad_kb->bad_kb_script =
|
||||||
|
bad_kb_script_open(bad_kb->file_path, bad_kb->is_bt ? bad_kb->bt : NULL);
|
||||||
bad_kb_script_set_keyboard_layout(bad_kb->bad_kb_script, bad_kb->keyboard_layout);
|
bad_kb_script_set_keyboard_layout(bad_kb->bad_kb_script, bad_kb->keyboard_layout);
|
||||||
|
|
||||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneWork);
|
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneWork);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ bool bad_kb_scene_work_on_event(void* context, SceneManagerEvent event) {
|
|||||||
|
|
||||||
if(event.type == SceneManagerEventTypeCustom) {
|
if(event.type == SceneManagerEventTypeCustom) {
|
||||||
if(event.event == InputKeyLeft) {
|
if(event.event == InputKeyLeft) {
|
||||||
if (app->is_bt) {
|
if(app->is_bt) {
|
||||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigBt);
|
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigBt);
|
||||||
} else {
|
} else {
|
||||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigUsb);
|
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigUsb);
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ static void bad_kb_draw_callback(Canvas* canvas, void* _model) {
|
|||||||
elements_button_center(canvas, "Cancel");
|
elements_button_center(canvas, "Cancel");
|
||||||
}
|
}
|
||||||
|
|
||||||
if((model->state.state == BadKbStateNotConnected) ||
|
if((model->state.state == BadKbStateNotConnected) || (model->state.state == BadKbStateIdle) ||
|
||||||
(model->state.state == BadKbStateIdle) || (model->state.state == BadKbStateDone)) {
|
(model->state.state == BadKbStateDone)) {
|
||||||
elements_button_left(canvas, "Config");
|
elements_button_left(canvas, "Config");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,19 +204,13 @@ void bad_kb_set_button_callback(BadKb* bad_kb, BadKbButtonCallback callback, voi
|
|||||||
void bad_kb_set_file_name(BadKb* bad_kb, const char* name) {
|
void bad_kb_set_file_name(BadKb* bad_kb, const char* name) {
|
||||||
furi_assert(name);
|
furi_assert(name);
|
||||||
with_view_model(
|
with_view_model(
|
||||||
bad_kb->view,
|
bad_kb->view, BadKbModel * model, { strlcpy(model->file_name, name, MAX_NAME_LEN); }, true);
|
||||||
BadKbModel * model,
|
|
||||||
{ strlcpy(model->file_name, name, MAX_NAME_LEN); },
|
|
||||||
true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bad_kb_set_layout(BadKb* bad_kb, const char* layout) {
|
void bad_kb_set_layout(BadKb* bad_kb, const char* layout) {
|
||||||
furi_assert(layout);
|
furi_assert(layout);
|
||||||
with_view_model(
|
with_view_model(
|
||||||
bad_kb->view,
|
bad_kb->view, BadKbModel * model, { strlcpy(model->layout, layout, MAX_NAME_LEN); }, true);
|
||||||
BadKbModel * model,
|
|
||||||
{ strlcpy(model->layout, layout, MAX_NAME_LEN); },
|
|
||||||
true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bad_kb_set_state(BadKb* bad_kb, BadKbState* st) {
|
void bad_kb_set_state(BadKb* bad_kb, BadKbState* st) {
|
||||||
|
|||||||
@@ -77,8 +77,7 @@ static void bt_pin_code_hide(Bt* bt) {
|
|||||||
static bool bt_pin_code_verify_event_handler(Bt* bt, uint32_t pin) {
|
static bool bt_pin_code_verify_event_handler(Bt* bt, uint32_t pin) {
|
||||||
furi_assert(bt);
|
furi_assert(bt);
|
||||||
|
|
||||||
if (bt_get_profile_pairing_method(bt) == GapPairingNone)
|
if(bt_get_profile_pairing_method(bt) == GapPairingNone) return true;
|
||||||
return true;
|
|
||||||
|
|
||||||
notification_message(bt->notification, &sequence_display_backlight_on);
|
notification_message(bt->notification, &sequence_display_backlight_on);
|
||||||
FuriString* pin_str;
|
FuriString* pin_str;
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ static void gap_init_svc(Gap* gap) {
|
|||||||
} else if(gap->config->pairing_method == GapPairingPinCodeVerifyYesNo) {
|
} else if(gap->config->pairing_method == GapPairingPinCodeVerifyYesNo) {
|
||||||
aci_gap_set_io_capability(IO_CAP_DISPLAY_YES_NO);
|
aci_gap_set_io_capability(IO_CAP_DISPLAY_YES_NO);
|
||||||
keypress_supported = true;
|
keypress_supported = true;
|
||||||
} else if (gap->config->pairing_method == GapPairingNone) {
|
} else if(gap->config->pairing_method == GapPairingNone) {
|
||||||
// Just works pairing method (IOS accept it, it seems android and linux doesn't)
|
// Just works pairing method (IOS accept it, it seems android and linux doesn't)
|
||||||
conf_mitm = 0;
|
conf_mitm = 0;
|
||||||
conf_used_fixed_pin = 0;
|
conf_used_fixed_pin = 0;
|
||||||
@@ -387,8 +387,6 @@ static void gap_init_svc(Gap* gap) {
|
|||||||
keypress_supported = true;
|
keypress_supported = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Setup authentication
|
// Setup authentication
|
||||||
aci_gap_set_authentication_requirement(
|
aci_gap_set_authentication_requirement(
|
||||||
gap->config->bonding_mode,
|
gap->config->bonding_mode,
|
||||||
|
|||||||
Reference in New Issue
Block a user