add usb hid consumer,increase key latency

This commit is contained in:
cuu 2021-05-08 12:38:32 +08:00
parent 7ccbbb5c3e
commit eb44ebdf50
6 changed files with 21 additions and 8 deletions

View File

@ -1,6 +1,7 @@
#ifndef DEVTERM_H #ifndef DEVTERM_H
#define DEVTERM_H #define DEVTERM_H
#define KEY_LATENCY 80
#include <USBComposite.h> #include <USBComposite.h>
typedef struct key_debouncing{ typedef struct key_debouncing{
@ -23,6 +24,7 @@ class DEVTERM {
HIDKeyboard *Keyboard; HIDKeyboard *Keyboard;
HIDMouse *Mouse; HIDMouse *Mouse;
HIDJoystick *Joystick; HIDJoystick *Joystick;
HIDConsumer *Consumer;
KEYBOARD_STATE Keyboard_state; KEYBOARD_STATE Keyboard_state;
USBCompositeSerial *_Serial; USBCompositeSerial *_Serial;
//if not to use USBCompositeSerial,then use default Serial //if not to use USBCompositeSerial,then use default Serial

View File

@ -10,6 +10,14 @@
USBHID HID; USBHID HID;
DEVTERM dev_term; DEVTERM dev_term;
const uint8_t reportDescription[] = {
HID_CONSUMER_REPORT_DESCRIPTOR(),
HID_KEYBOARD_REPORT_DESCRIPTOR(),
HID_JOYSTICK_REPORT_DESCRIPTOR(),
HID_MOUSE_REPORT_DESCRIPTOR()
};
void setup() { void setup() {
USBComposite.setManufacturerString("ClockworkPI"); USBComposite.setManufacturerString("ClockworkPI");
USBComposite.setProductString("DevTerm"); USBComposite.setProductString("DevTerm");
@ -18,6 +26,7 @@ void setup() {
dev_term.Keyboard = new HIDKeyboard(HID); dev_term.Keyboard = new HIDKeyboard(HID);
dev_term.Joystick = new HIDJoystick(HID); dev_term.Joystick = new HIDJoystick(HID);
dev_term.Mouse = new HIDMouse(HID); dev_term.Mouse = new HIDMouse(HID);
dev_term.Consumer = new HIDConsumer(HID);
dev_term.Keyboard_state.shift = 0; dev_term.Keyboard_state.shift = 0;
dev_term.Keyboard_state.layer = 0; dev_term.Keyboard_state.layer = 0;
@ -25,7 +34,7 @@ void setup() {
dev_term._Serial = new USBCompositeSerial; dev_term._Serial = new USBCompositeSerial;
HID.begin(*dev_term._Serial,HID_KEYBOARD_MOUSE_JOYSTICK); HID.begin(*dev_term._Serial,reportDescription, sizeof(reportDescription));
while(!USBComposite);//wait until usb port been plugged in to PC while(!USBComposite);//wait until usb port been plugged in to PC

View File

@ -43,10 +43,10 @@ void keyboard_init(DEVTERM*);
#define KEY_PRESSED 1 #define KEY_PRESSED 1
#define KEY_RELEASED 0 #define KEY_RELEASED 0
#define KEY_PRNT_SCRN 0xCE //Print screen #define KEY_PRNT_SCRN 0xCE //Print screen - 0x88 == usb hut1_12v2.pdf keyboard code
#define KEY_PAUSE 0xd0 #define KEY_PAUSE 0xd0 // - 0x88 == usb hut1_12v2.pdf keyboard code
#define KEY_VOLUME_UP 0x108 #define KEY_VOLUME_UP 0x108 // - 0x88 == usb hut1_12v2.pdf keyboard code
#define KEY_VOLUME_DOWN 0x109 #define KEY_VOLUME_DOWN 0x109 // - 0x88 == usb hut1_12v2.pdf keyboard code
#endif #endif

View File

@ -164,7 +164,7 @@ void keyboard_task(DEVTERM*dv)
jack_idx = r*MATRIX_ROWS+c; jack_idx = r*MATRIX_ROWS+c;
}else{ }else{
jack_time +=1; jack_time +=1;
if( jack_time % (DEBOUNCE*40) == 0){ if( jack_time % (DEBOUNCE*KEY_LATENCY) == 0){
if(jack_idx > 1){//skip select,start button if(jack_idx > 1){//skip select,start button
matrix_press(dv,r,c); matrix_press(dv,r,c);
} }

View File

@ -51,7 +51,9 @@ enum SKEYS {
_FN_KEY_UP_ARROW, // Simulate Mouse.move _FN_KEY_UP_ARROW, // Simulate Mouse.move
_FN_KEY_DOWN_ARROW, //Mouse.move _FN_KEY_DOWN_ARROW, //Mouse.move
_FN_KEY_LEFT_ARROW, //Mouse.move _FN_KEY_LEFT_ARROW, //Mouse.move
_FN_KEY_RIGHT_ARROW //Mouse.move _FN_KEY_RIGHT_ARROW, //Mouse.move
_FN_BRIGHTNESS_UP, //USB Consumer brightness up https://github.com/torvalds/linux/blob/7fe10096c1508c7f033d34d0741809f8eecc1ed4/drivers/hid/hid-input.c#L903
_FN_BRIGHTNESS_DOWN, //USB Consumer brightness down
}; };

View File

@ -93,7 +93,7 @@ void keys_task(DEVTERM*dv){
keys_jack_idx = c; keys_jack_idx = c;
}else{ }else{
keys_jack_time +=1; keys_jack_time +=1;
if( keys_jack_time % (KEY_DEBOUNCE*40) == 0){ if( keys_jack_time % (KEY_DEBOUNCE*KEY_LATENCY) == 0){
keypad_action(dv,c,KEY_PRESSED); keypad_action(dv,c,KEY_PRESSED);
} }
} }