[fa09449] | 1 | /*
|
---|
| 2 | * Copyright (c) 2009 Jiri Svoboda
|
---|
| 3 | * All rights reserved.
|
---|
| 4 | *
|
---|
| 5 | * Redistribution and use in source and binary forms, with or without
|
---|
| 6 | * modification, are permitted provided that the following conditions
|
---|
| 7 | * are met:
|
---|
| 8 | *
|
---|
| 9 | * - Redistributions of source code must retain the above copyright
|
---|
| 10 | * notice, this list of conditions and the following disclaimer.
|
---|
| 11 | * - Redistributions in binary form must reproduce the above copyright
|
---|
| 12 | * notice, this list of conditions and the following disclaimer in the
|
---|
| 13 | * documentation and/or other materials provided with the distribution.
|
---|
| 14 | * - The name of the author may not be used to endorse or promote products
|
---|
| 15 | * derived from this software without specific prior written permission.
|
---|
| 16 | *
|
---|
| 17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
---|
| 18 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
---|
| 19 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
---|
| 20 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
---|
| 21 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
---|
| 22 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
---|
| 23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
---|
| 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
---|
| 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
---|
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
---|
| 27 | */
|
---|
| 28 |
|
---|
| 29 | /** @addtogroup libc
|
---|
[2595dab] | 30 | * @{
|
---|
[fa09449] | 31 | */
|
---|
| 32 | /** @file
|
---|
| 33 | */
|
---|
| 34 |
|
---|
[2595dab] | 35 | #ifndef LIBC_IO_KEYCODE_H_
|
---|
| 36 | #define LIBC_IO_KEYCODE_H_
|
---|
[fa09449] | 37 |
|
---|
| 38 | /** Keycode definitions.
|
---|
| 39 | *
|
---|
| 40 | * A keycode identifies a key by its position on the keyboard, rather
|
---|
| 41 | * than by its label. For human readability, key positions are noted
|
---|
| 42 | * with the key label on a keyboard with US layout. This label has
|
---|
| 43 | * nothing to do with the character, that the key produces
|
---|
| 44 | * -- this is determined by the keymap.
|
---|
| 45 | *
|
---|
| 46 | * The keyboard model reflects a standard PC keyboard layout.
|
---|
| 47 | * Non-standard keyboards need to be mapped to this model in some
|
---|
| 48 | * logical way. Scancodes are mapped to keycodes with a scanmap.
|
---|
| 49 | *
|
---|
| 50 | * For easier mapping to the model and to emphasize the nature of keycodes,
|
---|
| 51 | * they really are organized here by position, rather than by label.
|
---|
| 52 | */
|
---|
[369a5f8] | 53 | typedef enum {
|
---|
[fa09449] | 54 |
|
---|
| 55 | /* Main block row 1 */
|
---|
| 56 |
|
---|
[f89979b] | 57 | KC_BACKTICK = 1,
|
---|
[fa09449] | 58 |
|
---|
| 59 | KC_1,
|
---|
| 60 | KC_2,
|
---|
| 61 | KC_3,
|
---|
| 62 | KC_4,
|
---|
| 63 | KC_5,
|
---|
| 64 | KC_6,
|
---|
| 65 | KC_7,
|
---|
| 66 | KC_8,
|
---|
| 67 | KC_9,
|
---|
| 68 | KC_0,
|
---|
| 69 |
|
---|
| 70 | KC_MINUS,
|
---|
| 71 | KC_EQUALS,
|
---|
| 72 | KC_BACKSPACE,
|
---|
| 73 |
|
---|
| 74 | /* Main block row 2 */
|
---|
| 75 |
|
---|
| 76 | KC_TAB,
|
---|
| 77 |
|
---|
| 78 | KC_Q,
|
---|
| 79 | KC_W,
|
---|
| 80 | KC_E,
|
---|
| 81 | KC_R,
|
---|
| 82 | KC_T,
|
---|
| 83 | KC_Y,
|
---|
| 84 | KC_U,
|
---|
| 85 | KC_I,
|
---|
| 86 | KC_O,
|
---|
| 87 | KC_P,
|
---|
| 88 |
|
---|
| 89 | KC_LBRACKET,
|
---|
| 90 | KC_RBRACKET,
|
---|
| 91 |
|
---|
| 92 | /* Main block row 3 */
|
---|
| 93 |
|
---|
| 94 | KC_CAPS_LOCK,
|
---|
| 95 |
|
---|
| 96 | KC_A,
|
---|
| 97 | KC_S,
|
---|
| 98 | KC_D,
|
---|
| 99 | KC_F,
|
---|
| 100 | KC_G,
|
---|
| 101 | KC_H,
|
---|
| 102 | KC_J,
|
---|
| 103 | KC_K,
|
---|
| 104 | KC_L,
|
---|
| 105 |
|
---|
| 106 | KC_SEMICOLON,
|
---|
| 107 | KC_QUOTE,
|
---|
| 108 | KC_BACKSLASH,
|
---|
| 109 |
|
---|
| 110 | KC_ENTER,
|
---|
| 111 |
|
---|
| 112 | /* Main block row 4 */
|
---|
| 113 |
|
---|
| 114 | KC_LSHIFT,
|
---|
| 115 |
|
---|
| 116 | KC_Z,
|
---|
| 117 | KC_X,
|
---|
| 118 | KC_C,
|
---|
| 119 | KC_V,
|
---|
| 120 | KC_B,
|
---|
| 121 | KC_N,
|
---|
| 122 | KC_M,
|
---|
| 123 |
|
---|
| 124 | KC_COMMA,
|
---|
| 125 | KC_PERIOD,
|
---|
| 126 | KC_SLASH,
|
---|
| 127 |
|
---|
| 128 | KC_RSHIFT,
|
---|
| 129 |
|
---|
| 130 | /* Main block row 5 */
|
---|
| 131 |
|
---|
| 132 | KC_LCTRL,
|
---|
| 133 | KC_LALT,
|
---|
| 134 | KC_SPACE,
|
---|
| 135 | KC_RALT,
|
---|
| 136 | KC_RCTRL,
|
---|
| 137 |
|
---|
| 138 | /* Function keys block */
|
---|
| 139 |
|
---|
| 140 | KC_ESCAPE,
|
---|
| 141 |
|
---|
| 142 | KC_F1,
|
---|
| 143 | KC_F2,
|
---|
| 144 | KC_F3,
|
---|
| 145 | KC_F4,
|
---|
| 146 | KC_F5,
|
---|
| 147 | KC_F6,
|
---|
| 148 | KC_F7,
|
---|
| 149 | KC_F8,
|
---|
| 150 | KC_F9,
|
---|
| 151 | KC_F10,
|
---|
| 152 | KC_F11,
|
---|
| 153 | KC_F12,
|
---|
| 154 |
|
---|
| 155 | KC_PRTSCR,
|
---|
| 156 | KC_SCROLL_LOCK,
|
---|
| 157 | KC_PAUSE,
|
---|
| 158 |
|
---|
| 159 | /* Cursor keys block */
|
---|
| 160 |
|
---|
| 161 | KC_INSERT,
|
---|
| 162 | KC_HOME,
|
---|
| 163 | KC_PAGE_UP,
|
---|
| 164 |
|
---|
| 165 | KC_DELETE,
|
---|
| 166 | KC_END,
|
---|
| 167 | KC_PAGE_DOWN,
|
---|
| 168 |
|
---|
| 169 | KC_UP,
|
---|
| 170 | KC_LEFT,
|
---|
| 171 | KC_DOWN,
|
---|
| 172 | KC_RIGHT,
|
---|
| 173 |
|
---|
| 174 | /* Numeric block */
|
---|
| 175 |
|
---|
| 176 | KC_NUM_LOCK,
|
---|
| 177 | KC_NSLASH,
|
---|
| 178 | KC_NTIMES,
|
---|
| 179 | KC_NMINUS,
|
---|
| 180 |
|
---|
| 181 | KC_NPLUS,
|
---|
| 182 | KC_NENTER,
|
---|
| 183 |
|
---|
| 184 | KC_N7,
|
---|
| 185 | KC_N8,
|
---|
| 186 | KC_N9,
|
---|
| 187 |
|
---|
| 188 | KC_N4,
|
---|
| 189 | KC_N5,
|
---|
| 190 | KC_N6,
|
---|
| 191 |
|
---|
| 192 | KC_N1,
|
---|
| 193 | KC_N2,
|
---|
| 194 | KC_N3,
|
---|
| 195 |
|
---|
| 196 | KC_N0,
|
---|
| 197 | KC_NPERIOD
|
---|
| 198 |
|
---|
| 199 | } keycode_t;
|
---|
| 200 |
|
---|
[369a5f8] | 201 | typedef enum {
|
---|
[2595dab] | 202 | KM_LSHIFT = 0x001,
|
---|
| 203 | KM_RSHIFT = 0x002,
|
---|
| 204 | KM_LCTRL = 0x004,
|
---|
| 205 | KM_RCTRL = 0x008,
|
---|
| 206 | KM_LALT = 0x010,
|
---|
| 207 | KM_RALT = 0x020,
|
---|
| 208 | KM_CAPS_LOCK = 0x040,
|
---|
| 209 | KM_NUM_LOCK = 0x080,
|
---|
| 210 | KM_SCROLL_LOCK = 0x100,
|
---|
| 211 |
|
---|
| 212 | KM_SHIFT = KM_LSHIFT | KM_RSHIFT,
|
---|
| 213 | KM_CTRL = KM_LCTRL | KM_RCTRL,
|
---|
| 214 | KM_ALT = KM_LALT | KM_RALT
|
---|
[fa09449] | 215 | } keymod_t;
|
---|
| 216 |
|
---|
| 217 | #endif
|
---|
[2595dab] | 218 |
|
---|
[fa09449] | 219 | /** @}
|
---|
| 220 | */
|
---|