@@ -8,10 +8,16 @@ TOP_DIR = ../.. | |||
TARGET_DIR = . | |||
# keyboard dependent files | |||
SRC = keymap.c \ | |||
SRC = keymap_common.c \ | |||
matrix.c \ | |||
led.c | |||
ifdef KEYMAP | |||
SRC := keymap_$(KEYMAP).c $(SRC) | |||
else | |||
SRC := keymap_plain.c $(SRC) | |||
endif | |||
# Use USART for PS/2. With V-USB INT and BUSYWAIT code is not useful. | |||
SRC += protocol/ps2_usart.c | |||
OPT_DEFS += -DPS2_USE_USART | |||
@@ -95,7 +101,7 @@ VPATH += $(TARGET_DIR) | |||
VPATH += $(TOP_DIR) | |||
include $(TOP_DIR)/protocol/vusb.mk | |||
include $(TOP_DIR)/protocol.mk | |||
include $(TOP_DIR)/common.mk | |||
include $(TOP_DIR)/protocol/vusb.mk | |||
include $(TOP_DIR)/rules.mk |
@@ -67,7 +67,7 @@ optimizing hints: | |||
#if USB_CFG_DESCR_PROPS_STRING_0 == 0 | |||
#undef USB_CFG_DESCR_PROPS_STRING_0 | |||
#define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0) | |||
PROGMEM char usbDescriptorString0[] = { /* language descriptor */ | |||
const PROGMEM char usbDescriptorString0[] = { /* language descriptor */ | |||
4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */ | |||
3, /* descriptor type */ | |||
0x09, 0x04, /* language index (0x0409 = US-English) */ | |||
@@ -77,7 +77,7 @@ PROGMEM char usbDescriptorString0[] = { /* language descriptor */ | |||
#if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN | |||
#undef USB_CFG_DESCR_PROPS_STRING_VENDOR | |||
#define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor) | |||
PROGMEM int usbDescriptorStringVendor[] = { | |||
const PROGMEM int usbDescriptorStringVendor[] = { | |||
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN), | |||
USB_CFG_VENDOR_NAME | |||
}; | |||
@@ -86,7 +86,7 @@ PROGMEM int usbDescriptorStringVendor[] = { | |||
#if USB_CFG_DESCR_PROPS_STRING_PRODUCT == 0 && USB_CFG_DEVICE_NAME_LEN | |||
#undef USB_CFG_DESCR_PROPS_STRING_PRODUCT | |||
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT sizeof(usbDescriptorStringDevice) | |||
PROGMEM int usbDescriptorStringDevice[] = { | |||
const PROGMEM int usbDescriptorStringDevice[] = { | |||
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN), | |||
USB_CFG_DEVICE_NAME | |||
}; | |||
@@ -108,7 +108,7 @@ PROGMEM int usbDescriptorStringSerialNumber[] = { | |||
#if USB_CFG_DESCR_PROPS_DEVICE == 0 | |||
#undef USB_CFG_DESCR_PROPS_DEVICE | |||
#define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice) | |||
PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ | |||
const PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ | |||
18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */ | |||
USBDESCR_DEVICE, /* descriptor type */ | |||
0x10, 0x01, /* USB version supported */ |
@@ -452,43 +452,43 @@ extern | |||
#if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM) | |||
PROGMEM | |||
#endif | |||
char usbDescriptorDevice[]; | |||
const char usbDescriptorDevice[]; | |||
extern | |||
#if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM) | |||
PROGMEM | |||
#endif | |||
char usbDescriptorConfiguration[]; | |||
const char usbDescriptorConfiguration[]; | |||
extern | |||
#if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM) | |||
PROGMEM | |||
#endif | |||
char usbDescriptorHidReport[]; | |||
const char usbDescriptorHidReport[]; | |||
extern | |||
#if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM) | |||
PROGMEM | |||
#endif | |||
char usbDescriptorString0[]; | |||
const char usbDescriptorString0[]; | |||
extern | |||
#if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM) | |||
PROGMEM | |||
#endif | |||
int usbDescriptorStringVendor[]; | |||
const int usbDescriptorStringVendor[]; | |||
extern | |||
#if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM) | |||
PROGMEM | |||
#endif | |||
int usbDescriptorStringDevice[]; | |||
const int usbDescriptorStringDevice[]; | |||
extern | |||
#if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM) | |||
PROGMEM | |||
#endif | |||
int usbDescriptorStringSerialNumber[]; | |||
const int usbDescriptorStringSerialNumber[]; | |||
#endif /* __ASSEMBLER__ */ | |||
@@ -35,6 +35,13 @@ static report_keyboard_t kbuf[KBUF_SIZE]; | |||
static uint8_t kbuf_head = 0; | |||
static uint8_t kbuf_tail = 0; | |||
typedef struct { | |||
uint8_t modifier; | |||
uint8_t reserved; | |||
uint8_t keycode[6]; | |||
} keyboard_report_t; | |||
static keyboard_report_t keyboard_report; // sent to PC | |||
/* transfer keyboard report from buffer */ | |||
void vusb_transfer_keyboard(void) | |||
@@ -168,8 +175,8 @@ usbRequest_t *rq = (void *)data; | |||
if(rq->bRequest == USBRQ_HID_GET_REPORT){ | |||
debug("GET_REPORT:"); | |||
/* we only have one report type, so don't look at wValue */ | |||
usbMsgPtr = (void *)keyboard_report; | |||
return sizeof(*keyboard_report); | |||
usbMsgPtr = (void *)&keyboard_report; | |||
return sizeof(keyboard_report); | |||
}else if(rq->bRequest == USBRQ_HID_GET_IDLE){ | |||
debug("GET_IDLE: "); | |||
//debug_hex(vusb_idle_rate); | |||
@@ -232,7 +239,7 @@ uchar usbFunctionWrite(uchar *data, uchar len) | |||
* | |||
* from an example in HID spec appendix | |||
*/ | |||
PROGMEM uchar keyboard_hid_report[] = { | |||
const PROGMEM uchar keyboard_hid_report[] = { | |||
0x05, 0x01, // Usage Page (Generic Desktop), | |||
0x09, 0x06, // Usage (Keyboard), | |||
0xA1, 0x01, // Collection (Application), | |||
@@ -275,7 +282,7 @@ PROGMEM uchar keyboard_hid_report[] = { | |||
* http://www.keil.com/forum/15671/ | |||
* http://www.microsoft.com/whdc/device/input/wheel.mspx | |||
*/ | |||
PROGMEM uchar mouse_hid_report[] = { | |||
const PROGMEM uchar mouse_hid_report[] = { | |||
/* mouse */ | |||
0x05, 0x01, // USAGE_PAGE (Generic Desktop) | |||
0x09, 0x02, // USAGE (Mouse) | |||
@@ -358,7 +365,7 @@ PROGMEM uchar mouse_hid_report[] = { | |||
* contains: device, interface, HID and endpoint descriptors | |||
*/ | |||
#if USB_CFG_DESCR_PROPS_CONFIGURATION | |||
PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ | |||
const PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ | |||
9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */ | |||
USBDESCR_CONFIG, /* descriptor type */ | |||
9 + (9 + 9 + 7) + (9 + 9 + 7), 0, |