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