Changeset c072a29 in mainline
- Timestamp:
- 2014-09-15T15:57:32Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5c79fb5
- Parents:
- 662ebc8
- Location:
- uspace
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbhid/kbd/conv.c
r662ebc8 rc072a29 45 45 */ 46 46 static int scanmap_simple[255] = { 47 48 // [0x29] = KC_BACKTICK,49 50 // [0x02] = KC_1,51 // [0x03] = KC_2,52 47 [0x04] = KC_A, 53 48 [0x05] = KC_B, … … 94 89 [0x2c] = KC_SPACE, 95 90 96 [0x2d] = KC_MINUS, // same as DASH? (- or _)91 [0x2d] = KC_MINUS, 97 92 [0x2e] = KC_EQUALS, 98 93 [0x2f] = KC_LBRACKET, 99 94 [0x30] = KC_RBRACKET, 100 95 [0x31] = KC_BACKSLASH, 101 //[0x32] = KC_, // TODO: HASH??? maybe same as 0x31 - backslash 102 [0x32] = KC_BACKSLASH, 96 [0x32] = KC_HASH, 103 97 [0x33] = KC_SEMICOLON, 104 [0x34] = KC_QUOTE, // same as APOSTROPHE? (')105 [0x35] = KC_BACKTICK, // same as GRAVE ACCENT?? (`)98 [0x34] = KC_QUOTE, 99 [0x35] = KC_BACKTICK, 106 100 [0x36] = KC_COMMA, 107 101 [0x37] = KC_PERIOD, … … 137 131 [0x52] = KC_UP, 138 132 139 //[0x64] = // some funny key140 141 [0xe0] = KC_LCTRL,142 [0xe1] = KC_LSHIFT,143 [0xe2] = KC_LALT,144 //[0xe3] = KC_L // TODO: left GUI145 [0xe4] = KC_RCTRL,146 [0xe5] = KC_RSHIFT,147 [0xe6] = KC_RALT,148 //[0xe7] = KC_R // TODO: right GUI149 150 133 [0x53] = KC_NUM_LOCK, 151 134 [0x54] = KC_NSLASH, … … 164 147 [0x61] = KC_N9, 165 148 [0x62] = KC_N0, 166 [0x63] = KC_NPERIOD 149 [0x63] = KC_NPERIOD, 167 150 151 [0x64] = KC_BACKSLASH, 152 153 [0x9a] = KC_SYSREQ, 154 155 [0xe0] = KC_LCTRL, 156 [0xe1] = KC_LSHIFT, 157 [0xe2] = KC_LALT, 158 [0xe4] = KC_RCTRL, 159 [0xe5] = KC_RSHIFT, 160 [0xe6] = KC_RALT, 168 161 }; 169 162 … … 173 166 * 174 167 * @param scancode USB HID key code (from HID Usage Tables). 175 * 168 * 176 169 * @retval HelenOS key code corresponding to the given USB HID key code. 177 170 */ -
uspace/drv/char/xtkbd/main.c
r662ebc8 rc072a29 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 28 29 /** @addtogroup drvkbd 29 30 * @{ … … 60 61 /** Initialize global driver structures (NONE). 61 62 * 63 * Driver debug level is set here. 64 * 62 65 * @param[in] argc Nmber of arguments in argv vector (ignored). 63 66 * @param[in] argv Cmdline argument vector (ignored). 67 * 64 68 * @return Error code. 65 69 * 66 * Driver debug level is set here.67 70 */ 68 71 int main(int argc, char *argv[]) … … 76 79 * 77 80 * @param[in] device DDF instance of the device to initialize. 81 * 78 82 * @return Error code. 83 * 79 84 */ 80 85 static int xt_kbd_add(ddf_dev_t *device) … … 102 107 return EOK; 103 108 } 109 104 110 /** 105 111 * @} -
uspace/drv/char/xtkbd/xtkbd.c
r662ebc8 rc072a29 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 28 29 /** @addtogroup drvkbd 29 30 * @{ 30 31 */ 31 32 /** @file 32 * @brief XT keyboard driver ;33 * @brief XT keyboard driver 33 34 */ 34 35 … … 40 41 #include <ipc/kbdev.h> 41 42 #include <abi/ipc/methods.h> 42 43 43 #include "xtkbd.h" 44 44 45 45 /** Scancode set 1 table. */ 46 static const int scanmap_simple[] = { 47 46 static const unsigned int scanmap_simple[] = { 48 47 [0x29] = KC_BACKTICK, 49 48 50 49 [0x02] = KC_1, 51 50 [0x03] = KC_2, … … 58 57 [0x0a] = KC_9, 59 58 [0x0b] = KC_0, 60 59 61 60 [0x0c] = KC_MINUS, 62 61 [0x0d] = KC_EQUALS, 63 62 [0x0e] = KC_BACKSPACE, 64 63 65 64 [0x0f] = KC_TAB, 66 65 67 66 [0x10] = KC_Q, 68 67 [0x11] = KC_W, … … 75 74 [0x18] = KC_O, 76 75 [0x19] = KC_P, 77 76 78 77 [0x1a] = KC_LBRACKET, 79 78 [0x1b] = KC_RBRACKET, 80 79 81 80 [0x3a] = KC_CAPS_LOCK, 82 81 83 82 [0x1e] = KC_A, 84 83 [0x1f] = KC_S, … … 90 89 [0x25] = KC_K, 91 90 [0x26] = KC_L, 92 91 93 92 [0x27] = KC_SEMICOLON, 94 93 [0x28] = KC_QUOTE, 95 94 [0x2b] = KC_BACKSLASH, 96 95 97 96 [0x2a] = KC_LSHIFT, 98 97 99 98 [0x2c] = KC_Z, 100 99 [0x2d] = KC_X, … … 104 103 [0x31] = KC_N, 105 104 [0x32] = KC_M, 106 105 107 106 [0x33] = KC_COMMA, 108 107 [0x34] = KC_PERIOD, 109 108 [0x35] = KC_SLASH, 110 109 111 110 [0x36] = KC_RSHIFT, 112 111 113 112 [0x1d] = KC_LCTRL, 114 113 [0x38] = KC_LALT, 115 114 [0x39] = KC_SPACE, 116 115 117 116 [0x01] = KC_ESCAPE, 118 117 119 118 [0x3b] = KC_F1, 120 119 [0x3c] = KC_F2, … … 124 123 [0x40] = KC_F6, 125 124 [0x41] = KC_F7, 126 125 127 126 [0x42] = KC_F8, 128 127 [0x43] = KC_F9, 129 128 [0x44] = KC_F10, 130 129 131 130 [0x57] = KC_F11, 132 131 [0x58] = KC_F12, 133 132 134 133 [0x46] = KC_SCROLL_LOCK, 135 134 136 135 [0x1c] = KC_ENTER, 137 136 138 137 [0x45] = KC_NUM_LOCK, 139 138 [0x37] = KC_NTIMES, … … 153 152 }; 154 153 155 #define KBD_ACK 0xfa 156 #define KBD_RESEND 0xfe 157 #define KBD_SCANCODE_SET_EXTENDED 0xe0 154 #define KBD_ACK 0xfa 155 #define KBD_RESEND 0xfe 156 #define KBD_SCANCODE_SET_EXTENDED 0xe0 157 #define KBD_SCANCODE_SET_EXTENDED_SPECIAL 0xe1 158 158 159 /** Scancode set 1 extended codes table */ 159 static const int scanmap_e0[] = {160 static const unsigned int scanmap_e0[] = { 160 161 [0x38] = KC_RALT, 161 162 [0x1d] = KC_RCTRL, 162 163 [0x37] = KC_ PRTSCR,164 163 164 [0x37] = KC_SYSREQ, 165 165 166 [0x52] = KC_INSERT, 166 167 [0x47] = KC_HOME, 167 168 [0x49] = KC_PAGE_UP, 168 169 169 170 [0x53] = KC_DELETE, 170 171 [0x4f] = KC_END, 171 172 [0x51] = KC_PAGE_DOWN, 172 173 173 174 [0x48] = KC_UP, 174 175 [0x4b] = KC_LEFT, 175 176 [0x50] = KC_DOWN, 176 177 [0x4d] = KC_RIGHT, 177 178 178 179 [0x35] = KC_NSLASH, 179 180 [0x1c] = KC_NENTER 180 181 }; 181 182 182 #define KBD_CMD_SET_LEDS 0xed 183 #define KBD_CMD_SET_LEDS 0xed 184 183 185 enum led_indicators { 184 LI_SCROLL 185 LI_NUM 186 LI_CAPS = 0x04,186 LI_SCROLL = 0x01, 187 LI_NUM = 0x02, 188 LI_CAPS = 0x04 187 189 }; 188 190 189 static int polling(void *); 190 static void default_connection_handler(ddf_fun_t *, ipc_callid_t, ipc_call_t *); 191 192 /** Keyboard function ops. */ 193 static ddf_dev_ops_t kbd_ops = { 194 .default_handler = default_connection_handler 195 }; 196 197 /** Initialize keyboard driver structure. 198 * @param kbd Keyboard driver structure to initialize. 199 * @param dev DDF device structure. 200 * 201 * Connects to parent, creates keyboard function, starts polling fibril. 202 */ 203 int xt_kbd_init(xt_kbd_t *kbd, ddf_dev_t *dev) 191 static void push_event(async_sess_t *sess, kbd_event_type_t type, 192 unsigned int key) 204 193 { 194 async_exch_t *exch = async_exchange_begin(sess); 195 async_msg_4(exch, KBDEV_EVENT, type, key, 0, 0); 196 async_exchange_end(exch); 197 } 198 199 /** Get data and parse scancodes. 200 * 201 * @param arg Pointer to xt_kbd_t structure. 202 * 203 * @return EIO on error. 204 * 205 */ 206 static int polling(void *arg) 207 { 208 const xt_kbd_t *kbd = arg; 209 205 210 assert(kbd); 206 assert(dev);207 kbd->client_sess = NULL;208 kbd->parent_sess = ddf_dev_parent_sess_create(dev, EXCHANGE_SERIALIZE);209 if (!kbd->parent_sess) {210 ddf_msg(LVL_ERROR, "Failed creating parent session.");211 return EIO;212 }213 214 kbd->kbd_fun = ddf_fun_create(dev, fun_exposed, "kbd");215 if (!kbd->kbd_fun) {216 ddf_msg(LVL_ERROR, "Failed creating function 'kbd'.");217 return ENOMEM;218 }219 ddf_fun_set_ops(kbd->kbd_fun, &kbd_ops);220 221 int ret = ddf_fun_bind(kbd->kbd_fun);222 if (ret != EOK) {223 ddf_msg(LVL_ERROR, "Failed binding function 'kbd'.");224 ddf_fun_destroy(kbd->kbd_fun);225 return EEXIST;226 }227 228 ret = ddf_fun_add_to_category(kbd->kbd_fun, "keyboard");229 if (ret != EOK) {230 ddf_msg(LVL_ERROR, "Failed adding function 'kbd' to category "231 "'keyboard'.");232 ddf_fun_unbind(kbd->kbd_fun);233 ddf_fun_destroy(kbd->kbd_fun);234 return ENOMEM;235 }236 237 kbd->polling_fibril = fibril_create(polling, kbd);238 if (!kbd->polling_fibril) {239 ddf_msg(LVL_ERROR, "Failed creating polling fibril.");240 ddf_fun_unbind(kbd->kbd_fun);241 ddf_fun_destroy(kbd->kbd_fun);242 return ENOMEM;243 }244 245 fibril_add_ready(kbd->polling_fibril);246 return EOK;247 }248 249 /** Get data and parse scancodes.250 * @param arg Pointer to xt_kbd_t structure.251 * @return EIO on error.252 */253 int polling(void *arg)254 {255 assert(arg);256 const xt_kbd_t *kbd = arg;257 258 211 assert(kbd->parent_sess); 212 259 213 async_exch_t *parent_exch = async_exchange_begin(kbd->parent_sess); 260 while (1) { 214 215 while (true) { 261 216 if (!parent_exch) 262 217 parent_exch = async_exchange_begin(kbd->parent_sess); 263 264 const int *map = scanmap_simple;265 size_t map_size = sizeof(scanmap_simple) / sizeof( int);266 218 219 const unsigned int *map = scanmap_simple; 220 size_t map_size = sizeof(scanmap_simple) / sizeof(unsigned int); 221 267 222 uint8_t code = 0; 268 223 ssize_t size = chardev_read(parent_exch, &code, 1); 269 224 if (size != 1) 270 225 return EIO; 271 272 /** Ignore AT command reply */ 273 if (code == KBD_ACK || code == KBD_RESEND) { 226 227 /* Ignore AT command reply */ 228 if ((code == KBD_ACK) || (code == KBD_RESEND)) 229 continue; 230 231 /* Extended set */ 232 if (code == KBD_SCANCODE_SET_EXTENDED) { 233 map = scanmap_e0; 234 map_size = sizeof(scanmap_e0) / sizeof(unsigned int); 235 236 size = chardev_read(parent_exch, &code, 1); 237 if (size != 1) 238 return EIO; 239 240 /* Handle really special keys */ 241 242 if (code == 0x2a) { /* Print Screen */ 243 size = chardev_read(parent_exch, &code, 1); 244 if (size != 1) 245 return EIO; 246 247 if (code != 0xe0) 248 continue; 249 250 size = chardev_read(parent_exch, &code, 1); 251 if (size != 1) 252 return EIO; 253 254 if (code == 0x37) 255 push_event(kbd->client_sess, KEY_PRESS, KC_PRTSCR); 256 257 continue; 258 } 259 260 if (code == 0x46) { /* Break */ 261 size = chardev_read(parent_exch, &code, 1); 262 if (size != 1) 263 return EIO; 264 265 if (code != 0xe0) 266 continue; 267 268 size = chardev_read(parent_exch, &code, 1); 269 if (size != 1) 270 return EIO; 271 272 if (code == 0xc6) 273 push_event(kbd->client_sess, KEY_PRESS, KC_BREAK); 274 275 continue; 276 } 277 } 278 279 /* Extended special set */ 280 if (code == KBD_SCANCODE_SET_EXTENDED_SPECIAL) { 281 size = chardev_read(parent_exch, &code, 1); 282 if (size != 1) 283 return EIO; 284 285 if (code != 0x1d) 286 continue; 287 288 size = chardev_read(parent_exch, &code, 1); 289 if (size != 1) 290 return EIO; 291 292 if (code != 0x45) 293 continue; 294 295 size = chardev_read(parent_exch, &code, 1); 296 if (size != 1) 297 return EIO; 298 299 if (code != 0xe1) 300 continue; 301 302 size = chardev_read(parent_exch, &code, 1); 303 if (size != 1) 304 return EIO; 305 306 if (code != 0x9d) 307 continue; 308 309 size = chardev_read(parent_exch, &code, 1); 310 if (size != 1) 311 return EIO; 312 313 if (code == 0xc5) 314 push_event(kbd->client_sess, KEY_PRESS, KC_PAUSE); 315 274 316 continue; 275 317 } 276 277 if (code == KBD_SCANCODE_SET_EXTENDED) { 278 map = scanmap_e0; 279 map_size = sizeof(scanmap_e0) / sizeof(int); 280 size = chardev_read(parent_exch, &code, 1); 281 if (size != 1) 282 return EIO; 283 284 // TODO handle print screen 285 } 286 318 287 319 /* Bit 7 indicates press/release */ 288 320 const kbd_event_type_t type = 289 321 (code & 0x80) ? KEY_RELEASE : KEY_PRESS; 290 322 code &= ~0x80; 291 292 const unsigned key = (code < map_size) ? map[code] : 0; 293 if (key != 0) { 294 async_exch_t *exch = 295 async_exchange_begin(kbd->client_sess); 296 if (!exch) { 297 ddf_msg(LVL_ERROR, 298 "Failed creating exchange."); 299 continue; 300 } 301 async_msg_4(exch, KBDEV_EVENT, type, key, 0, 0); 302 async_exchange_end(exch); 303 } else { 323 324 const unsigned int key = (code < map_size) ? map[code] : 0; 325 326 if (key != 0) 327 push_event(kbd->client_sess, type, key); 328 else 304 329 ddf_msg(LVL_WARN, "Unknown scancode: %hhx", code); 305 }306 330 } 307 331 } … … 309 333 /** Default handler for IPC methods not handled by DDF. 310 334 * 311 * @param fun Device function handling the call.335 * @param fun Device function handling the call. 312 336 * @param icallid Call id. 313 * @param icall Call data. 314 */ 315 void default_connection_handler(ddf_fun_t *fun, 337 * @param icall Call data. 338 * 339 */ 340 static void default_connection_handler(ddf_fun_t *fun, 316 341 ipc_callid_t icallid, ipc_call_t *icall) 317 342 { … … 321 346 switch (method) { 322 347 case KBDEV_SET_IND: { 323 /* XT keyboards do not support setting mods, 324 * assume AT keyboard with Scan Code Set 1 */ 348 /* 349 * XT keyboards do not support setting mods, 350 * assume AT keyboard with Scan Code Set 1. 351 */ 325 352 const unsigned mods = IPC_GET_ARG1(*icall); 326 353 const uint8_t status = 0 | … … 329 356 ((mods & KM_SCROLL_LOCK) ? LI_SCROLL : 0); 330 357 uint8_t cmds[] = { KBD_CMD_SET_LEDS, status }; 358 331 359 async_exch_t *exch = async_exchange_begin(kbd->parent_sess); 332 360 const ssize_t size = chardev_write(exch, cmds, sizeof(cmds)); 333 361 async_exchange_end(exch); 362 334 363 async_answer_0(icallid, size < 0 ? size : EOK); 335 364 break; 336 365 } 337 /* This might be ugly but async_callback_receive_start makes no 338 * difference for incorrect call and malloc failure. */ 366 /* 367 * This might be ugly but async_callback_receive_start makes no 368 * difference for incorrect call and malloc failure. 369 */ 339 370 case IPC_M_CONNECT_TO_ME: { 340 371 async_sess_t *sess = 341 372 async_callback_receive_start(EXCHANGE_SERIALIZE, icall); 373 342 374 /* Probably ENOMEM error, try again. */ 343 375 if (sess == NULL) { … … 347 379 break; 348 380 } 381 349 382 if (kbd->client_sess == NULL) { 350 383 kbd->client_sess = sess; … … 355 388 async_answer_0(icallid, ELIMIT); 356 389 } 390 357 391 break; 358 392 } 359 393 default: 360 361 362 394 ddf_msg(LVL_ERROR, "Unknown method: %d.", (int)method); 395 async_answer_0(icallid, EINVAL); 396 break; 363 397 } 364 398 } 399 400 /** Keyboard function ops. */ 401 static ddf_dev_ops_t kbd_ops = { 402 .default_handler = default_connection_handler 403 }; 404 405 /** Initialize keyboard driver structure. 406 * 407 * @param kbd Keyboard driver structure to initialize. 408 * @param dev DDF device structure. 409 * 410 * Connects to parent, creates keyboard function, starts polling fibril. 411 * 412 */ 413 int xt_kbd_init(xt_kbd_t *kbd, ddf_dev_t *dev) 414 { 415 assert(kbd); 416 assert(dev); 417 418 kbd->client_sess = NULL; 419 kbd->parent_sess = ddf_dev_parent_sess_create(dev, EXCHANGE_SERIALIZE); 420 421 if (!kbd->parent_sess) { 422 ddf_msg(LVL_ERROR, "Failed creating parent session."); 423 return EIO; 424 } 425 426 kbd->kbd_fun = ddf_fun_create(dev, fun_exposed, "kbd"); 427 if (!kbd->kbd_fun) { 428 ddf_msg(LVL_ERROR, "Failed creating function 'kbd'."); 429 return ENOMEM; 430 } 431 432 ddf_fun_set_ops(kbd->kbd_fun, &kbd_ops); 433 434 int ret = ddf_fun_bind(kbd->kbd_fun); 435 if (ret != EOK) { 436 ddf_msg(LVL_ERROR, "Failed binding function 'kbd'."); 437 ddf_fun_destroy(kbd->kbd_fun); 438 return EEXIST; 439 } 440 441 ret = ddf_fun_add_to_category(kbd->kbd_fun, "keyboard"); 442 if (ret != EOK) { 443 ddf_msg(LVL_ERROR, "Failed adding function 'kbd' to category " 444 "'keyboard'."); 445 ddf_fun_unbind(kbd->kbd_fun); 446 ddf_fun_destroy(kbd->kbd_fun); 447 return ENOMEM; 448 } 449 450 kbd->polling_fibril = fibril_create(polling, kbd); 451 if (!kbd->polling_fibril) { 452 ddf_msg(LVL_ERROR, "Failed creating polling fibril."); 453 ddf_fun_unbind(kbd->kbd_fun); 454 ddf_fun_destroy(kbd->kbd_fun); 455 return ENOMEM; 456 } 457 458 fibril_add_ready(kbd->polling_fibril); 459 return EOK; 460 } -
uspace/drv/char/xtkbd/xtkbd.h
r662ebc8 rc072a29 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 28 29 /** @addtogroup drvkbd 29 30 * @{ … … 47 48 } xt_kbd_t; 48 49 49 int xt_kbd_init(xt_kbd_t *, ddf_dev_t *);50 extern int xt_kbd_init(xt_kbd_t *, ddf_dev_t *); 50 51 51 52 #endif 53 52 54 /** 53 55 * @} -
uspace/lib/c/include/io/keycode.h
r662ebc8 rc072a29 107 107 KC_QUOTE, 108 108 KC_BACKSLASH, 109 KC_HASH, 109 110 110 111 KC_ENTER, … … 154 155 155 156 KC_PRTSCR, 157 KC_SYSREQ, 156 158 KC_SCROLL_LOCK, 157 159 KC_PAUSE, 160 KC_BREAK, 158 161 159 162 /* Cursor keys block */ -
uspace/srv/hid/compositor/compositor.c
r662ebc8 rc072a29 1820 1820 bool viewport_change = (mods & KM_ALT) && ( 1821 1821 key == KC_O || key == KC_P); 1822 bool kconsole_switch = ( mods & KM_ALT) && (key == KC_M);1822 bool kconsole_switch = (key == KC_PAUSE) || (key == KC_BREAK); 1823 1823 bool filter_switch = (mods & KM_ALT) && (key == KC_Y); 1824 1824 -
uspace/srv/hid/input/ctl/apple.c
r662ebc8 rc072a29 52 52 }; 53 53 54 #define KBD_KEY_RELEASE 0x80 55 56 static kbd_dev_t *kbd_dev; 57 58 static int scanmap[]; 59 60 static int apple_ctl_init(kbd_dev_t *kdev) 61 { 62 kbd_dev = kdev; 63 return 0; 64 } 65 66 static void apple_ctl_parse(sysarg_t scancode) 67 { 68 kbd_event_type_t type; 69 unsigned int key; 70 71 if (scancode >= 0x100) 72 return; 73 74 if (scancode & KBD_KEY_RELEASE) { 75 scancode &= ~KBD_KEY_RELEASE; 76 type = KEY_RELEASE; 77 } else { 78 type = KEY_PRESS; 79 } 80 81 key = scanmap[scancode]; 82 if (key != 0) 83 kbd_push_event(kbd_dev, type, key); 84 } 85 86 static void apple_ctl_set_ind(kbd_dev_t *kdev, unsigned mods) 87 { 88 (void) mods; 89 } 90 91 static int scanmap[] = { 54 #define KBD_KEY_RELEASE 0x80 55 56 static unsigned int scanmap[] = { 92 57 [0x00] = KC_A, 93 58 [0x01] = KC_S, … … 195 160 [0x67] = KC_F11, 196 161 [0x68] = 0, 197 [0x69] = 0,162 [0x69] = KC_SYSREQ, 198 163 [0x6a] = 0, 199 164 [0x6b] = KC_SCROLL_LOCK, … … 203 168 [0x6f] = KC_F12, 204 169 [0x70] = 0, 205 [0x71] = 0,170 [0x71] = KC_PAUSE, 206 171 [0x72] = KC_INSERT, 207 172 [0x73] = KC_HOME, … … 220 185 }; 221 186 187 static kbd_dev_t *kbd_dev; 188 189 static int apple_ctl_init(kbd_dev_t *kdev) 190 { 191 kbd_dev = kdev; 192 return 0; 193 } 194 195 static void apple_ctl_parse(sysarg_t scancode) 196 { 197 kbd_event_type_t type; 198 199 if (scancode & KBD_KEY_RELEASE) { 200 scancode &= ~KBD_KEY_RELEASE; 201 type = KEY_RELEASE; 202 } else 203 type = KEY_PRESS; 204 205 if (scancode >= sizeof(scanmap) / sizeof(unsigned int)) 206 return; 207 208 unsigned int key = scanmap[scancode]; 209 if (key != 0) 210 kbd_push_event(kbd_dev, type, key); 211 } 212 213 static void apple_ctl_set_ind(kbd_dev_t *kdev, unsigned mods) 214 { 215 (void) mods; 216 } 217 222 218 /** @} 223 219 */ -
uspace/srv/hid/input/ctl/stty.c
r662ebc8 rc072a29 212 212 0, KC_F12, 0x1b, 0x5b, 0x32, 0x34, 0x7e, GSP_END, 213 213 214 0, KC_PRTSCR, 0x1b, 0x5b, 0x32, 0x35, 0x7e, GSP_END, 215 0, KC_PAUSE, 0x1b, 0x5b, 0x32, 0x38, 0x7e, GSP_END, 216 214 217 0, KC_INSERT, 0x1b, 0x5b, 0x32, 0x7e, GSP_END, 215 218 0, KC_HOME, 0x1b, 0x5b, 0x48, GSP_END, -
uspace/srv/hid/input/ctl/sun.c
r662ebc8 rc072a29 118 118 [0x14] = KC_UP, 119 119 [0x15] = KC_PAUSE, 120 [0x16] = 0,120 [0x16] = KC_PRTSCR, 121 121 [0x17] = KC_SCROLL_LOCK, 122 122 [0x18] = KC_LEFT,
Note:
See TracChangeset
for help on using the changeset viewer.