Arduino Due Keyboard Controller

This example demonstrates the use of the KeyboardController library.

Keyboard Controller

The Arduino Due has the ability to act as a USB host for peripherals such as a keyboard connected to the SerialUSB port. This example demonstrates the use of the KeyboardController library.

Hardware Required

Code

1/*
2
3 Keyboard Controller HID Example
4
5 Shows the output of a USB Keyboard connected to the USB
6
7 controller of an Arduino Due Board.
8
9 created 8 Oct 2012
10
11 by Cristian Maglie
12
13 */
14
15// Require keyboard control library
16#include <KeyboardController.h>
17
18// Initialize USB Controller
19
20USBHost usb;
21
22// Attach keyboard controller to USB
23
24KeyboardController keyboard(usb);
25
26// This function intercepts key press
27void keyPressed() {
28
29 Serial.print("Pressed: ");
30
31 printKey();
32}
33
34// This function intercepts key release
35void keyReleased() {
36
37 Serial.print("Released: ");
38
39 printKey();
40}
41
42void printKey() {
43
44 // getOemKey() returns the OEM-code associated with the key
45
46 Serial.print(" key:");
47
48 Serial.print(keyboard.getOemKey());
49
50 // getModifiers() returns a bits field with the modifiers-keys
51
52 int mod = keyboard.getModifiers();
53
54 Serial.print(" mod:");
55
56 Serial.print(mod);
57
58 Serial.print(" => ");
59
60 if (mod & LeftCtrl)
61
62 Serial.print("L-Ctrl ");
63
64 if (mod & LeftShift)
65
66 Serial.print("L-Shift ");
67
68 if (mod & Alt)
69
70 Serial.print("Alt ");
71
72 if (mod & LeftCmd)
73
74 Serial.print("L-Cmd ");
75
76 if (mod & RightCtrl)
77
78 Serial.print("R-Ctrl ");
79
80 if (mod & RightShift)
81
82 Serial.print("R-Shift ");
83
84 if (mod & AltGr)
85
86 Serial.print("AltGr ");
87
88 if (mod & RightCmd)
89
90 Serial.print("R-Cmd ");
91
92 // getKey() returns the ASCII translation of OEM key
93
94 // combined with modifiers.
95
96 Serial.write(keyboard.getKey());
97
98 Serial.println();
99}
100
101void setup()
102{
103
104 Serial.begin(115200);
105
106 Serial.println("Program started");
107
108 delay(200);
109}
110
111void loop()
112{
113
114 // Process USB tasks
115
116 usb.Task();
117}

Contribute to Arduino

Join the community and suggest improvements to this article via GitHub. Make sure to read out contribution policy before making your pull request.

Missing something?

Check out our store and get what you need to follow this tutorial.

Suggest Changes

The content on docs.arduino.cc is facilitated through a public GitHub repository. You can read more on how to contribute in the contribution policy.