mirror of
https://github.com/gdsports/USBHost_t36
synced 2024-11-24 18:12:16 -05:00
Add Mouse driver from wwatson
https://forum.pjrc.com/threads/45740-USB-Host-Mouse-Driver
This commit is contained in:
parent
e345c0360d
commit
75ac4d21e6
@ -654,4 +654,37 @@ private:
|
||||
Transfer_t mytransfers[7] __attribute__ ((aligned(32)));
|
||||
};
|
||||
|
||||
class MouseController : public USBDriver {
|
||||
public:
|
||||
MouseController(USBHost &host) { init(); }
|
||||
MouseController(USBHost *host) { init(); }
|
||||
bool available() { return mouseEvent; }
|
||||
void mouseDataClear();
|
||||
uint8_t getButtons() { return buttons; }
|
||||
int8_t getMouseX() { return mouseX; }
|
||||
int8_t getMouseY() { return mouseY; }
|
||||
int8_t getWheel() { return wheel; }
|
||||
protected:
|
||||
virtual bool claim(Device_t *device, int type, const uint8_t *descriptors, uint32_t len);
|
||||
virtual void control(const Transfer_t *transfer);
|
||||
virtual void disconnect();
|
||||
static void callback(const Transfer_t *transfer);
|
||||
void new_data(const Transfer_t *transfer);
|
||||
void init();
|
||||
private:
|
||||
void update();
|
||||
Pipe_t *datapipe;
|
||||
setup_t setup;
|
||||
uint32_t packetSize;
|
||||
uint8_t buttons;
|
||||
int8_t mouseX;
|
||||
int8_t mouseY;
|
||||
int8_t wheel;
|
||||
bool mouseEvent = false;
|
||||
uint8_t report[20]; // Set to largest packet size 20 bytes
|
||||
uint8_t prev_report[20]; // Same as above
|
||||
Pipe_t mypipes[2] __attribute__ ((aligned(32)));
|
||||
Transfer_t mytransfers[4] __attribute__ ((aligned(32)));
|
||||
};
|
||||
|
||||
#endif
|
||||
|
55
examples/Mouse/Mouse.ino
Normal file
55
examples/Mouse/Mouse.ino
Normal file
@ -0,0 +1,55 @@
|
||||
// Simple test of USB Host Mouse/Keyboard
|
||||
//
|
||||
// This example is in the public domain
|
||||
|
||||
#include "USBHost_t36.h"
|
||||
|
||||
USBHost myusb;
|
||||
USBHub hub1(myusb);
|
||||
USBHub hub2(myusb);
|
||||
USBHub hub3(myusb);
|
||||
KeyboardController keyboard1(myusb);
|
||||
KeyboardController keyboard2(myusb);
|
||||
MouseController mouse1(myusb);
|
||||
|
||||
void setup()
|
||||
{
|
||||
while (!Serial) ; // wait for Arduino Serial Monitor
|
||||
Serial.println("USB Host Testing");
|
||||
myusb.begin();
|
||||
keyboard1.attachPress(OnPress);
|
||||
keyboard2.attachPress(OnPress);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
myusb.Task();
|
||||
if(mouse1.available()) {
|
||||
Serial.print("buttons = ");
|
||||
Serial.print(mouse1.getButtons(),DEC);
|
||||
Serial.print(", wheel = ");
|
||||
Serial.print(mouse1.getWheel(),DEC);
|
||||
Serial.print(", mouseX = ");
|
||||
Serial.print(mouse1.getMouseX(),DEC);
|
||||
Serial.print(", mouseY = ");
|
||||
Serial.println(mouse1.getMouseY(),DEC);
|
||||
mouse1.mouseDataClear();
|
||||
}
|
||||
delay(50);
|
||||
}
|
||||
|
||||
|
||||
void OnPress(int key)
|
||||
{
|
||||
Serial.print("key '");
|
||||
Serial.print((char)key);
|
||||
Serial.print("' ");
|
||||
Serial.println(key);
|
||||
//Serial.print("key ");
|
||||
//Serial.print((char)keyboard1.getKey());
|
||||
//Serial.print(" ");
|
||||
//Serial.print((char)keyboard2.getKey());
|
||||
//Serial.println();
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
USBHost KEYWORD1
|
||||
USBHub KEYWORD1
|
||||
KeyboardController KEYWORD1
|
||||
MouseController KEYWORD1
|
||||
MIDIDevice KEYWORD1
|
||||
Task KEYWORD2
|
||||
getKey KEYWORD2
|
||||
@ -8,3 +9,7 @@ getModifiers KEYWORD2
|
||||
getOemKey KEYWORD2
|
||||
attachPress KEYWORD2
|
||||
attachRelease KEYWORD2
|
||||
getButtons KEYWORD2
|
||||
getWheel KEYWORD2
|
||||
getMouseX KEYWORD2
|
||||
getMouseY KEYWORD2
|
||||
|
Loading…
Reference in New Issue
Block a user