74 lines
1.8 KiB
C
74 lines
1.8 KiB
C
#ifndef __KEY_ACTION_H__
|
|
#define __KEY_ACTION_H__
|
|
|
|
// Includes:
|
|
|
|
#include <stdint.h>
|
|
#include "attributes.h"
|
|
#include "lufa/HIDClassCommon.h"
|
|
#include "usb_composite_device.h"
|
|
#include "module.h"
|
|
#include "config_parser/parse_keymap.h"
|
|
|
|
// Typedefs:
|
|
|
|
typedef enum {
|
|
KeyActionType_None,
|
|
KeyActionType_Keystroke,
|
|
KeyActionType_Mouse,
|
|
KeyActionType_SwitchLayer,
|
|
KeyActionType_SwitchKeymap,
|
|
KeyActionType_PlayMacro,
|
|
KeyActionType_Test,
|
|
} key_action_type_t;
|
|
|
|
typedef enum {
|
|
KeystrokeType_Basic,
|
|
KeystrokeType_Media,
|
|
KeystrokeType_System,
|
|
} keystroke_type_t;
|
|
|
|
typedef enum {
|
|
SwitchLayerMode_Hold,
|
|
SwitchLayerMode_HoldAndDoubleTapToggle,
|
|
SwitchLayerMode_Toggle,
|
|
} switch_layer_mode_t;
|
|
|
|
typedef enum {
|
|
MouseButton_Left = 1 << 0,
|
|
MouseButton_Right = 1 << 1,
|
|
MouseButton_Middle = 1 << 2,
|
|
MouseButton_4 = 1 << 3,
|
|
MouseButton_5 = 1 << 4,
|
|
MouseButton_6 = 1 << 5,
|
|
} mouse_button_t;
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
union {
|
|
struct {
|
|
keystroke_type_t keystrokeType;
|
|
uint8_t secondaryRole;
|
|
uint8_t modifiers;
|
|
uint16_t scancode;
|
|
} ATTR_PACKED keystroke;
|
|
serialized_mouse_action_t mouseAction;
|
|
struct {
|
|
switch_layer_mode_t mode;
|
|
uint8_t layer;
|
|
} ATTR_PACKED switchLayer;
|
|
struct {
|
|
uint8_t keymapId;
|
|
} ATTR_PACKED switchKeymap;
|
|
struct {
|
|
uint8_t macroId;
|
|
} ATTR_PACKED playMacro;
|
|
};
|
|
} ATTR_PACKED key_action_t;
|
|
|
|
// Variables:
|
|
|
|
void UpdateActiveUsbReports(void);
|
|
|
|
#endif
|