arduino stuffs
Diffstat (limited to 'libraries/Keyboard/src/Keyboard.h')
-rw-r--r--libraries/Keyboard/src/Keyboard.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/libraries/Keyboard/src/Keyboard.h b/libraries/Keyboard/src/Keyboard.h
new file mode 100644
index 0000000..33570a7
--- /dev/null
+++ b/libraries/Keyboard/src/Keyboard.h
@@ -0,0 +1,120 @@
+/*
+ Keyboard.h
+
+ Copyright (c) 2015, Arduino LLC
+ Original code (pre-library): Copyright (c) 2011, Peter Barrett
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef KEYBOARD_h
+#define KEYBOARD_h
+
+#include "HID.h"
+
+#if !defined(_USING_HID)
+
+#warning "Using legacy HID core (non pluggable)"
+
+#else
+
+//================================================================================
+//================================================================================
+// Keyboard
+
+#define KEY_LEFT_CTRL 0x80
+#define KEY_LEFT_SHIFT 0x81
+#define KEY_LEFT_ALT 0x82
+#define KEY_LEFT_GUI 0x83
+#define KEY_RIGHT_CTRL 0x84
+#define KEY_RIGHT_SHIFT 0x85
+#define KEY_RIGHT_ALT 0x86
+#define KEY_RIGHT_GUI 0x87
+
+#define KEY_UP_ARROW 0xDA
+#define KEY_DOWN_ARROW 0xD9
+#define KEY_LEFT_ARROW 0xD8
+#define KEY_RIGHT_ARROW 0xD7
+#define KEY_BACKSPACE 0xB2
+#define KEY_TAB 0xB3
+#define KEY_RETURN 0xB0
+#define KEY_ESC 0xB1
+#define KEY_INSERT 0xD1
+#define KEY_DELETE 0xD4
+#define KEY_PAGE_UP 0xD3
+#define KEY_PAGE_DOWN 0xD6
+#define KEY_HOME 0xD2
+#define KEY_END 0xD5
+#define KEY_CAPS_LOCK 0xC1
+#define KEY_F1 0xC2
+#define KEY_F2 0xC3
+#define KEY_F3 0xC4
+#define KEY_F4 0xC5
+#define KEY_F5 0xC6
+#define KEY_F6 0xC7
+#define KEY_F7 0xC8
+#define KEY_F8 0xC9
+#define KEY_F9 0xCA
+#define KEY_F10 0xCB
+#define KEY_F11 0xCC
+#define KEY_F12 0xCD
+#define KEY_F13 0xF0
+#define KEY_F14 0xF1
+#define KEY_F15 0xF2
+#define KEY_F16 0xF3
+#define KEY_F17 0xF4
+#define KEY_F18 0xF5
+#define KEY_F19 0xF6
+#define KEY_F20 0xF7
+#define KEY_F21 0xF8
+#define KEY_F22 0xF9
+#define KEY_F23 0xFA
+#define KEY_F24 0xFB
+
+// Supported keyboard layouts
+extern const uint8_t KeyboardLayout_de_DE[];
+extern const uint8_t KeyboardLayout_en_US[];
+extern const uint8_t KeyboardLayout_es_ES[];
+extern const uint8_t KeyboardLayout_fr_FR[];
+extern const uint8_t KeyboardLayout_it_IT[];
+
+// Low level key report: up to 6 keys and shift, ctrl etc at once
+typedef struct
+{
+ uint8_t modifiers;
+ uint8_t reserved;
+ uint8_t keys[6];
+} KeyReport;
+
+class Keyboard_ : public Print
+{
+private:
+ KeyReport _keyReport;
+ const uint8_t *_asciimap;
+ void sendReport(KeyReport* keys);
+public:
+ Keyboard_(void);
+ void begin(const uint8_t *layout = KeyboardLayout_en_US);
+ void end(void);
+ size_t write(uint8_t k);
+ size_t write(const uint8_t *buffer, size_t size);
+ size_t press(uint8_t k);
+ size_t release(uint8_t k);
+ void releaseAll(void);
+};
+extern Keyboard_ Keyboard;
+
+#endif
+#endif