HID-over-GATT implementation with the BLE API. This library allows to create devices such as mouse, keyboard or joystick, over Bluetooth Low Energy.
Dependents: BLENano_HID BLE_HID_MouseScrollDemo BLE_HID_KeyboardStreamDemo Shervs_TestKeyboard_TinyBLE ... more
The development repository is currently hosted on github. It contains examples and documentation. This is a snapshot of the library. The documentation can be read on github, or on docs.mbed.com.
Keyboard_types.h@1:7a6c2e2c9371, 2015-10-07 (annotated)
- Committer:
- Jean-Philippe Brucker
- Date:
- Wed Oct 07 11:29:52 2015 +0100
- Revision:
- 1:7a6c2e2c9371
- Parent:
- 0:cfd70fa91663
Publish version 0.1 of the BLE HID lib
This version number is completely arbitrary, and probably won't stick: once the
service is stable, we'll merge it with BLE API.
It is simply used to keep examples in sync with the lib and the github
repository during development.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 1 | /* Copyright (c) 2015 mbed.org, MIT License |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 2 | * |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 4 | * and associated documentation files (the "Software"), to deal in the Software without |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 5 | * restriction, including without limitation the rights to use, copy, modify, merge, publish, |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 6 | * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 7 | * Software is furnished to do so, subject to the following conditions: |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 8 | * |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 10 | * substantial portions of the Software. |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 11 | * |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 17 | * |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 18 | * Note: this file was pulled from different parts of the USBHID library, in mbed SDK |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 19 | */ |
Jean-Philippe Brucker |
1:7a6c2e2c9371 | 20 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 21 | #ifndef KEYBOARD_DEFS_H |
Jean-Philippe Brucker |
0:cfd70fa91663 | 22 | #define KEYBOARD_DEFS_H |
Jean-Philippe Brucker |
0:cfd70fa91663 | 23 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 24 | #define REPORT_ID_KEYBOARD 1 |
Jean-Philippe Brucker |
0:cfd70fa91663 | 25 | #define REPORT_ID_VOLUME 3 |
Jean-Philippe Brucker |
0:cfd70fa91663 | 26 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 27 | /* Modifiers */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 28 | enum MODIFIER_KEY { |
Jean-Philippe Brucker |
0:cfd70fa91663 | 29 | KEY_CTRL = 1, |
Jean-Philippe Brucker |
0:cfd70fa91663 | 30 | KEY_SHIFT = 2, |
Jean-Philippe Brucker |
0:cfd70fa91663 | 31 | KEY_ALT = 4, |
Jean-Philippe Brucker |
0:cfd70fa91663 | 32 | }; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 33 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 34 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 35 | enum MEDIA_KEY { |
Jean-Philippe Brucker |
0:cfd70fa91663 | 36 | KEY_NEXT_TRACK, /*!< next Track Button */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 37 | KEY_PREVIOUS_TRACK, /*!< Previous track Button */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 38 | KEY_STOP, /*!< Stop Button */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 39 | KEY_PLAY_PAUSE, /*!< Play/Pause Button */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 40 | KEY_MUTE, /*!< Mute Button */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 41 | KEY_VOLUME_UP, /*!< Volume Up Button */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 42 | KEY_VOLUME_DOWN, /*!< Volume Down Button */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 43 | }; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 44 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 45 | enum FUNCTION_KEY { |
Jean-Philippe Brucker |
0:cfd70fa91663 | 46 | KEY_F1 = 128, /* F1 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 47 | KEY_F2, /* F2 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 48 | KEY_F3, /* F3 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 49 | KEY_F4, /* F4 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 50 | KEY_F5, /* F5 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 51 | KEY_F6, /* F6 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 52 | KEY_F7, /* F7 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 53 | KEY_F8, /* F8 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 54 | KEY_F9, /* F9 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 55 | KEY_F10, /* F10 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 56 | KEY_F11, /* F11 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 57 | KEY_F12, /* F12 key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 58 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 59 | KEY_PRINT_SCREEN, /* Print Screen key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 60 | KEY_SCROLL_LOCK, /* Scroll lock */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 61 | KEY_CAPS_LOCK, /* caps lock */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 62 | KEY_NUM_LOCK, /* num lock */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 63 | KEY_INSERT, /* Insert key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 64 | KEY_HOME, /* Home key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 65 | KEY_PAGE_UP, /* Page Up key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 66 | KEY_PAGE_DOWN, /* Page Down key */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 67 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 68 | RIGHT_ARROW, /* Right arrow */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 69 | LEFT_ARROW, /* Left arrow */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 70 | DOWN_ARROW, /* Down arrow */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 71 | UP_ARROW, /* Up arrow */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 72 | }; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 73 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 74 | typedef struct { |
Jean-Philippe Brucker |
0:cfd70fa91663 | 75 | unsigned char usage; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 76 | unsigned char modifier; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 77 | } KEYMAP; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 78 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 79 | #ifdef US_KEYBOARD |
Jean-Philippe Brucker |
0:cfd70fa91663 | 80 | /* US keyboard (as HID standard) */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 81 | #define KEYMAP_SIZE (152) |
Jean-Philippe Brucker |
0:cfd70fa91663 | 82 | const KEYMAP keymap[KEYMAP_SIZE] = { |
Jean-Philippe Brucker |
0:cfd70fa91663 | 83 | {0, 0}, /* NUL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 84 | {0, 0}, /* SOH */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 85 | {0, 0}, /* STX */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 86 | {0, 0}, /* ETX */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 87 | {0, 0}, /* EOT */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 88 | {0, 0}, /* ENQ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 89 | {0, 0}, /* ACK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 90 | {0, 0}, /* BEL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 91 | {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 92 | {0x2b, 0}, /* TAB */ /* Keyboard Tab */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 93 | {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 94 | {0, 0}, /* VT */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 95 | {0, 0}, /* FF */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 96 | {0, 0}, /* CR */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 97 | {0, 0}, /* SO */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 98 | {0, 0}, /* SI */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 99 | {0, 0}, /* DEL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 100 | {0, 0}, /* DC1 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 101 | {0, 0}, /* DC2 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 102 | {0, 0}, /* DC3 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 103 | {0, 0}, /* DC4 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 104 | {0, 0}, /* NAK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 105 | {0, 0}, /* SYN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 106 | {0, 0}, /* ETB */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 107 | {0, 0}, /* CAN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 108 | {0, 0}, /* EM */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 109 | {0, 0}, /* SUB */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 110 | {0, 0}, /* ESC */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 111 | {0, 0}, /* FS */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 112 | {0, 0}, /* GS */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 113 | {0, 0}, /* RS */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 114 | {0, 0}, /* US */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 115 | {0x2c, 0}, /* */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 116 | {0x1e, KEY_SHIFT}, /* ! */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 117 | {0x34, KEY_SHIFT}, /* " */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 118 | {0x20, KEY_SHIFT}, /* # */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 119 | {0x21, KEY_SHIFT}, /* $ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 120 | {0x22, KEY_SHIFT}, /* % */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 121 | {0x24, KEY_SHIFT}, /* & */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 122 | {0x34, 0}, /* ' */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 123 | {0x26, KEY_SHIFT}, /* ( */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 124 | {0x27, KEY_SHIFT}, /* ) */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 125 | {0x25, KEY_SHIFT}, /* * */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 126 | {0x2e, KEY_SHIFT}, /* + */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 127 | {0x36, 0}, /* , */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 128 | {0x2d, 0}, /* - */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 129 | {0x37, 0}, /* . */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 130 | {0x38, 0}, /* / */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 131 | {0x27, 0}, /* 0 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 132 | {0x1e, 0}, /* 1 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 133 | {0x1f, 0}, /* 2 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 134 | {0x20, 0}, /* 3 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 135 | {0x21, 0}, /* 4 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 136 | {0x22, 0}, /* 5 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 137 | {0x23, 0}, /* 6 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 138 | {0x24, 0}, /* 7 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 139 | {0x25, 0}, /* 8 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 140 | {0x26, 0}, /* 9 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 141 | {0x33, KEY_SHIFT}, /* : */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 142 | {0x33, 0}, /* ; */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 143 | {0x36, KEY_SHIFT}, /* < */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 144 | {0x2e, 0}, /* = */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 145 | {0x37, KEY_SHIFT}, /* > */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 146 | {0x38, KEY_SHIFT}, /* ? */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 147 | {0x1f, KEY_SHIFT}, /* @ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 148 | {0x04, KEY_SHIFT}, /* A */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 149 | {0x05, KEY_SHIFT}, /* B */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 150 | {0x06, KEY_SHIFT}, /* C */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 151 | {0x07, KEY_SHIFT}, /* D */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 152 | {0x08, KEY_SHIFT}, /* E */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 153 | {0x09, KEY_SHIFT}, /* F */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 154 | {0x0a, KEY_SHIFT}, /* G */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 155 | {0x0b, KEY_SHIFT}, /* H */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 156 | {0x0c, KEY_SHIFT}, /* I */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 157 | {0x0d, KEY_SHIFT}, /* J */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 158 | {0x0e, KEY_SHIFT}, /* K */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 159 | {0x0f, KEY_SHIFT}, /* L */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 160 | {0x10, KEY_SHIFT}, /* M */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 161 | {0x11, KEY_SHIFT}, /* N */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 162 | {0x12, KEY_SHIFT}, /* O */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 163 | {0x13, KEY_SHIFT}, /* P */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 164 | {0x14, KEY_SHIFT}, /* Q */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 165 | {0x15, KEY_SHIFT}, /* R */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 166 | {0x16, KEY_SHIFT}, /* S */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 167 | {0x17, KEY_SHIFT}, /* T */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 168 | {0x18, KEY_SHIFT}, /* U */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 169 | {0x19, KEY_SHIFT}, /* V */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 170 | {0x1a, KEY_SHIFT}, /* W */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 171 | {0x1b, KEY_SHIFT}, /* X */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 172 | {0x1c, KEY_SHIFT}, /* Y */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 173 | {0x1d, KEY_SHIFT}, /* Z */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 174 | {0x2f, 0}, /* [ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 175 | {0x31, 0}, /* \ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 176 | {0x30, 0}, /* ] */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 177 | {0x23, KEY_SHIFT}, /* ^ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 178 | {0x2d, KEY_SHIFT}, /* _ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 179 | {0x35, 0}, /* ` */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 180 | {0x04, 0}, /* a */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 181 | {0x05, 0}, /* b */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 182 | {0x06, 0}, /* c */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 183 | {0x07, 0}, /* d */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 184 | {0x08, 0}, /* e */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 185 | {0x09, 0}, /* f */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 186 | {0x0a, 0}, /* g */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 187 | {0x0b, 0}, /* h */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 188 | {0x0c, 0}, /* i */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 189 | {0x0d, 0}, /* j */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 190 | {0x0e, 0}, /* k */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 191 | {0x0f, 0}, /* l */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 192 | {0x10, 0}, /* m */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 193 | {0x11, 0}, /* n */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 194 | {0x12, 0}, /* o */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 195 | {0x13, 0}, /* p */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 196 | {0x14, 0}, /* q */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 197 | {0x15, 0}, /* r */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 198 | {0x16, 0}, /* s */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 199 | {0x17, 0}, /* t */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 200 | {0x18, 0}, /* u */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 201 | {0x19, 0}, /* v */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 202 | {0x1a, 0}, /* w */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 203 | {0x1b, 0}, /* x */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 204 | {0x1c, 0}, /* y */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 205 | {0x1d, 0}, /* z */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 206 | {0x2f, KEY_SHIFT}, /* { */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 207 | {0x31, KEY_SHIFT}, /* | */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 208 | {0x30, KEY_SHIFT}, /* } */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 209 | {0x35, KEY_SHIFT}, /* ~ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 210 | {0,0}, /* DEL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 211 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 212 | {0x3a, 0}, /* F1 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 213 | {0x3b, 0}, /* F2 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 214 | {0x3c, 0}, /* F3 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 215 | {0x3d, 0}, /* F4 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 216 | {0x3e, 0}, /* F5 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 217 | {0x3f, 0}, /* F6 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 218 | {0x40, 0}, /* F7 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 219 | {0x41, 0}, /* F8 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 220 | {0x42, 0}, /* F9 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 221 | {0x43, 0}, /* F10 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 222 | {0x44, 0}, /* F11 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 223 | {0x45, 0}, /* F12 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 224 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 225 | {0x46, 0}, /* PRINT_SCREEN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 226 | {0x47, 0}, /* SCROLL_LOCK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 227 | {0x39, 0}, /* CAPS_LOCK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 228 | {0x53, 0}, /* NUM_LOCK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 229 | {0x49, 0}, /* INSERT */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 230 | {0x4a, 0}, /* HOME */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 231 | {0x4b, 0}, /* PAGE_UP */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 232 | {0x4e, 0}, /* PAGE_DOWN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 233 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 234 | {0x4f, 0}, /* RIGHT_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 235 | {0x50, 0}, /* LEFT_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 236 | {0x51, 0}, /* DOWN_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 237 | {0x52, 0}, /* UP_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 238 | }; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 239 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 240 | #else |
Jean-Philippe Brucker |
0:cfd70fa91663 | 241 | /* UK keyboard */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 242 | #define KEYMAP_SIZE (152) |
Jean-Philippe Brucker |
0:cfd70fa91663 | 243 | const KEYMAP keymap[KEYMAP_SIZE] = { |
Jean-Philippe Brucker |
0:cfd70fa91663 | 244 | {0, 0}, /* NUL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 245 | {0, 0}, /* SOH */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 246 | {0, 0}, /* STX */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 247 | {0, 0}, /* ETX */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 248 | {0, 0}, /* EOT */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 249 | {0, 0}, /* ENQ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 250 | {0, 0}, /* ACK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 251 | {0, 0}, /* BEL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 252 | {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 253 | {0x2b, 0}, /* TAB */ /* Keyboard Tab */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 254 | {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 255 | {0, 0}, /* VT */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 256 | {0, 0}, /* FF */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 257 | {0, 0}, /* CR */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 258 | {0, 0}, /* SO */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 259 | {0, 0}, /* SI */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 260 | {0, 0}, /* DEL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 261 | {0, 0}, /* DC1 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 262 | {0, 0}, /* DC2 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 263 | {0, 0}, /* DC3 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 264 | {0, 0}, /* DC4 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 265 | {0, 0}, /* NAK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 266 | {0, 0}, /* SYN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 267 | {0, 0}, /* ETB */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 268 | {0, 0}, /* CAN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 269 | {0, 0}, /* EM */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 270 | {0, 0}, /* SUB */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 271 | {0, 0}, /* ESC */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 272 | {0, 0}, /* FS */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 273 | {0, 0}, /* GS */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 274 | {0, 0}, /* RS */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 275 | {0, 0}, /* US */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 276 | {0x2c, 0}, /* */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 277 | {0x1e, KEY_SHIFT}, /* ! */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 278 | {0x1f, KEY_SHIFT}, /* " */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 279 | {0x32, 0}, /* # */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 280 | {0x21, KEY_SHIFT}, /* $ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 281 | {0x22, KEY_SHIFT}, /* % */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 282 | {0x24, KEY_SHIFT}, /* & */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 283 | {0x34, 0}, /* ' */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 284 | {0x26, KEY_SHIFT}, /* ( */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 285 | {0x27, KEY_SHIFT}, /* ) */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 286 | {0x25, KEY_SHIFT}, /* * */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 287 | {0x2e, KEY_SHIFT}, /* + */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 288 | {0x36, 0}, /* , */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 289 | {0x2d, 0}, /* - */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 290 | {0x37, 0}, /* . */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 291 | {0x38, 0}, /* / */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 292 | {0x27, 0}, /* 0 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 293 | {0x1e, 0}, /* 1 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 294 | {0x1f, 0}, /* 2 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 295 | {0x20, 0}, /* 3 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 296 | {0x21, 0}, /* 4 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 297 | {0x22, 0}, /* 5 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 298 | {0x23, 0}, /* 6 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 299 | {0x24, 0}, /* 7 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 300 | {0x25, 0}, /* 8 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 301 | {0x26, 0}, /* 9 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 302 | {0x33, KEY_SHIFT}, /* : */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 303 | {0x33, 0}, /* ; */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 304 | {0x36, KEY_SHIFT}, /* < */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 305 | {0x2e, 0}, /* = */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 306 | {0x37, KEY_SHIFT}, /* > */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 307 | {0x38, KEY_SHIFT}, /* ? */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 308 | {0x34, KEY_SHIFT}, /* @ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 309 | {0x04, KEY_SHIFT}, /* A */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 310 | {0x05, KEY_SHIFT}, /* B */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 311 | {0x06, KEY_SHIFT}, /* C */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 312 | {0x07, KEY_SHIFT}, /* D */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 313 | {0x08, KEY_SHIFT}, /* E */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 314 | {0x09, KEY_SHIFT}, /* F */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 315 | {0x0a, KEY_SHIFT}, /* G */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 316 | {0x0b, KEY_SHIFT}, /* H */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 317 | {0x0c, KEY_SHIFT}, /* I */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 318 | {0x0d, KEY_SHIFT}, /* J */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 319 | {0x0e, KEY_SHIFT}, /* K */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 320 | {0x0f, KEY_SHIFT}, /* L */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 321 | {0x10, KEY_SHIFT}, /* M */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 322 | {0x11, KEY_SHIFT}, /* N */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 323 | {0x12, KEY_SHIFT}, /* O */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 324 | {0x13, KEY_SHIFT}, /* P */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 325 | {0x14, KEY_SHIFT}, /* Q */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 326 | {0x15, KEY_SHIFT}, /* R */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 327 | {0x16, KEY_SHIFT}, /* S */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 328 | {0x17, KEY_SHIFT}, /* T */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 329 | {0x18, KEY_SHIFT}, /* U */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 330 | {0x19, KEY_SHIFT}, /* V */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 331 | {0x1a, KEY_SHIFT}, /* W */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 332 | {0x1b, KEY_SHIFT}, /* X */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 333 | {0x1c, KEY_SHIFT}, /* Y */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 334 | {0x1d, KEY_SHIFT}, /* Z */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 335 | {0x2f, 0}, /* [ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 336 | {0x64, 0}, /* \ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 337 | {0x30, 0}, /* ] */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 338 | {0x23, KEY_SHIFT}, /* ^ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 339 | {0x2d, KEY_SHIFT}, /* _ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 340 | {0x35, 0}, /* ` */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 341 | {0x04, 0}, /* a */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 342 | {0x05, 0}, /* b */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 343 | {0x06, 0}, /* c */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 344 | {0x07, 0}, /* d */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 345 | {0x08, 0}, /* e */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 346 | {0x09, 0}, /* f */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 347 | {0x0a, 0}, /* g */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 348 | {0x0b, 0}, /* h */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 349 | {0x0c, 0}, /* i */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 350 | {0x0d, 0}, /* j */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 351 | {0x0e, 0}, /* k */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 352 | {0x0f, 0}, /* l */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 353 | {0x10, 0}, /* m */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 354 | {0x11, 0}, /* n */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 355 | {0x12, 0}, /* o */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 356 | {0x13, 0}, /* p */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 357 | {0x14, 0}, /* q */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 358 | {0x15, 0}, /* r */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 359 | {0x16, 0}, /* s */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 360 | {0x17, 0}, /* t */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 361 | {0x18, 0}, /* u */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 362 | {0x19, 0}, /* v */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 363 | {0x1a, 0}, /* w */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 364 | {0x1b, 0}, /* x */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 365 | {0x1c, 0}, /* y */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 366 | {0x1d, 0}, /* z */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 367 | {0x2f, KEY_SHIFT}, /* { */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 368 | {0x64, KEY_SHIFT}, /* | */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 369 | {0x30, KEY_SHIFT}, /* } */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 370 | {0x32, KEY_SHIFT}, /* ~ */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 371 | {0,0}, /* DEL */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 372 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 373 | {0x3a, 0}, /* F1 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 374 | {0x3b, 0}, /* F2 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 375 | {0x3c, 0}, /* F3 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 376 | {0x3d, 0}, /* F4 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 377 | {0x3e, 0}, /* F5 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 378 | {0x3f, 0}, /* F6 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 379 | {0x40, 0}, /* F7 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 380 | {0x41, 0}, /* F8 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 381 | {0x42, 0}, /* F9 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 382 | {0x43, 0}, /* F10 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 383 | {0x44, 0}, /* F11 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 384 | {0x45, 0}, /* F12 */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 385 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 386 | {0x46, 0}, /* PRINT_SCREEN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 387 | {0x47, 0}, /* SCROLL_LOCK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 388 | {0x39, 0}, /* CAPS_LOCK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 389 | {0x53, 0}, /* NUM_LOCK */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 390 | {0x49, 0}, /* INSERT */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 391 | {0x4a, 0}, /* HOME */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 392 | {0x4b, 0}, /* PAGE_UP */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 393 | {0x4e, 0}, /* PAGE_DOWN */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 394 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 395 | {0x4f, 0}, /* RIGHT_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 396 | {0x50, 0}, /* LEFT_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 397 | {0x51, 0}, /* DOWN_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 398 | {0x52, 0}, /* UP_ARROW */ |
Jean-Philippe Brucker |
0:cfd70fa91663 | 399 | }; |
Jean-Philippe Brucker |
0:cfd70fa91663 | 400 | #endif |
Jean-Philippe Brucker |
0:cfd70fa91663 | 401 | |
Jean-Philippe Brucker |
0:cfd70fa91663 | 402 | #endif |
Jean-Philippe Brucker |
0:cfd70fa91663 | 403 |