mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-15 12:29:26 +01:00
[sam] added HID examples (mouse+keyboard)
This commit is contained in:
parent
a1d6cb43a5
commit
c4198b3a6c
@ -2,66 +2,58 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <hidboot.h>
|
#include <hidboot.h>
|
||||||
|
|
||||||
/*
|
class KbdRptParser : public KeyboardReportParser
|
||||||
|
{
|
||||||
|
void PrintKey(uint8_t mod, uint8_t key);
|
||||||
|
|
||||||
#include <avr/pgmspace.h>
|
|
||||||
#include <avrpins.h>
|
|
||||||
#include <max3421e.h>
|
|
||||||
#include <usbhost.h>
|
|
||||||
#include <usb_ch9.h>
|
|
||||||
#include <Usb.h>
|
|
||||||
#include <usbhub.h>
|
|
||||||
#include <avr/pgmspace.h>
|
|
||||||
#include <address.h>
|
|
||||||
#include <hidboot.h>
|
|
||||||
#include <printhex.h>
|
|
||||||
#include <message.h>
|
|
||||||
#include <hexdump.h>
|
|
||||||
#include <parsetools.h>
|
|
||||||
*/
|
|
||||||
class MouseRptParser : public MouseReportParser
|
|
||||||
{
|
|
||||||
protected:
|
protected:
|
||||||
virtual void OnMouseMove (MOUSEINFO *mi);
|
virtual void OnKeyDown (uint8_t mod, uint8_t key);
|
||||||
virtual void OnLeftButtonUp (MOUSEINFO *mi);
|
virtual void OnKeyUp (uint8_t mod, uint8_t key);
|
||||||
virtual void OnLeftButtonDown (MOUSEINFO *mi);
|
virtual void OnKeyPressed(uint8_t key);
|
||||||
virtual void OnRightButtonUp (MOUSEINFO *mi);
|
|
||||||
virtual void OnRightButtonDown (MOUSEINFO *mi);
|
|
||||||
virtual void OnMiddleButtonUp (MOUSEINFO *mi);
|
|
||||||
virtual void OnMiddleButtonDown (MOUSEINFO *mi);
|
|
||||||
};
|
};
|
||||||
void MouseRptParser::OnMouseMove(MOUSEINFO *mi)
|
|
||||||
|
void KbdRptParser::PrintKey(uint8_t m, uint8_t key)
|
||||||
{
|
{
|
||||||
printf("Pos={%d,%d}\r\n", mi->dX, mi->dY);
|
MODIFIERKEYS mod;
|
||||||
|
|
||||||
|
*((uint8_t*)&mod) = m;
|
||||||
|
printf((mod.bmLeftCtrl == 1) ? "C" : " ");
|
||||||
|
printf((mod.bmLeftShift == 1) ? "S" : " ");
|
||||||
|
printf((mod.bmLeftAlt == 1) ? "A" : " ");
|
||||||
|
printf((mod.bmLeftGUI == 1) ? "G" : " ");
|
||||||
|
|
||||||
|
printf("<%c>", key);
|
||||||
|
|
||||||
|
printf((mod.bmRightCtrl == 1) ? "C" : " ");
|
||||||
|
printf((mod.bmRightShift == 1) ? "S" : " ");
|
||||||
|
printf((mod.bmRightAlt == 1) ? "A" : " ");
|
||||||
|
printf((mod.bmRightGUI == 1) ? "G" : " ");
|
||||||
};
|
};
|
||||||
void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi)
|
|
||||||
|
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
|
||||||
{
|
{
|
||||||
printf("L Butt Up\r\n");
|
printf("DN ");
|
||||||
};
|
PrintKey(mod, key);
|
||||||
void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi)
|
uint8_t c = OemToAscii(mod, key);
|
||||||
|
|
||||||
|
if (c)
|
||||||
|
OnKeyPressed(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key)
|
||||||
{
|
{
|
||||||
printf("L Butt Dn\r\n");
|
printf("UP ");
|
||||||
};
|
PrintKey(mod, key);
|
||||||
void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi)
|
}
|
||||||
|
|
||||||
|
void KbdRptParser::OnKeyPressed(uint8_t key)
|
||||||
{
|
{
|
||||||
printf("R Butt Up\r\n");
|
printf("ASCII: %c", key);
|
||||||
};
|
|
||||||
void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi)
|
|
||||||
{
|
|
||||||
printf("R Butt Dn\r\n");
|
|
||||||
};
|
|
||||||
void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi)
|
|
||||||
{
|
|
||||||
printf("M Butt Up\r\n");
|
|
||||||
};
|
|
||||||
void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi)
|
|
||||||
{
|
|
||||||
printf("M Butt Dn\r\n");
|
|
||||||
};
|
};
|
||||||
|
|
||||||
USBHost Usb;
|
USBHost Usb;
|
||||||
HIDBoot<HID_PROTOCOL_MOUSE> HostMouse(&Usb);
|
HIDBoot<HID_PROTOCOL_KEYBOARD> Kbd(&Usb);
|
||||||
MouseRptParser Prs;
|
KbdRptParser Prs;
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
@ -69,7 +61,7 @@ void setup()
|
|||||||
printf("\r\nProgram started:\r\n");
|
printf("\r\nProgram started:\r\n");
|
||||||
delay(200);
|
delay(200);
|
||||||
|
|
||||||
HostMouse.SetReportParser(0,(HIDReportParser*)&Prs);
|
Kbd.SetReportParser(0, (HIDReportParser*)&Prs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
|
@ -0,0 +1,70 @@
|
|||||||
|
#include "variant.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <hidboot.h>
|
||||||
|
|
||||||
|
class KbdRptParser : public KeyboardReportParser
|
||||||
|
{
|
||||||
|
void PrintKey(uint8_t mod, uint8_t key);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void OnKeyDown (uint8_t mod, uint8_t key);
|
||||||
|
virtual void OnKeyUp (uint8_t mod, uint8_t key);
|
||||||
|
virtual void OnKeyPressed(uint8_t key);
|
||||||
|
};
|
||||||
|
|
||||||
|
void KbdRptParser::PrintKey(uint8_t m, uint8_t key)
|
||||||
|
{
|
||||||
|
MODIFIERKEYS mod;
|
||||||
|
|
||||||
|
*((uint8_t*)&mod) = m;
|
||||||
|
printf((mod.bmLeftCtrl == 1) ? "C" : " ");
|
||||||
|
printf((mod.bmLeftShift == 1) ? "S" : " ");
|
||||||
|
printf((mod.bmLeftAlt == 1) ? "A" : " ");
|
||||||
|
printf((mod.bmLeftGUI == 1) ? "G" : " ");
|
||||||
|
|
||||||
|
printf("<%c>", key);
|
||||||
|
|
||||||
|
printf((mod.bmRightCtrl == 1) ? "C" : " ");
|
||||||
|
printf((mod.bmRightShift == 1) ? "S" : " ");
|
||||||
|
printf((mod.bmRightAlt == 1) ? "A" : " ");
|
||||||
|
printf((mod.bmRightGUI == 1) ? "G" : " ");
|
||||||
|
};
|
||||||
|
|
||||||
|
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
|
||||||
|
{
|
||||||
|
printf("DN ");
|
||||||
|
PrintKey(mod, key);
|
||||||
|
uint8_t c = OemToAscii(mod, key);
|
||||||
|
|
||||||
|
if (c)
|
||||||
|
OnKeyPressed(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key)
|
||||||
|
{
|
||||||
|
printf("UP ");
|
||||||
|
PrintKey(mod, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KbdRptParser::OnKeyPressed(uint8_t key)
|
||||||
|
{
|
||||||
|
printf("ASCII: %c", key);
|
||||||
|
};
|
||||||
|
|
||||||
|
USBHost Usb;
|
||||||
|
HIDBoot<HID_PROTOCOL_KEYBOARD> Kbd(&Usb);
|
||||||
|
KbdRptParser Prs;
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
cpu_irq_enable();
|
||||||
|
printf("\r\nProgram started:\r\n");
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
Kbd.SetReportParser(0, (HIDReportParser*)&Prs);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
Usb.Task();
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
#include "variant.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <hidboot.h>
|
||||||
|
|
||||||
|
class MouseRptParser : public MouseReportParser
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual void OnMouseMove (MOUSEINFO *mi);
|
||||||
|
virtual void OnLeftButtonUp (MOUSEINFO *mi);
|
||||||
|
virtual void OnLeftButtonDown (MOUSEINFO *mi);
|
||||||
|
virtual void OnRightButtonUp (MOUSEINFO *mi);
|
||||||
|
virtual void OnRightButtonDown (MOUSEINFO *mi);
|
||||||
|
virtual void OnMiddleButtonUp (MOUSEINFO *mi);
|
||||||
|
virtual void OnMiddleButtonDown (MOUSEINFO *mi);
|
||||||
|
};
|
||||||
|
void MouseRptParser::OnMouseMove(MOUSEINFO *mi)
|
||||||
|
{
|
||||||
|
printf("Pos={%d,%d}\r\n", mi->dX, mi->dY);
|
||||||
|
};
|
||||||
|
void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi)
|
||||||
|
{
|
||||||
|
printf("L Butt Up\r\n");
|
||||||
|
};
|
||||||
|
void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi)
|
||||||
|
{
|
||||||
|
printf("L Butt Dn\r\n");
|
||||||
|
};
|
||||||
|
void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi)
|
||||||
|
{
|
||||||
|
printf("R Butt Up\r\n");
|
||||||
|
};
|
||||||
|
void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi)
|
||||||
|
{
|
||||||
|
printf("R Butt Dn\r\n");
|
||||||
|
};
|
||||||
|
void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi)
|
||||||
|
{
|
||||||
|
printf("M Butt Up\r\n");
|
||||||
|
};
|
||||||
|
void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi)
|
||||||
|
{
|
||||||
|
printf("M Butt Dn\r\n");
|
||||||
|
};
|
||||||
|
|
||||||
|
USBHost Usb;
|
||||||
|
HIDBoot<HID_PROTOCOL_MOUSE> HostMouse(&Usb);
|
||||||
|
MouseRptParser Prs;
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
cpu_irq_enable();
|
||||||
|
printf("\r\nProgram started:\r\n");
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
HostMouse.SetReportParser(0,(HIDReportParser*)&Prs);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
Usb.Task();
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user