 0444a80f19
			
		
	
	
		0444a80f19
		
			
		
	
	
	
	
		
			
			* Script command and character tables * Non-blocking stringdelay, docs update * altchar/altstring fix * Layout select UI fix * Remove debug print Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <furi_hal.h>
 | |
| #include <furi_hal_usb_hid.h>
 | |
| #include "ducky_script_i.h"
 | |
| 
 | |
| typedef struct {
 | |
|     char* name;
 | |
|     uint16_t keycode;
 | |
| } DuckyKey;
 | |
| 
 | |
| static const DuckyKey ducky_keys[] = {
 | |
|     {"CTRL-ALT", KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_ALT},
 | |
|     {"CTRL-SHIFT", KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT},
 | |
|     {"ALT-SHIFT", KEY_MOD_LEFT_ALT | KEY_MOD_LEFT_SHIFT},
 | |
|     {"ALT-GUI", KEY_MOD_LEFT_ALT | KEY_MOD_LEFT_GUI},
 | |
|     {"GUI-SHIFT", KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT},
 | |
|     {"GUI-CTRL", KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL},
 | |
| 
 | |
|     {"CTRL", KEY_MOD_LEFT_CTRL},
 | |
|     {"CONTROL", KEY_MOD_LEFT_CTRL},
 | |
|     {"SHIFT", KEY_MOD_LEFT_SHIFT},
 | |
|     {"ALT", KEY_MOD_LEFT_ALT},
 | |
|     {"GUI", KEY_MOD_LEFT_GUI},
 | |
|     {"WINDOWS", KEY_MOD_LEFT_GUI},
 | |
| 
 | |
|     {"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", HID_KEYBOARD_RETURN},
 | |
|     {"BREAK", HID_KEYBOARD_PAUSE},
 | |
|     {"PAUSE", HID_KEYBOARD_PAUSE},
 | |
|     {"CAPSLOCK", HID_KEYBOARD_CAPS_LOCK},
 | |
|     {"DELETE", HID_KEYBOARD_DELETE_FORWARD},
 | |
|     {"BACKSPACE", HID_KEYBOARD_DELETE},
 | |
|     {"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},
 | |
|     {"SCROLLLOCK", HID_KEYBOARD_SCROLL_LOCK},
 | |
|     {"SPACE", HID_KEYBOARD_SPACEBAR},
 | |
|     {"TAB", HID_KEYBOARD_TAB},
 | |
|     {"MENU", HID_KEYBOARD_APPLICATION},
 | |
|     {"APP", HID_KEYBOARD_APPLICATION},
 | |
| 
 | |
|     {"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},
 | |
| };
 | |
| 
 | |
| uint16_t ducky_get_keycode_by_name(const char* param) {
 | |
|     for(size_t i = 0; i < COUNT_OF(ducky_keys); i++) {
 | |
|         size_t key_cmd_len = strlen(ducky_keys[i].name);
 | |
|         if((strncmp(param, ducky_keys[i].name, key_cmd_len) == 0) &&
 | |
|            (ducky_is_line_end(param[key_cmd_len]))) {
 | |
|             return ducky_keys[i].keycode;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     return HID_KEYBOARD_NONE;
 | |
| }
 |