ducky_script_keycodes.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include <furi_hal.h>
  2. #include <furi_hal_usb_hid.h>
  3. #include "ducky_script_i.h"
  4. typedef struct {
  5. char* name;
  6. uint16_t keycode;
  7. } DuckyKey;
  8. static const DuckyKey ducky_keys[] = {
  9. {"CTRL-ALT", KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_ALT},
  10. {"CTRL-SHIFT", KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT},
  11. {"ALT-SHIFT", KEY_MOD_LEFT_ALT | KEY_MOD_LEFT_SHIFT},
  12. {"ALT-GUI", KEY_MOD_LEFT_ALT | KEY_MOD_LEFT_GUI},
  13. {"GUI-SHIFT", KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT},
  14. {"GUI-CTRL", KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL},
  15. {"CTRL", KEY_MOD_LEFT_CTRL},
  16. {"CONTROL", KEY_MOD_LEFT_CTRL},
  17. {"SHIFT", KEY_MOD_LEFT_SHIFT},
  18. {"ALT", KEY_MOD_LEFT_ALT},
  19. {"GUI", KEY_MOD_LEFT_GUI},
  20. {"WINDOWS", KEY_MOD_LEFT_GUI},
  21. {"DOWNARROW", HID_KEYBOARD_DOWN_ARROW},
  22. {"DOWN", HID_KEYBOARD_DOWN_ARROW},
  23. {"LEFTARROW", HID_KEYBOARD_LEFT_ARROW},
  24. {"LEFT", HID_KEYBOARD_LEFT_ARROW},
  25. {"RIGHTARROW", HID_KEYBOARD_RIGHT_ARROW},
  26. {"RIGHT", HID_KEYBOARD_RIGHT_ARROW},
  27. {"UPARROW", HID_KEYBOARD_UP_ARROW},
  28. {"UP", HID_KEYBOARD_UP_ARROW},
  29. {"ENTER", HID_KEYBOARD_RETURN},
  30. {"BREAK", HID_KEYBOARD_PAUSE},
  31. {"PAUSE", HID_KEYBOARD_PAUSE},
  32. {"CAPSLOCK", HID_KEYBOARD_CAPS_LOCK},
  33. {"DELETE", HID_KEYBOARD_DELETE_FORWARD},
  34. {"BACKSPACE", HID_KEYBOARD_DELETE},
  35. {"END", HID_KEYBOARD_END},
  36. {"ESC", HID_KEYBOARD_ESCAPE},
  37. {"ESCAPE", HID_KEYBOARD_ESCAPE},
  38. {"HOME", HID_KEYBOARD_HOME},
  39. {"INSERT", HID_KEYBOARD_INSERT},
  40. {"NUMLOCK", HID_KEYPAD_NUMLOCK},
  41. {"PAGEUP", HID_KEYBOARD_PAGE_UP},
  42. {"PAGEDOWN", HID_KEYBOARD_PAGE_DOWN},
  43. {"PRINTSCREEN", HID_KEYBOARD_PRINT_SCREEN},
  44. {"SCROLLLOCK", HID_KEYBOARD_SCROLL_LOCK},
  45. {"SPACE", HID_KEYBOARD_SPACEBAR},
  46. {"TAB", HID_KEYBOARD_TAB},
  47. {"MENU", HID_KEYBOARD_APPLICATION},
  48. {"APP", HID_KEYBOARD_APPLICATION},
  49. {"F1", HID_KEYBOARD_F1},
  50. {"F2", HID_KEYBOARD_F2},
  51. {"F3", HID_KEYBOARD_F3},
  52. {"F4", HID_KEYBOARD_F4},
  53. {"F5", HID_KEYBOARD_F5},
  54. {"F6", HID_KEYBOARD_F6},
  55. {"F7", HID_KEYBOARD_F7},
  56. {"F8", HID_KEYBOARD_F8},
  57. {"F9", HID_KEYBOARD_F9},
  58. {"F10", HID_KEYBOARD_F10},
  59. {"F11", HID_KEYBOARD_F11},
  60. {"F12", HID_KEYBOARD_F12},
  61. };
  62. uint16_t ducky_get_keycode_by_name(const char* param) {
  63. for(size_t i = 0; i < COUNT_OF(ducky_keys); i++) {
  64. size_t key_cmd_len = strlen(ducky_keys[i].name);
  65. if((strncmp(param, ducky_keys[i].name, key_cmd_len) == 0) &&
  66. (ducky_is_line_end(param[key_cmd_len]))) {
  67. return ducky_keys[i].keycode;
  68. }
  69. }
  70. return HID_KEYBOARD_NONE;
  71. }