ducky_script_keycodes.c 2.5 KB

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