mirror of
https://github.com/openstenoproject/qmk
synced 2024-11-22 00:14:38 +00:00
Add support for plover hid
This commit is contained in:
parent
de207b97fa
commit
11f50b4010
6 changed files with 115 additions and 0 deletions
|
@ -92,6 +92,11 @@ ifeq ($(MUSIC_ENABLE), yes)
|
|||
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(PLOVER_ENABLE)), yes)
|
||||
OPT_DEFS += -DPLOVER_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_plover.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(STENO_ENABLE)), yes)
|
||||
OPT_DEFS += -DSTENO_ENABLE
|
||||
VIRTSER_ENABLE ?= yes
|
||||
|
|
|
@ -66,6 +66,7 @@ OTHER_OPTION_NAMES = \
|
|||
KEYLOGGER_ENABLE \
|
||||
LCD_BACKLIGHT_ENABLE \
|
||||
MACROS_ENABLED \
|
||||
PLOVER_ENABLE \
|
||||
PS2_MOUSE_ENABLE \
|
||||
RAW_ENABLE \
|
||||
SWAP_HANDS_ENABLE \
|
||||
|
|
|
@ -313,6 +313,9 @@ typedef struct {
|
|||
#ifdef RAW_ENABLE
|
||||
usb_driver_config_t raw_driver;
|
||||
#endif
|
||||
#ifdef PLOVER_ENABLE
|
||||
usb_driver_config_t plover_driver;
|
||||
#endif
|
||||
#ifdef MIDI_ENABLE
|
||||
usb_driver_config_t midi_driver;
|
||||
#endif
|
||||
|
@ -350,6 +353,12 @@ static usb_driver_configs_t drivers = {
|
|||
.raw_driver = QMK_USB_DRIVER_CONFIG(RAW, 0, false),
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
# define PLOVER_IN_CAPACITY 4
|
||||
# define PLOVER_IN_MODE USB_EP_MODE_TYPE_INTR
|
||||
.plover_driver = QMK_USB_DRIVER_CONFIG(PLOVER, 0, false),
|
||||
#endif
|
||||
|
||||
#ifdef MIDI_ENABLE
|
||||
# define MIDI_STREAM_IN_CAPACITY 4
|
||||
# define MIDI_STREAM_OUT_CAPACITY 4
|
||||
|
|
|
@ -471,6 +471,11 @@ void EVENT_USB_Device_ConfigurationChanged(void) {
|
|||
ConfigSuccess &= Endpoint_ConfigureEndpoint((RAW_OUT_EPNUM | ENDPOINT_DIR_OUT), EP_TYPE_INTERRUPT, RAW_EPSIZE, 1);
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
/* Setup raw HID endpoints */
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint((PLOVER_IN_EPNUM | ENDPOINT_DIR_IN), EP_TYPE_INTERRUPT, PLOVER_EPSIZE, 1);
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
/* Setup console endpoint */
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint((CONSOLE_IN_EPNUM | ENDPOINT_DIR_IN), EP_TYPE_INTERRUPT, CONSOLE_EPSIZE, 1);
|
||||
|
|
|
@ -322,6 +322,29 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM RawReport[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
const USB_Descriptor_HIDReport_Datatype_t PROGMEM PloverReport[] = {
|
||||
0x06, 0x50, 0xff, // UsagePage (65360)
|
||||
0x0a, 0x56, 0x4c, // Usage (19542)
|
||||
0xa1, 0x02, // Collection (Logical)
|
||||
0x85, 0x01, // ReportID (1)
|
||||
0x25, 0x01, // LogicalMaximum (1)
|
||||
0x75, 0x01, // ReportSize (1)
|
||||
0x95, 0x40, // ReportCount (64)
|
||||
0x05, 0x09, // UsagePage (button)
|
||||
0x19, 0x00, // UsageMinimum (Button(0))
|
||||
0x29, 0x3f, // UsageMaximum (Button(63))
|
||||
0x81, 0x02, // Input (Variable)
|
||||
0x85, 0x02, // ReportID (2)
|
||||
0x26, 0xff, 0x00, // LogicalMaximum (255)
|
||||
0x75, 0x08, // ReportSize (8)
|
||||
0x19, 0x00, // UsageMinimum (Button(0))
|
||||
0x29, 0x3f, // UsageMaximum (Button(63))
|
||||
0x81, 0x02, // Input (Variable)
|
||||
0xc0, // EndCollection
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = {
|
||||
HID_RI_USAGE_PAGE(16, 0xFF31), // Vendor Defined (PJRC Teensy compatible)
|
||||
|
@ -554,6 +577,46 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
/*
|
||||
* Plover HID
|
||||
*/
|
||||
.Plover_Interface = {
|
||||
.Header = {
|
||||
.Size = sizeof(USB_Descriptor_Interface_t),
|
||||
.Type = DTYPE_Interface
|
||||
},
|
||||
.InterfaceNumber = PLOVER_INTERFACE,
|
||||
.AlternateSetting = 0x00,
|
||||
.TotalEndpoints = 1,
|
||||
.Class = HID_CSCP_HIDClass,
|
||||
.SubClass = HID_CSCP_NonBootSubclass,
|
||||
.Protocol = HID_CSCP_NonBootProtocol,
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
.Plover_HID = {
|
||||
.Header = {
|
||||
.Size = sizeof(USB_HID_Descriptor_HID_t),
|
||||
.Type = HID_DTYPE_HID
|
||||
},
|
||||
.HIDSpec = VERSION_BCD(1, 1, 1),
|
||||
.CountryCode = 0x00,
|
||||
.TotalReportDescriptors = 1,
|
||||
.HIDReportType = HID_DTYPE_Report,
|
||||
.HIDReportLength = sizeof(PloverReport)
|
||||
},
|
||||
.Plover_INEndpoint = {
|
||||
.Header = {
|
||||
.Size = sizeof(USB_Descriptor_Endpoint_t),
|
||||
.Type = DTYPE_Endpoint
|
||||
},
|
||||
.EndpointAddress = (ENDPOINT_DIR_IN | PLOVER_IN_EPNUM),
|
||||
.Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = RAW_EPSIZE,
|
||||
.PollingIntervalMS = 0x01
|
||||
},
|
||||
#endif
|
||||
|
||||
#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP)
|
||||
/*
|
||||
* Mouse
|
||||
|
@ -1148,6 +1211,14 @@ uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const
|
|||
break;
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
case PLOVER_INTERFACE:
|
||||
Address = &ConfigurationDescriptor.Plover_HID;
|
||||
Size = sizeof(USB_HID_Descriptor_HID_t);
|
||||
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
case CONSOLE_INTERFACE:
|
||||
Address = &ConfigurationDescriptor.Console_HID;
|
||||
|
@ -1205,6 +1276,14 @@ uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const
|
|||
break;
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
case PLOVER_INTERFACE:
|
||||
Address = &PloverReport;
|
||||
Size = sizeof(PloverReport);
|
||||
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
case CONSOLE_INTERFACE:
|
||||
Address = &ConsoleReport;
|
||||
|
|
|
@ -75,6 +75,13 @@ typedef struct {
|
|||
USB_Descriptor_Endpoint_t Raw_OUTEndpoint;
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
// Plover HID Interface
|
||||
USB_Descriptor_Interface_t Plover_Interface;
|
||||
USB_HID_Descriptor_HID_t Plover_HID;
|
||||
USB_Descriptor_Endpoint_t Plover_INEndpoint;
|
||||
#endif
|
||||
|
||||
#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP)
|
||||
// Mouse HID Interface
|
||||
USB_Descriptor_Interface_t Mouse_Interface;
|
||||
|
@ -162,6 +169,10 @@ enum usb_interfaces {
|
|||
RAW_INTERFACE,
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
PLOVER_INTERFACE,
|
||||
#endif
|
||||
|
||||
#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP)
|
||||
MOUSE_INTERFACE,
|
||||
#endif
|
||||
|
@ -223,6 +234,10 @@ enum usb_endpoints {
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef PLOVER_ENABLE
|
||||
PLOVER_IN_EPNUM = NEXT_EPNUM,
|
||||
#endif
|
||||
|
||||
#ifdef SHARED_EP_ENABLE
|
||||
SHARED_IN_EPNUM = NEXT_EPNUM,
|
||||
#endif
|
||||
|
@ -303,6 +318,7 @@ enum usb_endpoints {
|
|||
#define SHARED_EPSIZE 32
|
||||
#define MOUSE_EPSIZE 8
|
||||
#define RAW_EPSIZE 32
|
||||
#define PLOVER_EPSIZE 32
|
||||
#define CONSOLE_EPSIZE 32
|
||||
#define MIDI_STREAM_EPSIZE 64
|
||||
#define CDC_NOTIFICATION_EPSIZE 8
|
||||
|
|
Loading…
Reference in a new issue