forked from mirrors/qmk_userspace
		
	add a build option: USB_EXTRA_ENABLE
This commit is contained in:
		
					parent
					
						
							
								7272c65d3d
							
						
					
				
			
			
				commit
				
					
						6b0c939d72
					
				
			
		
					 7 changed files with 124 additions and 38 deletions
				
			
		| 
						 | 
				
			
			@ -53,15 +53,18 @@ SRC =	tmk.c \
 | 
			
		|||
	layer.c \
 | 
			
		||||
	key_process.c \
 | 
			
		||||
	usb_keyboard.c \
 | 
			
		||||
	usb_mouse.c \
 | 
			
		||||
	usb_debug.c \
 | 
			
		||||
	usb_extra.c \
 | 
			
		||||
	usb.c \
 | 
			
		||||
	jump_bootloader.c \
 | 
			
		||||
	print.c \
 | 
			
		||||
	timer.c \
 | 
			
		||||
	util.c
 | 
			
		||||
SRC +=	$(TARGET_SRC)
 | 
			
		||||
 | 
			
		||||
# Option modules
 | 
			
		||||
ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE)
 | 
			
		||||
    SRC += usb_mouse.c
 | 
			
		||||
endif
 | 
			
		||||
ifdef MOUSEKEY_ENABLE
 | 
			
		||||
    SRC += mousekey.c
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			@ -69,6 +72,17 @@ ifdef PS2_MOUSE_ENABLE
 | 
			
		|||
    SRC += ps2.c \
 | 
			
		||||
	   ps2_mouse.c
 | 
			
		||||
endif
 | 
			
		||||
ifdef USB_EXTRA_ENABLE
 | 
			
		||||
    SRC += usb_extra.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ALL_SRC = $(SRC)
 | 
			
		||||
ALL_SRC += usb_mouse.c \
 | 
			
		||||
	   mousekey.c \
 | 
			
		||||
	   ps2.c \
 | 
			
		||||
	   ps2_mouse.c \
 | 
			
		||||
	   usb_extra.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# C source file search path
 | 
			
		||||
VPATH = $(TARGET_DIR):$(COMMON_DIR)
 | 
			
		||||
| 
						 | 
				
			
			@ -127,15 +141,21 @@ CSTANDARD = -std=gnu99
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
OPT_DEFS =
 | 
			
		||||
ifdef USB_NKRO_ENABLE
 | 
			
		||||
    OPT_DEFS += -DUSB_NKRO_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
ifdef MOUSEKEY_ENABLE
 | 
			
		||||
    OPT_DEFS += -DMOUSEKEY_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
ifdef PS2_MOUSE_ENABLE
 | 
			
		||||
    OPT_DEFS += -DPS2_MOUSE_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
ifdef USB_EXTRA_ENABLE
 | 
			
		||||
    OPT_DEFS += -DUSB_EXTRA_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
ifdef USB_NKRO_ENABLE
 | 
			
		||||
    OPT_DEFS += -DUSB_NKRO_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE)
 | 
			
		||||
    OPT_DEFS += -DUSB_MOUSE_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Place -D or -U options here for C sources
 | 
			
		||||
CDEFS = -DF_CPU=$(F_CPU)UL
 | 
			
		||||
| 
						 | 
				
			
			@ -622,11 +642,11 @@ clean_list :
 | 
			
		|||
	$(REMOVE) $(TARGET).map
 | 
			
		||||
	$(REMOVE) $(TARGET).sym
 | 
			
		||||
	$(REMOVE) $(TARGET).lss
 | 
			
		||||
	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
 | 
			
		||||
	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
 | 
			
		||||
	$(REMOVE) $(SRC:.c=.s)
 | 
			
		||||
	$(REMOVE) $(SRC:.c=.d)
 | 
			
		||||
	$(REMOVE) $(SRC:.c=.i)
 | 
			
		||||
	$(REMOVE) $(ALL_SRC:%.c=$(OBJDIR)/%.o)
 | 
			
		||||
	$(REMOVE) $(ALL_SRC:%.c=$(OBJDIR)/%.lst)
 | 
			
		||||
	$(REMOVE) $(ALL_SRC:.c=.s)
 | 
			
		||||
	$(REMOVE) $(ALL_SRC:.c=.d)
 | 
			
		||||
	$(REMOVE) $(ALL_SRC:.c=.i)
 | 
			
		||||
	$(REMOVEDIR) .dep
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,10 +69,12 @@ MCU = at90usb1286      # Teensy++ 2.0
 | 
			
		|||
F_CPU = 16000000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Options
 | 
			
		||||
#     comment out to disable
 | 
			
		||||
USB_NKRO_ENABLE = yes
 | 
			
		||||
MOUSEKEY_ENABLE = yes
 | 
			
		||||
#PS2_MOUSE_ENABLE = yes
 | 
			
		||||
# Build Options
 | 
			
		||||
#   comment out to disable the options.
 | 
			
		||||
MOUSEKEY_ENABLE = yes	# Mouse keys
 | 
			
		||||
#PS2_MOUSE_ENABLE = yes	# PS/2 mouse(TrackPoint) support
 | 
			
		||||
USB_EXTRA_ENABLE = yes	# Enhanced feature for Windows(Audio control and System control)
 | 
			
		||||
USB_NKRO_ENABLE = yes	# USB Nkey Rollover
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
include $(COMMON_DIR)/Makefile.common
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,8 +8,6 @@
 | 
			
		|||
#include "util.h"
 | 
			
		||||
#include "jump_bootloader.h"
 | 
			
		||||
#include "usb_keyboard.h"
 | 
			
		||||
#include "usb_mouse.h"
 | 
			
		||||
#include "usb_extra.h"
 | 
			
		||||
#include "usb_keycodes.h"
 | 
			
		||||
#include "usb.h"
 | 
			
		||||
#include "layer.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +20,12 @@
 | 
			
		|||
#ifdef PS2_MOUSE_ENABLE
 | 
			
		||||
#   include "ps2_mouse.h"
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
#   include "usb_extra.h"
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
#   include "usb_mouse.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// TODO: refactoring
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +71,7 @@ void proc_matrix(void) {
 | 
			
		|||
#endif
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
            // audio control & system control
 | 
			
		||||
            else if (code == KB_MUTE) {
 | 
			
		||||
                usb_extra_audio_send(AUDIO_MUTE);
 | 
			
		||||
| 
						 | 
				
			
			@ -88,6 +93,7 @@ void proc_matrix(void) {
 | 
			
		|||
                }
 | 
			
		||||
                _delay_ms(1000);
 | 
			
		||||
            }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
            // normal keys
 | 
			
		||||
            else {
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +265,9 @@ void proc_matrix(void) {
 | 
			
		|||
                print("usb_keyboard_protocol:"); phex(usb_keyboard_protocol); print("\n");
 | 
			
		||||
                print("usb_keyboard_idle_config:"); phex(usb_keyboard_idle_config); print("\n");
 | 
			
		||||
                print("usb_keyboard_idle_count:"); phex(usb_keyboard_idle_count); print("\n");
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
                print("usb_mouse_protocol:"); phex(usb_mouse_protocol); print("\n");
 | 
			
		||||
#endif
 | 
			
		||||
                if (usb_keyboard_nkro) print("USB_NKRO: enabled\n"); else print("USB_NKRO: disabled\n");
 | 
			
		||||
                _delay_ms(500);
 | 
			
		||||
                break;
 | 
			
		||||
| 
						 | 
				
			
			@ -267,13 +275,16 @@ void proc_matrix(void) {
 | 
			
		|||
                usb_keyboard_clear_report();
 | 
			
		||||
                usb_keyboard_send();
 | 
			
		||||
                usb_keyboard_protocol = !usb_keyboard_protocol;
 | 
			
		||||
                usb_mouse_protocol = !usb_mouse_protocol;
 | 
			
		||||
                print("keyboard protcol: ");
 | 
			
		||||
                if (usb_keyboard_protocol) print("report"); else print("boot");
 | 
			
		||||
                print("\n");
 | 
			
		||||
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
                usb_mouse_protocol = !usb_mouse_protocol;
 | 
			
		||||
                print("mouse protcol: ");
 | 
			
		||||
                if (usb_mouse_protocol) print("report"); else print("boot");
 | 
			
		||||
                print("\n");
 | 
			
		||||
#endif
 | 
			
		||||
                _delay_ms(1000);
 | 
			
		||||
                break;
 | 
			
		||||
#ifdef USB_NKRO_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -285,6 +296,7 @@ void proc_matrix(void) {
 | 
			
		|||
                _delay_ms(1000);
 | 
			
		||||
                break;
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
            case KB_ESC:
 | 
			
		||||
                usb_keyboard_clear_report();
 | 
			
		||||
                usb_keyboard_send();
 | 
			
		||||
| 
						 | 
				
			
			@ -295,6 +307,7 @@ void proc_matrix(void) {
 | 
			
		|||
                }
 | 
			
		||||
                _delay_ms(1000);
 | 
			
		||||
                break;
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,10 +69,13 @@ MCU = atmega32u4       # Teensy 2.0
 | 
			
		|||
F_CPU = 16000000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Options
 | 
			
		||||
#     comment out to disable
 | 
			
		||||
#USB_NKRO_ENABLE = yes
 | 
			
		||||
MOUSEKEY_ENABLE = yes
 | 
			
		||||
PS2_MOUSE_ENABLE = yes
 | 
			
		||||
# Build Options
 | 
			
		||||
#   comment out to disable the options.
 | 
			
		||||
#
 | 
			
		||||
MOUSEKEY_ENABLE = yes	# Mouse keys
 | 
			
		||||
PS2_MOUSE_ENABLE = yes	# PS/2 mouse(TrackPoint) support
 | 
			
		||||
USB_EXTRA_ENABLE = yes	# Enhanced feature for Windows(Audio control and System control)
 | 
			
		||||
#USB_NKRO_ENABLE = yes	# USB Nkey Rollover
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
include $(COMMON_DIR)/Makefile.common
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
#define CONFIG_H
 | 
			
		||||
 | 
			
		||||
#define VENDOR_ID       0xFEED
 | 
			
		||||
#define PRODUCT_ID      0xBEEF
 | 
			
		||||
#define PRODUCT_ID      0xBEE0
 | 
			
		||||
#define MANUFACTURER    t.m.k.
 | 
			
		||||
#define PRODUCT         Macway mod
 | 
			
		||||
#define DESCRIPTION     t.m.k. keyboard firmware for Macway mod
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										60
									
								
								usb.c
									
										
									
									
									
								
							
							
						
						
									
										60
									
								
								usb.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -91,9 +91,17 @@ bool suspend = false;
 | 
			
		|||
static const uint8_t PROGMEM endpoint_config_table[] = {
 | 
			
		||||
	// enable, UECFG0X(type, direction), UECFG1X(size, bank, allocation)
 | 
			
		||||
	1, EP_TYPE_INTERRUPT_IN,  EP_SIZE(KBD_SIZE)      | KBD_BUFFER,      // 1
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
	1, EP_TYPE_INTERRUPT_IN,  EP_SIZE(MOUSE_SIZE)    | MOUSE_BUFFER,    // 2
 | 
			
		||||
#else
 | 
			
		||||
        0,                                                                  // 2
 | 
			
		||||
#endif
 | 
			
		||||
	1, EP_TYPE_INTERRUPT_IN,  EP_SIZE(DEBUG_TX_SIZE) | DEBUG_TX_BUFFER, // 3
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
	1, EP_TYPE_INTERRUPT_IN,  EP_SIZE(EXTRA_SIZE)    | EXTRA_BUFFER,    // 4
 | 
			
		||||
#else
 | 
			
		||||
        0,                                                                  // 4
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef USB_NKRO_ENABLE
 | 
			
		||||
	1, EP_TYPE_INTERRUPT_IN,  EP_SIZE(KBD2_SIZE)     | KBD2_BUFFER,     // 5
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -205,6 +213,7 @@ static uint8_t PROGMEM keyboard2_hid_report_desc[] = {
 | 
			
		|||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
// Mouse Protocol 1, HID 1.11 spec, Appendix B, page 59-60, with wheel extension
 | 
			
		||||
// http://www.microchip.com/forums/tm.aspx?high=&m=391435&mpage=1#391521
 | 
			
		||||
// http://www.keil.com/forum/15671/
 | 
			
		||||
| 
						 | 
				
			
			@ -281,6 +290,7 @@ static uint8_t PROGMEM mouse_hid_report_desc[] = {
 | 
			
		|||
    0xc0,              //   END_COLLECTION
 | 
			
		||||
    0xc0               // END_COLLECTION
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static uint8_t PROGMEM debug_hid_report_desc[] = {
 | 
			
		||||
	0x06, 0x31, 0xFF,			// Usage Page 0xFF31 (vendor defined)
 | 
			
		||||
| 
						 | 
				
			
			@ -295,6 +305,7 @@ static uint8_t PROGMEM debug_hid_report_desc[] = {
 | 
			
		|||
	0xC0					// end collection
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
// audio controls & system controls
 | 
			
		||||
// http://www.microsoft.com/whdc/archive/w2kbd.mspx
 | 
			
		||||
static uint8_t PROGMEM extra_hid_report_desc[] = {
 | 
			
		||||
| 
						 | 
				
			
			@ -331,17 +342,36 @@ static uint8_t PROGMEM extra_hid_report_desc[] = {
 | 
			
		|||
    0x81, 0x07,                    //   INPUT (Cnst,Var,Rel)
 | 
			
		||||
    0xc0                           // END_COLLECTION
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define KBD_HID_DESC_OFFSET	(9+(9+9+7)*0+9)
 | 
			
		||||
#define MOUSE_HID_DESC_OFFSET	(9+(9+9+7)*1+9)
 | 
			
		||||
#define DEBUG_HID_DESC_OFFSET	(9+(9+9+7)*2+9)
 | 
			
		||||
#define EXTRA_HID_DESC_OFFSET	(9+(9+9+7)*3+9)
 | 
			
		||||
#ifdef USB_NKRO_ENABLE
 | 
			
		||||
#   define NUM_INTERFACES	5
 | 
			
		||||
#   define KBD2_HID_DESC_OFFSET	(9+(9+9+7)*4+9)
 | 
			
		||||
#else
 | 
			
		||||
#   define NUM_INTERFACES	4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define KBD_HID_DESC_NUM                0
 | 
			
		||||
#define KBD_HID_DESC_OFFSET             (9+(9+9+7)*KBD_HID_DESC_NUM+9)
 | 
			
		||||
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
#   define MOUSE_HID_DESC_NUM           (KBD_HID_DESC_NUM + 1)
 | 
			
		||||
#   define MOUSE_HID_DESC_OFFSET        (9+(9+9+7)*MOUSE_HID_DESC_NUM+9)
 | 
			
		||||
#else
 | 
			
		||||
#   define MOUSE_HID_DESC_NUM           (KBD_HID_DESC_NUM + 0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define DEBUG_HID_DESC_NUM              (MOUSE_HID_DESC_NUM + 1)
 | 
			
		||||
#define DEBUG_HID_DESC_OFFSET           (9+(9+9+7)*DEBUG_HID_DESC_NUM+9)
 | 
			
		||||
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
#   define EXTRA_HID_DESC_NUM           (DEBUG_HID_DESC_NUM + 1)
 | 
			
		||||
#   define EXTRA_HID_DESC_OFFSET        (9+(9+9+7)*EXTRA_HID_DESC_NUM+9)
 | 
			
		||||
#else
 | 
			
		||||
#   define EXTRA_HID_DESC_NUM           (DEBUG_HID_DESC_NUM + 0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USB_NKRO_ENABLE
 | 
			
		||||
#   define KBD2_HID_DESC_NUM            (EXTRA_HID_DESC_NUM + 1)
 | 
			
		||||
#   define KBD2_HID_DESC_OFFSET         (9+(9+9+7)*EXTRA_HID_DESC_NUM+9)
 | 
			
		||||
#else
 | 
			
		||||
#   define KBD2_HID_DESC_NUM            (EXTRA_HID_DESC_NUM + 0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define NUM_INTERFACES                  (KBD2_HID_DESC_NUM + 1)
 | 
			
		||||
#define CONFIG1_DESC_SIZE               (9+(9+9+7)*NUM_INTERFACES)
 | 
			
		||||
static uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
 | 
			
		||||
	// configuration descriptor, USB spec 9.6.3, page 264-266, Table 9-10
 | 
			
		||||
| 
						 | 
				
			
			@ -382,6 +412,7 @@ static uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
 | 
			
		|||
	KBD_SIZE, 0,				// wMaxPacketSize
 | 
			
		||||
	10,					// bInterval
 | 
			
		||||
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
	// interface descriptor, USB spec 9.6.5, page 267-269, Table 9-12
 | 
			
		||||
	9,					// bLength
 | 
			
		||||
	4,					// bDescriptorType
 | 
			
		||||
| 
						 | 
				
			
			@ -413,6 +444,7 @@ static uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
 | 
			
		|||
	0x03,					// bmAttributes (0x03=intr)
 | 
			
		||||
	MOUSE_SIZE, 0,				// wMaxPacketSize
 | 
			
		||||
	1,					// bInterval
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// interface descriptor, USB spec 9.6.5, page 267-269, Table 9-12
 | 
			
		||||
	9,					// bLength
 | 
			
		||||
| 
						 | 
				
			
			@ -441,6 +473,7 @@ static uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
 | 
			
		|||
	DEBUG_TX_SIZE, 0,			// wMaxPacketSize
 | 
			
		||||
	1,					// bInterval
 | 
			
		||||
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
	// interface descriptor, USB spec 9.6.5, page 267-269, Table 9-12
 | 
			
		||||
	9,					// bLength
 | 
			
		||||
	4,					// bDescriptorType
 | 
			
		||||
| 
						 | 
				
			
			@ -467,6 +500,7 @@ static uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
 | 
			
		|||
	0x03,					// bmAttributes (0x03=intr)
 | 
			
		||||
	EXTRA_SIZE, 0,				// wMaxPacketSize
 | 
			
		||||
	10,					// bInterval
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USB_NKRO_ENABLE
 | 
			
		||||
	// interface descriptor, USB spec 9.6.5, page 267-269, Table 9-12
 | 
			
		||||
| 
						 | 
				
			
			@ -537,12 +571,16 @@ static struct descriptor_list_struct {
 | 
			
		|||
        // HID/REPORT descriptors
 | 
			
		||||
	{0x2100, KBD_INTERFACE, config1_descriptor+KBD_HID_DESC_OFFSET, 9},
 | 
			
		||||
	{0x2200, KBD_INTERFACE, keyboard_hid_report_desc, sizeof(keyboard_hid_report_desc)},
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
	{0x2100, MOUSE_INTERFACE, config1_descriptor+MOUSE_HID_DESC_OFFSET, 9},
 | 
			
		||||
	{0x2200, MOUSE_INTERFACE, mouse_hid_report_desc, sizeof(mouse_hid_report_desc)},
 | 
			
		||||
#endif
 | 
			
		||||
	{0x2100, DEBUG_INTERFACE, config1_descriptor+DEBUG_HID_DESC_OFFSET, 9},
 | 
			
		||||
	{0x2200, DEBUG_INTERFACE, debug_hid_report_desc, sizeof(debug_hid_report_desc)},
 | 
			
		||||
#ifdef USB_EXTRA_ENABLE
 | 
			
		||||
	{0x2100, EXTRA_INTERFACE, config1_descriptor+EXTRA_HID_DESC_OFFSET, 9},
 | 
			
		||||
	{0x2200, EXTRA_INTERFACE, extra_hid_report_desc, sizeof(extra_hid_report_desc)},
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef USB_NKRO_ENABLE
 | 
			
		||||
	{0x2100, KBD2_INTERFACE, config1_descriptor+KBD2_HID_DESC_OFFSET, 9},
 | 
			
		||||
	{0x2200, KBD2_INTERFACE, keyboard2_hid_report_desc, sizeof(keyboard2_hid_report_desc)},
 | 
			
		||||
| 
						 | 
				
			
			@ -879,6 +917,7 @@ ISR(USB_COM_vect)
 | 
			
		|||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
#ifdef USB_MOUSE_ENABLE
 | 
			
		||||
		if (wIndex == MOUSE_INTERFACE) {
 | 
			
		||||
			if (bmRequestType == 0xA1) {
 | 
			
		||||
				if (bRequest == HID_GET_REPORT) {
 | 
			
		||||
| 
						 | 
				
			
			@ -913,6 +952,7 @@ ISR(USB_COM_vect)
 | 
			
		|||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
		if (wIndex == DEBUG_INTERFACE) {
 | 
			
		||||
			if (bRequest == HID_GET_REPORT && bmRequestType == 0xA1) {
 | 
			
		||||
				len = wLength;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								usb_extra.h
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								usb_extra.h
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,5 +1,11 @@
 | 
			
		|||
#ifndef USB_EXTRA_H
 | 
			
		||||
#define  USB_EXTRA_H 1
 | 
			
		||||
/*
 | 
			
		||||
 * Enhanced keyboard features for Windows:
 | 
			
		||||
 * Audio control and System control
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.microsoft.com/whdc/archive/w2kbd.mspx
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "usb.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -10,11 +16,13 @@
 | 
			
		|||
#define EXTRA_SIZE		2
 | 
			
		||||
#define EXTRA_BUFFER		EP_DOUBLE_BUFFER
 | 
			
		||||
 | 
			
		||||
// http://www.microsoft.com/whdc/archive/w2kbd.mspx
 | 
			
		||||
 | 
			
		||||
// Consumer Page(0x0C) Consumer Control(0x01)
 | 
			
		||||
#define AUDIO_VOL_UP		(1<<0)
 | 
			
		||||
#define AUDIO_VOL_DOWN		(1<<1)
 | 
			
		||||
#define AUDIO_MUTE		(1<<2)
 | 
			
		||||
 | 
			
		||||
// Generic Desktop Page(0x01) System Control(0x80)
 | 
			
		||||
#define SYSTEM_POWER_DOWN	(1<<0)
 | 
			
		||||
#define SYSTEM_SLEEP		(1<<1)
 | 
			
		||||
#define SYSTEM_WAKE_UP		(1<<2)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue