Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions logitacker/logitacker.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,17 @@ void logitacker_enter_mode_discovery() {

}

void logitacker_quit_mode_discovery() {
// even tough this next line shouldn't be necessary...
if (p_processor != NULL && p_processor->p_deinit_func != NULL) (*p_processor->p_deinit_func)(p_processor);
NRF_LOG_INFO("Quitting discovery mode");

p_processor = NULL;
m_state_local.mainstate = LOGITACKER_MODE_IDLE;

sprintf(g_logitacker_cli_name, "LOGITacker $ ");
}

void logitacker_injection_start_execution(bool execute) {
if (m_state_local.mainstate != LOGITACKER_MODE_INJECT) {
NRF_LOG_ERROR("Can't inject while not in injection mode");
Expand Down
4 changes: 3 additions & 1 deletion logitacker/logitacker.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ uint32_t logitacker_init();

void logitacker_enter_mode_discovery();

void logitacker_quit_mode_discovery();


void logitacker_enter_mode_prx(uint8_t *rf_address);

Expand Down Expand Up @@ -80,4 +82,4 @@ uint32_t logitacker_covert_channel_push_data(covert_channel_payload_data_t const



#endif
#endif
7 changes: 6 additions & 1 deletion logitacker/logitacker_cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -665,7 +665,7 @@ static void cmd_options_inject_lang(nrf_cli_t const *p_cli, size_t argc, char **

return;
} else {
nrf_cli_fprintf(p_cli, NRF_CLI_ERROR, "need language layout name as first argument (f.e. us, de, da)\r\n");
nrf_cli_fprintf(p_cli, NRF_CLI_ERROR, "need language layout name as first argument (f.e. us, de, da, fr)\r\n");

return;

Expand Down Expand Up @@ -852,6 +852,10 @@ static void cmd_discover_run(nrf_cli_t const * p_cli, size_t argc, char **argv)
logitacker_enter_mode_discovery();
}

static void cmd_discover_stop(nrf_cli_t const * p_cli, size_t argc, char **argv) {
logitacker_quit_mode_discovery();
}

static void cmd_discover(nrf_cli_t const * p_cli, size_t argc, char **argv)
{
if ((argc == 1) || nrf_cli_help_requested(p_cli))
Expand Down Expand Up @@ -1365,6 +1369,7 @@ NRF_CLI_CMD_REGISTER(testled, NULL, "Debug command to test code", cmd_testled);
NRF_CLI_CREATE_STATIC_SUBCMD_SET(m_sub_discover)
{
NRF_CLI_CMD(run, NULL, "Enter discover mode.", cmd_discover_run),
NRF_CLI_CMD(stop, NULL, "Quit discover mode.", cmd_discover_stop),
NRF_CLI_SUBCMD_SET_END
};
NRF_CLI_CMD_REGISTER(discover, &m_sub_discover, "discover", cmd_discover);
Expand Down
3 changes: 2 additions & 1 deletion logitacker/logitacker_keyboard_map.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,8 +313,9 @@ logitacker_keyboard_map_lang_t logitacker_keyboard_map_lang_from_str(char * lang
if (strcmp(lang_str, "de") == 0 || strcmp(lang_str, "DE") == 0 ) return LANGUAGE_LAYOUT_DE;
if (strcmp(lang_str, "us") == 0 || strcmp(lang_str, "US") == 0 ) return LANGUAGE_LAYOUT_US;
if (strcmp(lang_str, "da") == 0 || strcmp(lang_str, "DA") == 0 ) return LANGUAGE_LAYOUT_DA;
if (strcmp(lang_str, "fr") == 0 || strcmp(lang_str, "FR") == 0 ) return LANGUAGE_LAYOUT_FR;

lab_default:
NRF_LOG_WARNING("unknown language layout '%s' ... using 'us' as default", nrf_log_push(lang_str));
return LANGUAGE_LAYOUT_US; // default
}
}
105 changes: 105 additions & 0 deletions logitacker/logitacker_keyboard_map.h
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,10 @@ DEF_REPORT_SEQUENCE_NAMED(US_RALT_AND_EQUAL, DEF_REPORT(HI
DEF_REPORT_SEQUENCE_NAMED(SHIFT_AND_RIGHTBRACE_FOLLOWED_BY_SPACE, DEF_REPORT(HID_MOD_KEY_LEFT_SHIFT, HID_KEY_RIGHTBRACE), DEF_REPORT(HID_MOD_KEY_NONE, HID_KEY_NONE), DEF_REPORT(HID_MOD_KEY_NONE, HID_KEY_SPACE));
DEF_REPORT_SEQUENCE_NAMED(RALT_AND_RIGHTBRACE_FOLLOWED_BY_SPACE, DEF_REPORT(HID_MOD_KEY_LEFT_SHIFT, HID_KEY_RIGHTBRACE), DEF_REPORT(HID_MOD_KEY_NONE, HID_KEY_NONE), DEF_REPORT(HID_MOD_KEY_NONE, HID_KEY_SPACE));

// French
// this somehow breaks the compilation, anyway I don't think it's necessary
//DEF_REPORT_SEQUENCE_RALT_AND_EQUAL(RALT_AND_EQUAL, DEF_REPORT(HID_MOD_KEY_RIGHT_ALT, HID_KEY_EQUAL));

#define LAYOUT_US(PROC_FUNC) \
PROC_FUNC(L'\t', HID_REPORT_SEQUENCE_US_TAB) \
PROC_FUNC(L'\n', HID_REPORT_SEQUENCE_US_ENTER) \
Expand Down Expand Up @@ -711,6 +715,106 @@ DEF_REPORT_SEQUENCE_NAMED(RALT_AND_RIGHTBRACE_FOLLOWED_BY_SPACE, DEF_REP
PROC_FUNC(L'€', HID_REPORT_SEQUENCE_RALT_AND_E) \
PROC_FUNC(L'µ', HID_REPORT_SEQUENCE_RALT_AND_M) \

#define LAYOUT_FR(PROC_FUNC) \
PROC_FUNC(L'\t', HID_REPORT_SEQUENCE_US_TAB) \
PROC_FUNC(L'\n', HID_REPORT_SEQUENCE_US_ENTER) \
PROC_FUNC(L' ', HID_REPORT_SEQUENCE_US_SPACE) \
PROC_FUNC(L'!', HID_REPORT_SEQUENCE_US_SLASH) \
PROC_FUNC(L'@', HID_REPORT_SEQUENCE_RALT_AND_0) \
PROC_FUNC(L'\\', HID_REPORT_SEQUENCE_RALT_AND_8) \
PROC_FUNC(L'$', HID_REPORT_SEQUENCE_US_RIGHTBRACE) \
PROC_FUNC(L'%', HID_REPORT_SEQUENCE_US_SHIFT_AND_APOSTROPHE) \
PROC_FUNC(L'^', HID_REPORT_SEQUENCE_RALT_AND_9) \
PROC_FUNC(L'|', HID_REPORT_SEQUENCE_SHIFT_AND_102ND) \
PROC_FUNC(L'*', HID_REPORT_SEQUENCE_US_BACKSLASH) \
PROC_FUNC(L'(', HID_REPORT_SEQUENCE_US_5) \
PROC_FUNC(L'}', HID_REPORT_SEQUENCE_RALT_AND_EQUAL) \
PROC_FUNC(L']', HID_REPORT_SEQUENCE_RALT_AND_MINUS) \
PROC_FUNC(L',', HID_REPORT_SEQUENCE_US_M) \
PROC_FUNC(L'/', HID_REPORT_SEQUENCE_US_SHIFT_AND_DOT) \
PROC_FUNC(L'.', HID_REPORT_SEQUENCE_US_SHIFT_AND_COMMA) \
PROC_FUNC(L'&', HID_REPORT_SEQUENCE_US_1) \
PROC_FUNC(L'0', HID_REPORT_SEQUENCE_US_SHIFT_AND_0) \
PROC_FUNC(L'1', HID_REPORT_SEQUENCE_US_SHIFT_AND_1) \
PROC_FUNC(L'2', HID_REPORT_SEQUENCE_US_SHIFT_AND_2) \
PROC_FUNC(L'3', HID_REPORT_SEQUENCE_US_SHIFT_AND_3) \
PROC_FUNC(L'4', HID_REPORT_SEQUENCE_US_SHIFT_AND_4) \
PROC_FUNC(L'5', HID_REPORT_SEQUENCE_US_SHIFT_AND_5) \
PROC_FUNC(L'6', HID_REPORT_SEQUENCE_US_SHIFT_AND_6) \
PROC_FUNC(L'7', HID_REPORT_SEQUENCE_US_SHIFT_AND_7) \
PROC_FUNC(L'8', HID_REPORT_SEQUENCE_US_SHIFT_AND_8) \
PROC_FUNC(L'9', HID_REPORT_SEQUENCE_US_SHIFT_AND_9) \
PROC_FUNC(L'>', HID_REPORT_SEQUENCE_SHIFT_AND_102ND) \
PROC_FUNC(L'<', HID_REPORT_SEQUENCE_102ND) \
PROC_FUNC(L')', HID_REPORT_SEQUENCE_US_MINUS) \
PROC_FUNC(L'_', HID_REPORT_SEQUENCE_US_8) \
PROC_FUNC(L'-', HID_REPORT_SEQUENCE_US_6) \
PROC_FUNC(L'A', HID_REPORT_SEQUENCE_US_SHIFT_AND_Q) \
PROC_FUNC(L'B', HID_REPORT_SEQUENCE_US_SHIFT_AND_B) \
PROC_FUNC(L'C', HID_REPORT_SEQUENCE_US_SHIFT_AND_C) \
PROC_FUNC(L'D', HID_REPORT_SEQUENCE_US_SHIFT_AND_D) \
PROC_FUNC(L'E', HID_REPORT_SEQUENCE_US_SHIFT_AND_E) \
PROC_FUNC(L'F', HID_REPORT_SEQUENCE_US_SHIFT_AND_F) \
PROC_FUNC(L'G', HID_REPORT_SEQUENCE_US_SHIFT_AND_G) \
PROC_FUNC(L'H', HID_REPORT_SEQUENCE_US_SHIFT_AND_H) \
PROC_FUNC(L'I', HID_REPORT_SEQUENCE_US_SHIFT_AND_I) \
PROC_FUNC(L'J', HID_REPORT_SEQUENCE_US_SHIFT_AND_J) \
PROC_FUNC(L'K', HID_REPORT_SEQUENCE_US_SHIFT_AND_K) \
PROC_FUNC(L'L', HID_REPORT_SEQUENCE_US_SHIFT_AND_L) \
PROC_FUNC(L'M', HID_REPORT_SEQUENCE_US_SHIFT_AND_SEMICOLON) \
PROC_FUNC(L'N', HID_REPORT_SEQUENCE_US_SHIFT_AND_N) \
PROC_FUNC(L'O', HID_REPORT_SEQUENCE_US_SHIFT_AND_O) \
PROC_FUNC(L'P', HID_REPORT_SEQUENCE_US_SHIFT_AND_P) \
PROC_FUNC(L'Q', HID_REPORT_SEQUENCE_US_SHIFT_AND_A) \
PROC_FUNC(L'R', HID_REPORT_SEQUENCE_US_SHIFT_AND_R) \
PROC_FUNC(L'S', HID_REPORT_SEQUENCE_US_SHIFT_AND_S) \
PROC_FUNC(L'T', HID_REPORT_SEQUENCE_US_SHIFT_AND_T) \
PROC_FUNC(L'U', HID_REPORT_SEQUENCE_US_SHIFT_AND_U) \
PROC_FUNC(L'V', HID_REPORT_SEQUENCE_US_SHIFT_AND_V) \
PROC_FUNC(L'W', HID_REPORT_SEQUENCE_US_SHIFT_AND_Z) \
PROC_FUNC(L'X', HID_REPORT_SEQUENCE_US_SHIFT_AND_X) \
PROC_FUNC(L'Y', HID_REPORT_SEQUENCE_US_SHIFT_AND_Y) \
PROC_FUNC(L'Z', HID_REPORT_SEQUENCE_US_SHIFT_AND_W) \
PROC_FUNC(L'`', HID_REPORT_SEQUENCE_US_GRAVE) \
PROC_FUNC(L'~', HID_REPORT_SEQUENCE_US_SHIFT_AND_GRAVE) \
PROC_FUNC(L'?', HID_REPORT_SEQUENCE_US_SHIFT_AND_M) \
PROC_FUNC(L'+', HID_REPORT_SEQUENCE_US_SHIFT_AND_EQUAL) \
PROC_FUNC(L'=', HID_REPORT_SEQUENCE_US_EQUAL) \
PROC_FUNC(L'a', HID_REPORT_SEQUENCE_US_Q) \
PROC_FUNC(L'b', HID_REPORT_SEQUENCE_US_B) \
PROC_FUNC(L'c', HID_REPORT_SEQUENCE_US_C) \
PROC_FUNC(L'd', HID_REPORT_SEQUENCE_US_D) \
PROC_FUNC(L'e', HID_REPORT_SEQUENCE_US_E) \
PROC_FUNC(L'f', HID_REPORT_SEQUENCE_US_F) \
PROC_FUNC(L'g', HID_REPORT_SEQUENCE_US_G) \
PROC_FUNC(L'h', HID_REPORT_SEQUENCE_US_H) \
PROC_FUNC(L'i', HID_REPORT_SEQUENCE_US_I) \
PROC_FUNC(L'j', HID_REPORT_SEQUENCE_US_J) \
PROC_FUNC(L'k', HID_REPORT_SEQUENCE_US_K) \
PROC_FUNC(L'l', HID_REPORT_SEQUENCE_US_L) \
PROC_FUNC(L'm', HID_REPORT_SEQUENCE_US_SEMICOLON) \
PROC_FUNC(L'n', HID_REPORT_SEQUENCE_US_N) \
PROC_FUNC(L'o', HID_REPORT_SEQUENCE_US_O) \
PROC_FUNC(L'p', HID_REPORT_SEQUENCE_US_P) \
PROC_FUNC(L'q', HID_REPORT_SEQUENCE_US_A) \
PROC_FUNC(L'r', HID_REPORT_SEQUENCE_US_R) \
PROC_FUNC(L's', HID_REPORT_SEQUENCE_US_S) \
PROC_FUNC(L't', HID_REPORT_SEQUENCE_US_T) \
PROC_FUNC(L'u', HID_REPORT_SEQUENCE_US_U) \
PROC_FUNC(L'v', HID_REPORT_SEQUENCE_US_V) \
PROC_FUNC(L'w', HID_REPORT_SEQUENCE_US_Z) \
PROC_FUNC(L'x', HID_REPORT_SEQUENCE_US_X) \
PROC_FUNC(L'y', HID_REPORT_SEQUENCE_US_Y) \
PROC_FUNC(L'z', HID_REPORT_SEQUENCE_US_W) \
PROC_FUNC(L'#', HID_REPORT_SEQUENCE_RALT_AND_3) \
PROC_FUNC(L'[', HID_REPORT_SEQUENCE_RALT_AND_5) \
PROC_FUNC(L'{', HID_REPORT_SEQUENCE_RALT_AND_4) \
PROC_FUNC(L';', HID_REPORT_SEQUENCE_US_COMA) \
PROC_FUNC(L':', HID_REPORT_SEQUENCE_US_DOT) \
PROC_FUNC(L'\'', HID_REPORT_SEQUENCE_US_4) \
PROC_FUNC(L'"', HID_REPORT_SEQUENCE_US_3) \



#define LAYOUT_SWITCH_CASE(nameval, val) case nameval: {*p_out_report_seq=(void*)val; *out_rep_seq_len=sizeof(val) ;return NRF_SUCCESS; }

Expand All @@ -720,6 +824,7 @@ typedef enum {
LANGUAGE_LAYOUT_DE,
LANGUAGE_LAYOUT_US,
LANGUAGE_LAYOUT_DA,
LANGUAGE_LAYOUT_FR,
} logitacker_keyboard_map_lang_t;

typedef struct {
Expand Down
3 changes: 3 additions & 0 deletions logitacker/logitacker_options.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,9 @@ void logitacker_options_print(nrf_cli_t const * p_cli)
case LANGUAGE_LAYOUT_DA:
injection_lan_str = "da";
break;
case LANGUAGE_LAYOUT_FR:
injection_lan_str = "fr";
break;
}

char * workmode_str = "unknown";
Expand Down