2#include "hid_usage_desktop.h"
3#include "hid_usage_button.h"
4#include "hid_usage_keyboard.h"
5#include "hid_usage_consumer.h"
6#include "hid_usage_led.h"
12#define HID_MANUF_PRODUCT_NAME_LEN 32
14#define HID_VID_DEFAULT 0x046D
15#define HID_PID_DEFAULT 0xC529
18#define HID_KB_MAX_KEYS 6
20#define HID_CONSUMER_MAX_KEYS 2
23#define HID_CONSUMER_BRIGHTNESS_INCREMENT 0x006F
24#define HID_CONSUMER_BRIGHTNESS_DECREMENT 0x0070
25#define HID_CONSUMER_FN_GLOBE 0x029D
27#define HID_KEYBOARD_NONE 0x00
31 KEY_MOD_LEFT_CTRL = (1 << 8),
32 KEY_MOD_LEFT_SHIFT = (1 << 9),
33 KEY_MOD_LEFT_ALT = (1 << 10),
34 KEY_MOD_LEFT_GUI = (1 << 11),
35 KEY_MOD_RIGHT_CTRL = (1 << 12),
36 KEY_MOD_RIGHT_SHIFT = (1 << 13),
37 KEY_MOD_RIGHT_ALT = (1 << 14),
38 KEY_MOD_RIGHT_GUI = (1 << 15),
42static const uint16_t hid_asciimap[] = {
75 HID_KEYBOARD_SPACEBAR,
76 HID_KEYBOARD_1 | KEY_MOD_LEFT_SHIFT,
77 HID_KEYBOARD_APOSTROPHE | KEY_MOD_LEFT_SHIFT,
78 HID_KEYBOARD_3 | KEY_MOD_LEFT_SHIFT,
79 HID_KEYBOARD_4 | KEY_MOD_LEFT_SHIFT,
80 HID_KEYBOARD_5 | KEY_MOD_LEFT_SHIFT,
81 HID_KEYBOARD_7 | KEY_MOD_LEFT_SHIFT,
82 HID_KEYBOARD_APOSTROPHE,
83 HID_KEYBOARD_9 | KEY_MOD_LEFT_SHIFT,
84 HID_KEYBOARD_0 | KEY_MOD_LEFT_SHIFT,
85 HID_KEYBOARD_8 | KEY_MOD_LEFT_SHIFT,
86 HID_KEYBOARD_EQUAL_SIGN | KEY_MOD_LEFT_SHIFT,
101 HID_KEYBOARD_SEMICOLON | KEY_MOD_LEFT_SHIFT,
102 HID_KEYBOARD_SEMICOLON,
103 HID_KEYBOARD_COMMA | KEY_MOD_LEFT_SHIFT,
104 HID_KEYBOARD_EQUAL_SIGN,
105 HID_KEYBOARD_DOT | KEY_MOD_LEFT_SHIFT,
106 HID_KEYBOARD_SLASH | KEY_MOD_LEFT_SHIFT,
107 HID_KEYBOARD_2 | KEY_MOD_LEFT_SHIFT,
108 HID_KEYBOARD_A | KEY_MOD_LEFT_SHIFT,
109 HID_KEYBOARD_B | KEY_MOD_LEFT_SHIFT,
110 HID_KEYBOARD_C | KEY_MOD_LEFT_SHIFT,
111 HID_KEYBOARD_D | KEY_MOD_LEFT_SHIFT,
112 HID_KEYBOARD_E | KEY_MOD_LEFT_SHIFT,
113 HID_KEYBOARD_F | KEY_MOD_LEFT_SHIFT,
114 HID_KEYBOARD_G | KEY_MOD_LEFT_SHIFT,
115 HID_KEYBOARD_H | KEY_MOD_LEFT_SHIFT,
116 HID_KEYBOARD_I | KEY_MOD_LEFT_SHIFT,
117 HID_KEYBOARD_J | KEY_MOD_LEFT_SHIFT,
118 HID_KEYBOARD_K | KEY_MOD_LEFT_SHIFT,
119 HID_KEYBOARD_L | KEY_MOD_LEFT_SHIFT,
120 HID_KEYBOARD_M | KEY_MOD_LEFT_SHIFT,
121 HID_KEYBOARD_N | KEY_MOD_LEFT_SHIFT,
122 HID_KEYBOARD_O | KEY_MOD_LEFT_SHIFT,
123 HID_KEYBOARD_P | KEY_MOD_LEFT_SHIFT,
124 HID_KEYBOARD_Q | KEY_MOD_LEFT_SHIFT,
125 HID_KEYBOARD_R | KEY_MOD_LEFT_SHIFT,
126 HID_KEYBOARD_S | KEY_MOD_LEFT_SHIFT,
127 HID_KEYBOARD_T | KEY_MOD_LEFT_SHIFT,
128 HID_KEYBOARD_U | KEY_MOD_LEFT_SHIFT,
129 HID_KEYBOARD_V | KEY_MOD_LEFT_SHIFT,
130 HID_KEYBOARD_W | KEY_MOD_LEFT_SHIFT,
131 HID_KEYBOARD_X | KEY_MOD_LEFT_SHIFT,
132 HID_KEYBOARD_Y | KEY_MOD_LEFT_SHIFT,
133 HID_KEYBOARD_Z | KEY_MOD_LEFT_SHIFT,
134 HID_KEYBOARD_OPEN_BRACKET,
135 HID_KEYBOARD_BACKSLASH,
136 HID_KEYBOARD_CLOSE_BRACKET,
137 HID_KEYBOARD_6 | KEY_MOD_LEFT_SHIFT,
138 HID_KEYBOARD_MINUS | KEY_MOD_LEFT_SHIFT,
139 HID_KEYBOARD_GRAVE_ACCENT,
166 HID_KEYBOARD_OPEN_BRACKET | KEY_MOD_LEFT_SHIFT,
167 HID_KEYBOARD_BACKSLASH | KEY_MOD_LEFT_SHIFT,
168 HID_KEYBOARD_CLOSE_BRACKET | KEY_MOD_LEFT_SHIFT,
169 HID_KEYBOARD_GRAVE_ACCENT | KEY_MOD_LEFT_SHIFT,
177 char manuf[HID_MANUF_PRODUCT_NAME_LEN];
178 char product[HID_MANUF_PRODUCT_NAME_LEN];
181typedef void (*HidStateCallback)(
bool state,
void* context);
184#define HID_ASCII_TO_KEY(x) (((uint8_t)x < 128) ? (hid_asciimap[(uint8_t)x]) : HID_KEYBOARD_NONE)
187enum HidKeyboardLeds {
188 HID_KB_LED_NUM = (1 << 0),
189 HID_KB_LED_CAPS = (1 << 1),
190 HID_KB_LED_SCROLL = (1 << 2),
194enum HidMouseButtons {
195 HID_MOUSE_BTN_LEFT = (1 << 0),
196 HID_MOUSE_BTN_RIGHT = (1 << 1),
197 HID_MOUSE_BTN_WHEEL = (1 << 2),
204bool furi_hal_hid_is_connected(
void);
210uint8_t furi_hal_hid_get_led_state(
void);
217void furi_hal_hid_set_state_callback(HidStateCallback cb,
void* ctx);
223bool furi_hal_hid_kb_press(uint16_t button);
229bool furi_hal_hid_kb_release(uint16_t button);
234bool furi_hal_hid_kb_release_all(
void);
241bool furi_hal_hid_mouse_move(int8_t dx, int8_t dy);
247bool furi_hal_hid_mouse_press(uint8_t button);
253bool furi_hal_hid_mouse_release(uint8_t button);
259bool furi_hal_hid_mouse_scroll(int8_t delta);
265bool furi_hal_hid_consumer_key_press(uint16_t button);
271bool furi_hal_hid_consumer_key_release(uint16_t button);
276bool furi_hal_hid_consumer_key_release_all(
void);
Definition furi_hal_usb_hid.h:173