Changeset d1eece6 in mainline for uspace/srv/kbd/layout/us_qwerty.c
- Timestamp:
- 2009-02-19T22:54:32Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 013c4d6
- Parents:
- 91825d90
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/kbd/layout/us_qwerty.c
r91825d90 rd1eece6 37 37 #include <layout.h> 38 38 39 static int map_normal[] = { 39 static char map_lcase[] = { 40 [KC_Q] = 'q', 41 [KC_W] = 'w', 42 [KC_E] = 'e', 43 [KC_R] = 'r', 44 [KC_T] = 't', 45 [KC_Y] = 'y', 46 [KC_U] = 'u', 47 [KC_I] = 'i', 48 [KC_O] = 'o', 49 [KC_P] = 'p', 50 51 [KC_A] = 'a', 52 [KC_S] = 's', 53 [KC_D] = 'd', 54 [KC_F] = 'f', 55 [KC_G] = 'g', 56 [KC_H] = 'h', 57 [KC_J] = 'j', 58 [KC_K] = 'k', 59 [KC_L] = 'l', 60 61 [KC_Z] = 'z', 62 [KC_X] = 'x', 63 [KC_C] = 'c', 64 [KC_V] = 'v', 65 [KC_B] = 'b', 66 [KC_N] = 'n', 67 [KC_M] = 'm', 68 }; 69 70 static char map_ucase[] = { 71 [KC_Q] = 'Q', 72 [KC_W] = 'W', 73 [KC_E] = 'E', 74 [KC_R] = 'R', 75 [KC_T] = 'T', 76 [KC_Y] = 'Y', 77 [KC_U] = 'U', 78 [KC_I] = 'I', 79 [KC_O] = 'O', 80 [KC_P] = 'P', 81 82 [KC_A] = 'A', 83 [KC_S] = 'S', 84 [KC_D] = 'D', 85 [KC_F] = 'F', 86 [KC_G] = 'G', 87 [KC_H] = 'H', 88 [KC_J] = 'J', 89 [KC_K] = 'K', 90 [KC_L] = 'L', 91 92 [KC_Z] = 'Z', 93 [KC_X] = 'X', 94 [KC_C] = 'C', 95 [KC_V] = 'V', 96 [KC_B] = 'B', 97 [KC_N] = 'N', 98 [KC_M] = 'M', 99 }; 100 101 static char map_not_shifted[] = { 40 102 [KC_BACKTICK] = '`', 41 103 … … 53 115 [KC_MINUS] = '-', 54 116 [KC_EQUALS] = '=', 55 [KC_BACKSPACE] = '\b',56 57 [KC_TAB] = '\t',58 59 [KC_Q] = 'q',60 [KC_W] = 'w',61 [KC_E] = 'e',62 [KC_R] = 'r',63 [KC_T] = 't',64 [KC_Y] = 'y',65 [KC_U] = 'u',66 [KC_I] = 'i',67 [KC_O] = 'o',68 [KC_P] = 'p',69 117 70 118 [KC_LBRACKET] = '[', 71 119 [KC_RBRACKET] = ']', 72 73 [KC_A] = 'a',74 [KC_S] = 's',75 [KC_D] = 'd',76 [KC_F] = 'f',77 [KC_G] = 'g',78 [KC_H] = 'h',79 [KC_J] = 'j',80 [KC_K] = 'k',81 [KC_L] = 'l',82 120 83 121 [KC_SEMICOLON] = ';', 84 122 [KC_QUOTE] = '\'', 85 123 [KC_BACKSLASH] = '\\', 86 [KC_ENTER] = '\n',87 88 [KC_Z] = 'z',89 [KC_X] = 'x',90 [KC_C] = 'c',91 [KC_V] = 'v',92 [KC_B] = 'b',93 [KC_N] = 'n',94 [KC_M] = 'm',95 124 96 125 [KC_COMMA] = ',', 97 126 [KC_PERIOD] = '.', 98 127 [KC_SLASH] = '/', 99 128 }; 129 130 static char map_shifted[] = { 131 [KC_BACKTICK] = '~', 132 133 [KC_1] = '!', 134 [KC_2] = '@', 135 [KC_3] = '#', 136 [KC_4] = '$', 137 [KC_5] = '%', 138 [KC_6] = '^', 139 [KC_7] = '&', 140 [KC_8] = '*', 141 [KC_9] = '(', 142 [KC_0] = ')', 143 144 [KC_MINUS] = '_', 145 [KC_EQUALS] = '+', 146 147 [KC_LBRACKET] = '{', 148 [KC_RBRACKET] = '}', 149 150 [KC_SEMICOLON] = ':', 151 [KC_QUOTE] = '"', 152 [KC_BACKSLASH] = '|', 153 154 [KC_COMMA] = '<', 155 [KC_PERIOD] = '>', 156 [KC_SLASH] = '?', 157 }; 158 159 static char map_neutral[] = { 160 [KC_BACKSPACE] = '\b', 161 [KC_TAB] = '\t', 162 [KC_ENTER] = '\n', 100 163 [KC_SPACE] = ' ' 101 164 }; 165 166 static int translate(unsigned int key, char *map, size_t map_length) 167 { 168 if (key >= map_length) return 0; 169 return map[key]; 170 } 102 171 103 172 char layout_parse_ev(kbd_event_t *ev) 104 173 { 105 if (ev->key >= sizeof(map_normal) / sizeof(int)) 174 char c; 175 176 /* Produce no characters when Ctrl or Alt is pressed. */ 177 if ((ev->mods & (KM_CTRL | KM_ALT)) != 0) 106 178 return 0; 107 179 108 return map_normal[ev->key]; 180 c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(char)); 181 if (c != 0) return c; 182 183 if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0)) 184 c = translate(ev->key, map_ucase, sizeof(map_ucase) / sizeof(char)); 185 else 186 c = translate(ev->key, map_lcase, sizeof(map_lcase) / sizeof(char)); 187 188 if (c != 0) return c; 189 190 if ((ev->mods & KM_SHIFT) != 0) 191 c = translate(ev->key, map_shifted, sizeof(map_shifted) / sizeof(char)); 192 else 193 c = translate(ev->key, map_not_shifted, sizeof(map_not_shifted) / sizeof(char)); 194 195 if (c != 0 ) return c; 196 109 197 } 110 198
Note:
See TracChangeset
for help on using the changeset viewer.