Different inclusion of Teensy Keyboard
Moved Report IDs to the HID-Project.h file
This commit is contained in:
parent
8d24749ec7
commit
ef33241ca3
11 changed files with 134 additions and 90 deletions
|
|
@ -35,9 +35,7 @@ THE SOFTWARE.
|
|||
// Consumer
|
||||
//================================================================================
|
||||
|
||||
#ifndef HID_REPORTID_CONSUMERCONTROL
|
||||
#define HID_REPORTID_CONSUMERCONTROL 4
|
||||
#endif
|
||||
#include "HID-Project.h"
|
||||
|
||||
// Media key definitions, see official USB docs for more
|
||||
#define MEDIA_FAST_FORWARD 0xB3
|
||||
|
|
|
|||
|
|
@ -35,9 +35,7 @@ THE SOFTWARE.
|
|||
// Gamepad
|
||||
//================================================================================
|
||||
|
||||
#ifndef HID_REPORTID_GAMEPAD
|
||||
#define HID_REPORTID_GAMEPAD 6
|
||||
#endif
|
||||
#include "HID-Project.h"
|
||||
|
||||
// Dpad directions
|
||||
#define GAMEPAD_DPAD_CENTERED 0
|
||||
|
|
|
|||
|
|
@ -33,12 +33,58 @@ THE SOFTWARE.
|
|||
#error "This is not an USB AVR or you use an old version of the IDE."
|
||||
#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 "ImprovedKeyboard.h"
|
||||
#include "ImprovedKeyboard.h"
|
||||
#include "AbsoluteMouse.h"
|
||||
#include "Consumer.h"
|
||||
#include "Gamepad.h"
|
||||
#include "System.h"
|
||||
|
||||
// Include Teensy HID afterwards to overwrite key definitions if used
|
||||
#ifdef USE_TEENSY_KEYBOARD
|
||||
#include "TeensyKeyboard.h"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ static const u8 _hidReportDescriptor[] PROGMEM = {
|
|||
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47
|
||||
0x09, 0x06, // USAGE (Keyboard)
|
||||
0xa1, 0x01, // COLLECTION (Application)
|
||||
0x85, HID_REPORTID_KEYBOARD, // REPORT_ID (2)
|
||||
0x85, HID_REPORTID_KEYBOARD, // REPORT_ID
|
||||
0x05, 0x07, // USAGE_PAGE (Keyboard)
|
||||
|
||||
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
|
||||
|
|
|
|||
|
|
@ -36,9 +36,7 @@ THE SOFTWARE.
|
|||
//================================================================================
|
||||
// Keyboard
|
||||
|
||||
#ifndef HID_REPORTID_KEYBOARD
|
||||
#define HID_REPORTID_KEYBOARD 2
|
||||
#endif
|
||||
#include "HID-Project.h"
|
||||
|
||||
#define KEY_PRINT 0xCE
|
||||
#define KEY_NUM_LOCK 0xDB
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ static const uint8_t _asciimap[128] PROGMEM =
|
|||
0x35|SHIFT, // ~
|
||||
0 // DEL
|
||||
};
|
||||
Keyboard_ Keyboard;
|
||||
|
||||
uint8_t Keyboard_::getKeycode(uint8_t k){
|
||||
return pgm_read_byte(_asciimap + k);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,9 +35,7 @@ THE SOFTWARE.
|
|||
// System
|
||||
//================================================================================
|
||||
|
||||
#ifndef HID_REPORTID_SYSTEMCONTROL
|
||||
#define HID_REPORTID_SYSTEMCONTROL 5
|
||||
#endif
|
||||
#include "HID-Project.h"
|
||||
|
||||
#define SYSTEM_POWER_DOWN 0x81
|
||||
#define SYSTEM_SLEEP 0x82
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ void usb_keyboard_class::set_media(uint8_t c)
|
|||
|
||||
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();
|
||||
|
||||
#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
|
||||
|
|
|
|||
|
|
@ -31,18 +31,15 @@
|
|||
|
||||
#else
|
||||
|
||||
#include "HID-Project.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
|
||||
static const uint8_t PROGMEM keyboard_hid_report_desc[] = {
|
||||
0x05, 0x01, // Usage Page (Generic Desktop),
|
||||
0x09, 0x06, // Usage (Keyboard),
|
||||
0xA1, 0x01, // Collection (Application),
|
||||
0x85, HID_REPORTID_KEYBOARD, // REPORT_ID (2)
|
||||
0x85, HID_REPORTID_TEENSY_KEYBOARD, // REPORT_ID
|
||||
0x75, 0x01, // Report Size (1),
|
||||
0x95, 0x08, // Report Count (8),
|
||||
0x05, 0x07, // Usage Page (Key Codes),
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ extern "C"{
|
|||
//#define LAYOUT_FRENCH
|
||||
//#define LAYOUT_FRENCH_BELGIAN
|
||||
//#define LAYOUT_FRENCH_SWISS
|
||||
#define LAYOUT_GERMAN
|
||||
//#define LAYOUT_GERMAN
|
||||
//#define LAYOUT_GERMAN_MAC
|
||||
//#define LAYOUT_GERMAN_SWISS
|
||||
//#define LAYOUT_ICELANDIC
|
||||
|
|
@ -63,7 +63,18 @@ extern "C"{
|
|||
//#define LAYOUT_UNITED_KINGDOM
|
||||
//#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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue