
e5f9940 Merge commit '1bc3dd200b023cecf063a0cb3ba347f77f6d759d' into core_update da03c50 Add note for L/R side bit being ignored e80f3c1 Add in basic documentation for Macro system 35e8a76 core: Swap position of PEQL and PENT in unimap 00751f1 Merge pull request #406 from 39aldo39/patch-1 e50d7de V-USB remote wakeup 4340997 core: Fix typo in definition AC_g 958144d core: Debug print for system and consumer keys e7e1030 core: Fix sleep_led 0866323 core: Change matrix_init and matrix_print 0dbf73d core: Add matrix_clear() and default impl. 3202ca3 core: Add suspend mode options 4cda3aa core: Fix suspend/wake for converters #386 4e15247 core: LUFA_DEBUG_SUART for serial debug b9cf8e7 core: Fix mechanical locking supoort #390 12aa0fd Merge branch 'nemith-master' fccb3fa core: Fix OPT_DEFS for mbed build 2e2d2c8 Merge branch 'master' of github.com:leizzer/tmk_keyboard f1d3634 Change .gitignore for ChibiOS 3aab802 core: Fix build config in protocol.mk 5e43da0 core: Add short names in unimap 7a56998 core: Fix dfu wait in rules.mk 6d9c500 Merge branch 'mediakey-fix' 08382ac core: Fix 'make dfu' message 78cb04e Fix OS X Recognizing keyboard as Mouse/Tablet a114714 core: 'make dfu' waits for bootloader to start d0a8f13 core: Fix unimap UNIMAP_NO case e17abef core: Change lufa NKRO report size 16 to 32 bytes 375b20f core: Fix common.mk for build options 394fdff core: Fix unimap layout comment 912326c core: Add unimap support 00f4011 core: Fix doc/keymap.md for new keymap framework ddbd7b4 core: Add default implemenation of keymap read 671cacc core: action codes are action_t struct now b4fdb27 core: Change chibios repo directory names 7daed10 core: Fix keycode.txt 90399d7 core: Fix USB remote wakeup on ATmega32U2 #361 3677e84 usb_usb: Add multiple keyboard support 54d5b26 core: Fix Logical Maximum in report descriptor bd0d372 core: Fix LUFA report descriptor 95327b5 Merge pull request #355 from papodaca/XT 62bf548 core: change API of adb.c to accept device address 3097c9e Fix function name in host.h 836e209 Merge branch 'core_split_160522' 3918ea2 Merge commit '20b787fc1284176834cbe7ca2134e4b36bec5828' 7f87b11 core: Add comment of register 3 of ADB ef6478a core: Add adb_host_talk() 5c665b4 update macro names in bluefruit 4f2c5bf Merge commit '71381457fa1311dfa0b58ba882a96db740640871' 53a9c08 Merge pull request #321 from njbair/master f08a656 core: Fix media/consumer keys d526de8 Clean up wording in keymap example 0bb3dbb Clarify layer precedence d915c75 clarify layer documentation 72070d4 ps2_usb: Fix for VUSB configuration 170e2dc Mostly working. Is unstable, will emit bad codes after a while. c8e45b5 core: Actionmap support aabaa24 Codes appear to be detected correctly, the break codes are broken. git-subtree-dir: tmk_core git-subtree-split: e5f994033cbc8700745ac0c6d12772820492eed0
176 lines
5.3 KiB
C
176 lines
5.3 KiB
C
/*
|
|
* Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
|
|
* This file is based on:
|
|
* LUFA-120219/Demos/Device/Lowlevel/KeyboardMouse
|
|
* LUFA-120219/Demos/Device/Lowlevel/GenericHID
|
|
*/
|
|
|
|
/*
|
|
LUFA Library
|
|
Copyright (C) Dean Camera, 2012.
|
|
|
|
dean [at] fourwalledcubicle [dot] com
|
|
www.lufa-lib.org
|
|
*/
|
|
|
|
/*
|
|
Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
|
|
Copyright 2010 Denver Gingerich (denver [at] ossguy [dot] com)
|
|
|
|
Permission to use, copy, modify, distribute, and sell this
|
|
software and its documentation for any purpose is hereby granted
|
|
without fee, provided that the above copyright notice appear in
|
|
all copies and that both that the copyright notice and this
|
|
permission notice and warranty disclaimer appear in supporting
|
|
documentation, and that the name of the author not be used in
|
|
advertising or publicity pertaining to distribution of the
|
|
software without specific, written prior permission.
|
|
|
|
The author disclaim all warranties with regard to this
|
|
software, including all implied warranties of merchantability
|
|
and fitness. In no event shall the author be liable for any
|
|
special, indirect or consequential damages or any damages
|
|
whatsoever resulting from loss of use, data or profits, whether
|
|
in an action of contract, negligence or other tortious action,
|
|
arising out of or in connection with the use or performance of
|
|
this software.
|
|
*/
|
|
|
|
/** \file
|
|
*
|
|
* Header file for Descriptors.c.
|
|
*/
|
|
|
|
#ifndef _DESCRIPTORS_H_
|
|
#define _DESCRIPTORS_H_
|
|
|
|
#include <LUFA/Drivers/USB/USB.h>
|
|
#include <avr/pgmspace.h>
|
|
|
|
|
|
typedef struct
|
|
{
|
|
USB_Descriptor_Configuration_Header_t Config;
|
|
|
|
// Keyboard HID Interface
|
|
USB_Descriptor_Interface_t Keyboard_Interface;
|
|
USB_HID_Descriptor_HID_t Keyboard_HID;
|
|
USB_Descriptor_Endpoint_t Keyboard_INEndpoint;
|
|
|
|
#ifdef MOUSE_ENABLE
|
|
// Mouse HID Interface
|
|
USB_Descriptor_Interface_t Mouse_Interface;
|
|
USB_HID_Descriptor_HID_t Mouse_HID;
|
|
USB_Descriptor_Endpoint_t Mouse_INEndpoint;
|
|
#endif
|
|
|
|
#ifdef EXTRAKEY_ENABLE
|
|
// Extrakey HID Interface
|
|
USB_Descriptor_Interface_t Extrakey_Interface;
|
|
USB_HID_Descriptor_HID_t Extrakey_HID;
|
|
USB_Descriptor_Endpoint_t Extrakey_INEndpoint;
|
|
#endif
|
|
|
|
#ifdef CONSOLE_ENABLE
|
|
// Console HID Interface
|
|
USB_Descriptor_Interface_t Console_Interface;
|
|
USB_HID_Descriptor_HID_t Console_HID;
|
|
USB_Descriptor_Endpoint_t Console_INEndpoint;
|
|
USB_Descriptor_Endpoint_t Console_OUTEndpoint;
|
|
#endif
|
|
|
|
#ifdef NKRO_ENABLE
|
|
// NKRO HID Interface
|
|
USB_Descriptor_Interface_t NKRO_Interface;
|
|
USB_HID_Descriptor_HID_t NKRO_HID;
|
|
USB_Descriptor_Endpoint_t NKRO_INEndpoint;
|
|
#endif
|
|
} USB_Descriptor_Configuration_t;
|
|
|
|
|
|
/* index of interface */
|
|
#define KEYBOARD_INTERFACE 0
|
|
|
|
#ifdef MOUSE_ENABLE
|
|
# define MOUSE_INTERFACE (KEYBOARD_INTERFACE + 1)
|
|
#else
|
|
# define MOUSE_INTERFACE KEYBOARD_INTERFACE
|
|
#endif
|
|
|
|
#ifdef EXTRAKEY_ENABLE
|
|
# define EXTRAKEY_INTERFACE (MOUSE_INTERFACE + 1)
|
|
#else
|
|
# define EXTRAKEY_INTERFACE MOUSE_INTERFACE
|
|
#endif
|
|
|
|
#ifdef CONSOLE_ENABLE
|
|
# define CONSOLE_INTERFACE (EXTRAKEY_INTERFACE + 1)
|
|
#else
|
|
# define CONSOLE_INTERFACE EXTRAKEY_INTERFACE
|
|
#endif
|
|
|
|
#ifdef NKRO_ENABLE
|
|
# define NKRO_INTERFACE (CONSOLE_INTERFACE + 1)
|
|
#else
|
|
# define NKRO_INTERFACE CONSOLE_INTERFACE
|
|
#endif
|
|
|
|
|
|
/* nubmer of interfaces */
|
|
#define TOTAL_INTERFACES (NKRO_INTERFACE + 1)
|
|
|
|
|
|
// Endopoint number and size
|
|
#define KEYBOARD_IN_EPNUM 1
|
|
|
|
#ifdef MOUSE_ENABLE
|
|
# define MOUSE_IN_EPNUM (KEYBOARD_IN_EPNUM + 1)
|
|
#else
|
|
# define MOUSE_IN_EPNUM KEYBOARD_IN_EPNUM
|
|
#endif
|
|
|
|
#ifdef EXTRAKEY_ENABLE
|
|
# define EXTRAKEY_IN_EPNUM (MOUSE_IN_EPNUM + 1)
|
|
#else
|
|
# define EXTRAKEY_IN_EPNUM MOUSE_IN_EPNUM
|
|
#endif
|
|
|
|
#ifdef CONSOLE_ENABLE
|
|
# define CONSOLE_IN_EPNUM (EXTRAKEY_IN_EPNUM + 1)
|
|
# define CONSOLE_OUT_EPNUM (EXTRAKEY_IN_EPNUM + 1)
|
|
//# define CONSOLE_OUT_EPNUM (EXTRAKEY_IN_EPNUM + 2)
|
|
#else
|
|
# define CONSOLE_OUT_EPNUM EXTRAKEY_IN_EPNUM
|
|
#endif
|
|
|
|
#ifdef NKRO_ENABLE
|
|
# define NKRO_IN_EPNUM (CONSOLE_OUT_EPNUM + 1)
|
|
# if defined(__AVR_ATmega32U2__) && NKRO_IN_EPNUM > 4
|
|
# error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO)"
|
|
# endif
|
|
#endif
|
|
|
|
|
|
#define KEYBOARD_EPSIZE 8
|
|
#define MOUSE_EPSIZE 8
|
|
#define EXTRAKEY_EPSIZE 8
|
|
#define CONSOLE_EPSIZE 32
|
|
#define NKRO_EPSIZE 32
|
|
|
|
|
|
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
|
|
const uint8_t wIndex,
|
|
const void** const DescriptorAddress)
|
|
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
|
|
|
|
|
|
/* new API */
|
|
#if LUFA_VERSION_INTEGER < 0x140302
|
|
#undef VERSION_BCD
|
|
#define VERSION_BCD(Major, Minor, Revision) \
|
|
CPU_TO_LE16( ((Major & 0xFF) << 8) | \
|
|
((Minor & 0x0F) << 4) | \
|
|
(Revision & 0x0F) )
|
|
#endif
|
|
|
|
#endif
|