Committer:
chris
Date:
Fri Oct 21 23:02:16 2011 +0000
Revision:
1:4d08e0ebf5dd
Parent:
0:e98d1c2b16c6

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris 0:e98d1c2b16c6 1 /* GenericKeyboard.h */
chris 0:e98d1c2b16c6 2 /* Copyright (c) 2011 ARM Limited. All rights reserved. */
chris 0:e98d1c2b16c6 3
chris 0:e98d1c2b16c6 4 #ifndef _GENERIC_KEYBOARD_
chris 0:e98d1c2b16c6 5 #define _GENERIC_KEYBOARD_
chris 0:e98d1c2b16c6 6
chris 0:e98d1c2b16c6 7 #include "USBHID.h"
chris 0:e98d1c2b16c6 8 #include "Stream.h"
chris 0:e98d1c2b16c6 9
chris 0:e98d1c2b16c6 10 #define REPORT_ID_KEYBOARD 1
chris 0:e98d1c2b16c6 11 #define REPORT_ID_VOLUME 3
chris 0:e98d1c2b16c6 12
chris 0:e98d1c2b16c6 13
chris 0:e98d1c2b16c6 14 ///All media keys
chris 0:e98d1c2b16c6 15 enum MEDIA_KEY
chris 0:e98d1c2b16c6 16 {
chris 0:e98d1c2b16c6 17 KEY_NEXT_TRACK, ///< next Track Button
chris 0:e98d1c2b16c6 18 KEY_PREVIOUS_TRACK, ///< Previous track Button
chris 0:e98d1c2b16c6 19 KEY_STOP, ///< Stop Button
chris 0:e98d1c2b16c6 20 KEY_PLAY_PAUSE, ///< Play/Pause Button
chris 0:e98d1c2b16c6 21 KEY_MUTE, ///< Mute Button
chris 0:e98d1c2b16c6 22 KEY_VOLUME_UP, ///< Volume Up Button
chris 0:e98d1c2b16c6 23 KEY_VOLUME_DOWN, ///< Volume Down Button
chris 0:e98d1c2b16c6 24 };
chris 0:e98d1c2b16c6 25
chris 0:e98d1c2b16c6 26
chris 0:e98d1c2b16c6 27 ///Different keys
chris 0:e98d1c2b16c6 28 enum KEY
chris 0:e98d1c2b16c6 29 {
chris 0:e98d1c2b16c6 30 KEY_F1 = 128, ///< F1 key
chris 0:e98d1c2b16c6 31 KEY_F2, ///< F2 key
chris 0:e98d1c2b16c6 32 KEY_F3, ///< F3 key
chris 0:e98d1c2b16c6 33 KEY_F4, ///< F4 key
chris 0:e98d1c2b16c6 34 KEY_F5, ///< F5 key
chris 0:e98d1c2b16c6 35 KEY_F6, ///< F6 key
chris 0:e98d1c2b16c6 36 KEY_F7, ///< F7 key
chris 0:e98d1c2b16c6 37 KEY_F8, ///< F8 key
chris 0:e98d1c2b16c6 38 KEY_F9, ///< F9 key
chris 0:e98d1c2b16c6 39 KEY_F10, ///< F10 key
chris 0:e98d1c2b16c6 40 KEY_F11, ///< F11 key
chris 0:e98d1c2b16c6 41 KEY_F12, ///< F12 key
chris 0:e98d1c2b16c6 42 PRINT_SCREEN, ///< Print Screen key
chris 0:e98d1c2b16c6 43 INSERT, ///< Insert key
chris 0:e98d1c2b16c6 44 HOME, ///< Home key
chris 0:e98d1c2b16c6 45 PAGE_UP, ///< Page Up key
chris 0:e98d1c2b16c6 46 PAGE_DOWN, ///< Page Down key
chris 0:e98d1c2b16c6 47 };
chris 0:e98d1c2b16c6 48
chris 0:e98d1c2b16c6 49
chris 0:e98d1c2b16c6 50 /** Generic keyboard
chris 0:e98d1c2b16c6 51 *
chris 0:e98d1c2b16c6 52 * This class is just an API to use in a child class. See USBKeyboard.h for instance for more information.
chris 0:e98d1c2b16c6 53 *
chris 0:e98d1c2b16c6 54 */
chris 0:e98d1c2b16c6 55 class GenericKeyboard: public Stream
chris 0:e98d1c2b16c6 56 {
chris 0:e98d1c2b16c6 57 public:
chris 0:e98d1c2b16c6 58 /**
chris 0:e98d1c2b16c6 59 * Constructor for a Generic keyboard
chris 0:e98d1c2b16c6 60 */
chris 0:e98d1c2b16c6 61 GenericKeyboard(){};
chris 0:e98d1c2b16c6 62
chris 0:e98d1c2b16c6 63 /**
chris 0:e98d1c2b16c6 64 * Send all kinds of characters (ctrl + key, ...).
chris 0:e98d1c2b16c6 65 *
chris 0:e98d1c2b16c6 66 * @code
chris 0:e98d1c2b16c6 67 * //To send CTRL + s (save)
chris 0:e98d1c2b16c6 68 * keyboard.keyCode(CTRL, 's');
chris 0:e98d1c2b16c6 69 * @endcode
chris 0:e98d1c2b16c6 70 *
chris 0:e98d1c2b16c6 71 * @param modifier bit 0: CTRL, bit 1: SHIFT, bit 2: ALT
chris 0:e98d1c2b16c6 72 * @param key character to send
chris 0:e98d1c2b16c6 73 * @return true if there is no error, false otherwise
chris 0:e98d1c2b16c6 74 */
chris 0:e98d1c2b16c6 75 bool keyCode(uint8_t modifier, uint8_t key);
chris 0:e98d1c2b16c6 76
chris 0:e98d1c2b16c6 77 /**
chris 0:e98d1c2b16c6 78 * Send a character
chris 0:e98d1c2b16c6 79 *
chris 0:e98d1c2b16c6 80 * @param c character to be sent
chris 0:e98d1c2b16c6 81 * @return true if there is no error, false otherwise
chris 0:e98d1c2b16c6 82 */
chris 0:e98d1c2b16c6 83 virtual int _putc(int c);
chris 0:e98d1c2b16c6 84
chris 0:e98d1c2b16c6 85 /**
chris 0:e98d1c2b16c6 86 * Control media keys
chris 0:e98d1c2b16c6 87 *
chris 0:e98d1c2b16c6 88 * @param key media key pressed (KEY_NEXT_TRACK, KEY_PREVIOUS_TRACK, KEY_STOP, KEY_PLAY_PAUSE, KEY_MUTE, KEY_VOLUME_UP, KEY_VOLUME_DOWN)
chris 0:e98d1c2b16c6 89 * @return true if there is no error, false otherwise
chris 0:e98d1c2b16c6 90 */
chris 0:e98d1c2b16c6 91 bool mediaControl(MEDIA_KEY key);
chris 0:e98d1c2b16c6 92
chris 0:e98d1c2b16c6 93 private:
chris 0:e98d1c2b16c6 94 //dummy otherwise it doesn,t compile (we must define all methods of an abstract class)
chris 0:e98d1c2b16c6 95 virtual int _getc() { return -1;}
chris 0:e98d1c2b16c6 96
chris 0:e98d1c2b16c6 97
chris 0:e98d1c2b16c6 98 };
chris 0:e98d1c2b16c6 99
chris 0:e98d1c2b16c6 100 #endif