Bluetooth Remote Additions (#1330)
* Update the HID Keycodes to pull from the library * Composite BLE Report Map, add consumer & mouse HID * Add Mouse & keyboard bt remote, fixed media remote * BT Keyboard remove long press shift * Fix usb hid modifier keys * Fixed misaligned bad usb keys * Fix keyboard app keys * Partial fix for bt app and linux * Update to work across platforms * Fix for report ids * BtHidApp: move variable from bss to model, cleanup naming. * FuriHal: add const to immutable data declaration Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
@@ -57,48 +57,48 @@ static const DuckyKey ducky_keys[] = {
|
||||
{"GUI", KEY_MOD_LEFT_GUI},
|
||||
{"WINDOWS", KEY_MOD_LEFT_GUI},
|
||||
|
||||
{"DOWNARROW", KEY_DOWN_ARROW},
|
||||
{"DOWN", KEY_DOWN_ARROW},
|
||||
{"LEFTARROW", KEY_LEFT_ARROW},
|
||||
{"LEFT", KEY_LEFT_ARROW},
|
||||
{"RIGHTARROW", KEY_RIGHT_ARROW},
|
||||
{"RIGHT", KEY_RIGHT_ARROW},
|
||||
{"UPARROW", KEY_UP_ARROW},
|
||||
{"UP", KEY_UP_ARROW},
|
||||
{"DOWNARROW", HID_KEYBOARD_DOWN_ARROW},
|
||||
{"DOWN", HID_KEYBOARD_DOWN_ARROW},
|
||||
{"LEFTARROW", HID_KEYBOARD_LEFT_ARROW},
|
||||
{"LEFT", HID_KEYBOARD_LEFT_ARROW},
|
||||
{"RIGHTARROW", HID_KEYBOARD_RIGHT_ARROW},
|
||||
{"RIGHT", HID_KEYBOARD_RIGHT_ARROW},
|
||||
{"UPARROW", HID_KEYBOARD_UP_ARROW},
|
||||
{"UP", HID_KEYBOARD_UP_ARROW},
|
||||
|
||||
{"ENTER", KEY_ENTER},
|
||||
{"BREAK", KEY_PAUSE},
|
||||
{"PAUSE", KEY_PAUSE},
|
||||
{"CAPSLOCK", KEY_CAPS_LOCK},
|
||||
{"DELETE", KEY_DELETE},
|
||||
{"BACKSPACE", KEY_BACKSPACE},
|
||||
{"END", KEY_END},
|
||||
{"ESC", KEY_ESC},
|
||||
{"ESCAPE", KEY_ESC},
|
||||
{"HOME", KEY_HOME},
|
||||
{"INSERT", KEY_INSERT},
|
||||
{"NUMLOCK", KEY_NUM_LOCK},
|
||||
{"PAGEUP", KEY_PAGE_UP},
|
||||
{"PAGEDOWN", KEY_PAGE_DOWN},
|
||||
{"PRINTSCREEN", KEY_PRINT},
|
||||
{"SCROLLOCK", KEY_SCROLL_LOCK},
|
||||
{"SPACE", KEY_SPACE},
|
||||
{"TAB", KEY_TAB},
|
||||
{"MENU", KEY_APPLICATION},
|
||||
{"APP", KEY_APPLICATION},
|
||||
{"ENTER", HID_KEYBOARD_RETURN},
|
||||
{"BREAK", HID_KEYBOARD_PAUSE},
|
||||
{"PAUSE", HID_KEYBOARD_PAUSE},
|
||||
{"CAPSLOCK", HID_KEYBOARD_CAPS_LOCK},
|
||||
{"DELETE", HID_KEYBOARD_DELETE},
|
||||
{"BACKSPACE", HID_KEYPAD_BACKSPACE},
|
||||
{"END", HID_KEYBOARD_END},
|
||||
{"ESC", HID_KEYBOARD_ESCAPE},
|
||||
{"ESCAPE", HID_KEYBOARD_ESCAPE},
|
||||
{"HOME", HID_KEYBOARD_HOME},
|
||||
{"INSERT", HID_KEYBOARD_INSERT},
|
||||
{"NUMLOCK", HID_KEYPAD_NUMLOCK},
|
||||
{"PAGEUP", HID_KEYBOARD_PAGE_UP},
|
||||
{"PAGEDOWN", HID_KEYBOARD_PAGE_DOWN},
|
||||
{"PRINTSCREEN", HID_KEYBOARD_PRINT_SCREEN},
|
||||
{"SCROLLOCK", HID_KEYBOARD_SCROLL_LOCK},
|
||||
{"SPACE", HID_KEYBOARD_SPACEBAR},
|
||||
{"TAB", HID_KEYBOARD_TAB},
|
||||
{"MENU", HID_KEYBOARD_APPLICATION},
|
||||
{"APP", HID_KEYBOARD_APPLICATION},
|
||||
|
||||
{"F1", KEY_F1},
|
||||
{"F2", KEY_F2},
|
||||
{"F3", KEY_F3},
|
||||
{"F4", KEY_F4},
|
||||
{"F5", KEY_F5},
|
||||
{"F6", KEY_F6},
|
||||
{"F7", KEY_F7},
|
||||
{"F8", KEY_F8},
|
||||
{"F9", KEY_F9},
|
||||
{"F10", KEY_F10},
|
||||
{"F11", KEY_F11},
|
||||
{"F12", KEY_F12},
|
||||
{"F1", HID_KEYBOARD_F1},
|
||||
{"F2", HID_KEYBOARD_F2},
|
||||
{"F3", HID_KEYBOARD_F3},
|
||||
{"F4", HID_KEYBOARD_F4},
|
||||
{"F5", HID_KEYBOARD_F5},
|
||||
{"F6", HID_KEYBOARD_F6},
|
||||
{"F7", HID_KEYBOARD_F7},
|
||||
{"F8", HID_KEYBOARD_F8},
|
||||
{"F9", HID_KEYBOARD_F9},
|
||||
{"F10", HID_KEYBOARD_F10},
|
||||
{"F11", HID_KEYBOARD_F11},
|
||||
{"F12", HID_KEYBOARD_F12},
|
||||
};
|
||||
|
||||
static const char ducky_cmd_comment[] = {"REM"};
|
||||
@@ -114,16 +114,16 @@ static const char ducky_cmd_altstr_1[] = {"ALTSTRING "};
|
||||
static const char ducky_cmd_altstr_2[] = {"ALTCODE "};
|
||||
|
||||
static const uint8_t numpad_keys[10] = {
|
||||
KEYPAD_0,
|
||||
KEYPAD_1,
|
||||
KEYPAD_2,
|
||||
KEYPAD_3,
|
||||
KEYPAD_4,
|
||||
KEYPAD_5,
|
||||
KEYPAD_6,
|
||||
KEYPAD_7,
|
||||
KEYPAD_8,
|
||||
KEYPAD_9,
|
||||
HID_KEYPAD_0,
|
||||
HID_KEYPAD_1,
|
||||
HID_KEYPAD_2,
|
||||
HID_KEYPAD_3,
|
||||
HID_KEYPAD_4,
|
||||
HID_KEYPAD_5,
|
||||
HID_KEYPAD_6,
|
||||
HID_KEYPAD_7,
|
||||
HID_KEYPAD_8,
|
||||
HID_KEYPAD_9,
|
||||
};
|
||||
|
||||
static bool ducky_get_number(const char* param, uint32_t* val) {
|
||||
@@ -149,8 +149,8 @@ static bool ducky_is_line_end(const char chr) {
|
||||
|
||||
static void ducky_numlock_on() {
|
||||
if((furi_hal_hid_get_led_state() & HID_KB_LED_NUM) == 0) {
|
||||
furi_hal_hid_kb_press(KEY_NUM_LOCK);
|
||||
furi_hal_hid_kb_release(KEY_NUM_LOCK);
|
||||
furi_hal_hid_kb_press(HID_KEYBOARD_LOCK_NUM_LOCK);
|
||||
furi_hal_hid_kb_release(HID_KEYBOARD_LOCK_NUM_LOCK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ static bool ducky_altchar(const char* charcode) {
|
||||
|
||||
FURI_LOG_I(WORKER_TAG, "char %s", charcode);
|
||||
|
||||
furi_hal_hid_kb_press(KEY_MOD_LEFT_ALT);
|
||||
furi_hal_hid_kb_press(HID_KEYBOARD_L_ALT);
|
||||
|
||||
while(!ducky_is_line_end(charcode[i])) {
|
||||
state = ducky_numpad_press(charcode[i]);
|
||||
@@ -178,7 +178,7 @@ static bool ducky_altchar(const char* charcode) {
|
||||
i++;
|
||||
}
|
||||
|
||||
furi_hal_hid_kb_release(KEY_MOD_LEFT_ALT);
|
||||
furi_hal_hid_kb_release(HID_KEYBOARD_L_ALT);
|
||||
return state;
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ static bool ducky_string(const char* param) {
|
||||
uint32_t i = 0;
|
||||
while(param[i] != '\0') {
|
||||
uint16_t keycode = HID_ASCII_TO_KEY(param[i]);
|
||||
if(keycode != KEY_NONE) {
|
||||
if(keycode != HID_KEYBOARD_NONE) {
|
||||
furi_hal_hid_kb_press(keycode);
|
||||
furi_hal_hid_kb_release(keycode);
|
||||
}
|
||||
@@ -294,7 +294,7 @@ static int32_t ducky_parse_line(BadUsbScript* bad_usb, string_t line) {
|
||||
} else {
|
||||
// Special keys + modifiers
|
||||
uint16_t key = ducky_get_keycode(line_tmp, false);
|
||||
if(key == KEY_NONE) return SCRIPT_STATE_ERROR;
|
||||
if(key == HID_KEYBOARD_NONE) return SCRIPT_STATE_ERROR;
|
||||
if((key & 0xFF00) != 0) {
|
||||
// It's a modifier key
|
||||
line_tmp = &line_tmp[ducky_get_command_len(line_tmp) + 1];
|
||||
|
Reference in New Issue
Block a user