Different inclusion of Teensy Keyboard

Moved Report IDs to the HID-Project.h file
This commit is contained in:
NicoHood 2015-09-08 17:31:29 +02:00
parent 8d24749ec7
commit ef33241ca3
11 changed files with 134 additions and 90 deletions

View file

@ -35,9 +35,7 @@ THE SOFTWARE.
// Consumer // Consumer
//================================================================================ //================================================================================
#ifndef HID_REPORTID_CONSUMERCONTROL #include "HID-Project.h"
#define HID_REPORTID_CONSUMERCONTROL 4
#endif
// Media key definitions, see official USB docs for more // Media key definitions, see official USB docs for more
#define MEDIA_FAST_FORWARD 0xB3 #define MEDIA_FAST_FORWARD 0xB3

View file

@ -35,9 +35,7 @@ THE SOFTWARE.
// Gamepad // Gamepad
//================================================================================ //================================================================================
#ifndef HID_REPORTID_GAMEPAD #include "HID-Project.h"
#define HID_REPORTID_GAMEPAD 6
#endif
// Dpad directions // Dpad directions
#define GAMEPAD_DPAD_CENTERED 0 #define GAMEPAD_DPAD_CENTERED 0

View file

@ -33,12 +33,58 @@ THE SOFTWARE.
#error "This is not an USB AVR or you use an old version of the IDE." #error "This is not an USB AVR or you use an old version of the IDE."
#endif #endif
//#define LAYOUT_US_ENGLISH
//#define LAYOUT_CANADIAN_FRENCH
//#define LAYOUT_CANADIAN_MULTILINGUAL
//#define LAYOUT_DANISH
//#define LAYOUT_FINNISH
//#define LAYOUT_FRENCH
//#define LAYOUT_FRENCH_BELGIAN
//#define LAYOUT_FRENCH_SWISS
//#define LAYOUT_GERMAN
//#define LAYOUT_GERMAN_MAC
//#define LAYOUT_GERMAN_SWISS
//#define LAYOUT_ICELANDIC
//#define LAYOUT_IRISH
//#define LAYOUT_ITALIAN
//#define LAYOUT_NORWEGIAN
//#define LAYOUT_PORTUGUESE
//#define LAYOUT_PORTUGUESE_BRAZILIAN
//#define LAYOUT_SPANISH
//#define LAYOUT_SPANISH_LATIN_AMERICA
//#define LAYOUT_SWEDISH
//#define LAYOUT_TURKISH
//#define LAYOUT_UNITED_KINGDOM
//#define LAYOUT_US_INTERNATIONAL
#ifndef HID_REPORTID_KEYBOARD
#define HID_REPORTID_KEYBOARD 2
#endif
#ifndef HID_REPORTID_CONSUMERCONTROL
#define HID_REPORTID_CONSUMERCONTROL 4
#endif
#ifndef HID_REPORTID_SYSTEMCONTROL
#define HID_REPORTID_SYSTEMCONTROL 5
#endif
#ifndef HID_REPORTID_GAMEPAD
#define HID_REPORTID_GAMEPAD 6
#endif
#ifndef HID_REPORTID_TEENSY_KEYBOARD
#define HID_REPORTID_TEENSY_KEYBOARD 9
#endif
// Include all HID libraries (.a linkage required to work) properly // Include all HID libraries (.a linkage required to work) properly
//#include "ImprovedKeyboard.h" #include "ImprovedKeyboard.h"
#include "AbsoluteMouse.h" #include "AbsoluteMouse.h"
#include "Consumer.h" #include "Consumer.h"
#include "Gamepad.h" #include "Gamepad.h"
#include "System.h" #include "System.h"
// Include Teensy HID afterwards to overwrite key definitions if used // Include Teensy HID afterwards to overwrite key definitions if used
#ifdef USE_TEENSY_KEYBOARD
#include "TeensyKeyboard.h" #include "TeensyKeyboard.h"
#endif

View file

@ -35,7 +35,7 @@ static const u8 _hidReportDescriptor[] PROGMEM = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47
0x09, 0x06, // USAGE (Keyboard) 0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application) 0xa1, 0x01, // COLLECTION (Application)
0x85, HID_REPORTID_KEYBOARD, // REPORT_ID (2) 0x85, HID_REPORTID_KEYBOARD, // REPORT_ID
0x05, 0x07, // USAGE_PAGE (Keyboard) 0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)

View file

@ -36,9 +36,7 @@ THE SOFTWARE.
//================================================================================ //================================================================================
// Keyboard // Keyboard
#ifndef HID_REPORTID_KEYBOARD #include "HID-Project.h"
#define HID_REPORTID_KEYBOARD 2
#endif
#define KEY_PRINT 0xCE #define KEY_PRINT 0xCE
#define KEY_NUM_LOCK 0xDB #define KEY_NUM_LOCK 0xDB

View file

@ -156,7 +156,7 @@ static const uint8_t _asciimap[128] PROGMEM =
0x35|SHIFT, // ~ 0x35|SHIFT, // ~
0 // DEL 0 // DEL
}; };
Keyboard_ Keyboard;
uint8_t Keyboard_::getKeycode(uint8_t k){ uint8_t Keyboard_::getKeycode(uint8_t k){
return pgm_read_byte(_asciimap + k); return pgm_read_byte(_asciimap + k);
} }

View file

@ -35,9 +35,7 @@ THE SOFTWARE.
// System // System
//================================================================================ //================================================================================
#ifndef HID_REPORTID_SYSTEMCONTROL #include "HID-Project.h"
#define HID_REPORTID_SYSTEMCONTROL 5
#endif
#define SYSTEM_POWER_DOWN 0x81 #define SYSTEM_POWER_DOWN 0x81
#define SYSTEM_SLEEP 0x82 #define SYSTEM_SLEEP 0x82

View file

@ -256,7 +256,7 @@ void usb_keyboard_class::set_media(uint8_t c)
void usb_keyboard_class::send_now(void) void usb_keyboard_class::send_now(void)
{ {
HID.SendReport(HID_REPORTID_KEYBOARD,keyboard_report_data,sizeof(keyboard_report_data)); HID.SendReport(HID_REPORTID_TEENSY_KEYBOARD,keyboard_report_data,sizeof(keyboard_report_data));
} }
@ -386,3 +386,67 @@ void usb_keyboard_class::releaseAll(void)
} }
usb_keyboard_class TeensyKeyboard = usb_keyboard_class(); usb_keyboard_class TeensyKeyboard = usb_keyboard_class();
#include <avr/pgmspace.h>
#include <stdint.h>
#ifdef M
#undef M
#endif
#define M(n) ((n) & 0x3FFF)
const KEYCODE_TYPE PROGMEM keycodes_ascii[] = {
M(ASCII_20), M(ASCII_21), M(ASCII_22), M(ASCII_23),
M(ASCII_24), M(ASCII_25), M(ASCII_26), M(ASCII_27),
M(ASCII_28), M(ASCII_29), M(ASCII_2A), M(ASCII_2B),
M(ASCII_2C), M(ASCII_2D), M(ASCII_2E), M(ASCII_2F),
M(ASCII_30), M(ASCII_31), M(ASCII_32), M(ASCII_33),
M(ASCII_34), M(ASCII_35), M(ASCII_36), M(ASCII_37),
M(ASCII_38), M(ASCII_39), M(ASCII_3A), M(ASCII_3B),
M(ASCII_3C), M(ASCII_3D), M(ASCII_3E), M(ASCII_3F),
M(ASCII_40), M(ASCII_41), M(ASCII_42), M(ASCII_43),
M(ASCII_44), M(ASCII_45), M(ASCII_46), M(ASCII_47),
M(ASCII_48), M(ASCII_49), M(ASCII_4A), M(ASCII_4B),
M(ASCII_4C), M(ASCII_4D), M(ASCII_4E), M(ASCII_4F),
M(ASCII_50), M(ASCII_51), M(ASCII_52), M(ASCII_53),
M(ASCII_54), M(ASCII_55), M(ASCII_56), M(ASCII_57),
M(ASCII_58), M(ASCII_59), M(ASCII_5A), M(ASCII_5B),
M(ASCII_5C), M(ASCII_5D), M(ASCII_5E), M(ASCII_5F),
M(ASCII_60), M(ASCII_61), M(ASCII_62), M(ASCII_63),
M(ASCII_64), M(ASCII_65), M(ASCII_66), M(ASCII_67),
M(ASCII_68), M(ASCII_69), M(ASCII_6A), M(ASCII_6B),
M(ASCII_6C), M(ASCII_6D), M(ASCII_6E), M(ASCII_6F),
M(ASCII_70), M(ASCII_71), M(ASCII_72), M(ASCII_73),
M(ASCII_74), M(ASCII_75), M(ASCII_76), M(ASCII_77),
M(ASCII_78), M(ASCII_79), M(ASCII_7A), M(ASCII_7B),
M(ASCII_7C), M(ASCII_7D), M(ASCII_7E), M(ASCII_7F)
};
#ifdef ISO_8859_1_A0
const KEYCODE_TYPE PROGMEM keycodes_iso_8859_1[] = {
M(ISO_8859_1_A0), M(ISO_8859_1_A1), M(ISO_8859_1_A2), M(ISO_8859_1_A3),
M(ISO_8859_1_A4), M(ISO_8859_1_A5), M(ISO_8859_1_A6), M(ISO_8859_1_A7),
M(ISO_8859_1_A8), M(ISO_8859_1_A9), M(ISO_8859_1_AA), M(ISO_8859_1_AB),
M(ISO_8859_1_AC), M(ISO_8859_1_AD), M(ISO_8859_1_AE), M(ISO_8859_1_AF),
M(ISO_8859_1_B0), M(ISO_8859_1_B1), M(ISO_8859_1_B2), M(ISO_8859_1_B3),
M(ISO_8859_1_B4), M(ISO_8859_1_B5), M(ISO_8859_1_B6), M(ISO_8859_1_B7),
M(ISO_8859_1_B8), M(ISO_8859_1_B9), M(ISO_8859_1_BA), M(ISO_8859_1_BB),
M(ISO_8859_1_BC), M(ISO_8859_1_BD), M(ISO_8859_1_BE), M(ISO_8859_1_BF),
M(ISO_8859_1_C0), M(ISO_8859_1_C1), M(ISO_8859_1_C2), M(ISO_8859_1_C3),
M(ISO_8859_1_C4), M(ISO_8859_1_C5), M(ISO_8859_1_C6), M(ISO_8859_1_C7),
M(ISO_8859_1_C8), M(ISO_8859_1_C9), M(ISO_8859_1_CA), M(ISO_8859_1_CB),
M(ISO_8859_1_CC), M(ISO_8859_1_CD), M(ISO_8859_1_CE), M(ISO_8859_1_CF),
M(ISO_8859_1_D0), M(ISO_8859_1_D1), M(ISO_8859_1_D2), M(ISO_8859_1_D3),
M(ISO_8859_1_D4), M(ISO_8859_1_D5), M(ISO_8859_1_D6), M(ISO_8859_1_D7),
M(ISO_8859_1_D8), M(ISO_8859_1_D9), M(ISO_8859_1_DA), M(ISO_8859_1_DB),
M(ISO_8859_1_DC), M(ISO_8859_1_DD), M(ISO_8859_1_DE), M(ISO_8859_1_DF),
M(ISO_8859_1_E0), M(ISO_8859_1_E1), M(ISO_8859_1_E2), M(ISO_8859_1_E3),
M(ISO_8859_1_E4), M(ISO_8859_1_E5), M(ISO_8859_1_E6), M(ISO_8859_1_E7),
M(ISO_8859_1_E8), M(ISO_8859_1_E9), M(ISO_8859_1_EA), M(ISO_8859_1_EB),
M(ISO_8859_1_EC), M(ISO_8859_1_ED), M(ISO_8859_1_EE), M(ISO_8859_1_EF),
M(ISO_8859_1_F0), M(ISO_8859_1_F1), M(ISO_8859_1_F2), M(ISO_8859_1_F3),
M(ISO_8859_1_F4), M(ISO_8859_1_F5), M(ISO_8859_1_F6), M(ISO_8859_1_F7),
M(ISO_8859_1_F8), M(ISO_8859_1_F9), M(ISO_8859_1_FA), M(ISO_8859_1_FB),
M(ISO_8859_1_FC), M(ISO_8859_1_FD), M(ISO_8859_1_FE), M(ISO_8859_1_FF)
};
#endif // ISO_8859_1_A0

View file

@ -31,18 +31,15 @@
#else #else
#include "HID-Project.h"
#include "TeensyKeylayouts.h" #include "TeensyKeylayouts.h"
#ifndef HID_REPORTID_KEYBOARD
#define HID_REPORTID_KEYBOARD 2
#endif
// Keyboard Protocol 1, HID 1.11 spec, Appendix B, page 59-60 // Keyboard Protocol 1, HID 1.11 spec, Appendix B, page 59-60
static const uint8_t PROGMEM keyboard_hid_report_desc[] = { static const uint8_t PROGMEM keyboard_hid_report_desc[] = {
0x05, 0x01, // Usage Page (Generic Desktop), 0x05, 0x01, // Usage Page (Generic Desktop),
0x09, 0x06, // Usage (Keyboard), 0x09, 0x06, // Usage (Keyboard),
0xA1, 0x01, // Collection (Application), 0xA1, 0x01, // Collection (Application),
0x85, HID_REPORTID_KEYBOARD, // REPORT_ID (2) 0x85, HID_REPORTID_TEENSY_KEYBOARD, // REPORT_ID
0x75, 0x01, // Report Size (1), 0x75, 0x01, // Report Size (1),
0x95, 0x08, // Report Count (8), 0x95, 0x08, // Report Count (8),
0x05, 0x07, // Usage Page (Key Codes), 0x05, 0x07, // Usage Page (Key Codes),

View file

@ -1,66 +0,0 @@
#include <avr/pgmspace.h>
#include <stdint.h>
#include "TeensyKeylayouts.h"
#ifdef M
#undef M
#endif
#define M(n) ((n) & 0x3FFF)
const KEYCODE_TYPE PROGMEM keycodes_ascii[] = {
M(ASCII_20), M(ASCII_21), M(ASCII_22), M(ASCII_23),
M(ASCII_24), M(ASCII_25), M(ASCII_26), M(ASCII_27),
M(ASCII_28), M(ASCII_29), M(ASCII_2A), M(ASCII_2B),
M(ASCII_2C), M(ASCII_2D), M(ASCII_2E), M(ASCII_2F),
M(ASCII_30), M(ASCII_31), M(ASCII_32), M(ASCII_33),
M(ASCII_34), M(ASCII_35), M(ASCII_36), M(ASCII_37),
M(ASCII_38), M(ASCII_39), M(ASCII_3A), M(ASCII_3B),
M(ASCII_3C), M(ASCII_3D), M(ASCII_3E), M(ASCII_3F),
M(ASCII_40), M(ASCII_41), M(ASCII_42), M(ASCII_43),
M(ASCII_44), M(ASCII_45), M(ASCII_46), M(ASCII_47),
M(ASCII_48), M(ASCII_49), M(ASCII_4A), M(ASCII_4B),
M(ASCII_4C), M(ASCII_4D), M(ASCII_4E), M(ASCII_4F),
M(ASCII_50), M(ASCII_51), M(ASCII_52), M(ASCII_53),
M(ASCII_54), M(ASCII_55), M(ASCII_56), M(ASCII_57),
M(ASCII_58), M(ASCII_59), M(ASCII_5A), M(ASCII_5B),
M(ASCII_5C), M(ASCII_5D), M(ASCII_5E), M(ASCII_5F),
M(ASCII_60), M(ASCII_61), M(ASCII_62), M(ASCII_63),
M(ASCII_64), M(ASCII_65), M(ASCII_66), M(ASCII_67),
M(ASCII_68), M(ASCII_69), M(ASCII_6A), M(ASCII_6B),
M(ASCII_6C), M(ASCII_6D), M(ASCII_6E), M(ASCII_6F),
M(ASCII_70), M(ASCII_71), M(ASCII_72), M(ASCII_73),
M(ASCII_74), M(ASCII_75), M(ASCII_76), M(ASCII_77),
M(ASCII_78), M(ASCII_79), M(ASCII_7A), M(ASCII_7B),
M(ASCII_7C), M(ASCII_7D), M(ASCII_7E), M(ASCII_7F)
};
#ifdef ISO_8859_1_A0
const KEYCODE_TYPE PROGMEM keycodes_iso_8859_1[] = {
M(ISO_8859_1_A0), M(ISO_8859_1_A1), M(ISO_8859_1_A2), M(ISO_8859_1_A3),
M(ISO_8859_1_A4), M(ISO_8859_1_A5), M(ISO_8859_1_A6), M(ISO_8859_1_A7),
M(ISO_8859_1_A8), M(ISO_8859_1_A9), M(ISO_8859_1_AA), M(ISO_8859_1_AB),
M(ISO_8859_1_AC), M(ISO_8859_1_AD), M(ISO_8859_1_AE), M(ISO_8859_1_AF),
M(ISO_8859_1_B0), M(ISO_8859_1_B1), M(ISO_8859_1_B2), M(ISO_8859_1_B3),
M(ISO_8859_1_B4), M(ISO_8859_1_B5), M(ISO_8859_1_B6), M(ISO_8859_1_B7),
M(ISO_8859_1_B8), M(ISO_8859_1_B9), M(ISO_8859_1_BA), M(ISO_8859_1_BB),
M(ISO_8859_1_BC), M(ISO_8859_1_BD), M(ISO_8859_1_BE), M(ISO_8859_1_BF),
M(ISO_8859_1_C0), M(ISO_8859_1_C1), M(ISO_8859_1_C2), M(ISO_8859_1_C3),
M(ISO_8859_1_C4), M(ISO_8859_1_C5), M(ISO_8859_1_C6), M(ISO_8859_1_C7),
M(ISO_8859_1_C8), M(ISO_8859_1_C9), M(ISO_8859_1_CA), M(ISO_8859_1_CB),
M(ISO_8859_1_CC), M(ISO_8859_1_CD), M(ISO_8859_1_CE), M(ISO_8859_1_CF),
M(ISO_8859_1_D0), M(ISO_8859_1_D1), M(ISO_8859_1_D2), M(ISO_8859_1_D3),
M(ISO_8859_1_D4), M(ISO_8859_1_D5), M(ISO_8859_1_D6), M(ISO_8859_1_D7),
M(ISO_8859_1_D8), M(ISO_8859_1_D9), M(ISO_8859_1_DA), M(ISO_8859_1_DB),
M(ISO_8859_1_DC), M(ISO_8859_1_DD), M(ISO_8859_1_DE), M(ISO_8859_1_DF),
M(ISO_8859_1_E0), M(ISO_8859_1_E1), M(ISO_8859_1_E2), M(ISO_8859_1_E3),
M(ISO_8859_1_E4), M(ISO_8859_1_E5), M(ISO_8859_1_E6), M(ISO_8859_1_E7),
M(ISO_8859_1_E8), M(ISO_8859_1_E9), M(ISO_8859_1_EA), M(ISO_8859_1_EB),
M(ISO_8859_1_EC), M(ISO_8859_1_ED), M(ISO_8859_1_EE), M(ISO_8859_1_EF),
M(ISO_8859_1_F0), M(ISO_8859_1_F1), M(ISO_8859_1_F2), M(ISO_8859_1_F3),
M(ISO_8859_1_F4), M(ISO_8859_1_F5), M(ISO_8859_1_F6), M(ISO_8859_1_F7),
M(ISO_8859_1_F8), M(ISO_8859_1_F9), M(ISO_8859_1_FA), M(ISO_8859_1_FB),
M(ISO_8859_1_FC), M(ISO_8859_1_FD), M(ISO_8859_1_FE), M(ISO_8859_1_FF)
};
#endif // ISO_8859_1_A0

View file

@ -47,7 +47,7 @@ extern "C"{
//#define LAYOUT_FRENCH //#define LAYOUT_FRENCH
//#define LAYOUT_FRENCH_BELGIAN //#define LAYOUT_FRENCH_BELGIAN
//#define LAYOUT_FRENCH_SWISS //#define LAYOUT_FRENCH_SWISS
#define LAYOUT_GERMAN //#define LAYOUT_GERMAN
//#define LAYOUT_GERMAN_MAC //#define LAYOUT_GERMAN_MAC
//#define LAYOUT_GERMAN_SWISS //#define LAYOUT_GERMAN_SWISS
//#define LAYOUT_ICELANDIC //#define LAYOUT_ICELANDIC
@ -60,10 +60,21 @@ extern "C"{
//#define LAYOUT_SPANISH_LATIN_AMERICA //#define LAYOUT_SPANISH_LATIN_AMERICA
//#define LAYOUT_SWEDISH //#define LAYOUT_SWEDISH
//#define LAYOUT_TURKISH //#define LAYOUT_TURKISH
//#define LAYOUT_UNITED_KINGDOM //#define LAYOUT_UNITED_KINGDOM
//#define LAYOUT_US_INTERNATIONAL //#define LAYOUT_US_INTERNATIONAL
// Default US keyboard layout
#if !defined(LAYOUT_CANADIAN_FRENCH) && !defined(LAYOUT_CANADIAN_MULTILINGUAL) \
&& !defined(LAYOUT_DANISH) && !defined(LAYOUT_FINNISH) && !defined(LAYOUT_FRENCH) \
&& !defined(LAYOUT_FRENCH_BELGIAN) && !defined(LAYOUT_FRENCH_SWISS) && !defined(LAYOUT_GERMAN) \
&& !defined(LAYOUT_GERMAN_MAC) && !defined(LAYOUT_GERMAN_SWISS) && !defined(LAYOUT_ICELANDIC) \
&& !defined(LAYOUT_IRISH) && !defined(LAYOUT_ITALIAN) && !defined(LAYOUT_NORWEGIAN) \
&& !defined(LAYOUT_PORTUGUESE) && !defined(LAYOUT_PORTUGUESE_BRAZILIAN) \
&& !defined(LAYOUT_SPANISH) && !defined(LAYOUT_SPANISH_LATIN_AMERICA) \
&& !defined(LAYOUT_SWEDISH) && !defined(LAYOUT_TURKISH) && !defined(LAYOUT_UNITED_KINGDOM) \
&& !defined(LAYOUT_US_INTERNATIONAL) && !defined(LAYOUT_US_ENGLISH)
#define LAYOUT_US_ENGLISH
#endif
// http://en.wikipedia.org/wiki/Keyboard_layout // http://en.wikipedia.org/wiki/Keyboard_layout